Subversion Repositories Kolibri OS

Rev

Rev 6500 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6500 Rev 6589
1
#ifndef KOLIBRI_KMENU_H
1
#ifndef KOLIBRI_KMENU_H
2
#define KOLIBRI_KMENU_H
2
#define KOLIBRI_KMENU_H
3
 
3
 
4
#define KMENUITEM_NORMAL    0
4
#define KMENUITEM_NORMAL    0
5
#define KMENUITEM_SUBMENU   1
5
#define KMENUITEM_SUBMENU   1
6
#define KMENUITEM_SEPARATOR 2
6
#define KMENUITEM_SEPARATOR 2
7
 
7
 
8
#define KMENUITEM_MAINMENU   0x80000000
8
#define KMENUITEM_MAINMENU   0x80000000
9
 
9
 
10
#define KMENUITEM_SEPARATOR_WIDTH 10//170
10
#define KMENUITEM_SEPARATOR_WIDTH 10//170
11
#define KMENUITEM_SEPARATOR_HEIGHT 2
11
#define KMENUITEM_SEPARATOR_HEIGHT 2
12
 
12
 
13
#define KMENU_LBORDER_SIZE 2
13
#define KMENU_LBORDER_SIZE 2
14
#define KMENU_DBORDER_SIZE 1
14
#define KMENU_DBORDER_SIZE 1
15
 
15
 
16
typedef struct {
16
typedef struct {
17
	int type;
17
	int type;
18
	uint32_t color;
18
	uint32_t color;
19
	union {
19
	union {
20
		uint32_t bgcolor;
20
		uint32_t bgcolor;
21
		void *buffer;
21
		void *buffer;
22
	};
22
	};
23
} t_font;
23
} t_font;
24
 
24
 
25
typedef struct {
25
typedef struct __attribute__ ((__packed__)) {
26
	uint16_t left, top, right, bottom;
26
	uint16_t left, top, right, bottom;
27
} t_rect;
27
} t_rect;
28
 
28
 
29
typedef struct kmenuitem_t{
29
typedef struct kmenuitem_t{
30
	int type;
30
	int type;
31
	char *text;
31
	char *text;
32
	union {
32
	union {
33
		void *submenu;		
33
		void *submenu;
34
		//kmenuitem_callback_t callback;
34
		//kmenuitem_callback_t callback;
35
		size_t btnid;
35
		size_t btnid;
36
	};
36
	};
37
	
37
 
38
	void (*paint)(struct kmenuitem_t *item, t_rect *rc) __attribute__((__stdcall__));
38
	void (*paint)(struct kmenuitem_t *item, t_rect *rc) __attribute__((__stdcall__));
39
	
39
 
40
	int is_focused;
40
	int is_focused;
41
	int is_enabled;
41
	int is_enabled;
42
	int is_visible;
42
	int is_visible;
43
	size_t style;
43
	size_t style;
44
 
44
 
45
	int font_width, font_height;
45
	int font_width, font_height;
46
	t_font font;
46
	t_font font;
47
	
47
 
48
	size_t left, top;
48
	size_t left, top;
49
	size_t width, height, pref_width, pref_height;
49
	size_t width, height, pref_width, pref_height;
50
	size_t margin_left, margin_right, margin_top, margin_bottom;
50
	size_t margin_left, margin_right, margin_top, margin_bottom;
51
	size_t padding_left, padding_right, padding_top, padding_bottom;
51
	size_t padding_left, padding_right, padding_top, padding_bottom;
52
} kmenuitem_t;
52
} kmenuitem_t;
53
 
53
 
54
typedef struct ksubmenu_t{
54
typedef struct ksubmenu_t{
55
	kmenuitem_t **items;
55
	kmenuitem_t **items;
56
	int count;
56
	int count;
57
	
57
 
58
	void (*paint)(struct ksubmenu_t *menu) __attribute__((__stdcall__));
58
	void (*paint)(struct ksubmenu_t *menu) __attribute__((__stdcall__));
59
	
59
 
60
	int is_opened;
60
	int is_opened;
61
	int focus_idx;
61
	int focus_idx;
62
	
62
 
63
	size_t width, height;
63
	size_t width, height;
64
	size_t left, top;
64
	size_t left, top;
65
	int tid;
65
	int tid;
66
	int parent_wnd, parent_tid, submenu_tid, self_wnd;
66
	int parent_wnd, parent_tid, submenu_tid, self_wnd;
67
	int level;
67
	int level;
68
	size_t return_btnid;
68
	size_t return_btnid;
69
	
69
 
70
	int set_new_padding, set_new_margin;
70
	int set_new_padding, set_new_margin;
71
	t_rect items_padding;
71
	t_rect items_padding;
72
	t_rect items_margin;
72
	t_rect items_margin;
73
	
73
 
74
	struct ksubmenu_t *parent;
74
	struct ksubmenu_t *parent;
75
} ksubmenu_t;
75
} ksubmenu_t;
76
 
76
 
77
typedef struct {
77
typedef struct {
78
	kmenuitem_t **submenu;
78
	kmenuitem_t **submenu;
79
	int count;
79
	int count;
80
	
80
 
81
	size_t width, height;
81
	size_t width, height;
82
	size_t left, top;
82
	size_t left, top;
83
	
83
 
84
	int line_height;
84
	int line_height;
85
	
85
 
86
	int focus_idx;
86
	int focus_idx;
87
	int submenu_tid;
87
	int submenu_tid;
88
} kmenu_t;
88
} kmenu_t;
89
 
89
 
90
 
90
 
91
extern int kolibri_kmenu_init(void); 
91
extern int kolibri_kmenu_init(void);
92
 
92
 
93
extern void (*kmainmenu_draw)(ksubmenu_t *) __attribute__((__stdcall__));
93
extern void (*kmainmenu_draw)(ksubmenu_t *) __attribute__((__stdcall__));
94
extern void (*kmainmenu_dispatch_cursorevent)(ksubmenu_t *) __attribute__((__stdcall__));
94
extern void (*kmainmenu_dispatch_cursorevent)(ksubmenu_t *) __attribute__((__stdcall__));
95
extern void (*kmenu_init)(void *) __attribute__((__stdcall__));
95
extern void (*kmenu_init)(void *) __attribute__((__stdcall__));
96
extern ksubmenu_t* (*ksubmenu_new)() __attribute__((__stdcall__));
96
extern ksubmenu_t* (*ksubmenu_new)() __attribute__((__stdcall__));
97
extern void (*ksubmenu_add)(ksubmenu_t *, kmenuitem_t *) __attribute__((__stdcall__));
97
extern void (*ksubmenu_add)(ksubmenu_t *, kmenuitem_t *) __attribute__((__stdcall__));
98
extern kmenuitem_t* (*kmenuitem_new)(uint32_t, const char *, uint32_t) __attribute__((__stdcall__));
98
extern kmenuitem_t* (*kmenuitem_new)(uint32_t, const char *, uint32_t) __attribute__((__stdcall__));
99
extern kmenuitem_t* (*kmenuitem__submenu_new)(uint32_t, const char *, ksubmenu_t *) __attribute__((__stdcall__));
99
extern kmenuitem_t* (*kmenuitem__submenu_new)(uint32_t, const char *, ksubmenu_t *) __attribute__((__stdcall__));
100
 
100
 
101
#endif /* KOLIBRI_KMENU_H */
101
#endif /* KOLIBRI_KMENU_H */