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
84
85
|
struct widget; // defined in gui_internal.c
struct graphics_image;
struct gui_priv;
#define STATE_VISIBLE 1
#define STATE_SELECTED 2
#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;
};
|