home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / INCLUDE / DISPDECL.H < prev    next >
Text File  |  1990-11-06  |  11KB  |  298 lines

  1. /*
  2.     dispdecl.h
  3.  
  4.     % Declarations for display manager
  5.  
  6.     5/16/88  by Ted.
  7.  
  8.     OWL 1.2a
  9.     Copyright (c) 1988, by Oakland Group, Inc.
  10.     ALL RIGHTS RESERVED.
  11.  
  12.     Revision History:
  13.     -----------------
  14.      8/24/88 ted    merged driver and mode in to one stub function pointer.
  15.     11/22/88 ted    Added CheckMouse and ReadEvent functions
  16.     12/07/88 ted    Put init function into dControl structure.
  17.     12/12/88 ted    Merged CheckKey and CheckMouse into CheckEvent.
  18.      1/18/89 Ted    changed call to PlotText for simplified interface.
  19.      2/04/89 ted    Added pmap control dig element and codes.
  20.      2/07/89 Ted    added timeout wait arg to hCheckEvent function.
  21.      5/09/89 ted    Changed Alloc/Free terms to Open/Close.
  22.      6/17/89 ted    Added evcheck flag to dig.
  23.      6/28/89 ted    Removed display id info element.
  24.      6/28/89 ted    Added DC_GETCOLMAP, DC_CLAIMCOLOR, DC_RELEASECOLOR. Removed
  25.                      colmap from info structure to hide it in DIG.
  26.      6/28/89 ted    Changed mmwidth/height to x/ypixperm in info structure.
  27.      6/28/89 ted    Made dControl and pControl return int instead of void.
  28.      6/29/89 ted    Modified fontreq struct and added mouseshape struct.
  29.      7/12/89 ted    Converted '_func' prototypes from typedef to macro.
  30.      8/08/89 ted    Added bmap-to-pmap messages.
  31.      8/08/89 ted    Moved fontreq_struct out to ofontdesc_struct in oboxdecl.h.
  32.      8/30/89 ted    Added HC_CLEAREVENTS message.
  33.  
  34.     11/27/89 ted    Rearranged dmgr, disp, & dig structs for dispcurr data block chaining.
  35.      2/02/90 ted    Changed DC_CLAIM/RELEASECOLOR to DC_PV/ALLOC/FINDRGB/MAKERO/FREE msgs, added findcol_struct.
  36.      2/14/90 ted    Got rid of fontreq_struct. Just use fontdesc_struct.
  37.      2/25/90 ted    Got rid of enum fixes for lattice 4.0.
  38.      3/13/90 ted    Added LASTMSG/TYPE vals to enums.
  39.      3/21/90 ted    Added DC_HIDEMOUSE and DC_SHOWMOUSE messages
  40.      3/28/90 jmd    ansi-fied
  41.      5/08/90 jmd    added underscores to func macros for vms compiler
  42.      5/11/90 jmd    made CheckEvent and ReadEvent return ints
  43.      6/01/90 jmd    changed _ctype to _ctipe to avoid DG conflict
  44.      6/14/90 jdc    moved dmode_func definition after _dig_struct definition
  45.      8/13/90 bkd    added ATTR_BOLD_UNDERLINE, ATTR_BLINK_MASK and
  46.                      ATTR_DIM_REVERSE
  47.     10/31/90 ted    made dispinfo ncolors unsigned long instead of long.
  48.     11/06/90 ted    moved pmapioreq stuff here from pmapdecl.h
  49. */
  50.  
  51. /* -------------------------------------------------------------------------- */
  52. typedef enum _disptype {
  53.     DTYPE_MONOCHROME,
  54.     DTYPE_GREYSCALE,
  55.     DTYPE_MAPCOLOR,
  56.     DTYPE_TRUECOLOR,
  57.     DTYPE_LASTTYPE
  58. } disptype;
  59.  
  60. /* Curstype declarations */
  61.  
  62. typedef enum _cursortype {
  63.     CURSOR_NONE,
  64.     CURSOR_BLOCK,
  65.     CURSOR_HALF,
  66.     CURSOR_THIN,
  67.     CURSOR_DASH,
  68.     CURSOR_NORMAL,
  69.     CURSOR_LASTTYPE
  70. } cursortype;
  71.  
  72. /*** Text attributes. ***/
  73.  
  74. #define ATTR_INVISIBLE        ((byte) 0x00)
  75. #define ATTR_NORMAL            ((byte) 0x07)
  76. #define ATTR_REVERSE        ((byte) 0x70)
  77. #define ATTR_UNDERLINE        ((byte) 0x01)
  78. #define ATTR_BLINKING        ((byte) 0x87)
  79. #define ATTR_BOLD            ((byte) 0x0F)
  80. #define ATTR_BOLD_UNDERLINE    ((byte) 0x09)
  81. #define ATTR_BLINK_MASK        ((byte) 0x80)
  82. #define ATTR_DIM_REVERSE    ((byte) 0x78)    /* dim fg on normal bg */
  83.  
  84. #define BO_LSBYTFIRST        ((byte) 0)
  85. #define BO_MSBYTFIRST        ((byte) 1)
  86. /* -------------------------------------------------------------------------- */
  87. /* The display device info structure */
  88.  
  89. #define DEVNAMELEN    22
  90.  
  91. typedef struct _dispinfo {
  92.     char     devname[DEVNAMELEN]; /* Text for device's name */
  93.     int     mode;                /* Device Display Mode */
  94.     unsigned xpixperm;            /* Pixels per meter on display device in x direction */
  95.     unsigned ypixperm;            /* Pixels per meter on display device in y direction */
  96.  
  97.     pmap_type dispmap;            /* Pixmap describing display memory */
  98.     unsigned dispaddr;            /* address of display buffer(if any) */
  99.     odim     bytewidth;            /* number of bytes in a line of display. */
  100.     unsigned ileave;            /* display memory interleave factor */
  101.     odim     ilsize;                /* interleave block size */
  102.     byte    nplanes;            /* number of bitplanes in image. */
  103.     byte    pixbits;            /* number of bits per pixel in a plane. */
  104.  
  105.     unsigned long ncolors;        /* Number of possible pixel values */
  106.     disptype colortype;            /* type of display (e.g. Monochrome, Truecolor, etc.) */
  107.     ocolmap_type defcolmap;        /* Pointer to copy of device default color map */
  108.  
  109.     byte     hardcursor;            /* Flag for hardware cursor used by this driver */
  110.     byte    byteorder;            /* Code for the processor's byte order in a word */
  111.  
  112.     struct ofont_struct def_font; /* default system font */
  113. } dispinfo_struct;
  114.  
  115. /* dig_dControl Messages */
  116.  
  117. typedef enum _dig_dcmsg {
  118.     DC_GETINFO,
  119.     DC_INITMODE,
  120.     DC_RESTOREMODE,
  121.     DC_SETATTRCOLS,
  122.     DC_GETATTRFG,
  123.     DC_GETATTRBG,
  124.     DC_SETCOLMAP,
  125.     DC_GETCOLMAP,
  126.     DC_PVALLOC,                /* Alloc an unspecified pixval for read/write */
  127.     DC_PVFINDRGB,            /* Find a matching pixval, alloc for read only */
  128.     DC_PVMAKERO,            /* Convert a given pixval from read/write to read-only */
  129.     DC_PVFREE,                /* Free an allocated pixval */
  130.     DC_OPENFONT,
  131.     DC_CLOSEFONT,
  132.     DC_READCHARATTR,        /* only for cmwin isave */
  133.     DC_CACHE,                /* Hides mouse cursor also */
  134.     DC_FLUSH,
  135.     DC_HIDEMOUSE,
  136.     DC_SHOWMOUSE,
  137.     DC_LASTMSG
  138. } dig_dcmsg;
  139.  
  140. /* dig_pControl Messages */
  141.  
  142. typedef enum _dig_pcmsg {
  143.     PC_OPENPMAP,
  144.     PC_CLOSEPMAP,
  145.     PC_CLEARPMAP,
  146.     PC_COPYPMAP,
  147.     PC_PMAPTOBMAP,
  148.     PC_BMAPTOPMAP,
  149.     PC_SAVEPMAP,
  150.     PC_LOADPMAP,
  151.     PC_LASTMSG
  152. } dig_pcmsg;
  153.  
  154. /* dig_hControl Messages */
  155.  
  156. typedef enum _dig_hcmsg {
  157.     HC_OPEN,
  158.     HC_CLOSE,
  159.     HC_INITMOUSE,            /* Inits mouse box to dimensions of display */
  160.     HC_DEINITMOUSE,
  161.     HC_ISMOUSEON,
  162.     HC_SETMOUSEBOX,
  163.     HC_SETMOUSESHAPE,
  164.     HC_GETMOUSESHAPE,
  165.     HC_SETSOUNDON,
  166.     HC_SETSOUNDOFF,
  167.     HC_GETSOUNDON,
  168.     HC_CLEAREVENTS,
  169.     HC_PROTECT,
  170.     HC_UNPROTECT,
  171.     HC_LASTMSG
  172. } dig_hcmsg;
  173.  
  174. /* Window paint data structure */
  175.  
  176. typedef struct _ptd {
  177.     obj_type     win;
  178.     opbox       *relboxp;            /* box for tile relative to window */
  179.     VOID       *emsgdata;            /* message indata (needed for scrolling) */
  180. } ptd_struct;
  181.  
  182. /* -------------------------------------------------------------------------- */
  183. /* Hardware Dependent Code function types */
  184.  
  185. #define dig_CloseDIG_func(fname)    void    fname(struct _dig_struct *_digp)
  186. #define dig_dControl_func(fname)    int        fname(dig_dcmsg _msg, VOID *_indata, VOID *_outdata)
  187.  
  188. #define dig_pPlotText_func(fname)    void    fname(ptd_struct *_ptd, opcoord _x, opcoord _y, char *_charbuf, char _rchar, byte _rattr, int _slen)
  189. #define dig_pDrawCursor_func(fname)    void    fname(ptd_struct *_ptd, cursortype _ctipe)
  190. #define dig_pClear_func(fname)        void    fname(ptd_struct *_ptd, opixval _color)
  191. #define dig_pScrollBoxVt_func(fname) void    fname(ptd_struct *_ptd, opcoord _n)
  192. #define dig_pScrollBoxHz_func(fname) void    fname(ptd_struct *_ptd, opcoord _n)
  193.  
  194. #define dig_pDrawPixmap_func(fname)    void    fname(ptd_struct *_ptd, pmap_type _pmap, opbox *_pmboxp)
  195. #define dig_pReadPixmap_func(fname)    void    fname(ptd_struct *_ptd, pmap_type _pmap, opbox *_pmboxp)
  196. #define dig_pControl_func(fname)    int        fname(dig_pcmsg _msg, VOID *_indata, VOID *_outdata)
  197.  
  198. #define dig_hCheckEvent_func(fname) int         fname(unsigned _wait)
  199. #define dig_hReadEvent_func(fname)    int         fname(moupos_struct *_mouposp)
  200. #define dig_hGetShift_func(fname)    unsigned fname(void)
  201. #define dig_hTimer_func(fname)        unsigned fname(void)
  202. #define dig_hPause_func(fname)        void    fname(unsigned _duration)
  203. #define dig_hSound_func(fname)        void    fname(unsigned _pitch, unsigned _duration)
  204. #define dig_hControl_func(fname)    int        fname(dig_hcmsg _msg, VOID *_indata, VOID *_outdata)
  205. /* -------------------------------------------------------------------------- */
  206. /* Device Interface Group function structure */
  207.  
  208. typedef struct _dig_struct {
  209.     dig_CloseDIG_func        ((*CloseDIG));        /* Clean up device interface */
  210.     dig_dControl_func        ((*dControl));        /* miscellaneous display control */
  211.  
  212.     dig_pDrawCursor_func    ((*pDrawCursor));    /* set text cursor position */
  213.     dig_pPlotText_func        ((*pPlotText));        /* draw text */
  214.     dig_pClear_func            ((*pClear));        /* clear screen */
  215.     dig_pScrollBoxVt_func    ((*pScrollBoxVt));    /* scroll vertical */
  216.     dig_pScrollBoxHz_func    ((*pScrollBoxHz));    /* scroll horizontal */
  217.  
  218.     dig_pDrawPixmap_func    ((*pDrawPixmap));    /* draw a region */
  219.     dig_pReadPixmap_func    ((*pReadPixmap));    /* read a region */
  220.     dig_pControl_func        ((*pControl));        /* pixel map control */
  221.  
  222.     dig_hCheckEvent_func    ((*hCheckEvent));    /* check for keystroke ready */
  223.     dig_hReadEvent_func        ((*hReadEvent));    /* read key/mouse event */
  224.     dig_hGetShift_func        ((*hGetShift));     /* get keyboard shift state */
  225.     dig_hTimer_func            ((*hTimer));        /* system timer */
  226.     dig_hPause_func            ((*hPause));        /* system timer delay */
  227.     dig_hSound_func            ((*hSound));        /* sound generator */
  228.  
  229.     dig_hControl_func        ((*hControl));        /* miscellaneous hardware control */
  230.  
  231.     unsigned vtscroll:1;    /* specifies whether vertical scrolling is supported */
  232.     unsigned hzscroll:1;    /* specifies whether horizontal scrolling is supported */
  233.     unsigned textfree:1;    /* specifies whether text position is restricted */
  234.     unsigned evcheck:1;        /* specifies whether hard_CheckEvent works or not */
  235.     int         type;            /* dig type : specifies supported features */
  236.     int     version;        /* implementation version for the given type */
  237.  
  238.     VOID *data;                /* generic data pointer for dig data */
  239.     SIZE_T datasize;        /* size of dig data block */
  240. } dig_struct;
  241.  
  242. /* DIG device/mode open function prototype */
  243. #define dmode_func(fname)            boolean fname(struct _dig_struct *_digp)
  244. typedef dmode_func ((*dmode_fptr));
  245.  
  246. typedef struct disp_struct {
  247.     dispinfo_struct *info;
  248.  
  249.     unsigned          mouse_timeout;
  250.     opcoord          mouse_distout;
  251.  
  252.     dig_struct          dig;    /* struct of device interface group fptrs */
  253. } *disp_type;
  254.  
  255. typedef struct _dmgr {
  256.     int id;                    /* id for which dmgr is the current one */
  257.     struct wmgr_struct wmgr;
  258.     struct disp_struct disp; /* disp dig data & datasize are last elements */
  259. } dmgr_struct;
  260.  
  261. /* -------------------------------------------------------------------------- */
  262. /* Message in and outdata structures */
  263.  
  264. typedef struct _ptarg {
  265.     ptd_struct *ptd;
  266.     opcoord     x;
  267.     opcoord     y;
  268.     char        *charbuf;
  269.     byte        *attrbuf;
  270.     int         slen;
  271. } ptarg_struct;            /* Used for ReadCharAttr dControl method */
  272.  
  273. typedef struct _setattr {
  274.     byte         attr;
  275.     opixval     bg;
  276.     opixval     fg;
  277. } setattr_struct;
  278.  
  279. typedef struct _findcol {
  280.     orgb_struct *rgb;        /* rgb val to try to match */
  281.     int          maxcdist;    /* max distance in rgb space which constitutes a match */
  282. } findcol_struct;
  283.  
  284. typedef struct _mouseshape {
  285.     bmap_type        image;
  286.     bmap_type        mask;
  287.     opcoord         xhot;
  288.     opcoord            yhot;
  289.     unsigned short    tsmask;    /* Text mode char/attribute pairs */
  290.     unsigned short    tcmask;
  291. } mouseshape_struct;
  292.  
  293. /*#define pmapioreq_func(fname)    dig_pControl_func(fname)*/
  294. #define pmapioreq_func(fname)    int        fname(dig_pcmsg _msg, VOID *_indata, VOID *_outdata)
  295. typedef pmapioreq_func ((*pmapioreq_fptr));
  296. /* -------------------------------------------------------------------------- */
  297.  
  298.