diff options
Diffstat (limited to 'src/gui/widget.h')
-rw-r--r-- | src/gui/widget.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/gui/widget.h b/src/gui/widget.h new file mode 100644 index 0000000..a1e9a21 --- /dev/null +++ b/src/gui/widget.h @@ -0,0 +1,29 @@ +#ifndef WIDGET_H +#define WIDGET_H + +#include "graphics_context.h" + +typedef struct { + void (*draw)( void *obj, graphics_context_t *context ); + void (*get_focus)( void *obj ); + void (*widget_model_to_screen)( void *obj, int *x, int *y ); + void (*on_mouse_down)( void *obj, const int x, const int y ); + void (*on_mouse_up)( void *obj, const int x, const int y ); + void (*on_mouse_move)( void *obj, const int old_x, const int old_y, const int x, const int y ); + void (*on_key_down)( void *obj, char c ); +} widget_vtable_t; + +typedef struct widget_t { + int x; + int y; + int w; + int h; + struct widget_t *parent; + widget_vtable_t *vtable; +} widget_t; + +void widget_init( widget_t *widget, widget_t *parent, const int x, const int y, const int w, const int h ); + +void widget_draw( void *obj, graphics_context_t *context ); + +#endif // WIDGET_H |