summaryrefslogtreecommitdiff
path: root/navit/gui/internal/gui_internal.h
blob: ea5ab79aecab04038c1924401414c482f1683e00 (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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
struct widget;
struct graphics_image;
struct gui_priv;

#define STATE_HIGHLIGHTED 4
#define STATE_SENSITIVE 8
#define STATE_EDIT 16
#define STATE_CLEAR 32
#define STATE_EDITABLE 64
#define STATE_SCROLLABLE 128
#define STATE_OFFSCREEN 256

#define GESTURE_RINGSIZE 100

enum widget_type {
	widget_box=1,
	widget_button,
	widget_label,
	widget_image,
	widget_table,
	widget_table_row
};

enum flags {
	gravity_none=0x00,
	gravity_left=1,
	gravity_xcenter=2,
	gravity_right=4,
	gravity_top=8,
	gravity_ycenter=16,
	gravity_bottom=32,
	gravity_left_top=gravity_left|gravity_top,
	gravity_top_center=gravity_xcenter|gravity_top,
	gravity_right_top=gravity_right|gravity_top,
	gravity_left_center=gravity_left|gravity_ycenter,
	gravity_center=gravity_xcenter|gravity_ycenter,
	gravity_right_center=gravity_right|gravity_ycenter,
	gravity_left_bottom=gravity_left|gravity_bottom,
	gravity_bottom_center=gravity_xcenter|gravity_bottom,
	gravity_right_bottom=gravity_right|gravity_bottom,
	flags_expand=0x100,
	flags_fill=0x200,
	flags_swap=0x400,
	flags_scrollx=0x800,
	flags_scrolly=0x1000,
	orientation_horizontal=0x10000,
	orientation_vertical=0x20000,
	orientation_horizontal_vertical=0x40000,
};


struct gui_internal_methods {
	void (*add_callback)(struct gui_priv *priv, struct callback *cb);
	void (*remove_callback)(struct gui_priv *priv, struct callback *cb);
	void (*menu_render)(struct gui_priv *this);
	struct graphics_image * (*image_new_xs)(struct gui_priv *this, const char *name);
	struct graphics_image * (*image_new_l)(struct gui_priv *this, const char *name);
};

struct gui_internal_widget_methods {
	void (*append)(struct widget *parent, struct widget *child);
	struct widget * (*button_new)(struct gui_priv *this, const char *text, struct graphics_image *image, enum flags flags);
	struct widget * (*button_new_with_callback)(struct gui_priv *this, const char *text, struct graphics_image *image, enum flags flags, void(*func)(struct gui_priv *priv, struct widget *widget, void *data), void *data);
	struct widget * (*box_new)(struct gui_priv *this, enum flags flags);
	struct widget * (*label_new)(struct gui_priv *this, const char *text);
	struct widget * (*image_new)(struct gui_priv *this, struct graphics_image *image);
	struct widget * (*keyboard)(struct gui_priv *this, int mode);
	struct widget * (*menu)(struct gui_priv *this, const char *label);
	enum flags (*get_flags)(struct widget *widget);
	void (*set_flags)(struct widget *widget, enum flags flags);
	int (*get_state)(struct widget *widget);
	void (*set_state)(struct widget *widget, int state);
	void (*set_func)(struct widget *widget, void (*func)(struct gui_priv *priv, struct widget *widget, void *data));
	void (*set_data)(struct widget *widget, void *data);
	void (*set_default_background)(struct gui_priv *this, struct widget *widget);

};

struct gui_internal_data {
	struct gui_priv *priv;
	struct gui_internal_methods *gui;
	struct gui_internal_widget_methods *widget;
};