home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / INCLUDE / WINOBJ.H < prev    next >
C/C++ Source or Header  |  1990-09-26  |  9KB  |  240 lines

  1. /*
  2.     winobj.h
  3.  
  4.     % Window object definitions for basic window types
  5.  
  6.     11/28/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.      3/11/88 Ted    Hacked.
  15.      8/15/88 jmd    preened
  16.     10/31/88 ted    Removed linked window support.
  17.     11/04/88 ted    Added new border object.
  18.     11/17/88 ted    Added Mouse support.
  19.      2/12/88 ted    Fixed up mouse support for new current window cases
  20.      3/23/89 Ted    Merged with windecl.h in converting win's to pure obj's
  21.      3/23/89 Ted    Extracted wmgr_struct to wmgrdecl.h
  22.      4/14/89 ted    Added CHILDCLOSE msg.
  23.      4/21/89 ted    Renamed xd elements box and border to wbox and bord for Unix.
  24.      5/11/89 ted    Added win parent clip flag.
  25.      6/26/89 ted    Moved nextwin out of goresult_struc into wmgr.
  26.      7/10/89 ted    Moved nextwin to window structure from wmgr.
  27.      7/12/89 ted    Converted '_func' prototypes from typedef to macro.
  28.      7/25/89 ted    Added explode function.
  29.      8/08/89 jmd    Made new messages (setsize, etc.).
  30.      8/10/89 jmd    Killed bob, added new messages to windows.
  31.      8/11/89 jmd    Added new bob class
  32.      8/16/89 ted    Removed GETEXPLODE, SETEXPLODE messages
  33.      8/16/89 ted    Added resize and nullfont flags.
  34.  
  35.     11/06/89 jmd    added bob_Class macro
  36.     11/10/89 jmd    added PRINT, GRAB messages
  37.     11/21/89 ted    Renamed win xd and od bob kernels from cd to bd.
  38.     12/04/89 jmd    added cursor color    
  39.     12/10/89 jmd    added win gofunc
  40.     12/11/89 jmd    added bob user bits
  41.     12/18/89 jmd    added child number messages, parent move flag
  42.     12/21/89 jmd    added bob owner funcs
  43.      3/28/90 ted    Moved curshide flag to xd here from od.
  44.      3/28/90 ted    Removed HIDECURS & SHOWCURS msgs.
  45.      3/28/90 jmd    ansi-fied
  46.      4/25/90 jmd    added window generic data pointer
  47.      5/08/90 jmd    added underscores to func macros for vms compiler
  48.      5/12/90 jmd    made mouse handlers return ints
  49.      7/29/90 jmd    added win aux messages
  50.      8/04/90 jmd    moved aux messages to oakaux.h
  51.      8/13/90 jdc    added class_func sym handle in the bob_xd
  52.      8/24/90 jdc    added classhandle macros
  53.      8/27/90 ted    added nextchild stuff for offer/request mouse msgs to use.
  54.      8/27/90 ted    moved bob macros and prototypes out to bobproto.h
  55.      9/24/90 jmd    added userpaint flaq, removed gofunc
  56.      9/25/90 jmd    added userwin
  57. */
  58.  
  59. #ifndef OAK_WINOBJ
  60. #define OAK_WINOBJ
  61.  
  62. /* ** #include "commnobj.h"  Note: always included in Oakland code. */
  63. #include "winfsym.h"        /* for WIN_FSYM_COUNT */
  64.  
  65. /* -------------------------------------------------------------------------- */
  66. extern class_func        (win_Class);
  67.  
  68. extern class_func        (npwin_Class);
  69. extern class_func        (blwin_Class);
  70. extern class_func        (userwin_Class);
  71.  
  72. #define win_Do(win, msg, indata, outdata)            \
  73.     ((win != NULL) ? obj_Do(win, msg, indata, outdata) : FALSE)
  74.  
  75. /* bob_Class doesn't really exist, trick its children with this clever macro */
  76. #define bob_Class(od, msg, indata, outdata)     common_Class(od, msg, indata, outdata)
  77.  
  78. #define bob_Do(bob, msg, indata, outdata)     obj_Do(bob, msg, indata, outdata)
  79. /* -------------------------------------------------------------------------- */
  80. /* Message data types */
  81.  
  82. typedef struct _winopendata {
  83.     opbox        *boxp;
  84.     ofont_type     font;
  85.     obj_type     list;
  86. } winopendata_struct;
  87.  
  88. /* InPos query message data structure */
  89.  
  90. typedef struct _inposdata {
  91.     win_type     win;
  92.     opbox         inbox;                /* box for win contents field relative to window */
  93. } inposdata_struct;
  94.  
  95. /* WINM_SETFLDPOS msg */
  96. typedef struct _winsfp {
  97.  
  98.     ocbox       *ocboxp;              /* pointer to position box */
  99.     int            pref;                /* prefered box search direction */
  100.  
  101. } winsfp_struct;
  102.  
  103. /* Bit masks for PAINTREQ message ***/
  104.  
  105. #define    WPD_SENTER        0x01        
  106. #define    WPD_BORDER        0x02
  107. #define    WPD_TEXT          0x04
  108. #define    WPD_FIELDS        0x08
  109.  
  110. /* -------------------------------------------------------------------------- */
  111. /* Data types */
  112.  
  113. #define mouhandler_func(fname)        int fname(win_type _win, int _msg, mev_struct *_mev)
  114. typedef mouhandler_func ((*mouhandler_fptr));    /* note: change in win struct too */
  115.  
  116. #define exp_fptr    class_fptr
  117.  
  118. /* The bob public data structure */
  119.  
  120. typedef struct _bobxd {
  121.     common_xd    cd;                    /* common object xdata */
  122.  
  123.     obj_type    parent;                /* parent object (if any) */
  124.     unsigned    depend:1;            /* are we dependent? */
  125.  
  126.     unsigned    noparmove:1;        /* no parent move flag */
  127.     unsigned    ubit0:1;            /* user bit 0 */
  128.     unsigned    ubit1:1;            /* user bit 1 */
  129.  
  130.     short        classhandle;        /* handle for class_func sym (LNF) */
  131.                                     /* see winfsym.h */
  132. } bob_xd;
  133.  
  134. #define bob_getxd(bob)                ((bob_xd *) obj_getxd(bob))
  135.  
  136. /* The window public data structure */
  137.  
  138. typedef struct _winxd {
  139.     bob_xd        bd;                     /* bob object xdata */
  140.  
  141.     unsigned    employed:1;         /* the employed flag */
  142.     win_type    above;                /* the window above */
  143.     win_type    below;                /* the window below */
  144.  
  145.     opbox            wbox;                 /* the outer edges of the window */
  146.     opbox        inbox;                /* the inside of the border (relative) */
  147.     obj_type    bord;                /* the attached border object, if any */
  148.     opcoord        shadowx;              /* x size of window shadow */
  149.     opcoord        shadowy;              /* y size of window shadow */
  150.     byte        shadowattr;            /* color attribute of shadow */
  151.  
  152.     ofont_type     font;
  153.     unsigned    nullfont:1;            /* Flag whether win has null font. for use */
  154.                                     /* in allocating new fonts after disp mode change */
  155.     byte         attribute;            /* Default window foreground/background color */
  156.     opcoord           cursx;                /* Text cursor x position within window */
  157.     opcoord           cursy;                /* Text cursor y position within window */
  158.     unsigned    curshide:1;            /* Hide/show count for text cursor in this window */
  159.     unsigned    cudrawn:1;            /* Cursor drawn flag */
  160.     cursortype     curstype;            /* Cursor type for this window */
  161.     opixval        curscolor;            /* Color of graphics cursor */
  162.  
  163.     win_type    nextwin;            /* Window to "go" after currently "going" win returns */
  164.     int            nextchild;            /* New child or field to be current in moused window */
  165.     mouhandler_fptr mouhandler;        /* pointer to a mouse handler function */
  166.     unsigned    debounced:1;        /* debouncing flag for use by mouse handler */
  167.  
  168.     unsigned    charsize:1;            /* flag for whether window must lock to char size */
  169.     unsigned    resize:1;            /* resize strategy flag: when display size changes, */
  170.                                     /* make window size change proportionally */
  171.                                     /* (using nearest font available) or: */
  172.                                     /* keep font and window size */
  173.  
  174.     unsigned    userpaint:1;         /* flag to send WINA_PAINT message to aux func */
  175.  
  176.     exp_fptr    explode;            /* Window explode function */
  177.  
  178.     int            idmgr;                /* the id of the dmgr this win belongs to */
  179.  
  180.     short        handles[WIN_FSYM_COUNT];    /* LNF function name handles */
  181.  
  182.     VOID       *data;                   /* generic data pointer */
  183.  
  184. } win_xd;
  185.  
  186. #define win_GetId(win)                obj_GetId(win)
  187.  
  188. typedef win_xd npwin_xd;
  189. typedef win_xd blwin_xd;
  190. typedef win_xd userwin_xd;
  191.  
  192. /* win messages */
  193.  
  194. #define WINM_ISAVE        (OBJM_LASTMSG + 0)        /* Initial Screen Image Save */
  195. #define WINM_PAINT        (OBJM_LASTMSG + 1)
  196. #define WINM_SAVE        (OBJM_LASTMSG + 2)
  197. #define WINM_SHADOW     (OBJM_LASTMSG + 3)        /* Shadow paint message */
  198. #define WINM_SHADOWSAVE    (OBJM_LASTMSG + 4)        /* Shadow paint message */
  199. #define WINM_DRAWCURSOR    (OBJM_LASTMSG + 5)
  200. #define WINM_STARTCUR    (OBJM_LASTMSG + 6)
  201. #define WINM_STOPCUR    (OBJM_LASTMSG + 7)
  202. #define WINM_SCROLL        (OBJM_LASTMSG + 8)
  203. #define WINM_CLEAR        (OBJM_LASTMSG + 9)
  204. #define WINM_SETFONT    (OBJM_LASTMSG + 10)
  205. #define WINM_EXPLODE    (OBJM_LASTMSG + 11)
  206. #define WINM_GETINPOS    (OBJM_LASTMSG + 12)       /* get size & pos of contents */
  207. #define WINM_SCROLLREQ    (OBJM_LASTMSG + 13)
  208. #define WINM_SETSIZE    (OBJM_LASTMSG + 14)
  209. #define WINM_SETPOS        (OBJM_LASTMSG + 15)
  210. #define WINM_PUTUNDER    (OBJM_LASTMSG + 16)
  211. #define WINM_UNEMPLOY     (OBJM_LASTMSG + 17)        /* Unemploy a window */
  212. #define WINM_ICONREQ    (OBJM_LASTMSG + 18)
  213. #define WINM_CHILDCLOSE (OBJM_LASTMSG + 19)        /* Notification that a child window is closing itself */
  214. #define WINM_GO            (OBJM_LASTMSG + 20)
  215.  
  216. /* messages used by LNF */
  217. #define WINM_LNFGETGO     (OBJM_LASTMSG + 21)
  218. #define WINM_LNFSETGO     (OBJM_LASTMSG + 22)
  219. #define WINM_LNFRESET     (OBJM_LASTMSG + 23)
  220.  
  221. #define WINM_GOREQ        (OBJM_LASTMSG + 24)
  222. #define WINM_PAINTREQ     (OBJM_LASTMSG + 25)
  223. #define WINM_GETFLDPOS     (OBJM_LASTMSG + 26)
  224. #define WINM_SETFLDPOS     (OBJM_LASTMSG + 27)
  225.  
  226. #define WINM_GRAB         (OBJM_LASTMSG + 28)
  227. #define WINM_PRINT         (OBJM_LASTMSG + 29)
  228.  
  229. #define WINM_SETCURRCHILD (OBJM_LASTMSG + 30)
  230. #define WINM_GETCHILDNO    (OBJM_LASTMSG + 31)
  231.  
  232. #define WINM_LASTMSG    (OBJM_LASTMSG + 100)
  233. /* -------------------------------------------------------------------------- */
  234. /* Request funcs */
  235. extern classinit_func        (win_LoadInit);
  236. extern classinit_func        (win_SaveInit);
  237. /* -------------------------------------------------------------------------- */
  238. #endif
  239.  
  240.