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