#line 1/*ACE 4 0473 */
#ifndef GEMFAST_H

#define GEMFAST_H       1 /* Tell the world GEMFAST is available */
#define GEMFAST_VERSION 0x0130  /* Tell the world what version we're on */

typedef struct {
	int     contrl[11];
	int     global[80];
	int     intin[128];
	int     ptsin[128];
	int     intout[45];
	int     ptsout[128];
	void    *addrin[128];
	void    *addrout[128];
} GEMPARBLK;


typedef struct {
	unsigned int rsh_vrsn;
	unsigned int rsh_object;
	unsigned int rsh_tedinfo;
	unsigned int rsh_iconblk;
	unsigned int rsh_bitblk;
	unsigned int rsh_frstr;
	unsigned int rsh_string;
	unsigned int rsh_imdata;
	unsigned int rsh_frimg;
	unsigned int rsh_trindex;
	unsigned int rsh_nobs;
	unsigned int rsh_ntree;
	unsigned int rsh_nted;
	unsigned int rsh_nib;
	unsigned int rsh_nbb;
	unsigned int rsh_nstring;
	unsigned int rsh_nimages;
	unsigned int rsh_rssize;
} RSHDR;



#define MAX_LEN 81      /* max string length */


/* types for form_alert() */
#define FO_NOTE 1
#define FO_WAIT 2
#define FO_STOP 3
#define NO_ICON 0       /* (j)ens */
#define NOTE    1
#define WAIT    2
#define STOP    3

#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

typedef struct  _AESPB {
	long cb_pcontrol;
	long cb_pglobal;
	long cb_pintin;
	long cb_pintout;
	long cb_padrin;
	long cb_padout;
} AESPB;

extern int      global[];
extern int      gl_apversion;   /* = global[0]  */
extern int      gl_apcount;     /* = global[1]  */
extern int      gl_apid;        /* = global[2]  */
extern long     gl_apprivate;   /* = global[3,4]*/
extern long     gl_apptree;     /* = global[5,6]*/
extern AESPB    aespb;

#define VIS_HOLLOW      0       /* VDI inside fill styles - new names */
#define VIS_SOLID       1
#define VIS_PATTERN     2
#define VIS_HATCH       3
#define VIS_UDPTRN      4
#define VIP_HOLLOW      0       /* VDI inside fill patterns - new names */
#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
#define IS_HOLLOW       0       /* VDI inside fill patterns */
#define IS_SOLID        1
#define IS_PATTERN      2
#define IS_HATCH        3
#define IS_UDPTRN       4
#define IP_HOLLOW       0       /* VDI inside fill patterns */
#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_SOLID        7
#define MD_REPLACE      1       /* VDI normal graphics drawing modes */
#define MD_TRANS        2
#define MD_XOR          3
#define MD_ERASE        4
#define ALL_WHITE       0       /* VDI bit blt rules */
#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
#define IBM             3       /* font types */
#define SMALL           5
#define MU_KEYBD        0x0001  /* evnt_multi flags */
#define MU_BUTTON       0x0002
#define MU_M1           0x0004
#define MU_M2           0x0008
#define MU_MESAG        0x0010
#define MU_TIMER        0x0020
#define MU_MENTRY       0x0000  /* evnt_mouse flags */
#define MU_MEXIT        0x0001
#define K_RSHIFT        0x0001  /* keyboard states */
#define K_LSHIFT        0x0002
#define K_CTRL          0x0004
#define K_ALT           0x0008
#define K_ALTERNATE     0x0008  /* added by --Holger */
#define MN_SELECTED     10      /* event message values */
#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 */

#define FMD_START       0       /* form_dial opcodes */
#define FMD_GROW        1
#define FMD_SHRINK      2
#define FMD_FINISH      3
#define ROOT            0       /* rsrc_gaddr structure types */
#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
#define NAME            0x0001  /* Window Attributes */
#define CLOSER          0x0002
#define CLOSE           0x0002  /* (j)ens */
#define FULLER          0x0004
#define FULL            0x0004  /* (j)ens */
#define MOVER           0x0008
#define MOVE            0x0008  /* (j)ens */
#define INFO            0x0010
#define SIZER           0x0020
#define SIZE            0x0020  /* (j)ens */
#define UPARROW         0x0040
#define DNARROW         0x0080
#define VSLIDE          0x0100
#define LFARROW         0x0200
#define RTARROW         0x0400
#define HSLIDE          0x0800
#define WC_BORDER       0       /* wind_calc flags */
#define WC_WORK         1

#define WF_KIND         1       /* wind_get flags */
#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 */

#define END_UPDATE      0       /* wind_update flags */
#define BEG_UPDATE      1
#define END_MCTRL       2
#define BEG_MCTRL       3

#define ARROW           0       /* graf_mouse mouse types */
#define TEXT_CRSR       1
#define HOURGLASS       2
#define BUSY_BEE        2
#define BUSYBEE         2       /* (j)ens */
#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 */

#define MAX_DEPTH       8       /* max depth of search or draw */
#define NO_OBJECT       -1      /* value returned by objc_find(), et. al. */
#define G_BOX           20      /* object types */
#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
#define G_CICON         33      /* MultoTOS */
#define NONE            0x0000  /* object flags */
#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
#define FL3DIND         0x0200  /* MultiTOS */
#define FL3DBAK         0x0400  /* MultiTOS */
#define FL3DACT         0x0600  /* MultiTOS: Mask only */

#define NORMAL          0x0000  /* Object states */
#define SELECTED        0x0001
#define CROSSED         0x0002
#define CHECKED         0x0004
#define DISABLED        0x0008
#define OUTLINED        0x0010
#define SHADOWED        0x0020
#define WHITE           0       /* Object colors */
#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
#define ED_START        0       /* types for objc_edit() */
#define EDSTART         0
#define ED_INIT         1
#define EDINIT          1
#define ED_CHAR         2
#define EDCHAR          2
#define ED_END          3
#define EDEND           3
#define TE_LEFT         0       /* editable text justification */
#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 {
	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 */

typedef struct {                /* Mouse Form Definition Block */
	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 cicon_data {
	int                 num_planes;     /* number of planes     */
	int                 *col_data;      /* pointer to data bitmap   */
	int                 *col_mask;      /* pointer to mask bitmap   */
	int                 *sel_data;      /* pointer to selected bitmap   */
	int                 *sel_mask;
	struct cicon_data   *next_res;
} CICON;


typedef struct {
	int     ob_next;
	int     ob_head;
	int     ob_tail;
	int     ob_type;
	int     ob_flags;
	int     ob_state;
	char    *ob_spec;
	int     ob_x;
	int     ob_y;
	int     ob_width;
	int     ob_height;
} OBJECT;

typedef struct {            /* MultiTOS */
	OBJECT *mn_tree;
	int    mn_menu;
	int    mn_item;
	int    mn_scroll;
	int    mn_keystate;
} MENU;

typedef struct {            /* MultiTOS */
	long    display;
	long    drag;
	long    delay;
	long    speed;
	long    height;
} MN_SET;

typedef struct {
	int g_x;
	int g_y;
	int g_w;
	int g_h;
} GRECT;

typedef struct {
	int v_x1;
	int v_y1;
	int v_x2;
	int v_y2;
} VRECT;

typedef struct {
	char    *te_ptext;
	char    *te_ptmplt;
	char    *te_pvalid;
	int te_font;
#ifdef OLDTEDNAMES
	int junk1;
#else
	int te_resvd1;
#endif
	int te_just;
	int te_color;
#ifdef OLDTEDNAMES
	int junk2;
#else
	int te_resvd2;
#endif
	int te_thickness;
	int te_txtlen;
	int te_tmplen;
} TEDINFO;

typedef struct {
	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 {
	ICONBLK monoblk;        /* default monochrome icon  */
	CICON   *mainlist;
} CICONBLK;


typedef struct {
	int *bi_pdata;
	int bi_wb;
	int bi_hl;
	int bi_x;
	int bi_y;
	int bi_color;
} BITBLK;

typedef struct  user_blk {
	long ub_code;
	long ub_parm;
} USERBLK;

#define appl_blk user_blk
#define APPLBLK USERBLK

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;

typedef struct {
	int     (*ub_code)(struct __parmblk *parmblock);
	char    *ub_spec;   /* old ob_spec */
	int     ub_type;    /* old ob_type */
} EXAPPLBLK;


/**************************************************************************
 *      Name compatibility stuff.
 *************************************************************************/
#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 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 */

