Usermode/AxWin3 - Splitting widget types out into separate files
[tpg/acess2.git] / Usermode / Applications / axwin3_src / WM / renderers / widget / common.h
1 /**
2  * Acess2 Window Manager v3
3  * - By John Hodge (thePowersGang)
4  *
5  * renderer/widget/common.h
6  * - Widget common definitions
7  */
8 #ifndef _RENDERER_WIDGET_COMMON_H
9 #define _RENDERER_WIDGET_COMMON_H
10
11 #include <renderer_widget.h>    // Widget types
12
13 typedef struct sWidgetDef       tWidgetDef;
14
15 struct sWidgetDef
16 {
17         void    (*Init)(tElement *Ele);
18         void    (*Delete)(tElement *Ele);
19
20         void    (*Render)(tWindow *Window, tElement *Ele);
21         
22         void    (*UpdateFlags)(tElement *Ele);
23         void    (*UpdateSize)(tElement *Ele);
24         void    (*UpdateText)(tElement *Ele, const char *Text); // This should update Ele->Text
25
26         /**
27          * \name Input handlers
28          * \note Returns boolean unhandled
29          * \{
30          */     
31          int    (*MouseButton)(tElement *Ele, int X, int Y, int Button, int bPressed);
32          int    (*MouseMove)(tElement *Ele, int X, int Y);
33          int    (*KeyDown)(tElement *Ele, int KeySym, int Character);
34          int    (*KeyUp)(tElement *Ele, int KeySym);
35          int    (*KeyFire)(tElement *Ele, int KeySym, int Character);
36         /**
37          * \}
38          */
39 };
40
41 extern void     Widget_int_SetTypeDef(int Type, tWidgetDef *Def);
42 extern void     Widget_UpdateMinDims(tElement *Element);
43 extern void     Widget_Fire(tElement *Element);
44
45 #define DEFWIDGETTYPE(_type, _attribs...) \
46 tWidgetDef      _widget_typedef_##_type = {_attribs};\
47 void _widget_set_##_type(void) __attribute__((constructor));\
48 void _widget_set_##_type(void) { Widget_int_SetTypeDef(_type, &_widget_typedef_##_type);}
49
50 #endif
51

UCC git Repository :: git.ucc.asn.au