wlmaker
Loading...
Searching...
No Matches
menu_item.h
Go to the documentation of this file.
1/* ========================================================================= */
20#ifndef __MENU_ITEM_H__
21#define __MENU_ITEM_H__
22
23#include <libbase/libbase.h>
24#include <cairo.h>
25
26#ifdef __cplusplus
27extern "C" {
28#endif // __cplusplus
29
31typedef enum {
32 WLMAKER_MENU_ITEM_SENTINEL = 0,
33 WLMAKER_MENU_ITEM_ENTRY,
34 WLMAKER_MENU_ITEM_SEPARATOR
36
39
41typedef struct {
45 union {
47 struct {
49 char *label_ptr;
51 void (*callback)(void *ud_ptr);
52 } entry;
53 } param;
55
57#define WLMAKER_MENU_ITEM_DESCRIPTOR_ENTRY(_label, _callback) { \
58 .type = WLMAKER_MENU_ITEM_ENTRY, \
59 .param = { .entry = { \
60 .label_ptr = _label, \
61 .callback = _callback \
62 } } \
63}
64
66#define WLMAKER_MENU_ITEM_DESCRIPTOR_SENTINEL() { \
67 .type = WLMAKER_MENU_ITEM_SENTINEL \
68}
69
70
81 const wlmaker_menu_item_descriptor_t *desc_ptr,
82 void *callback_ud_ptr);
83
90
103 const wlmaker_menu_item_t *menu_item_ptr,
104 uint32_t *width_ptr, uint32_t *height_ptr);
105
115 wlmaker_menu_item_t *menu_item_ptr,
116 uint32_t width,
117 uint32_t height);
118
127 wlmaker_menu_item_t *menu_item_ptr,
128 uint32_t x,
129 uint32_t y);
130
138 wlmaker_menu_item_t *menu_item_ptr,
139 cairo_t *cairo_ptr);
140
148bs_dllist_node_t *wlmaker_dlnode_from_menu_item(
149 wlmaker_menu_item_t *item_ptr);
150
159 bs_dllist_node_t *dlnode_ptr);
160
168 wlmaker_menu_item_t *menu_item_ptr,
169 bool focussed);
170
182 const wlmaker_menu_item_t *menu_item_ptr,
183 double x,
184 double y);
185
194 const wlmaker_menu_item_t *menu_item_ptr);
195
202 const wlmaker_menu_item_t *menu_item_ptr);
203
205extern const bs_test_case_t wlmaker_menu_item_test_cases[];
206
207#ifdef __cplusplus
208} // extern "C"
209#endif // __cplusplus
210
211#endif /* __MENU_ITEM_H__ */
212/* == End of menu_item.h =================================================== */
wlmaker_menu_item_t * wlmaker_menu_item_create(const wlmaker_menu_item_descriptor_t *desc_ptr, void *callback_ud_ptr)
Definition menu_item.c:70
const bs_test_case_t wlmaker_menu_item_test_cases[]
Definition menu_item.c:233
bool wlmaker_menu_item_contains(const wlmaker_menu_item_t *menu_item_ptr, double x, double y)
Definition menu_item.c:197
void wlmaker_menu_item_set_focus(wlmaker_menu_item_t *menu_item_ptr, bool focussed)
Definition menu_item.c:185
wlmaker_menu_item_t * wlmaker_menu_item_from_dlnode(bs_dllist_node_t *dlnode_ptr)
Definition menu_item.c:177
void wlmaker_menu_item_execute(const wlmaker_menu_item_t *menu_item_ptr)
Definition menu_item.c:216
bs_dllist_node_t * wlmaker_dlnode_from_menu_item(wlmaker_menu_item_t *item_ptr)
Definition menu_item.c:170
void wlmaker_menu_item_get_desired_size(const wlmaker_menu_item_t *menu_item_ptr, uint32_t *width_ptr, uint32_t *height_ptr)
Definition menu_item.c:91
void wlmaker_menu_item_destroy(wlmaker_menu_item_t *menu_item_ptr)
Definition menu_item.c:85
bool wlmaker_menu_item_redraw_needed(const wlmaker_menu_item_t *menu_item_ptr)
Definition menu_item.c:209
wlmaker_menu_item_type_t
Definition menu_item.h:31
void wlmaker_menu_item_set_size(wlmaker_menu_item_t *menu_item_ptr, uint32_t width, uint32_t height)
Definition menu_item.c:100
void wlmaker_menu_item_set_position(wlmaker_menu_item_t *menu_item_ptr, uint32_t x, uint32_t y)
Definition menu_item.c:110
void wlmaker_menu_item_draw(wlmaker_menu_item_t *menu_item_ptr, cairo_t *cairo_ptr)
Definition menu_item.c:120
Definition menu_item.c:43
uint32_t x
Definition menu_item.c:55
Definition menu_item.h:41
char * label_ptr
Definition menu_item.h:49
wlmaker_menu_item_type_t type
Definition menu_item.h:43