home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / INCLUDE / OS2DECL.H < prev    next >
C/C++ Source or Header  |  1990-05-15  |  4KB  |  124 lines

  1. /*
  2.     os2decl.h
  3.  
  4.     % Declarations for OS2 driver
  5.  
  6.     11/11/88  by Ted.
  7.  
  8.     OWL 1.2
  9.     Copyright (c) 1988, 1989 by Oakland Group, Inc.
  10.     ALL RIGHTS RESERVED.
  11.  
  12.     Revision History:
  13.     -----------------
  14.     12/12/88 ted    Merged CheckKey and CheckMouse into CheckEvent.
  15.      2/07/89 ted    Added timeout wait arg to hCheckEvent function.
  16.      4/09/89 ted    Converted for static digdata.
  17.      5/09/89 ted    Renamed from os2disp.h
  18.  
  19.      2/28/90 ted    Added hdatasize elem, removed unusable os2data mouse macros.
  20.      2/29/90 ted    Added private os2hdata struct.
  21.      3/09/90 ted    Changed os2minfo struct: has mousehide, no more hthread.
  22.      3/10/90 ted    Added shift os2data element for new GetShift scheme.
  23.      4/05/90 jmd    ansi-fied
  24.      5/14/90 jmd    made evstash an int
  25. */
  26. /* -------------------------------------------------------------------------- */
  27. #define THREADSTACKSIZE            512
  28.  
  29. typedef struct _os2data {
  30.     dispinfo_struct info;
  31.     struct pmap_struct dmspace;            /* pointed to by info->dispmap */
  32.     byte            attrmap[256];        /* attribute map table */
  33.  
  34.     VIOMODEINFO     oldmode;            /* pre-init video mode to restore from */
  35.     unsigned         oldcursx;            /* pre-init cursor position */
  36.     unsigned         oldcursy;
  37.     cursortype        curctype;            /* current hardware cursor type */
  38.     opcoord            fontlines;
  39.  
  40.     boolean               dosbox;
  41.  
  42.     /* os2 mouse event vars (more are in the os2minfo struct below) */
  43.     int                pnest;                /* re-entrancy protection semaphore */
  44.     TID                ptid;                /* re-entrancy protection thread id */
  45.  
  46.     HVIO            hvio;
  47.     HKBD            hkbd;
  48.  
  49.     unsigned         key;
  50.     unsigned        shift;
  51.     int                evstash;
  52.  
  53.     DEFINEMUXSEMLIST(kmsemlist, 2)
  54.     byte            kstack[THREADSTACKSIZE];    /* Stack for thread */
  55.  
  56.     VOID *h;                        /* non-display hardware dig data */
  57.     SIZE_T hdatasize;                /* size of hardware data block */
  58. } os2data_struct;
  59.  
  60. extern os2data_struct os2datastruc;
  61. #define os2data     (&os2datastruc)
  62.  
  63. typedef struct _os2hdata {
  64.     int         ismouse;
  65.     boolean        soundon;
  66. } os2hdata_struct;
  67.  
  68. extern os2hdata_struct os2hdatastruc;
  69. #define os2hdata     (&(os2hdatastruc))
  70.  
  71. typedef struct os2minfo_struct {
  72.     HMOU            hmou;
  73.     moupos_struct    moupos;
  74.     moupos_struct    oldpos;
  75.     byte            mstack[THREADSTACKSIZE];    /* Stack for thread */
  76.  
  77.     NOPTRRECT         mouserect;
  78.     int                mousehide;            /* hide/show nesting level counter */
  79.     boolean            hid;
  80.  
  81. } *os2minfo_type;
  82.  
  83. typedef unsigned long RAMSEM;
  84.  
  85. /* -------------------------------------------------------------------------- */
  86. /* DISPLAY MODE FUNCTIONS */
  87. /* os2vio.c */
  88. extern dmode_func (os2_ModeText);
  89. /* -------------------------------------------------------------------------- */
  90.  
  91. /* OS2HARD.C */
  92. extern void        DIGPRIV os2_hOpen(dig_struct *digp);
  93. extern void        DIGPRIV os2_dohide(void);
  94. extern void        DIGPRIV os2_doshow(void);
  95.  
  96. /* OS2OPEN.C */
  97. extern dig_CloseDIG_func (os2_CloseDIG);
  98. extern boolean  DIGPRIV os2_OpenDIG(dig_struct *digp, VIOMODEINFO *mode);
  99. extern void        DIGPRIV os2_vsetcursortype(cursortype ctype);
  100.  
  101. /* -------------------------------------------------------------------------- */
  102. #define os2_inuse()                    (os2data->info.devname[0] != '\0')
  103.  
  104. #define os2_initmode()                os2_vsetcursortype(CURSOR_NONE)
  105.  
  106. #define os2_attrfg4bit(attr)        (os2data->attrmap[attr] & 0x0F)
  107. #define os2_attrbg4bit(attr)        (os2data->attrmap[attr] >> 4)
  108. /* -------------------------------------------------------------------------- */
  109. #define os2_vidseg()                (os2data->info.dispmap->onboard)
  110. #define os2_bwidth()                (os2data->info.dispmap->bytewidth)
  111. #define os2_pixbits()                (os2data->info.dispmap->pixbits)
  112. #define os2_nplanes()                (os2data->info.dispmap->nplanes)
  113. #define os2_dispmap()                (os2data->info.dispmap)
  114. #define os2_ileave()                (os2data->info.ileave)
  115. #define os2_ilsize()                (os2data->info.ilsize)
  116.  
  117. #define OS2_ATTRSIZE                sizeof(byte)
  118.  
  119. #define VIO_MONOADDR    0x000B8000L
  120. #define VIO_CGAADDR        0x000B0000L
  121. #define VIO_EGAADDR        0x000A0000L
  122. /* -------------------------------------------------------------------------- */
  123.  
  124.