summaryrefslogtreecommitdiff
path: root/src/gui/widget.h
blob: a1e9a214a12dfad67653e16d92f9b20257eee796 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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