5ee9c98dcce20aa5f3a81a2a950b81f049be1cb4
[rocksndiamonds.git] / src / gadget.h
1 /* gadget.h */
2
3 /* gadget types */
4 #define GD_TYPE_NORMAL_BUTTON           (1<<0)
5 #define GD_TYPE_TWO_STATE_BUTTON        (1<<1)
6 #define GD_TYPE_DRAWING_AREA            (1<<2)
7 #define GD_TYPE_TEXTINPUT               (1<<3)
8 #define GD_TYPE_TEXTOUTPUT              (1<<4)
9 #define GD_TYPE_NUMBERINPUT             (1<<5)
10 #define GD_TYPE_NUMBEROUTPUT            (1<<6)
11
12 /* gadget events */
13 #define GD_EVENT_PRESSED                (1<<0)
14 #define GD_EVENT_RELEASED               (1<<1)
15 #define GD_EVENT_MOVING                 (1<<2)
16
17 /* gadget structure constants */
18 #define MAX_GADGET_TEXTSIZE             1024
19
20 struct GadgetDesign
21 {
22   Pixmap pixmap;                        /* Pixmap with gadget surface */
23   int x,y;                              /* position of rectangle in Pixmap */
24 };
25
26 struct Gadget
27 {
28   int x,y;                              /* screen position */
29   int width,height;                     /* screen size */
30   unsigned long type;                   /* type (button, text input, ...) */
31   unsigned long state;                  /* state (pressed, released, ...) */
32   long number_value;
33   char text_value[MAX_GADGET_TEXTSIZE];
34   struct GadgetDesign *design[2];       /* 0: normal; 1: pressed */
35   struct GadgetDesign *alt_design[2];   /* alternative design */
36   unsigned long event;                  /* actual gadget event */
37   struct Gadget *next;                  /* next list entry */
38 };
39
40 struct NewGadget
41 {
42   int x,y;                              /* screen position */
43   int width,height;                     /* screen size */
44   unsigned long type;                   /* type (button, text input, ...) */
45   struct GadgetDesign *design[2];       /* 0: normal; 1: pressed */
46   struct GadgetDesign *alt_design[2];   /* alternative design */
47   unsigned long value_mask;             /* actual gadget event */
48 };
49
50 struct GadgetEvent
51 {
52   unsigned long state;                  /* state (pressed, released, ...) */
53   int x,y;                              /* position inside drawing area */
54 };