2564716e48907b368f4db1911b064350146eef87
[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 #define WIDGETTYPE_FLAG_NOCHILDREN      0x001
16
17 struct sWidgetDef
18 {
19         const char      *Name;
20          int    Flags;
21         void    (*Init)(tElement *Ele);
22         void    (*Delete)(tElement *Ele);
23
24         void    (*Render)(tWindow *Window, tElement *Ele);
25         
26         void    (*UpdateFlags)(tElement *Ele);
27         void    (*UpdateSize)(tElement *Ele);
28         void    (*UpdateText)(tElement *Ele, const char *Text); // This should update Ele->Text
29
30         /**
31          * \name Input handlers
32          * \note Returns boolean unhandled
33          * \{
34          */     
35          int    (*MouseButton)(tElement *Ele, int X, int Y, int Button, int bPressed);
36          int    (*MouseMove)(tElement *Ele, int X, int Y);
37          int    (*KeyDown)(tElement *Ele, int KeySym, int Character);
38          int    (*KeyUp)(tElement *Ele, int KeySym);
39          int    (*KeyFire)(tElement *Ele, int KeySym, int Character);
40         /**
41          * \}
42          */
43 };
44
45 extern void     Widget_int_SetTypeDef(int Type, tWidgetDef *Def);
46 extern void     Widget_UpdateMinDims(tElement *Element);
47 extern void     Widget_Fire(tElement *Element);
48
49 #define DEFWIDGETTYPE(_type, _name, _flags, _attribs...) \
50 tWidgetDef      _widget_typedef_##_type = {.Name=_name,.Flags=(_flags),_attribs};\
51 void _widget_set_##_type(void) __attribute__((constructor));\
52 void _widget_set_##_type(void) { _SysDebug("hai!\n"); Widget_int_SetTypeDef(_type, &_widget_typedef_##_type);}
53
54 #endif
55

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