home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Computer Club Elmshorn Atari PD
/
CCE_PD.iso
/
pc
/
0600
/
CCE_0638.ZIP
/
CCE_0638
/
INCLUDE
/
INCLUD87.ZOO
/
gemfast.h
< prev
next >
Wrap
C/C++ Source or Header
|
1993-03-02
|
15KB
|
591 lines
#ifndef _GEMFAST_H
#define _GEMFAST_H
#ifndef _COMPILER_H
# include <compiler.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
/**************************************************************************
*
* GEMFAST.H - Header file for common VDI and AES symbols.
*
* This header file contains items compatible with both GEMDEFS and OBDEFS
* from the Alcyon system. Note that there are no 'extern' definitions
* for the functions, because they all return a signed short and work
* fine as autodefined functions.
*
* If you have a lot of source already coded for #include <gemdefs.h>,
* you can continue to use your original gemdefs file, or you can rename
* this file to gemdefs.h; if your source also includes obdefs.h, remove
* them when using this file.
* (i have links called obdefs and gemdefs, since this file is now protected
* against multiple inclusions -- ++jrb)
*
* 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...
*
*************************************************************************/
/* 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
/* keyboard states */
#define K_RSHIFT 0x0001
#define K_LSHIFT 0x0002
#define K_CTRL 0x0004
#define K_ALT 0x0008
/* event message values */
#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 AC_OPEN 40
#define AC_CLOSE 41
/* Xcontrol messages */
#define CT_UPDATE 50
#define CT_MOVE 51
#define CT_NEWTOP 52
#define CT_KEY 53
/* form_dial opcodes */
#define FMD_START 0
#define FMD_GROW 1
#define FMD_SHRINK 2
#define FMD_FINISH 3
/* 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
/* 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_create 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
#define WF_DCOLOR 19
/* window elements */
#define W_BOX 0
#define W_TITLE 1
#define W_CLOSER 2
#define W_NAME 3
#define W_FULLER 4
#define W_INFO 5
#define W_DATA 6
#define W_WORK 7
#define W_SIZER 8
#define W_VBAR 9
#define W_UPARROW 10
#define W_DNARROW 11
#define W_VSLIDE 12
#define W_VELEV 13
#define W_HBAR 14
#define W_LFARROW 15
#define W_RTARROW 16
#define W_HSLIDE 17
#define W_HELEV 18
/* arrow message */
#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
/* 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 BEE 2
#define BUSY_BEE BEE /* alias */
#define TEXT_CRSR 1
#define HOURGLASS 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
/* objects - general */
#define ROOT 0 /* index of ROOT */
#define MAX_LEN 81 /* max string length */
#define MAX_DEPTH 8 /* max depth of search or draw */
/* inside fill patterns */
#define IP_HOLLOW 0
#define IP_1PATT 1
#define IP_2PATT 2
#define IP_3PATT 3
#define IP_4PATT 4
#define IP_5PATT 5
#define IP_6PATT 6
#define IP_SOLID 7
/* normal graphics drawing modes */
#define MD_REPLACE 1
#define MD_TRANS 2
#define MD_XOR 3
#define MD_ERASE 4
/* 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
/* font types */
#define IBM 3
#define SMALL 5
/* object types */
#define G_BOX 20
#define G_TEXT 21
#define G_BOXTEXT 22
#define G_IMAGE 23
#define G_USERDEF 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
#define SUBMENU 0x0800 /* falcon aes hierarchical menus */
/* Object states */
#define NORMAL 0x0000
#define SELECTED 0x0001
#define CROSSED 0x0002
#define CHECKED 0x0004
#define DISABLED 0x0008
#define OUTLINED 0x0010
#define SHADOWED 0x0020
/* Object colors - default pall. */
#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
/* 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
/* file attr for dos_create */
#define F_ATTR 0
/* VDI Memory Form Definition Block */
#ifndef __MFDB__
#ifndef _ALT_MFDB
#ifndef __ALT_MFDB__
#define __MFDB__
typedef struct
{
#ifdef __TCC_COMPAT__
void *fd_addr;
#else /* !__TCC_COMPAT__ */
long fd_addr; /* Addrerss of upper left corner of first*/
/* plane of raster area. If NULL then */
/* MFDB is for a physical device */
#endif /* !__TCC_COMPAT__ */
short fd_w; /* Form Width in Pixels */
short fd_h; /* Form Height in Pixels */
short fd_wdwidth; /* Form Width in shorts(fd_w/sizeof(int)*/
short fd_stand; /* Form format 0= device spec 1=standard*/
short fd_nplanes; /* Number of memory planes */
short fd_r1; /* Reserved */
short fd_r2; /* Reserved */
short fd_r3; /* Reserved */
} MFDB;
#endif
#endif
#endif /* __MFDB__ */
#ifdef __ALT_MFDB__
/* some software seems to wants this format for FDB. to get it, define
__ALT_MFDB__
*/
#ifdef __MFDB__
# error conflicting types for MFDB
#endif
#define __MFDB__
typedef struct
{
long mp;
short fwp;
short fh;
short fww;
short ff;
short np;
short r1;
short r2;
short r3;
} MFDB;
#endif /* __ALT_MFDB__ */
/* Mouse Form Definition Block */
typedef struct mouse_form
{
short mf_xhot;
short mf_yhot;
short mf_nplanes;
short mf_bg;
short mf_fg;
short mf_mask[16];
short mf_data[16];
} MFORM ;
typedef struct mouse_event_type
{
int *x;
int *y;
int *b;
int *k;
} Mouse;
typedef struct graphic_rectangle
{ /* note these three rect structs are deliberately ints */
int g_x;
int g_y;
int g_w;
int g_h;
} GRECT;
typedef struct vdi_rectangle
{
int v_x1;
int v_y1;
int v_x2;
int v_y2;
} VRECT;
typedef struct orect
{
struct orect *o_link;
int o_x;
int o_y;
int o_w;
int o_h;
} ORECT;
typedef struct rect_for_rect_utils
{ /* note these three rect structs are deliberately ints */
int x;
int y;
int w;
int h;
} Rect;
typedef struct text_edinfo
{
char *te_ptext; /* ptr to text */
char *te_ptmplt; /* ptr to template */
char *te_pvalid; /* ptr to validation chrs. */
short te_font; /* font */
short te_junk1; /* junk word */
short te_just; /* justification */
short te_color; /* color information word */
short te_junk2; /* junk word */
short te_thickness; /* border thickness */
short te_txtlen; /* length of text string */
short te_tmplen; /* length of template string */
} TEDINFO;
typedef struct icon_block
{
short *ib_pmask;
short *ib_pdata;
char *ib_ptext;
short ib_char;
short ib_xchar;
short ib_ychar;
short ib_xicon;
short ib_yicon;
short ib_wicon;
short ib_hicon;
short ib_xtext;
short ib_ytext;
short ib_wtext;
short ib_htext;
short ib_resvd;
} ICONBLK;
typedef struct bit_block
{
char *bi_pdata; /* ptr to bit forms data */
short bi_wb; /* width of form in bytes */
short bi_hl; /* height in lines */
short bi_x; /* source x in bit form */
short bi_y; /* source y in bit form */
short bi_color; /* fg color of blt */
} BITBLK;
#ifndef __TCC_COMPAT__
typedef struct object
{
short ob_next; /* -> object's next sibling */
short ob_head; /* -> head of object's children */
short ob_tail; /* -> tail of object's children */
unsigned short ob_type; /* type of object */
unsigned short ob_flags;/* flags */
unsigned short ob_state;/* state */
unsigned long ob_spec; /* object-specific data */
short ob_x; /* upper left corner of object */
short ob_y; /* upper left corner of object */
short ob_width; /* width of obj */
short ob_height; /* height of obj */
} OBJECT;
#else
typedef struct {
unsigned int character : 8;
signed int framesize : 8;
unsigned int framecol : 4;
unsigned int textcol : 4;
unsigned int textmode : 1;
unsigned int fillpattern : 3;
unsigned int interiorcol : 4;
} bfobspec;
struct user_block; /* forward declaration */
typedef union __u_ob_spec {
TEDINFO *tedinfo;
long index;
char *free_string;
union __u_ob_spec *indirect;
bfobspec obspec;
BITBLK *bitblk;
ICONBLK *iconblk;
struct user_block *userblk;
/* APPLBLK *applblk;
char *string; */
} U_OB_SPEC;
typedef struct object
{
short ob_next; /* -> object's next sibling */
short ob_head; /* -> head of object's children */
short ob_tail; /* -> tail of object's children */
unsigned short ob_type; /* type of object */
unsigned short ob_flags;/* flags */
unsigned short ob_state;/* state */
U_OB_SPEC ob_spec; /* object-specific data */
short ob_x; /* upper left corner of object */
short ob_y; /* upper left corner of object */
short ob_width; /* width of obj */
short ob_height; /* height of obj */
} OBJECT;
#endif
typedef struct parm_block
{
OBJECT *pb_tree;
short pb_obj;
short pb_prevstate;
short pb_currstate;
short pb_x, pb_y, pb_w, pb_h;
short pb_xc, pb_yc, pb_wc, pb_hc;
long pb_parm;
} PARMBLK;
typedef struct user_block
{
#ifdef __TCC_COMPAT__
int __CDECL (*ub_code)(PARMBLK *parmblock);
#else
int __CDECL (*ub_code)(void *parmblock); /* really PARMBLK *parmblock */
#endif
long ub_parm;
} USERBLK;
/* used in RSCREATE.C */
typedef struct rshdr
{
short rsh_vrsn;
unsigned short rsh_object;
unsigned short rsh_tedinfo;
unsigned short rsh_iconblk; /* list of ICONBLKS */
unsigned short rsh_bitblk;
unsigned short rsh_frstr;
unsigned short rsh_string;
unsigned short rsh_imdata; /* image data */
unsigned short rsh_frimg;
unsigned short rsh_trindex;
short rsh_nobs; /* counts of various structs */
short rsh_ntree;
short rsh_nted;
short rsh_nib;
short rsh_nbb;
short rsh_nstring;
short rsh_nimages;
unsigned short rsh_rssize; /* total bytes in resource */
} RSHDR;
#define DESKTOP_HANDLE 0
/* falcon aes menu_popup and menu_attach structure for passing and receiving
* submenu data.
*/
typedef struct _menu
{
OBJECT *mn_tree; /* the object tree of the menu */
short mn_menu; /* the parent object of the menu items */
short mn_item; /* the starting menu item */
short mn_scroll; /* the scroll field status of the menu
0 - The menu will not scroll
!0 - The menu will scroll if the number of menu
items exceed the menu scroll height. The
non-zero value is the object at which
scrolling will begin. This will allow one
to have a menu in which the scrollable region
is only a part of the whole menu. The value
must be a menu item in the menu.
menu_settings can be used to change the menu
scroll height.
NOTE: If the scroll field status is !0, the menu
items must consist entirely of G_STRINGS. */
short mn_keystate; /* The CTRL, ALT, SHIFT Key state at the time the
mouse button was pressed. */
} MENU;
/* menu_settings uses a new structure for setting and inquiring the submenu
* delay values and the menu scroll height. The delay values are measured in
* milliseconds and the height is based upon the number of menu items.
*/
typedef struct _mn_set
{
long Display; /* the submenu display delay */
long Drag; /* the submenu drag delay */
long Delay; /* the single-click scroll delay */
long Speed; /* the continuous scroll delay */
short Height; /* the menu scroll height */
} MN_SET;
/* (user visible) binding arrays */
extern short _intin[], _intout[], _ptsin[], _ptsout[];
#ifndef __GNUC__ /* for gcc see common.h in gemlib */
extern void *_addrin[], *_addrout[];
#endif
extern int gl_apid, gl_ap_version;
#ifdef __cplusplus
}
#endif
#endif /* _GEMFAST_H */