Metropoli BBS
VIEWER: tcxlmou.h MODE: TEXT (ASCII)
/*=====[ The TesSeRact(TM) CXL User Interface Development System ]======*
 | Copyright (c) 1987-1990, Innovative Data Concepts. All Rights Reserved
 |
 | This Library is part of IDC's TesSeRact Development Tools product
 | line. For information about other IDC products, call 1-215-884-3373.
 *----------------------------------------------------------------------*
 | <TCXLmou.h> : Definitions and prototypes for TCXL Microsoft-compatible
 | mouse functions.
 *-------------------------------[ Notes ]------------------------------*
 | 1) All mouse positions are in terms of text rows and columns.
 | 2) MSinit() and MSterm() MUST not be called by user code.  They are
 |    called by the TCXL initialization and termination functions.
 | 3) MSpush() and MSpop() position the mouse cursor.
 *----------------------------------------------------------------------*
 | PGS : $Id: tcxlmou.h 5.51 90/10/01 00:00:00 MLM Release Locker: MLM $
 | $Log:	tcxlmou.h $
 | Revision 5.51  90/10/01  00:00:00  MLM
 | TCXL 5.51
 | 
 *======================================================================*/
#ifndef  _TCXLmou_
#  define   _TCXLmou_ 1
#  ifndef   _TCXLkey_
#     include  <TCXLkey.h>
#  endif
                        /*- support level ------*/
#define  MOU_NONE 0x00  /* no mouse support     */
#define  MOU_KEYS 0x01  /* emulate arrow keys   */
#define  MOU_CURS 0x02  /* free-moving cursor   */
#define  MOU_FULL 0x03  /* full mouse support   */
                        /*- global flags -------*/
#define  MOU_INIT 0x80  /* mouse initialized    */
#define  MOU_3BTN 0x40  /* 3-button mouse       */

/*------------------[ Data objects and access macros ]------------------*/

TYP   struct   Mou   MouT;    /*- mouse-control object -----*/
struct   Mou                  /* 00 *- 16-level stack ------*/
{  BytT  mlvl;                /* 00 : head support-level    */
   BytT  mcol;                /* 01 : head text column      */
   BytT  mrow;                /* 02 : head text row         */
   BytT  mstk[45];            /*    *-----------------------*/
   BytT  mflg;                /* 30 : global flags          */
   BytT  mbtn;                /* 31 : button-status         */
   IntT  mcnt;                /* 32 : button-count          */
   IntT  mhor;                /* 34 : horizontal motion     */
   IntT  mver;                /* 36 : vertical motion       */
   KeyT  mlkc;                /* 38 : left-button keycode   */
   KeyT  mrkc;                /* 3A : right-button keycode  */
   KeyT  mmkc;                /* 3C : middle-button keycode */
   WrdT  mfut;                /* 3E : reserved for future   */
};                            /* 40 ]-----------------------*/

GBL   MouT  CDC   _MouCtl; /*- global mouse-control object ----*/
#define  MouLvl   (_MouCtl.mlvl)             /* head level     */
#define  MouNone  (0 == (MouLvl & MOU_FULL)) /*    support off */
#define  MouKeys  (0 != (MouLvl & MOU_KEYS)) /*    arrow       */
#define  MouCurs  (0 != (MouLvl & MOU_CURS)) /*    free        */
#define  MouFull  (0 != (MouLvl & MOU_FULL)) /*    full        */
#define  MouCol   (_MouCtl.mcol)             /* head column    */
#define  MouRow   (_MouCtl.mrow)             /* head row       */
#define  MouFlg   (_MouCtl.mflg)             /* global flags   */
#define  MouInit  (0 != (MouFlg & MOU_INIT)) /*    initialized */
#define  Mou3btn  (0 != (MouFlg & MOU_3BTN)) /*    3-button    */
#define  MouBtn   (_MouCtl.mbtn)             /* button-status  */
#define  MouLeft  (0 != MouBtn & 0x01)       /*    left        */
#define  MouRght  (0 != MouBtn & 0x02)       /*    right       */
#define  MouCent  (0 != MouBtn & 0x04)       /*    center      */
#define  MouCnt   (_MouCtl.mcnt)             /* button-count   */
#define  MouHor   (_MouCtl.mhor)             /* horiz. motion  */
#define  MouVer   (_MouCtl.mver)             /* vert. motion   */
#define  MouLkey  (_MouCtl.mlkc)             /* left keycode   */
#define  MouRkey  (_MouCtl.mrkc)             /* right keycode  */
#define  MouMkey  (_MouCtl.mmkc)             /* middle keycode */

/*-------------------------[ function prototypes ]----------------------*/

#ifdef __cplusplus            /* no mangling, please */
   extern "C" {
#endif
VOID  PAS   _MSget(NOARG);             /* Internal                      */
VOID  PAS   _MSpos(NOARG);             /* Internal                      */
VOID  PAS   _MSset(NOARG);             /* Internal                      */
VOID  PAS   _MSsho(IntT s);            /* Internal                      */
VOID  PAS   MSclear(NOARG);            /* Clear button counts           */
VOID  PAS   MScurs(WrdT t, WrdT s,     /* Set text cursor               */
   WrdT c);
VOID  PAS   MSgoto(IntT r, IntT c);    /* Put cursor                    */
VOID  PAS   MShide(NOARG);             /* Hide cursor                   */
VOID  PAS   MShome(NOARG);             /* Home cursor, clear counts     */
IntT  PAS   MSinit(NOARG);             /* Intitialize mouse-support     */
VOID  PAS   MSkeys(KeyT l, KeyT r,     /* Assign left, right, middle    */
   KeyT m);                            /*    button keycodes            */
VOID  PAS   MSlimit(IntT sr, IntT sc,  /* Set screen limits             */
   IntT er, IntT ec);
VOID  PAS   MSmove(NOARG);             /* Get mouse motion              */
VOID  PAS   MSpop(NOARG);              /* Pop state off stack           */
VOID  PAS   MSpress(IntT b);           /* Get button presses            */
VOID  PAS   MSpush(IntT m);            /* Push state onto stack         */
VOID  PAS   MSreles(IntT b);           /* Get button releases           */
VOID        MSshow(NOARG);             /* Show cursor                   */
VOID  PAS   MSspeed(IntT x, IntT y);   /* Set speed                     */
VOID  PAS   MSstat(NOARG);             /* Get status                    */
VOID  PAS   MSterm(NOARG);             /* Terminate mouse-support       */
VOID  PAS   MSupdat(IntT sr, IntT sc,  /* Set conditional region        */
   IntT er, IntT ec);
#define  MSshow()    (_MSsho(0))
#ifdef __cplusplus
   }
#endif
#endif   /* _TCXLmou_ -- End of TCXLmou.h */

[ RETURN TO DIRECTORY ]