home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / mac / 1000 / CCE_1024.ZIP / CCE_1024 / SOZLIB07.LZH / SOZDISTR / INCLUDE / XGEMFAST.H < prev   
C/C++ Source or Header  |  1994-09-30  |  23KB  |  835 lines

  1. /* tab expansion/compression should be set to 4 */
  2. /**************************************************************************
  3.  *
  4.  * GEMFAST.H - Header file for common VDI and AES symbols.
  5.  
  6.  this is gemfast.h for xvdifast and xaesfast library
  7.  (SOZOBON eXtended version's GEM library)
  8.  It is based on the original gemfast.h, with little changes. So I kept
  9.  all other stuff in here. -jerry-
  10.  
  11.  *
  12.  *    This header file contains items compatible with both GEMDEFS and OBDEFS
  13.  *    from the Alcyon system.  Note that there are no 'extern' definitions
  14.  *    for the GEM functions, because they all return a signed int and work
  15.  *    fine as autodefined functions.
  16.  *
  17.  *    If you have a lot of source already coded for #include <gemdefs.h>,
  18.  *    you can create a dummy (empty) obdefs.h file, and code a new gemdefs.h
  19.  *    file which contains only #include <gemfast.h>.    YOU CAN NO LONGER USE
  20.  *    GEMDEFS AND OBDEFS WITH THE GEMFAST BINDINGS!  For the bindings libs
  21.  *    to work correctly, this header file must be used.
  22.  *
  23.  * Credits dept:
  24.  *     This file bears an amazing similarity to the original Alcyon GEMDEFS
  25.  *     and OBDEFS header files, which are copyrighted by Atari.  What can I
  26.  *     say?  Copyrighted or not, these are the names and values that every-
  27.  *     body uses, so OF COURSE the files look *awful* similar...
  28.  *
  29.  * Maintenance:
  30.  *    12/03/89 - v1.3
  31.  *               > Renamed a lot of functions, a name compatibility block was
  32.  *                 added at the end of this file to smooth the transition.
  33.  *               > Added NO_OBJECT, MU_MENTRY, MU_MEXIT to defines.
  34.  *               > Added XMULTI struct, even though it really belongs to v2.0
  35.  *    05/26/90 - v1.4
  36.  *               > Added RSHDR structure for imbedded resource support.
  37.  *               > Fixed all structures which defined pointers as 'long'...
  38.  *                 - ICONBLK ib_pmask, ib_pdata, ib_ptext
  39.  *                 - BITBLK  bi_pdata
  40.  *                 - USERBLK ub_code
  41.  *                 - PARMBLK pb_tree
  42.  *                 All of these structure elements now define the proper ptr.
  43.  *               > Added AESUTIL_A, AESFAST_A and VDIFAST_A symbols.    This
  44.  *                 allows specific indication of the presence or abscence of
  45.  *                 the bindings libraries, allowing a programmer to use the
  46.  *                 GEMFAST.H header without using the rest of GemFast.  This
  47.  *                 also allows conditional compilation code to be more
  48.  *                 specific:    it can now test for the presence of the header
  49.  *                 file (and handle the differences in the structure defs),
  50.  *                 and it can separately test for the presence of the libs,
  51.  *                 and the extended functions available therein.
  52.  *************************************************************************/
  53.  
  54. #ifndef GEMFAST_H                /* Prevent multiple inclusion */
  55.     /* xgemfast is based on:    */
  56. #define GEMFAST_H        1        /* Tell the world GEMFAST header is used */
  57. #define GEMF_VERSION    0x0141    /* Tell the world we are v1.41             */
  58.  
  59. #define AESUTIL_A        1        /* Tell the world AESFAST utils  available */
  60. #define _XAESFAST_A        0x101    /* Tell the world XAESFAST lib is used */
  61. #define _XVDIFAST_A        0x102    /* Tell the world XVDIFAST lib is used */
  62. #define    _XAESFASTVERSION "1.01"
  63. #define    _XVDIFASTVERSION "1.02"
  64. #define _XGEMFAST    1
  65.  
  66.     /* the aes variables are to find at end of file    */
  67.  
  68.     /* the VDI constants    */
  69.  
  70.                                 /* VDI inside fill styles - new names    */
  71. #if 0
  72.  
  73. #define VIS_HOLLOW    0            /* these names will be phased out soon... */
  74. #define VIS_SOLID    1
  75. #define VIS_PATTERN 2
  76. #define VIS_HATCH    3
  77. #define VIS_UDPTRN    4
  78.  
  79. #define VIP_HOLLOW    0            /* these names will be phased out soon... */
  80. #define VIP_1PTRN    1
  81. #define VIP_2PTRN    2
  82. #define VIP_3PTRN    3
  83. #define VIP_4PTRN    4
  84. #define VIP_5PTRN    5
  85. #define VIP_6PTRN    6
  86. #define VIP_SOLID    7
  87.  
  88. #endif
  89.                             /* polyline types    */
  90. enum {LT_SOLID =1, LT_LONGDASH, LT_DOTTED, LT_DASHDOT, LT_DASHED,
  91.         LT_DASHDOTDOT, LT_USERDEF};
  92.  
  93.                                 /* polyline end styles    */
  94. enum {LE_SQUARED, LE_ARROWED, LE_ROUNDED};
  95.  
  96.                                 /* default polymarker types    */
  97. enum {MT_DOT = 1, MT_PLUS, MT_ASTERIK, MT_SQUARE, MT_DCROSS, MT_DIAMOND};
  98.  
  99.                                 /* graphic test special effects    */
  100. #define TF_NORMAL        0x00
  101. #define TF_THICKENED    0x01
  102. #define TF_LIGTHENED    0x02
  103. #define TF_SLANTED        0x04
  104. #define TF_UNDERLINED    0x08
  105. #define TF_OUTLINED        0x10
  106. #define TF_SHADOWED        0x20
  107.                                 /* text alignment    */
  108. enum {TA_LEFT, TA_CENTER, TA_RIGHT};
  109. enum {TA_BASELINE, TA_HALF, TA_ASCENT, TA_BOTTOM, TA_DESCENT, TA_TOP};
  110.  
  111.                                 /* VDI interior fill index    */
  112. #define IS_HOLLOW    0
  113. #define IS_SOLID    1
  114. #define IS_PATTERN    2
  115. #define IS_HATCH    3
  116. #define IS_UDPTRN    4
  117.                             /* alternative names:    */
  118. enum {FIS_HOLLOW, FIS_SOLID, FIS_PATTERN, FIS_HATCH, FIS_USER};
  119.  
  120.                                 /* VDI inside fill style index    */
  121.     /* (scanning) patterns (together with FIS_PATTERN)    */
  122. #define IP_HOLLOW    0
  123. #define IP_1PTRN    1
  124. #define IP_2PTRN    2
  125. #define IP_3PTRN    3
  126. #define IP_4PTRN    4
  127. #define IP_5PTRN    5
  128. #define IP_6PTRN    6
  129. #define IP_7PTRN    7
  130. #define IP_SOLID    8
  131.     /* different patterns up to 24 follow    */
  132. #define IP_BRICK    9
  133. #define IP_LAST        24
  134.  
  135.     /* hatchings (together with FIS_HATCH)    */
  136. #define IP_1HATCH    1
  137. #define IP_2HATCH    2
  138. #define IP_3HATCH    3
  139. #define IP_4HATCH    4
  140. #define IP_5HATCH    5
  141. #define IP_6HATCH    6
  142. #define IP_7HATCH    7
  143. #define IP_8HATCH    8
  144. #define IP_9HATCH    9
  145. #define IP_10HATCH    10
  146. #define IP_11HATCH    11
  147. #define IP_12HATCH    12
  148.  
  149.  
  150.                                /* VDI normal graphics drawing modes */
  151. #define MD_REPLACE    1
  152. #define MD_TRANS    2
  153. #define MD_XOR        3
  154. #define MD_ERASE    4
  155.                                /* VDI bit blt rules */
  156. #define ALL_WHITE    0
  157. #define S_AND_D        1
  158. #define S_AND_NOTD    2
  159. #define S_ONLY        3
  160. #define NOTS_AND_D    4
  161. #define D_ONLY        5
  162. #define S_XOR_D        6
  163. #define S_OR_D        7
  164. #define NOT_SORD    8
  165. #define NOT_SXORD    9
  166. #define D_INVERT    10
  167. #define NOT_D        10
  168. #define S_OR_NOTD    11
  169. #define NOT_S        12
  170. #define NOTS_OR_D    13
  171. #define NOT_SANDD    14
  172. #define ALL_BLACK    15
  173.  
  174.                 /* VDI and AES colors    */
  175.  
  176. #define WHITE        0
  177. #define BLACK        1
  178. #define RED            2
  179. #define GREEN        3
  180. #define BLUE        4
  181. #define CYAN        5
  182. #define YELLOW        6
  183. #define MAGENTA        7
  184. #define LWHITE        8
  185. #define LBLACK        9
  186. #define LRED        10
  187. #define LGREEN        11
  188. #define LBLUE        12
  189. #define LCYAN        13
  190. #define LYELLOW        14
  191. #define LMAGENTA    15
  192.  
  193.  
  194.     /* the AES constants    */
  195.  
  196.                                     /* font types */
  197. #define IBM            3
  198. #define SMALL        5
  199.  
  200.                                     /* evnt_multi flags */
  201. #define MU_KEYBD    0x0001
  202. #define MU_BUTTON    0x0002
  203. #define MU_M1        0x0004
  204. #define MU_M2        0x0008
  205. #define MU_MESAG    0x0010
  206. #define MU_TIMER    0x0020
  207.                                     /* evnt_mouse flags */
  208. #define MU_MENTRY    0x0000
  209. #define MU_MEXIT    0x0001
  210.                                     /* keyboard states */
  211. #define K_RSHIFT    0x0001
  212. #define K_LSHIFT    0x0002
  213. #define K_CTRL        0x0004
  214. #define K_ALT        0x0008
  215.  
  216.                     /* event message values */
  217.     /* extensions for AES 4.0 inserted    */
  218.  
  219. #define MN_SELECTED 10
  220. #define WM_REDRAW    20
  221. #define WM_TOPPED    21
  222. #define WM_CLOSED    22
  223. #define WM_FULLED    23
  224. #define WM_ARROWED    24
  225. #define WM_HSLID    25
  226. #define WM_VSLID    26
  227. #define WM_SIZED    27
  228. #define WM_MOVED    28
  229. #define WM_NEWTOP    29
  230. #define WM_UNTOPPED        30    /* AES 3.3 */
  231. #define WM_ONTOP        31    /* AES 3.3 */
  232. #define AC_OPEN            40
  233. #define AC_CLOSE        41
  234. #define AP_TERM            50    /* AES 4.0 */
  235. #define AP_TFAIL        51    /* AES 4.0 */
  236. #define AP_RESCHG        57    /* AES 4.0 */
  237. #define SHUT_COMPLETED    60    /* AES 4.0 */
  238. #define RESCH_COMPLETED    61    /* AES 4.0 */
  239. #define AP_DRAGDROP        63    /* AES 4.0 */
  240. #define SH_WDRAW        72    /* AES 4.0 */
  241. #define CH_EXIT            90    /* AES 4.0 */
  242.  
  243.     /* WM_ARROWED messages - added by jerry    */
  244.  
  245. #define    WA_UPPAGE    0
  246. #define    WA_DNPAGE    1
  247. #define    WA_UPLINE    2
  248. #define    WA_DNLINE    3
  249. #define    WA_LFPAGE    4
  250. #define    WA_RTPAGE    5
  251. #define    WA_LFLINE    6
  252. #define    WA_RTLINE    7
  253.  
  254.                         /* form_dial opcodes */
  255. #define FMD_START    0
  256. #define FMD_GROW    1
  257. #define FMD_SHRINK    2
  258. #define FMD_FINISH    3
  259.                                     /* rsrc_gaddr structure types */
  260. #define ROOT        0                /* this name used by MWC */
  261. #define R_TREE        0
  262. #define R_OBJECT    1
  263. #define R_TEDINFO    2
  264. #define R_ICONBLK    3
  265. #define R_BITBLK    4
  266. #define R_STRING    5
  267. #define R_IMAGEDATA 6
  268. #define R_OBSPEC    7
  269. #define R_TEPTEXT    8
  270. #define R_TEPTMPLT    9
  271. #define R_TEPVALID    10
  272. #define R_IBPMASK    11
  273. #define R_IBPDATA    12
  274. #define R_IBPTEXT    13
  275. #define R_BIPDATA    14
  276. #define R_FRSTR        15
  277. #define R_FRIMG        16
  278.                                     /* Window Attributes */
  279. #define NAME        0x0001
  280. #define CLOSER        0x0002
  281. #define FULLER        0x0004
  282. #define MOVER        0x0008
  283. #define INFO        0x0010
  284. #define SIZER        0x0020
  285. #define UPARROW        0x0040
  286. #define DNARROW        0x0080
  287. #define VSLIDE        0x0100
  288. #define LFARROW        0x0200
  289. #define RTARROW        0x0400
  290. #define HSLIDE        0x0800
  291.                                     /* wind_calc flags */
  292. #define WC_BORDER    0
  293. #define WC_WORK        1
  294.                                     /* wind_get flags */
  295. #define WF_KIND        1
  296. #define WF_NAME        2
  297. #define WF_INFO        3
  298. #define WF_WORKXYWH 4
  299. #define WF_CURRXYWH 5
  300. #define WF_PREVXYWH 6
  301. #define WF_FULLXYWH 7
  302. #define WF_HSLIDE    8
  303. #define WF_VSLIDE    9
  304. #define WF_TOP        10
  305. #define WF_FIRSTXYWH 11
  306. #define WF_NEXTXYWH 12
  307. #define WF_RESVD    13
  308. #define WF_NEWDESK    14
  309. #define WF_HSLSIZE    15
  310. #define WF_VSLSIZE    16
  311. #define WF_SCREEN    17
  312. #define WF_COLOR    18    /* AES 3.3 */
  313. #define WF_DCOLOR    19    /* AES 3.3 */
  314. #define WF_OWNER    20    /* AES 3.3 */
  315. #define WF_BEVENT    24    /* AES 3.31 */
  316. #define WF_BOTTOM    25    /* AES 3.31 */
  317.                                     /* wind_update flags */
  318. #define END_UPDATE    0
  319. #define BEG_UPDATE    1
  320. #define END_MCTRL    2
  321. #define BEG_MCTRL    3
  322.                                     /* graf_mouse mouse types*/
  323. #define ARROW        0
  324. #define TEXT_CRSR    1
  325. #define HOURGLASS    2                /* this name used by MWC (why?) */
  326. #define BUSY_BEE    2
  327. #define BUSYBEE        2
  328. #define BEE            2
  329. #define POINT_HAND    3
  330. #define FLAT_HAND    4
  331. #define THIN_CROSS    5
  332. #define THICK_CROSS 6
  333. #define OUTLN_CROSS 7
  334. #define USER_DEF    255
  335. #define M_OFF        256
  336. #define M_ON        257
  337.  
  338. #define M_SAVE            258        /* MultiTOS */
  339. #define M_RESTORE        259        /* MultiTOS */
  340. #define M_PREV            260        /* MultiTOS */
  341.  
  342.                 /* objects    */
  343.     /* the objc_sysvar ob_swich values     */
  344. #define    LK3DIND        1
  345. #define LK3DACT        2
  346. #define INDBUTCOL    3
  347. #define ACTBUTCOL    4
  348. #define BACKGRCOL    5
  349. #define AD3DVALUE    6
  350.  
  351.                     /* max depth of search or draw    */
  352. #define MAX_DEPTH    8
  353.  
  354.             /* object types */
  355.                     /* value returned by objc_find(), et. al. */
  356. #define NO_OBJECT    -1
  357. #define G_BOX        20
  358. #define G_TEXT        21
  359. #define G_BOXTEXT    22
  360. #define G_IMAGE        23
  361. #define G_USERDEF    24
  362. #define G_PROGDEF    24
  363. #define G_IBOX        25
  364. #define G_BUTTON    26
  365. #define G_BOXCHAR    27
  366. #define G_STRING    28
  367. #define G_FTEXT        29
  368. #define G_FBOXTEXT    30
  369. #define G_ICON        31
  370. #define G_TITLE        32
  371. #define G_CICON     33             /* AES 3.3 */
  372.  
  373.                                 /* object flags */
  374. #define NONE        0x0000
  375. #define SELECTABLE    0x0001
  376. #define DEFAULT        0x0002
  377. #define EXIT        0x0004
  378. #define EDITABLE    0x0008
  379. #define RBUTTON        0x0010
  380. #define LASTOB        0x0020
  381. #define TOUCHEXIT    0x0040
  382. #define HIDETREE    0x0080
  383. #define INDIRECT    0x0100
  384. #define        FL3DMASK    0x0600    /* 3D objects AES 3.4    */
  385. #define        FL3DNONE    0x0000
  386. #define    FL3DIND        0x0200
  387. #define    FL3DBAK        0x0400
  388. #define    FL3DACT        0x0600    /* last of 3D object flags    */
  389.  
  390.                                 /* Object states */
  391. #define NORMAL        0x0000
  392. #define SELECTED    0x0001
  393. #define CROSSED        0x0002
  394. #define CHECKED        0x0004
  395. #define DISABLED    0x0008
  396. #define OUTLINED    0x0010
  397. #define SHADOWED    0x0020
  398.  
  399.                                 /* editable text field definitions */
  400. #define EDSTART        0
  401. #define EDINIT        1
  402. #define EDCHAR        2
  403. #define EDEND        3
  404.                                 /* editable text justification */
  405. #define TE_LEFT        0
  406. #define TE_RIGHT    1
  407. #define TE_CNTR        2
  408.  
  409.                                 /* VDI Memory Form Definition Block */
  410. #if 0
  411. #ifndef FDADDR                    /* v1.3:  this typedef has been added to */
  412. typedef char *FDADDR;            /* help provide compatibility between     */
  413. #endif                            /* bindings systems.                     */
  414. #else
  415. typedef void *FDADDR;
  416. #endif
  417.  
  418. typedef struct fdbstr {
  419.     FDADDR        fd_addr;
  420.     short        fd_w;
  421.     short        fd_h;
  422.     short        fd_wdwidth;
  423.     short        fd_stand;
  424.     short        fd_nplanes;
  425.     short        fd_r1;
  426.     short        fd_r2;
  427.     short        fd_r3;
  428. } MFDB;
  429.  
  430. #define FDB    MFDB                    /* FDB for compatibily */
  431.  
  432.                                     /* Mouse Form Definition Block */
  433. typedef struct mfstr {
  434.     short mf_xhot;
  435.     short mf_yhot;
  436.     short mf_nplanes;
  437.     short mf_fg;
  438.     short mf_bg;
  439.     short mf_mask[16];
  440.     short mf_data[16];
  441. } MFORM ;
  442.  
  443. typedef struct grect {
  444.     short g_x;
  445.     short g_y;
  446.     short g_w;
  447.     short g_h;
  448. } GRECT;
  449.  
  450. typedef struct vrect {
  451.     short v_x1;
  452.     short v_y1;
  453.     short v_x2;
  454.     short v_y2;
  455. } VRECT;
  456.  
  457. typedef struct text_edinfo {
  458.     char    *te_ptext;                /* ptr to text                 */
  459.     char    *te_ptmplt;            /* ptr to template             */
  460.     char    *te_pvalid;            /* ptr to validation chrs.     */
  461.     short    te_font;                /* font                         */
  462.     short    te_junk1;                /* junk word                 */
  463.     short    te_just;                /* justification             */
  464.     short    te_color;                /* color information word     */
  465.     short    te_junk2;                /* junk word                 */
  466.     short    te_thickness;            /* border thickness             */
  467.     short    te_txtlen;                /* length of text string     */
  468.     short    te_tmplen;                /* length of template string */
  469. } TEDINFO;
  470.  
  471. typedef struct bftecolor {
  472. #if (SOZOBON  && __SOZOBONX__ < 0x223)
  473.     unsigned innercol:4;
  474.     unsigned fillpat:3;
  475.     unsigned textmode:1;
  476.     unsigned textcolor:4;
  477.     unsigned framecolor:4;
  478. #else
  479.     unsigned framecolor:4;
  480.     unsigned textcolor:4;
  481.     unsigned textmode:1;
  482.     unsigned fillpat:3;
  483.     unsigned innercol:4;
  484. #endif
  485. }bfTECOLOR;
  486.  
  487. typedef struct Xtext_edinfo {
  488.     char    *te_ptext;                /* ptr to text                 */
  489.     char    *te_ptmplt;                /* ptr to template             */
  490.     char    *te_pvalid;                /* ptr to validation chrs.     */
  491.     short    te_font;                /* font                         */
  492.     short    te_junk1;                /* junk word                 */
  493.     short    te_just;                /* justification             */
  494.     bfTECOLOR    te_color;            /* color information word     */
  495.     short    te_junk2;                /* junk word                 */
  496.     short    te_thickness;            /* border thickness             */
  497.     short    te_txtlen;                /* length of text string     */
  498.     short    te_tmplen;                /* length of template string */
  499. } XTEDINFO;
  500.  
  501. typedef struct icon_block {
  502.     short    *ib_pmask;
  503.     short    *ib_pdata;
  504.     char     *ib_ptext;
  505.     short    ib_char;
  506.     short    ib_xchar;
  507.     short    ib_ychar;
  508.     short    ib_xicon;
  509.     short    ib_yicon;
  510.     short    ib_wicon;
  511.     short    ib_hicon;
  512.     short    ib_xtext;
  513.     short    ib_ytext;
  514.     short    ib_wtext;
  515.     short    ib_htext;
  516. } ICONBLK;
  517.  
  518. typedef struct bfibchar {
  519. #if (SOZOBON  && __SOZOBONX__ < 0x223)
  520.     unsigned iconchar:8;
  521.     unsigned bgcolor:4;
  522.     unsigned iconcolor:4;
  523. #else
  524.     unsigned iconcolor:4;
  525.     unsigned bgcolor:4;
  526.     unsigned iconchar:8;
  527. #endif
  528. } bfIBCHAR;
  529.  
  530. typedef struct Xicon_block {
  531.     short        *ib_pmask;
  532.     short        *ib_pdata;
  533.     char        *ib_ptext;
  534.     bfIBCHAR     ib_char;
  535.     short        ib_xchar;
  536.     short        ib_ychar;
  537.     short        ib_xicon;
  538.     short        ib_yicon;
  539.     short        ib_wicon;
  540.     short        ib_hicon;
  541.     short        ib_xtext;
  542.     short        ib_ytext;
  543.     short        ib_wtext;
  544.     short        ib_htext;
  545. } XICONBLK;
  546.  
  547. typedef struct cicon_data {
  548.     short    num_planes;         /* number of planes in the following data */
  549.     short    *col_data;            /* pointer to color bitmap in standard form */
  550.     short    *col_mask;            /* pointer to single plane mask of col_data */
  551.     short    *sel_data;            /* pointer to color bitmap of selected icon */
  552.     short    *sel_mask;            /* pointer to single plane mask of selected icon */
  553.     struct    cicon_data *next_res;    /* pointer to next icon for a different resolution */
  554. } CICON;
  555.  
  556. typedef struct cicon_blk {
  557.     ICONBLK monoblk;    /* default monochrome icon */
  558.     CICON *mainlist;    /* list of color icons for different resolutions */
  559. } CICONBLK;
  560.  
  561.  
  562.  
  563. typedef struct bit_block {
  564.     short    *bi_pdata;                    /* ptr to bit forms data    */
  565.     short    bi_wb;                        /* width of form in bytes    */
  566.     short    bi_hl;                        /* height in lines            */
  567.     short    bi_x;                        /* source x in bit form        */
  568.     short    bi_y;                        /* source y in bit form        */
  569.     short    bi_color;                    /* fg color of blt            */
  570. } BITBLK;
  571.  
  572. typedef struct user_blk {
  573.     long (*ub_code)();
  574.     long ub_parm;
  575. } USERBLK;
  576.  
  577. #define appl_blk user_blk
  578. #define APPLBLK    USERBLK
  579.  
  580. typedef struct bfObspec {    /*  a bitfield for the ???BOX opsec    */
  581. #if (SOZOBON  && __SOZOBONX__ < 0x223)
  582. #pragma echo little endian bitfields
  583.     signed    framesize:8;
  584.     unsigned character:8;
  585.     unsigned innercol:4;
  586.     unsigned fillpat:3;
  587.     unsigned textmode:1;
  588.     unsigned textcol:4;
  589.     unsigned framecol:4;
  590. #else
  591. #pragma echo std bitfields
  592.     unsigned character:8;
  593.     signed     framesize:8;
  594.     unsigned framecol:4;
  595.     unsigned textcol:4;
  596.     unsigned textmode:1;
  597.     unsigned fillpat:3;
  598.     unsigned innercol:4;
  599. #endif
  600. } bfOBSPEC;
  601.  
  602. typedef union Obspec {
  603.     long    obspec;
  604.     bfOBSPEC bfobspec;
  605.     TEDINFO    *tedinfo;
  606.     ICONBLK    *iconblk;
  607.     BITBLK    *bitblk;
  608.     USERBLK    *userblk;
  609.     char    *free_string;
  610. } OBSPEC;
  611.  
  612. typedef struct object {
  613.     short            ob_next;        /* -> object's next sibling        */
  614.     short            ob_head;        /* -> head of object's children */
  615.     short            ob_tail;        /* -> tail of object's children */
  616.     unsigned short    ob_type;        /* type of object                */
  617.     unsigned short    ob_flags;        /* flags                        */
  618.     unsigned short    ob_state;        /* state                        */
  619. /*    long            ob_spec; */ /* replaced by following UNION -jerry-    */
  620.     OBSPEC            ob_spec;    /* whatever: ob_spec.obspec ...        */
  621.     short            ob_x;            /* upper left corner of object    */
  622.     short            ob_y;            /* upper left corner of object    */
  623.     short            ob_width;        /* width of obj                    */
  624.     short            ob_height;        /* height of obj                */
  625. } OBJECT;
  626.  
  627.  
  628.  
  629. typedef struct parm_blk {
  630.     OBJECT    *pb_tree;
  631.     short    pb_obj;
  632.     short    pb_prevstate;
  633.     short    pb_currstate;
  634.     short    pb_x, pb_y, pb_w, pb_h;
  635.     short    pb_xc, pb_yc, pb_wc, pb_hc;
  636.     long    pb_parm;
  637. } PARMBLK;
  638.  
  639.  
  640.  
  641. /*-------------------------------------------------------------------------
  642.  * RSHDR structure...
  643.  *-----------------------------------------------------------------------*/
  644.  
  645. typedef struct rshdr {
  646.     short                rsh_vrsn;        /* Resource structure version # */
  647.     unsigned short    rsh_object;        /* Offset to first object        */
  648.     unsigned short    rsh_tedinfo;    /* Offset to first tedinfo        */
  649.     unsigned short    rsh_iconblk;    /* Offset to first iconblk        */
  650.     unsigned short    rsh_bitblk;        /* Offset to first bitblk        */
  651.     unsigned short    rsh_frstr;        /* Offset to free string index    */
  652.     unsigned short    rsh_string;        /* Offset to string data        */
  653.     unsigned short    rsh_imdata;        /* Offset to image data            */
  654.     unsigned short    rsh_frimg;        /* Offset to free image index    */
  655.     unsigned short    rsh_trindex;    /* Offset to tree index            */
  656.     unsigned short    rsh_nobs;        /* Number of objects            */
  657.     unsigned short    rsh_ntree;        /* Number object trees            */
  658.     unsigned short    rsh_nted;        /* Number of tedinfo structs    */
  659.     unsigned short    rsh_nib;        /* Number of iconblk structs    */
  660.     unsigned short    rsh_nbb;        /* Number of bitblk structs        */
  661.     unsigned short    rsh_nstring;    /* Number of free strings        */
  662.     unsigned short    rsh_nimages;    /* Number of free images        */
  663.     unsigned short    rsh_rssize;        /* total bytes in resource        */
  664. } RSHDR;
  665.  
  666. #define RSHDR_DEFINED 1 /* signal to other header files that RSHDR is done */
  667.  
  668.  
  669. typedef struct _menu
  670. {
  671.     OBJECT *mn_tree;        /*  - the object tree of the menu     */
  672.     short    mn_menu;         /* - the parent object of the menu items     */
  673.     short    mn_item;         /* - the starting menu item    */
  674.     short    mn_scroll;     /* - the scroll field status of the menu    */
  675.                     /* 0    - The menu will not scroll    */
  676.                     /* !0 - it will scroll if the number of menu
  677.                      *     items exceed the menu scroll height. The 
  678.                      * NOTE: If the scroll field status is !0, the menu
  679.                      *     items must consist entirely of G_STRINGS.
  680.                      */
  681.     short    mn_keystate;    /* - The CTRL, ALT, SHIFT Key state at the time the    */
  682. } MENU;
  683.  
  684. typedef struct _mn_set {
  685.     long    Display;     /* - the submenu display delay    */
  686.     long    Drag;         /* - the submenu drag delay    */
  687.     long    Delay;         /* - the single-click scroll delay    */
  688.     long    Speed;         /* - the continuous scroll delay    */
  689.     short    Height;     /* - the menu scroll height    */
  690. } MN_SET;
  691.  
  692.  
  693.     /* special xaesfast bindings    */
  694.  
  695.     /* new shel_write call (AES 4.00)    */
  696.  
  697. /* sh_wodex values:    */
  698. #define    SHW_LAUNCH    0x0000
  699. #define    SHW_RUNAPP    0x0001
  700. #define    SHW_RUNACC    0x0003
  701. #define    SHW_SHUTDN    0x0004
  702. #define    SHW_CHGRES    0x0005
  703. #define    SHW_BRCAST    0x0007
  704. #define    SHW_AESENV    0x0008
  705. #define    SHW_RECMSG    0x0009
  706. #define    SHW_SENDAES    0x000A
  707. /*
  708.  *  extended sh_wodex values, 'or' with one of the upper first 3 and
  709.  *  use a SH_WPCMD * for sh_wpcmd parameter
  710.  */
  711. #define    SHW_PSETL    0x0100
  712. #define    SHW_PRENI    0x0200
  713. #define    SHW_SCWD    0x0400
  714. #define    SHW_SENV    0x0800
  715.  
  716. typedef struct    Sh_wpcmd {
  717.     char    *cmd;            /* the command, needs no path or extension    */
  718.     long    psetlimit;
  719.     long    prenice;
  720.     char    *cwd;            /* the process' cwd or NULL    */
  721.     char    *env;
  722. } SH_WPCMD;
  723.  
  724.  
  725. typedef struct xmouse {
  726.     short retval;
  727.     short bclicks;
  728.     short mask;
  729.     short state;
  730.     short status;
  731.     short mousex;
  732.     short mousey;
  733.     short mouseb;
  734.     short keystate;
  735. } XMOUSE;
  736.  
  737. typedef struct xmulti {
  738.     short        msgbuf[8];
  739.     short        mflags,
  740.             mbclicks,
  741.             mbmask,
  742.             mbstate,
  743.             mm1flags;
  744.     GRECT    mm1rect;
  745.     short        mm2flags;
  746.     GRECT    mm2rect;
  747.     short        mtlocount,
  748.             mthicount;
  749.     short        mwhich,
  750.             mmox,
  751.             mmoy,
  752.             mmobutton,
  753.             mmokstate,
  754.             mkreturn,
  755.             mbreturn;
  756. } XMULTI;
  757.  
  758.     /* now the AES variables    */
  759.  
  760. extern short global[15];
  761.  
  762. extern    short    gl_apversion;    /* the AES version number    */
  763. extern    short    gl_apcount;        /* max # of concurrent AES applications    */
  764. extern    short    gl_apid;        /* id of the current application    */
  765. extern    long    gl_apprivate;    /* anything application wants to store     */
  766. extern    OBJECT    **gl_apptree;    /* pointer to array of object tree ptrs    */
  767. extern    RSHDR    *gl_ap1resv;    /* pointer to head of rsc data    */
  768. extern    RSHDR    *gl_aprshdr;    /* pointer to head of rsc data    */
  769. extern    short    gl_ap2resv[6];    /* the rest of global array    */
  770.  
  771.  
  772. /**************************************************************************
  773.  *
  774.  * Name compatibility stuff.
  775.  *
  776.  *    05/26/90 - v1.4
  777.  *                Added mapping of find_exttype to obj_xtfind.
  778.  *    08/28/89 - v1.3
  779.  *                In v1.3, a big push has been made to make a consistant
  780.  *                naming standard for the AES utilities.    To avoid breaking
  781.  *                a lot of existing code, the following block will direct
  782.  *                the old names to the new routines.
  783.  *
  784.  *************************************************************************/
  785.  
  786. #define objclg_adjust            rc_gadjust
  787. #define objclv_adjust            rc_vadjust
  788.  
  789. #define objrb_which(a,b)        obj_rbfind((a),(b),SELECTED)
  790. #define obj_rbwhich(a,b)        obj_rbfind((a),(b),SELECTED)
  791. #define objxrb_which            obj_rbfind
  792.  
  793. #define objc_xywh                obj_xywh
  794.  
  795. #define find_exttype            obj_xtfind
  796.  
  797. #define objst_change            obj_stchange
  798. #define objfl_change            obj_flchange
  799.  
  800.     /* AES related Functions  extensions to the standard GEM Lib    */
  801.  
  802. extern int evnx_multi(XMULTI *xm);
  803. extern void rsc_treefix(OBJECT *ptree);
  804. extern void rsc_gstrings(OBJECT *ptree, short object, char **ppstr, ...);
  805. extern void rsc_sstrings(OBJECT *ptree, short object, char *pstr, ...);
  806. extern long rsc_gspec(OBJECT *tree, short object);
  807. extern char *rsc_gpointer (OBJECT *tree, short object);
  808. extern void rsc_sspec(OBJECT *tree, short object, long obspec_value);
  809. extern void rsc_spointer(OBJECT *tree, short object, char *pointer);
  810. extern GRECT *rc_gadjust(GRECT *prect, short hadjust, short vadjust);
  811. extern VRECT *rc_vadjust(VRECT *prect, short hadjust, short vadjust);
  812. extern GRECT *rc_vtog(VRECT *pvrect, GRECT *pgrect);
  813. extern VRECT *rc_gtov(GRECT *pgrect, VRECT *pvrect);
  814. extern void rc_union(GRECT *sourcerect, GRECT *destrect);
  815. extern int rc_intersect(GRECT *sourcerect, GRECT *destrect);
  816. extern void rc_copy(void *sourcerect, void *destrect);
  817. extern int rc_equal(void *rect1, void *rect2);
  818. extern void objcl_calc (OBJECT *tree, short object, GRECT *grect, VRECT *vrect);
  819. extern void obj_flchange(OBJECT *ptree, short object, short newflags, short drawflag, ...);
  820. extern void obj_stchange(OBJECT *ptree, short object, short newstate, short drawflag, ...);
  821. extern void obj_offxywh(OBJECT *ptree, short object, GRECT *prect);
  822. extern void obj_xywh(OBJECT *ptree, short object, GRECT *prect);
  823. extern int obj_xtfind(OBJECT *ptree, short parent, short xtype);
  824. extern int obj_rbfind(OBJECT *ptree, short parent, short rbstate);
  825. extern int obj_rbselect(OBJECT *ptree, short selobj, short selstate);
  826. extern int obj_parent(OBJECT *ptree, short object);
  827. extern int frmx_center(OBJECT *ptree, GRECT *prect);
  828. extern int winx_calc(short type, short kind, GRECT inrect, GRECT *outrect);
  829. extern int winx_get(short whandle, short field, GRECT *outrect);
  830.  
  831.  
  832. #endif
  833.  
  834. /*    end of GEMFAST.H */
  835.