/******************************************************************** * 1.10* * XAES: The Extended Application Environment Systems * * Code by Ken Hollis, GNU C Extensions by Sascha Blank * * * * Copyright (c) 1994, Bitgate Software. All Rights Reserved. * * * ********************************************************************/ #include #include #include /* Hmmm... XAES really isn't that compatible is it? */ #ifdef __GNUC__ #error "XAES is not compatible with Gnu C or Gnu C++" #elif __ALCYON__ #error "XAES is not compatible with Alcyon C" #elif __PROSPERO__ #error "XAES is not compatible with Prospero C" #elif __SOZOBON__ #error "XAES is not compatible with Sozobon C" #elif __LASER_C__ #error "XAES is not compatible with Laser C" #endif #ifdef __AES__ #ifndef DEBUG #error "PLEASE ENABLE DEBUGGING!" #endif #define GLOBAL /* A globally useful routine */ #define LOCAL static /* A module-only routine */ #ifdef __TURBOC__ #pragma warn -pia /* Possibly Incorrect Assignment is off */ #pragma warn -sus /* Sustain strange warnings */ #endif #ifndef min #define min(a,b) ((a) < (b) ? (a) : (b)) /* Minimum value */ #define max(a,b) ((a) > (b) ? (a) : (b)) /* Maximum value */ #endif #define BOOL int /* Extended boolean values */ #define TRUE 1 /* True boolean value */ #define FALSE 0 /* False boolean value */ #define FAIL -1 /* Fail boolean value (supported too!) */ #define NOMORE FAIL /* No more windows available */ #define MAX_WINDOWS 100 /* Maximum number of windows */ #define AES_VERSION _GemParBlk.global[0] /* Version of AES */ #define UNUSED(x) ((void)(x)) /* Any unused variables */ #define WC_NOTOBJECTABLE 0 /* Window can be closed w/o asking */ #define WC_OBJECTABLE 1 /* Pause before closing window */ #define WC_FORCED 2 /* Force window to be closed */ #define WC_NOTCLOSABLE 3 /* Window cannot be closed */ /* Extended window KIND creation flags */ #ifndef SMALLER #define SMALLER 0x2000 /* Window smaller gadget */ #endif #define CASCADE 0x1000 /* Cascade window gadget */ #define MENUWORK 0x4000 /* Menu workspace */ #define OPTIONS 0x8000 /* Options (not yet used) */ /* These signify the starting point of user defined messages */ #define WM_USER 0x0500 /* User defined window messages */ #define WF_USER 0x1000 /* User defined window fixes */ #define WM_MAGIC 0x0500 /* Additive for our messages */ #define WF_MAGIC 0x3E20 /* Additive for our window fixes */ #define WM_XAES (WM_USER + WM_MAGIC) /* Remind you of */ #define WF_XAES (WF_USER + WF_MAGIC) /* Windows??? :) */ #define WM_XAESKEY (WM_XAES + 0x0100) /* Keyer events */ #define WM_XAESPS (WM_XAESKEY + 0x0400) /* Program events */ /* Activation events */ #define WM_DIALOG (WM_XAES + 0) /* Dialog */ #define WM_KEYBD (WM_XAES + 1) /* Keyboard */ #define WM_BUTTON (WM_XAES + 2) /* General button */ #define WM_TEXT (WM_XAES + 3) /* Text */ #define WM_HOTKEY (WM_XAES + 4) /* Hotkey (object activation by ALT) */ #define WM_FKEY (WM_XAES + 5) /* Function key */ #define WM_HELP (WM_XAES + 6) /* Help key */ #define WM_UNDO (WM_XAES + 7) /* Undo key */ #define WM_MENU (WM_XAES + 8) /* Menu */ #define WM_CLIP (WM_XAES + 9) /* Clipboard usage */ #define WM_TIMECHG (WM_XAES + 10) /* Change timer information */ #define WM_GETHELP (WM_XAES + 11) /* Help about info */ #define WM_SLIDER (WM_XAES + 12) /* Slider message */ #define WM_ICONIFY (WM_XAES + 13) /* Iconified message */ #define WM_UNICONIFY (WM_XAES + 14) /* Uniconified message */ /* Keyer events */ #define WM_CREATED (WM_XAESKEY + 0) /* Window created */ #define WM_KILL (WM_XAESKEY + 1) /* Window killed */ #define WM_TIMER (WM_XAESKEY + 2) /* Timer event has elapsed */ #define WM_PAINT (WM_XAESKEY + 3) /* Dispatch "redraw" */ #define WM_COPIED (WM_XAESKEY + 4) /* Window just copied */ /* Program status events */ #define WM_CLOSEALL (WM_XAESPS + 0) /* All windows closed message */ #define WM_PROGEND (WM_XAESPS + 1) /* Program termination message */ /* Window states */ #define W_NULLIFIED 0x0000 /* Window has no state */ #define W_OPEN 0x0001 /* Window is currently opened */ #define W_MINIMIZED 0x0002 /* Window is minimized */ #define W_UNUNTOPPABLE 0x0004 /* Window cannot be un-untopped */ #define W_BEVENT 0x0008 /* Window accepts bkgnd clicks */ #define W_FLYING 0x0010 /* Window is a flying dialog */ #define W_TEXT 0x0020 /* Window is a text window */ #define W_TIMER 0x0040 /* Window is a timer */ #define W_DIALOG 0x0080 /* Window is a dialog */ #define W_DESKTOP 0x0100 /* Window is the desktop */ #define W_UNSIZABLE 0x0200 /* Window cannot be sized */ #define W_ICONIFIED 0x0400 /* Window is iconified */ /* Window styles */ #define W_CUSTOMWINDOW 0x0001 /* Window has custom elements */ /* Window get and set messages */ #define WF_MINIMIZE (WF_XAES + 0) /* Minimizable window */ #define WF_UNUNTOPPABLE (WF_XAES + 1) /* Cannot untop window */ #define WF_FLYING (WF_XAES + 2) /* Flying Dialog window */ #define WF_TEXT (WF_XAES + 3) /* Text window */ #define WF_TIMER (WF_XAES + 4) /* Timer window */ #define WF_DIALOG (WF_XAES + 5) /* Dialog window */ #define WF_UNSIZABLE (WF_XAES + 6) /* Cannot size window */ #define WF_CUSTOMWIN (WF_XAES + 7) /* Customized window */ #define WF_SLIDEPOS (WF_XAES + 8) /* Slider position */ #define WF_ICONIFIED (WF_XAES + 9) /* Iconified window */ #define WF_UNICONIFIED (WF_XAES + 10) /* Uniconified window */ /* Window callback methods */ #define CBK_NONE 0x0000 /* No callbacks are provided */ #define CBK_OBJECTS 0x0001 /* Callbacks only on object selection */ #define CBK_WINDOW 0x0002 /* Callbacks on any window actions */ #define CBK_ACTION 0x0004 /* Callbacks on an action-by-action basis */ #define CBK_CREATION 0x0008 /* Callbacks only on window creation */ #define CBK_DELETION 0x0010 /* Callbacks only on window deletion */ /* Size-box mode indices; these are self-explanatory. */ #define S_UPPERLEFT 1 #define S_TOP 2 #define S_UPPERRIGHT 3 #define S_RIGHT 4 #define S_LOWERRIGHT 5 #define S_BOTTOM 6 #define S_LOWERLEFT 7 #define S_LEFT 8 /* Object Creation types */ #define WC_WINDOW 1 /* Create a window */ #define WC_SWINDOW 2 /* Create a small window */ #define WC_FLYING 3 /* Create a flying dialog */ #define WC_SLIDER 4 /* Create an object slider */ #define WC_POPUP 5 /* Create an object popup */ #define WC_TEXTGADGET 6 /* Create an object text gadget */ #define WC_GRAPHGADGET 7 /* Create an object graphic gadget */ #define WC_LISTBOX 8 /* Create a popup list box */ #define WC_TOOLBAR 9 /* Create a toolbar */ #define WC_ICONIFIED 10 /* Create an iconified window */ /* Editing modes */ #define EDIT_INSERT 1 /* Edit insert mode */ #define EDIT_REPLACE 2 /* Edit replace mode */ /* Mouse forms. These are the custom mouse forms that are called with WGrafMouse. These are currently used for the custom windows (will be used) and for loading and initializing stuff.. */ #define INIT_MOUSE 50 /* Computer-type mouse */ #define LOAD_MOUSE 51 /* Resource mouse */ #define LRSLIDE_MOUSE 52 /* Left/right slider */ #define UDSLIDE_MOUSE 53 /* Up/down slider */ #define URMOVE_MOUSE 54 /* Upper-right sizer */ #define ULMOVE_MOUSE 55 /* Upper-left sizer */ #define LLMOVE_MOUSE 56 /* Lower-left sizer */ #define LRMOVE_MOUSE 57 /* Lower-right sizer */ #define CLIP_MOUSE 58 /* Clipboard mouse */ #define DIALOG_MOUSE 59 /* Dialog box mouse */ #define HELP_MOUSE 60 /* Help mouse */ #define IBARHELP_MOUSE 61 /* I-BAR Help mouse */ #define TSIZER_MOUSE 62 /* Top sizer mouse */ #define LSIZER_MOUSE 63 /* Left sizer mouse */ #define RSIZER_MOUSE 64 /* Right sizer mouse */ #define BSIZER_MOUSE 65 /* Bottom sizer mouse */ #define MOVER_MOUSE 66 /* Mover mouse */ #define NOMODAL_MOUSE 67 /* Outside of modal mouse */ #define NOWINDOW_MOUSE 68 /* Outside of window mouse */ #define ANIMATED_MOUSE 300 /* Animated mouse */ #define COLOR_MOUSE 301 /* Colour mouse (if ever) */ /* Mouse form tools. This is for mouse animation, and for other tools if the programmer wants to store mouse shapes from loading in from memory, or if they create a mouse tool. Very handy. */ #define GET_MOUSE 400 /* Get current mouse form index */ #define SAVE_MOUSE 401 /* Save current mouse form index */ #define PREV_MOUSE 402 /* Get previous mouse form index */ #define NEXT_MOUSE 403 /* Get next mouse form index */ #define FIRST_MOUSE 404 /* Get first mouse form index */ #define LAST_MOUSE 405 /* Get last mouse form index */ #define CLEAR_MOUSE 406 /* Clear all mice indices */ #define FIND_MOUSE 407 /* Find mouse form index */ #define NEWPOS_MOUSE 408 /* Reposition counter */ /* Timer status modes. The PAUSED and RESUMED modes are not yet functioning, because we don't have multiple timer access yet. These are passed in msg_buf[4]. */ #define T_NOTEXIST -1 /* Timer is non-existent */ #define T_STOPPED 0 /* Timer stopped */ #define T_RUNNING 1 /* Timer running */ #define T_PAUSED T_STOPPED /* Timer "paused" */ #define T_RESUMED T_RUNNING /* Timer resumed (running) */ #define T_ALLSTOP 2 /* All timers stopped */ #define T_ALLRUN 3 /* All timers running */ #define T_ALLPAUSE T_ALLSTOP /* All timers "paused" */ #define T_ALLRESUME T_ALLRUN /* All timers resumed (running) */ /* Checks for the all window kill */ #define K_NO_STOP 0 /* Kill all windows, no stopping */ #define K_ASK 1 /* Ask before killing windows */ #define K_ACC 2 /* Close windows in an accessory */ /* Extended Object Types */ #define SCALE 16 /* Automatic scaling of image */ #define FLYING 17 /* Flying dialog mover */ #define CUSTOM 18 /* Custom arrow buttons */ #define UNDERLINE 19 /* Underlined text */ #define BOXFRAME 20 /* Box frame for selections */ #define HELPBTN 21 /* Activation button under [HELP] */ #define CYCLEBTN 22 /* Cycle button for popup menus */ #define TEXTEFFECTS 23 /* Object text effects */ #define CUSTBTN 24 /* Custom Selection and Radio boxes */ #define DROPDOWN 25 /* Dropdown button for dropdown selections */ #define MENUTEAR 30 /* Detatchable menu bar */ #define UNDOBTN 31 /* Activation button under [UNDO] */ #define MENULINE 40 /* Thick line for separator */ #define SLIDERLEFT 100 /* Move slider left */ #define SLIDERRIGHT 101 /* Move slider right */ #define SLIDERUP 102 /* Move slider up */ #define SLIDERDOWN 103 /* Move slider down */ #define SLIDERTRACK 104 /* Slider track */ #define SLIDERSLIDE 105 /* Slider mover */ /* Standard Extended Object Flags */ #ifdef OBFLAGS11 /* (New AES bindings available?) */ #define HANDSLIDE OBFLAGS12 /* Hand shown for slider */ #define MENUSIDE OBFLAGS13 /* Menu with side items */ #define BOXFRAMETITLE OBFLAGS15 /* Box frame title with box around it */ #else #define HANDSLIDE 0x0800 /* See above */ #define MENUSIDE 0x2000 #define BOXFRAMETITLE 0x8000 #endif /* Extended Object States */ #ifdef OBSTATE15 /* New AES bindings available? */ #define MENUTYPE OBSTATE13 /* Object is a menu title */ #define ALREADYMOD OBSTATE14 /* Already modified for sizing (temporary state) */ #define FAKED3D OBSTATE15 /* Faked 3D setting for Falcon */ #else #define MENUTYPE 0x2000 /* See above */ #define ALREADYMOD 0x4000 #define FAKED3D 0x8000 #endif /* WDie types */ #define FORCE_EXIT -1 /* Force exit with query */ #define FORCE_EXIT_ABS -2 /* Absolute force exit (no query) */ /* WFindOwner returns */ #define W_NOTOWNER -1 /* Not owner of this window */ /* Scaling settings */ #define NO_SCALING 0x0000 /* No scaling is done */ #define SCALING 0x0001 /* All/complete scaling is performed */ #define TEST_SCALING 0x0002 /* Icon mask scaling is done */ #define DARK_SCALING 0x0004 /* Icon data scaling is done */ /* XAES STANDARD Configuration bits */ #define X_LEFTBORDER 0x0001 /* Allow left border moving */ #define X_WINXCOMPAT 0x0002 /* Allow WinX compatibility */ #define X_MOUSEGADGETS 0x0004 /* Change mouse under element */ #define X_MOUSESLIDERS 0x0008 /* Change mouse to slider shape */ #define X_ROUNDOBJECTS 0x0010 /* Rounded objects allowed */ #define X_ROUNDSHADOW 0x0020 /* Rounded shadowing allowed */ #define X_NICELINE 0x0040 /* Niceline dashing allowed */ #define X_GENEVACOMPAT 0x0080 /* Geneva compatibility */ #define X_DRAW3DCOMPAT 0x0100 /* Draw-3D two-color compatibility */ #define X_AUTOCHANGE 0x0200 /* Auto change mouse allowed */ #define X_ELEMENTSEL 0x0400 /* Select elements on click */ #define X_MEDEMUL 0x0800 /* Medium resolution 3D Colors */ /* XAES EXTENDED Configuration bits */ #define X_INTERFACE 0x0001 /* InterFace-like object drawing */ #define X_ACTIVEDRAG 0x0002 /* Active redrawing windows */ #define X_BACKGROUND 0x0004 /* Background clickable windows */ /* XAES Window centering flags */ #define XW_MOUSECENTER 1 /* Center window to mouse */ #define XW_SCREENCENTER 2 /* Center window to screen */ #define XW_PHYSICCENTER 3 /* Center window to logical screen */ /* XAES 3D drawing styles */ #define DRAW_STANDARD 1 /* Standard (and crappy) TOS look */ #define DRAW_MULTITOS 2 /* Standard MultiTOS look */ #define DRAW_GENEVA 3 /* Geneva look */ #define DRAW_ZOOM 4 /* Zoom look (offset of MOTIF) */ #define DRAW_MOTIF 5 /* Motif look (X11R6 type) */ #define DRAW_LTMF 6 /* Let 'em Fly 1.30 look */ #define DRAW_XAES 7 /* Our own drawing style */ /* Slider types */ #define SLIDER_HOR 1 /* Horizontal slider type */ #define SLIDER_VER 2 /* Vertical slider type */ #define SLIDER_2D 3 /* Free-moving slider type */ /* Object routine creation types */ #define MOUSE_DOWN 1 /* Mouse press event */ #define MOUSE_UP 2 /* Mouse release event */ #define MOUSE_MOVE 3 /* Mouse slider move event */ #define MOUSE_CLICK 4 /* Mouse click event */ /* Attribute flags for WChangeAttribute */ #define TEXT_ATTRIB 1 /* Change text string */ #define TEMPLATE_ATTRIB 2 /* Change template string */ #define VALID_ATTRIB 3 /* Change validation string */ #define FONT_ATTRIB 4 /* Change font size */ #define JUSTIFY_ATTRIB 5 /* Change justification of text */ #define BORDCOL_ATTRIB 6 /* Change border color */ #define TEXTCOL_ATTRIB 7 /* Change text color */ #define TRANS_ATTRIB 8 /* Change transparency mode */ #define FILLPTN_ATTRIB 9 /* Change fill pattern */ #define INCOL_ATTRIB 10 /* Change fill (interior) color */ #define THICK_ATTRIB 11 /* Change thickness of object */ #define XC_INITIALIZE 1 /* Initialization callback def */ #define XC_DEINITIALIZE 2 /* Deinitialization callback def */ #define XC_STARTUP 3 /* Startup callback def */ #define XC_EXIT 4 /* Exit callback def */ #define OUTSIDE_DIALOG -1 /* Outside of any dialog area */ #define XCallInitializeCallback DoCallback(XC_INITIALIZE) #define XCallDeinitializeCallback DoCallback(XC_DEINITIALIZE) #define XCallStartupCallback DoCallback(XC_STARTUP) #define XCallExitCallback DoCallback(XC_EXIT) typedef struct timer { long clock; /* Clock ticks to wait for */ long ev_mtcount; /* Timer counter */ void *user; /* User parameters to give Dispatcher routine */ int status; /* Status of timer */ int tick_count; /* Number of clock ticks past */ } TIMER; /* Window routine callbacks... Quite a workout if you ask me! */ typedef struct callbacks { BOOL (*MN_SELECTED_callback)(int, int, int, int); BOOL (*WM_REDRAW_callback)(int, int, int, int, int); BOOL (*WM_TOPPED_callback)(int); BOOL (*WM_CLOSED_callback)(int); BOOL (*WM_FULLED_callback)(int); BOOL (*WM_ARROWED_callback)(int, int); BOOL (*WM_HSLID_callback)(int, int); BOOL (*WM_VSLID_callback)(int, int); BOOL (*WM_SIZED_callback)(int, int, int, int, int); BOOL (*WM_MOVED_callback)(int, int, int, int, int); BOOL (*WM_NEWTOP_callback)(int); BOOL (*WM_UNTOPPED_callback)(int); BOOL (*WM_ONTOP_callback)(int); BOOL (*AC_OPEN_callback)(int); BOOL (*AC_CLOSE_callback)(int); BOOL (*CT_UPDATE_callback)(); /* Undocumented, not used */ BOOL (*CT_MOVE_callback)(); /* Undocumented, not used */ BOOL (*CT_NEWTOP_callback)(); /* Undocumented, not used */ BOOL (*AP_TERM_callback)(void); BOOL (*AP_TFAIL_callback)(int); BOOL (*AP_RESCHG_callback)(int); BOOL (*SHUT_COMPLETED_callback)(int); BOOL (*RESCHG_COMPLETED_callback)(int); BOOL (*AP_DRAGDROP_callback)(int, int, int, int, int, long); BOOL (*CH_EXIT_callback)(int, int); } CALLS; typedef struct window { struct window *prev, *next; /* Linked-list for windows */ int handle; /* Window AES handle */ int state, oldstate; /* Window state settings */ int style, oldstyle; /* Window style settings */ int kind, oldkind; /* Window display settings */ int editmode; /* Editing mode */ int edobject, edpos; /* Editing object and position */ int wind_type; /* Large or small window */ int icon_num; /* Object number of the actual icon */ int infpos, infend; /* Info display and end display indices */ char title[128], info[128]; /* Window name information */ char *icon_text; /* Text to replace in icon field */ BOOL has_edit; /* Window has an editable object */ BOOL edit_disp; /* Window's cursor is displayed */ GRECT size, minimum, maximum; /* Current size, min & max size */ GRECT oldsize; /* Size saved at iconify time */ OBJECT *tree, *wind, *iconify; /* Tree, window, and iconified trees */ CALLS *callbacks; /* Window callback routines */ TIMER timer; /* Timer window information */ void *WndDispatcher; /* Dispatcher linked to window */ void *user; /* User information */ } WINDOW; typedef struct { void (*Initialize)(void); /* Initialization routine */ void (*Deinitialize)(void); /* Deinitialize routine */ void (*Startup)(void); /* Startup routine */ void (*Exit)(void); /* Exit routine */ } INITS; typedef struct { OBJECT *tree; /* Flying dialog tree */ void *flybuffer; /* Flying dialog saved screen buffer */ } FLYDIAL; typedef struct { long cookie_id; /* Cookie ID number */ long cookie_value; /* Points to your cookie data */ } COOKIE; typedef struct { int textattributes[10]; /* Text saved attributes */ int fillattributes[5]; /* Fill saved attributes */ int lineattributes[6]; /* Line saved attributes */ } XVDIVARS; typedef struct { long magic; /* Magic number to check if buffer installed */ int vdihandle; /* VDI Handle of buffer (= VDIhandle) */ int pxy[8]; /* Point XY array for memory buffer */ MFDB mfdb,scr; /* Memory Form Definition Blocks of graphics */ char data[]; /* Any extra data */ } Buffer; typedef struct slider { int slide_pos; /* Slider position */ int slide_max; /* Slider maximum position */ long slide_acc; /* Slider accumulator */ long slide_step; /* Slider step setting for accumulator */ int slide_tstep; /* Slider step rate for positioning */ int slide_type; /* Slider type (Horizontal or Vertical) */ int slide_increase; /* Slider increase object */ int slide_decrease; /* Slider decrease object */ int slide_slider; /* Slider slide object */ int slide_track; /* Slider track object */ } SLIDER; typedef struct { int curr_sel; /* Currently selected object */ char *sel_text; /* Selection text */ } POPUP; typedef struct { void (*mouse_down)(int, int, int, int, int); void (*mouse_up)(int, int, int, int, int); void (*mouse_move)(int, int, int, int, int); void (*mouse_click)(int, int, int, int); } ROUTS; typedef struct extinfo { char *te_ptext; /* Pointer to text string */ char *te_ptmplt; /* Pointer to text template */ char *te_pvalid; /* Pointer to validation string */ int te_font; /* Font size */ int te_junk1; /* Unused */ int te_just; /* Text justification */ struct { unsigned int bord_color : 4; /* Border color */ unsigned int text_color : 4; /* Text display color */ unsigned int transparency : 1; /* vswr_mode to use */ unsigned int fill_ptn : 3; /* Fill pattern */ unsigned int in_color : 4; /* Fill pattern color */ } te_color; /* Color */ int te_junk2; /* Unused */ int te_thickness; /* Border thickness */ char te_character, nullterm; /* Character/nullterm string */ int te_txtlen; /* Text length */ int te_tmplen; /* Length of template */ int te_hotkey; /* Hotkey storage */ SLIDER te_slider; /* Slider information */ POPUP te_popup; /* Popup information */ POPUP te_listbox; /* Listbox information */ ROUTS te_routines; /* Button-routine callbacks */ void *oldparm; /* Old ub_parms */ int oldtype; /* Old object type */ } EXTINFO; typedef struct mouseforms { int forms[16]; } MICE; typedef struct window_owner_info { int handle; int owner; } WOWNERS; typedef struct { char *wind_title; char *hline1, *hline2, *hline3, *hline4, *hline5, *hline6, *hline7, *hline8; } WHELP; typedef struct image { int *hi_on, *hi_off, *lo_on, *lo_off; } IMAGE; typedef struct images { int count; IMAGE *image; } IMAGES; typedef struct { int sizer_ul[2]; int sizer_top[2]; int sizer_ur[2]; int sizer_right[2]; int sizer_lr[2]; int sizer_bot[2]; int sizer_ll[2]; int sizer_left[2]; int mover[2]; int hor_slide_hatch[2]; int hor_track_hatch[2]; int ver_slide_hatch[2]; int ver_track_hatch[2]; } ELEMENT; /* 1 = MultiTOS * 2 = Geneva * 3 = Zoom * 4 = Motif * 5 = XAES */ typedef struct { int shade_lower_part[5]; int shade_upper_part[5]; int shade_fill[5]; } SHADES; typedef struct { int topped_focus; int untopped_focus; } FCOL; typedef struct { int config1; int config2; int wind_center; int draw_3d; int hotkey_color; int active_text_color; int inactive_text_color; ELEMENT window_elements; SHADES button_shades; FCOL focus_colors; } CONFIG; extern int VDIhandle; extern int Life, Return, Ap_ID; extern int gr_cw, gr_ch, gr_bw, gr_bh, small_font, large_font; extern int color_font, image_w, image_h, big_img, num_colors; extern int num_planes, config1, config2, cur_mouse, cur_mouse_form; extern int edit_old_x, edit_old_y, num_configs, GenevaInstalled; extern int colorsave1, colorsave2, colorsave3; extern char *prgnameheader; extern void *_MainDispatcher, *_MainKeyDispatcher, *dpbuffer; extern void *bgbuffer; extern BOOL helpmode; extern MFDB screen; extern MICE mouseform; extern GRECT desk; extern INITS GlobInits; extern CONFIG xaes; extern OBJECT *wl_menubar, *WINDTREE, *WINPOPUP, *CASCPOPUP; extern OBJECT *FULLPOPUP, *WINPOPUP, *CASCPOPUP, *FULLPOPUP; extern OBJECT *RTPOPUP, *HELPWINDOW, *LBOX, *P_UP, *ALERTWIN; extern OBJECT *ERRORWIN; extern WINDOW *WindowChain; extern WOWNERS owned_winds[MAX_WINDOWS]; extern XVDIVARS SaveHandles; #include "xproto.h" #else #error "Compilation stopped. Where is AES.H's __AES__ define?" #endif