wlmaker
Loading...
Searching...
No Matches
src
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
27
extern
"C"
{
28
#endif
// __cplusplus
29
31
typedef
enum
{
32
WLMAKER_MENU_ITEM_SENTINEL = 0,
33
WLMAKER_MENU_ITEM_ENTRY,
34
WLMAKER_MENU_ITEM_SEPARATOR
35
}
wlmaker_menu_item_type_t
;
36
38
typedef
struct
_wlmaker_menu_item_t
wlmaker_menu_item_t
;
39
41
typedef
struct
{
43
wlmaker_menu_item_type_t
type
;
45
union
{
47
struct
{
49
char
*
label_ptr
;
51
void (*callback)(
void
*ud_ptr);
52
} entry;
53
} param;
54
}
wlmaker_menu_item_descriptor_t
;
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
80
wlmaker_menu_item_t
*
wlmaker_menu_item_create
(
81
const
wlmaker_menu_item_descriptor_t
*desc_ptr,
82
void
*callback_ud_ptr);
83
89
void
wlmaker_menu_item_destroy
(
wlmaker_menu_item_t
*menu_item_ptr);
90
102
void
wlmaker_menu_item_get_desired_size
(
103
const
wlmaker_menu_item_t
*menu_item_ptr,
104
uint32_t *width_ptr, uint32_t *height_ptr);
105
114
void
wlmaker_menu_item_set_size
(
115
wlmaker_menu_item_t
*menu_item_ptr,
116
uint32_t width,
117
uint32_t height);
118
126
void
wlmaker_menu_item_set_position
(
127
wlmaker_menu_item_t
*menu_item_ptr,
128
uint32_t x,
129
uint32_t y);
130
137
void
wlmaker_menu_item_draw
(
138
wlmaker_menu_item_t
*menu_item_ptr,
139
cairo_t *cairo_ptr);
140
148
bs_dllist_node_t *
wlmaker_dlnode_from_menu_item
(
149
wlmaker_menu_item_t
*item_ptr);
150
158
wlmaker_menu_item_t
*
wlmaker_menu_item_from_dlnode
(
159
bs_dllist_node_t *dlnode_ptr);
160
167
void
wlmaker_menu_item_set_focus
(
168
wlmaker_menu_item_t
*menu_item_ptr,
169
bool
focussed);
170
181
bool
wlmaker_menu_item_contains
(
182
const
wlmaker_menu_item_t
*menu_item_ptr,
183
double
x,
184
double
y);
185
193
bool
wlmaker_menu_item_redraw_needed
(
194
const
wlmaker_menu_item_t
*menu_item_ptr);
195
201
void
wlmaker_menu_item_execute
(
202
const
wlmaker_menu_item_t
*menu_item_ptr);
203
205
extern
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_create
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
wlmaker_menu_item_test_cases
const bs_test_case_t wlmaker_menu_item_test_cases[]
Definition
menu_item.c:233
wlmaker_menu_item_contains
bool wlmaker_menu_item_contains(const wlmaker_menu_item_t *menu_item_ptr, double x, double y)
Definition
menu_item.c:197
wlmaker_menu_item_set_focus
void wlmaker_menu_item_set_focus(wlmaker_menu_item_t *menu_item_ptr, bool focussed)
Definition
menu_item.c:185
wlmaker_menu_item_from_dlnode
wlmaker_menu_item_t * wlmaker_menu_item_from_dlnode(bs_dllist_node_t *dlnode_ptr)
Definition
menu_item.c:177
wlmaker_menu_item_execute
void wlmaker_menu_item_execute(const wlmaker_menu_item_t *menu_item_ptr)
Definition
menu_item.c:216
wlmaker_dlnode_from_menu_item
bs_dllist_node_t * wlmaker_dlnode_from_menu_item(wlmaker_menu_item_t *item_ptr)
Definition
menu_item.c:170
wlmaker_menu_item_get_desired_size
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
wlmaker_menu_item_destroy
void wlmaker_menu_item_destroy(wlmaker_menu_item_t *menu_item_ptr)
Definition
menu_item.c:85
wlmaker_menu_item_redraw_needed
bool wlmaker_menu_item_redraw_needed(const wlmaker_menu_item_t *menu_item_ptr)
Definition
menu_item.c:209
wlmaker_menu_item_type_t
wlmaker_menu_item_type_t
Definition
menu_item.h:31
wlmaker_menu_item_set_size
void wlmaker_menu_item_set_size(wlmaker_menu_item_t *menu_item_ptr, uint32_t width, uint32_t height)
Definition
menu_item.c:100
wlmaker_menu_item_set_position
void wlmaker_menu_item_set_position(wlmaker_menu_item_t *menu_item_ptr, uint32_t x, uint32_t y)
Definition
menu_item.c:110
wlmaker_menu_item_draw
void wlmaker_menu_item_draw(wlmaker_menu_item_t *menu_item_ptr, cairo_t *cairo_ptr)
Definition
menu_item.c:120
_wlmaker_menu_item_t
Definition
menu_item.c:43
wlmaker_menu_item_descriptor_t
Definition
menu_item.h:41
wlmaker_menu_item_descriptor_t::label_ptr
char * label_ptr
Definition
menu_item.h:49
wlmaker_menu_item_descriptor_t::type
wlmaker_menu_item_type_t type
Definition
menu_item.h:43
Generated by
1.12.0