1 /* Copyright (C) 1993 Nathan Sidwell */ 2 /* RCS $Id: xmred.h,v 4.28 1995/12/14 13:53:27 nathan Exp $ */ 3 #define XMRED 1 4 #define BUTTONS 5 5 #include "common.h" 6 #define COPYRIGHT "Copyright (C) 1994,1993 Nathan Sidwell" 7 /*{{{ defines*/ 8 #define UNDO_DEPTH 8 9 #define ICON_WIDTH (CELLS_ACROSS * 3 - 1) 10 #define ICON_HEIGHT ((CELLS_DOWN + 1) * 3 - 1) 11 /*{{{ descriptor numbers*/ 12 #define DESCRIPTOR_NONE -1 13 #define DESCRIPTOR_GARDEN 0 14 #define DESCRIPTOR_INCLUDE 1 15 #define DESCRIPTOR_COMMENT 2 16 /*}}}*/ 17 #define SOURCE_UNIQUE -2 18 #define SOURCE_BUFFER -1 19 /*{{{ dialog numbers*/ 20 #define DIALOG_FILENAME 0 21 #define DIALOG_NOT_SAVED 1 22 #define DIALOG_FILE_ERROR 2 23 #define DIALOG_LOAD_ERROR 3 24 #define DIALOG_COMMENT 4 25 #define DIALOG_INCLUDE 5 26 #define DIALOG_FAILED 6 27 #define DIALOGS 7 28 /*}}}*/ 29 /*{{{ dialog options*/ 30 #define DIALOG_NONE 0 31 #define DIALOG_OK (1 << 0) 32 #define DIALOG_RETRY (1 << 1) 33 #define DIALOG_CONTINUE (1 << 2) 34 #define DIALOG_DEFAULT (1 << 3) 35 #define DIALOG_CANCEL (1 << 4) 36 #define DIALOG_ABORT (1 << 5) 37 #define DIALOG_CLEAR (1 << 6) 38 #define DIALOG_AGREE (DIALOG_OK | DIALOG_RETRY | DIALOG_CONTINUE) 39 #define DIALOG_DISAGREE (DIALOG_CANCEL | DIALOG_ABORT) 40 /*}}}*/ 41 /*{{{ changed flags*/ 42 #define CHANGED_GARDEN (1 << DESCRIPTOR_GARDEN) 43 #define CHANGED_INCLUDE (1 << DESCRIPTOR_INCLUDE) 44 #define CHANGED_COMMENT (1 << DESCRIPTOR_COMMENT) 45 #define CHANGED_ALL (1 << 3) 46 #define CHANGED_BUFFER (1 << 4) 47 #define CHANGED_ANY ((1 << 5) - 1) 48 /*}}}*/ 49 /*{{{ counts*/ 50 #define COUNT_APPLES 0 51 #define COUNT_CHERRY 4 52 #define COUNT_RANDOM 5 53 #define COUNT_SPACES 6 54 #define COUNT_FALL 7 55 #define COUNT_PLAYER 8 56 #define COUNT_DEN 9 57 #define COUNTS 10 58 /*}}}*/ 59 /*{{{ modes*/ 60 #define MODE_COMBINED 0 61 #define MODE_SEPARATE 1 62 #define MODE_RANDOM 2 63 #define MODES 3 64 /*}}}*/ 65 /*{{{ options*/ 66 #define OPTION_APPLES 0 67 #define OPTION_RANDOM 1 68 #define OPTION_CHERRY 2 69 #define OPTION_PATH 3 70 #define OPTION_PLAYER 4 71 #define OPTION_DEN 5 72 #define OPTIONS 6 73 /*}}}*/ 74 /*}}}*/ 75 /*{{{ structs*/ 76 /*{{{ typedef struct Descriptor*/ 77 typedef struct Descriptor 78 { 79 Pixmap pixmap; /* display pixmap */ 80 int type; /* type of descriptor */ 81 char *comment; 82 BOARD *board; 83 } DESCRIPTOR; 84 /*}}}*/ 85 /*{{{ typedef struct Gizmo*/ 86 typedef struct Gizmo 87 { 88 char CONST *name; /* widget name */ 89 int parent; /* parent's gizmo number */ 90 WidgetClass CONST *class; /* class of widget */ 91 Arg *args; /* creation arguments */ 92 Cardinal num_args; /* number of arguments */ 93 Widget widget; /* the widget created */ 94 unsigned align[2]; /* its attachments */ 95 } GIZMO; 96 /*}}}*/ 97 /*}}}*/ 98 /*{{{ state*/ 99 EXTERN struct 100 { 101 int button[BUTTONS]; /* button options */ 102 int apple; /* apple */ 103 int color; /* color */ 104 int fill; /* fill */ 105 DESCRIPTOR *edit; /* board being edited */ 106 int source; /* source of garden */ 107 unsigned change; /* change mask */ 108 unsigned mode; /* display mode */ 109 unsigned counts[COUNTS]; /* apple and cherry counts */ 110 } state; 111 /*}}}*/ 112 EXTERN unsigned changed_flag; 113 extern BOARD initial_board[1]; 114 /*{{{ garden widget*/ 115 extern WidgetClass gardenWidgetClass; 116 typedef struct _GardenClassRec *GardenWidgetClass; 117 typedef struct _GardenRec *GardenWidget; 118 /*}}}*/ 119 /*{{{ prototypes*/ 120 /*{{{ all*/ 121 extern VOIDFUNC all_garden_comment PROTOARG((DESCRIPTOR *, unsigned)); 122 extern unsigned check_saved PROTOARG((unsigned)); 123 extern unsigned check_exists PROTOARG((char CONST *)); 124 extern VOIDFUNC free_descriptors PROTOARG((VOIDARG)); 125 extern VOIDFUNC free_dup PROTOARG((char **, char CONST *)); 126 extern VOIDFUNC install_all PROTOARG((Widget)); 127 extern char CONST *load_boards PROTOARG((char CONST *, unsigned)); 128 extern VOIDFUNC new_descriptors PROTOARG((VOIDARG)); 129 extern VOIDFUNC repaint_garden_icon PROTOARG((VOIDARG)); 130 extern char CONST *save_boards PROTOARG((char CONST *)); 131 extern DESCRIPTOR *unique_garden PROTOARG((VOIDARG)); 132 /*}}}*/ 133 /*{{{ control*/ 134 extern VOIDFUNC adjust_count PROTOARG((unsigned, int)); 135 extern VOIDFUNC install_control PROTOARG((Widget)); 136 extern VOIDFUNC set_garden PROTOARG((DESCRIPTOR *, int, unsigned)); 137 extern VOIDFUNC set_garden_source PROTOARG((int, unsigned)); 138 extern VOIDFUNC update_garden PROTOARG((VOIDARG)); 139 /*}}}*/ 140 /*{{{ dialogs*/ 141 extern VOIDFUNC dialog_append PROTOARG((unsigned, char CONST *)); 142 extern VOIDFUNC dialog_popup 143 PROTOARG((unsigned, char CONST *, char CONST *, Widget, XtGrabKind)); 144 extern unsigned dialog_wait 145 PROTOARG((unsigned, char CONST *, char CONST *, char CONST *, char CONST **)); 146 extern VOIDFUNC install_dialogs PROTOARG((Widget)); 147 /*}}}*/ 148 /*{{{ garden*/ 149 extern VOIDFUNC install_garden PROTOARG((Widget)); 150 extern VOIDFUNC paint_garden_icon PROTOARG((DESCRIPTOR *)); 151 extern VOIDFUNC paint_garden_image PROTOARG((VOIDARG)); 152 extern VOIDFUNC paint_garden_source PROTOARG((VOIDARG)); 153 /*}}}*/ 154 /*{{{ makemred*/ 155 extern VOIDFUNC create_gizmos PROTOARG((Widget, GIZMO *, Cardinal)); 156 extern VOIDFUNC create_widget PROTOARG((VOIDARG)); 157 #ifndef NDEBUG 158 extern int error_handler PROTOARG((Display *, XErrorEvent *)); 159 #endif /* NDEBUG */ 160 extern VOIDFUNC fatal_error PROTOVARARG((char CONST *, VARARG)); 161 extern VOIDFUNC list_help PROTOARG((char CONST *)); 162 extern VOIDFUNC nadger_widget_colors PROTOARG((Widget, WidgetClass)); 163 extern VOIDFUNC open_toolkit PROTOARG((int, String *)); 164 /*}}}*/ 165 /*{{{ menubar*/ 166 extern VOIDFUNC install_menubar PROTOARG((Widget)); 167 extern VOIDFUNC menu_garden PROTOARG((char CONST *)); 168 extern VOIDFUNC menu_total PROTOARG((unsigned)); 169 extern VOIDFUNC reset_garden_stack PROTOARG((VOIDARG)); 170 extern VOIDFUNC save_garden PROTOARG((VOIDARG)); 171 /*}}}*/ 172 /*{{{ xmred*/ 173 extern size_t itoa PROTOARG((char *, unsigned long, unsigned)); 174 extern int main PROTOARG((int, char CONST **)); 175 /*}}}*/ 176 /*}}}*/ 177