/* tab expansion/compression should be set to 4 */ /************************************************************************** * * GEMFAST.H - Header file for common VDI and AES symbols. this is gemfast.h for xvdifast and xaesfast library (SOZOBON eXtended version's GEM library) It is based on the original gemfast.h, with little changes. So I kept all other stuff in here. -jerry- * * This header file contains items compatible with both GEMDEFS and OBDEFS * from the Alcyon system. Note that there are no 'extern' definitions * for the GEM functions, because they all return a signed int and work * fine as autodefined functions. * * If you have a lot of source already coded for #include , * you can create a dummy (empty) obdefs.h file, and code a new gemdefs.h * file which contains only #include . YOU CAN NO LONGER USE * GEMDEFS AND OBDEFS WITH THE GEMFAST BINDINGS! For the bindings libs * to work correctly, this header file must be used. * * Credits dept: * This file bears an amazing similarity to the original Alcyon GEMDEFS * and OBDEFS header files, which are copyrighted by Atari. What can I * say? Copyrighted or not, these are the names and values that every- * body uses, so OF COURSE the files look *awful* similar... * * Maintenance: * 12/03/89 - v1.3 * > Renamed a lot of functions, a name compatibility block was * added at the end of this file to smooth the transition. * > Added NO_OBJECT, MU_MENTRY, MU_MEXIT to defines. * > Added XMULTI struct, even though it really belongs to v2.0 * 05/26/90 - v1.4 * > Added RSHDR structure for imbedded resource support. * > Fixed all structures which defined pointers as 'long'... * - ICONBLK ib_pmask, ib_pdata, ib_ptext * - BITBLK bi_pdata * - USERBLK ub_code * - PARMBLK pb_tree * All of these structure elements now define the proper ptr. * > Added AESUTIL_A, AESFAST_A and VDIFAST_A symbols. This * allows specific indication of the presence or abscence of * the bindings libraries, allowing a programmer to use the * GEMFAST.H header without using the rest of GemFast. This * also allows conditional compilation code to be more * specific: it can now test for the presence of the header * file (and handle the differences in the structure defs), * and it can separately test for the presence of the libs, * and the extended functions available therein. *************************************************************************/ #ifndef GEMFAST_H /* Prevent multiple inclusion */ /* xgemfast is based on: */ #define GEMFAST_H 1 /* Tell the world GEMFAST header is used */ #define GEMF_VERSION 0x0141 /* Tell the world we are v1.41 */ #define AESUTIL_A 1 /* Tell the world AESFAST utils available */ #define _XAESFAST_A 0x100 /* Tell the world XAESFAST lib is used */ #define _XVDIFAST_A 0x102 /* Tell the world XVDIFAST lib is used */ #define _XGEMFAST 1 /* the VDI constants */ /* VDI inside fill styles - new names */ #if 0 #define VIS_HOLLOW 0 /* these names will be phased out soon... */ #define VIS_SOLID 1 #define VIS_PATTERN 2 #define VIS_HATCH 3 #define VIS_UDPTRN 4 #define VIP_HOLLOW 0 /* these names will be phased out soon... */ #define VIP_1PTRN 1 #define VIP_2PTRN 2 #define VIP_3PTRN 3 #define VIP_4PTRN 4 #define VIP_5PTRN 5 #define VIP_6PTRN 6 #define VIP_SOLID 7 #endif /* polyline types */ enum {LT_SOLID =1, LT_LONGDASH, LT_DOTTED, LT_DASHDOT, LT_DASHED, LT_DASHDOTDOT, LT_USERDEF}; /* polyline end styles */ enum {LE_SQUARED, LE_ARROWED, LE_ROUNDED}; /* default polymarker types */ enum {MT_DOT = 1, MT_PLUS, MT_ASTERIK, MT_SQUARE, MT_DCROSS, MT_DIAMOND}; /* graphic test special effects */ #define TF_NORMAL 0x00 #define TF_THICKENED 0x01 #define TF_LIGTHENED 0x02 #define TF_SLANTED 0x04 #define TF_UNDERLINED 0x08 #define TF_OUTLINED 0x10 #define TF_SHADOWED 0x20 /* text alignment */ enum {TA_LEFT, TA_CENTER, TA_RIGHT}; enum {TA_BASELINE, TA_HALF, TA_ASCENT, TA_BOTTOM, TA_DESCENT, TA_TOP}; /* VDI interior fill index */ #define IS_HOLLOW 0 #define IS_SOLID 1 #define IS_PATTERN 2 #define IS_HATCH 3 #define IS_UDPTRN 4 /* alternative names: */ enum {FIS_HOLLOW, FIS_SOLID, FIS_PATTERN, FIS_HATCH, FIS_USER}; /* VDI inside fill style index */ /* (scanning) patterns (together with FIS_PATTERN) */ #define IP_HOLLOW 0 #define IP_1PTRN 1 #define IP_2PTRN 2 #define IP_3PTRN 3 #define IP_4PTRN 4 #define IP_5PTRN 5 #define IP_6PTRN 6 #define IP_7PTRN 7 #define IP_SOLID 8 /* different patterns up to 24 follow */ #define IP_BRICK 9 #define IP_LAST 24 /* hatchings (together with FIS_HATCH) */ #define IP_1HATCH 1 #define IP_2HATCH 2 #define IP_3HATCH 3 #define IP_4HATCH 4 #define IP_5HATCH 5 #define IP_6HATCH 6 #define IP_7HATCH 7 #define IP_8HATCH 8 #define IP_9HATCH 9 #define IP_10HATCH 10 #define IP_11HATCH 11 #define IP_12HATCH 12 /* VDI normal graphics drawing modes */ #define MD_REPLACE 1 #define MD_TRANS 2 #define MD_XOR 3 #define MD_ERASE 4 /* VDI bit blt rules */ #define ALL_WHITE 0 #define S_AND_D 1 #define S_AND_NOTD 2 #define S_ONLY 3 #define NOTS_AND_D 4 #define D_ONLY 5 #define S_XOR_D 6 #define S_OR_D 7 #define NOT_SORD 8 #define NOT_SXORD 9 #define D_INVERT 10 #define NOT_D 10 #define S_OR_NOTD 11 #define NOT_S 12 #define NOTS_OR_D 13 #define NOT_SANDD 14 #define ALL_BLACK 15 /* VDI and AES colors */ #define WHITE 0 #define BLACK 1 #define RED 2 #define GREEN 3 #define BLUE 4 #define CYAN 5 #define YELLOW 6 #define MAGENTA 7 #define LWHITE 8 #define LBLACK 9 #define LRED 10 #define LGREEN 11 #define LBLUE 12 #define LCYAN 13 #define LYELLOW 14 #define LMAGENTA 15 /* the AES constants */ /* font types */ #define IBM 3 #define SMALL 5 /* evnt_multi flags */ #define MU_KEYBD 0x0001 #define MU_BUTTON 0x0002 #define MU_M1 0x0004 #define MU_M2 0x0008 #define MU_MESAG 0x0010 #define MU_TIMER 0x0020 /* evnt_mouse flags */ #define MU_MENTRY 0x0000 #define MU_MEXIT 0x0001 /* keyboard states */ #define K_RSHIFT 0x0001 #define K_LSHIFT 0x0002 #define K_CTRL 0x0004 #define K_ALT 0x0008 /* event message values */ /* extensions for AES 4.0 inserted */ #define MN_SELECTED 10 #define WM_REDRAW 20 #define WM_TOPPED 21 #define WM_CLOSED 22 #define WM_FULLED 23 #define WM_ARROWED 24 #define WM_HSLID 25 #define WM_VSLID 26 #define WM_SIZED 27 #define WM_MOVED 28 #define WM_NEWTOP 29 #define WM_UNTOPPED 30 /* AES 3.3 */ #define WM_ONTOP 31 /* AES 3.3 */ #define AC_OPEN 40 #define AC_CLOSE 41 #define AP_TERM 50 /* AES 4.0 */ #define AP_TFAIL 51 /* AES 4.0 */ #define AP_RESCHG 57 /* AES 4.0 */ #define SHUT_COMPLETED 60 /* AES 4.0 */ #define RESCH_COMPLETED 61 /* AES 4.0 */ #define AP_DRAGDROP 63 /* AES 4.0 */ #define SH_WDRAW 72 /* AES 4.0 */ #define CH_EXIT 80 /* AES 4.0 */ /* WM_ARROWED messages - added by jerry */ #define WA_UPPAGE 0 #define WA_DNPAGE 1 #define WA_UPLINE 2 #define WA_DNLINE 3 #define WA_LFPAGE 4 #define WA_RTPAGE 5 #define WA_LFLINE 6 #define WA_RTLINE 7 /* form_dial opcodes */ #define FMD_START 0 #define FMD_GROW 1 #define FMD_SHRINK 2 #define FMD_FINISH 3 /* rsrc_gaddr structure types */ #define ROOT 0 /* this name used by MWC */ #define R_TREE 0 #define R_OBJECT 1 #define R_TEDINFO 2 #define R_ICONBLK 3 #define R_BITBLK 4 #define R_STRING 5 #define R_IMAGEDATA 6 #define R_OBSPEC 7 #define R_TEPTEXT 8 #define R_TEPTMPLT 9 #define R_TEPVALID 10 #define R_IBPMASK 11 #define R_IBPDATA 12 #define R_IBPTEXT 13 #define R_BIPDATA 14 #define R_FRSTR 15 #define R_FRIMG 16 /* Window Attributes */ #define NAME 0x0001 #define CLOSER 0x0002 #define FULLER 0x0004 #define MOVER 0x0008 #define INFO 0x0010 #define SIZER 0x0020 #define UPARROW 0x0040 #define DNARROW 0x0080 #define VSLIDE 0x0100 #define LFARROW 0x0200 #define RTARROW 0x0400 #define HSLIDE 0x0800 /* wind_calc flags */ #define WC_BORDER 0 #define WC_WORK 1 /* wind_get flags */ #define WF_KIND 1 #define WF_NAME 2 #define WF_INFO 3 #define WF_WORKXYWH 4 #define WF_CURRXYWH 5 #define WF_PREVXYWH 6 #define WF_FULLXYWH 7 #define WF_HSLIDE 8 #define WF_VSLIDE 9 #define WF_TOP 10 #define WF_FIRSTXYWH 11 #define WF_NEXTXYWH 12 #define WF_RESVD 13 #define WF_NEWDESK 14 #define WF_HSLSIZE 15 #define WF_VSLSIZE 16 #define WF_SCREEN 17 #define WF_COLOR 18 /* AES 3.3 */ #define WF_DCOLOR 19 /* AES 3.3 */ #define WF_OWNER 20 /* AES 3.3 */ #define WF_BEVENT 24 /* AES 3.31 */ #define WF_BOTTOM 25 /* AES 3.31 */ /* wind_update flags */ #define END_UPDATE 0 #define BEG_UPDATE 1 #define END_MCTRL 2 #define BEG_MCTRL 3 /* graf_mouse mouse types*/ #define ARROW 0 #define TEXT_CRSR 1 #define HOURGLASS 2 /* this name used by MWC (why?) */ #define BUSY_BEE 2 #define BUSYBEE 2 #define BEE 2 #define POINT_HAND 3 #define FLAT_HAND 4 #define THIN_CROSS 5 #define THICK_CROSS 6 #define OUTLN_CROSS 7 #define USER_DEF 255 #define M_OFF 256 #define M_ON 257 #define M_SAVE 258 /* MultiTOS */ #define M_RESTORE 259 /* MultiTOS */ #define M_PREV 260 /* MultiTOS */ /* objects */ /* max depth of search or draw */ #define MAX_DEPTH 8 /* object types */ /* value returned by objc_find(), et. al. */ #define NO_OBJECT -1 #define G_BOX 20 #define G_TEXT 21 #define G_BOXTEXT 22 #define G_IMAGE 23 #define G_USERDEF 24 #define G_PROGDEF 24 #define G_IBOX 25 #define G_BUTTON 26 #define G_BOXCHAR 27 #define G_STRING 28 #define G_FTEXT 29 #define G_FBOXTEXT 30 #define G_ICON 31 #define G_TITLE 32 /* object flags */ #define NONE 0x0000 #define SELECTABLE 0x0001 #define DEFAULT 0x0002 #define EXIT 0x0004 #define EDITABLE 0x0008 #define RBUTTON 0x0010 #define LASTOB 0x0020 #define TOUCHEXIT 0x0040 #define HIDETREE 0x0080 #define INDIRECT 0x0100 /* Object states */ #define NORMAL 0x0000 #define SELECTED 0x0001 #define CROSSED 0x0002 #define CHECKED 0x0004 #define DISABLED 0x0008 #define OUTLINED 0x0010 #define SHADOWED 0x0020 /* editable text field definitions */ #define EDSTART 0 #define EDINIT 1 #define EDCHAR 2 #define EDEND 3 /* editable text justification */ #define TE_LEFT 0 #define TE_RIGHT 1 #define TE_CNTR 2 /* VDI Memory Form Definition Block */ #ifndef FDADDR /* v1.3: this typedef has been added to */ typedef char *FDADDR; /* help provide compatibility between */ #endif /* bindings systems. */ typedef struct fdbstr { FDADDR fd_addr; int fd_w; int fd_h; int fd_wdwidth; int fd_stand; int fd_nplanes; int fd_r1; int fd_r2; int fd_r3; } FDB; #define MFDB FDB /* MFDB added for Laser compatibily */ /* Mouse Form Definition Block */ typedef struct mfstr { int mf_xhot; int mf_yhot; int mf_nplanes; int mf_fg; int mf_bg; int mf_mask[16]; int mf_data[16]; } MFORM ; typedef struct grect { int g_x; int g_y; int g_w; int g_h; } GRECT; typedef struct vrect { int v_x1; int v_y1; int v_x2; int v_y2; } VRECT; typedef struct text_edinfo { char *te_ptext; /* ptr to text */ char *te_ptmplt; /* ptr to template */ char *te_pvalid; /* ptr to validation chrs. */ int te_font; /* font */ int te_junk1; /* junk word */ int te_just; /* justification */ int te_color; /* color information word */ int te_junk2; /* junk word */ int te_thickness; /* border thickness */ int te_txtlen; /* length of text string */ int te_tmplen; /* length of template string */ } TEDINFO; typedef struct icon_block { int *ib_pmask; int *ib_pdata; char *ib_ptext; int ib_char; int ib_xchar; int ib_ychar; int ib_xicon; int ib_yicon; int ib_wicon; int ib_hicon; int ib_xtext; int ib_ytext; int ib_wtext; int ib_htext; } ICONBLK; typedef struct bit_block { int *bi_pdata; /* ptr to bit forms data */ int bi_wb; /* width of form in bytes */ int bi_hl; /* height in lines */ int bi_x; /* source x in bit form */ int bi_y; /* source y in bit form */ int bi_color; /* fg color of blt */ } BITBLK; typedef struct user_blk { long (*ub_code)(); long ub_parm; } USERBLK; #define appl_blk user_blk #define APPLBLK USERBLK typedef union Obspec { long obspec; TEDINFO *tedinfo; ICONBLK *iconblk; BITBLK *bitblk; USERBLK *userblk; char *free_string; } OBSPEC; typedef struct object { int ob_next; /* -> object's next sibling */ int ob_head; /* -> head of object's children */ int ob_tail; /* -> tail of object's children */ unsigned int ob_type; /* type of object */ unsigned int ob_flags; /* flags */ unsigned int ob_state; /* state */ /* long ob_spec; */ /* replaced by following UNION -jerry- */ OBSPEC ob_spec; /* whatever: ob_spec.obspec ... */ int ob_x; /* upper left corner of object */ int ob_y; /* upper left corner of object */ int ob_width; /* width of obj */ int ob_height; /* height of obj */ } OBJECT; typedef struct parm_blk { OBJECT *pb_tree; int pb_obj; int pb_prevstate; int pb_currstate; int pb_x, pb_y, pb_w, pb_h; int pb_xc, pb_yc, pb_wc, pb_hc; long pb_parm; } PARMBLK; /*------------------------------------------------------------------------- * RSHDR structure... *-----------------------------------------------------------------------*/ typedef struct rshdr { int rsh_vrsn; /* Resource structure version # */ unsigned int rsh_object; /* Offset to first object */ unsigned int rsh_tedinfo; /* Offset to first tedinfo */ unsigned int rsh_iconblk; /* Offset to first iconblk */ unsigned int rsh_bitblk; /* Offset to first bitblk */ unsigned int rsh_frstr; /* Offset to free string index */ unsigned int rsh_string; /* Offset to string data */ unsigned int rsh_imdata; /* Offset to image data */ unsigned int rsh_frimg; /* Offset to free image index */ unsigned int rsh_trindex; /* Offset to tree index */ unsigned int rsh_nobs; /* Number of objects */ unsigned int rsh_ntree; /* Number object trees */ unsigned int rsh_nted; /* Number of tedinfo structs */ unsigned int rsh_nib; /* Number of iconblk structs */ unsigned int rsh_nbb; /* Number of bitblk structs */ unsigned int rsh_nstring; /* Number of free strings */ unsigned int rsh_nimages; /* Number of free images */ unsigned int rsh_rssize; /* total bytes in resource */ } RSHDR; #define RSHDR_DEFINED 1 /* signal to other header files that RSHDR is done */ /* ignore following structures, they're being set up for GEMFAST v2.0 - Ian */ typedef struct xmouse { int retval; int bclicks; int mask; int state; int status; int mousex; int mousey; int mouseb; int keystate; } XMOUSE; typedef struct xmulti { int msgbuf[8]; int mflags, mbclicks, mbmask, mbstate, mm1flags; GRECT mm1rect; int mm2flags; GRECT mm2rect; int mtlocount, mthicount; int mwhich, mmox, mmoy, mmobutton, mmokstate, mkreturn, mbreturn; } XMULTI; /************************************************************************** * * Name compatibility stuff. * * 05/26/90 - v1.4 * Added mapping of find_exttype to obj_xtfind. * 08/28/89 - v1.3 * In v1.3, a big push has been made to make a consistant * naming standard for the AES utilities. To avoid breaking * a lot of existing code, the following block will direct * the old names to the new routines. * *************************************************************************/ #define objclg_adjust rc_gadjust #define objclv_adjust rc_vadjust #define objrb_which(a,b) obj_rbfind((a),(b),SELECTED) #define obj_rbwhich(a,b) obj_rbfind((a),(b),SELECTED) #define objxrb_which obj_rbfind #define objc_xywh obj_xywh #define find_exttype obj_xtfind #define objst_change obj_stchange #define objfl_change obj_flchange #define graqon_mouse gra_qonmouse #define graqof_mouse gra_qofmouse #define graq_mstate gra_qmstate #endif /* end of GEMFAST.H */