annotate libmlk-ui/mlk/ui/gridmenu.h @ 646:7e1eb7f6c049 default tip @

misc: remove .clang
author David Demelier <markand@malikania.fr>
date Sun, 04 Feb 2024 15:24:37 +0100
parents eecdf5140245
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * gridmenu.h -- GUI grid menu
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
445
773a082f0b91 misc: update copyright years
David Demelier <markand@malikania.fr>
parents: 433
diff changeset
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr>
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
366
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
19 #ifndef MLK_UI_GRIDMENU_H
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
20 #define MLK_UI_GRIDMENU_H
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <stddef.h>
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
24 struct mlk_font;
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
25 struct mlk_gridmenu;
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
26 struct mlk_gridmenu_style;
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
27
505
6100c643dba0 ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
28 union mlk_event;
6100c643dba0 ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
29
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
30 struct mlk_gridmenu {
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
31 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
32 * (read-write)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
33 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
34 * Position in x.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
35 */
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
36 int x;
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
37
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
38 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
39 * (read-write)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
40 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
41 * Position in y.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
42 */
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
43 int y;
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
44
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
45 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
46 * (read-write)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
47 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
48 * Menu frame width.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
49 */
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
50 unsigned int w;
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
51
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
52 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
53 * (read-write)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
54 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
55 * Menu frame height.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
56 */
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
57 unsigned int h;
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 506
diff changeset
58
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
59 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
60 * (read-write, borrowed)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
61 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
62 * List of strings to show.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
63 */
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
64 const char * const *items;
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
65
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
66 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
67 * (read-write)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
68 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
69 * Number of items in ::mlk_gridmenu::items.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
70 */
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
71 size_t itemsz;
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
72
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
73 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
74 * (read-write)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
75 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
76 * Current selected item in the grid.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
77 */
505
6100c643dba0 ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
78 size_t selected;
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
79
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
80 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
81 * (read-write)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
82 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
83 * Number of rows to be shown within the frame height.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
84 */
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 unsigned int nrows;
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
86
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
87 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
88 * (read-write)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
89 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
90 * Number of colums to be shown within the frame width.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
91 */
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 unsigned int ncols;
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
93
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
94 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
95 * (read-write, borrowed)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
96 *
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
97 * Style to use for drawing this menu.
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
98 */
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
99 struct mlk_gridmenu_style *style;
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
100
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
101 /** \cond MLK_PRIVATE_DECLS */
395
ef2fc4442ed5 ui: don't use fixed size arrays
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
102 unsigned int eltw; /* maximum entry label width */
ef2fc4442ed5 ui: don't use fixed size arrays
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
103 unsigned int elth; /* maximum entry label height */
ef2fc4442ed5 ui: don't use fixed size arrays
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
104 unsigned int spacew; /* space between element horizontally */
ef2fc4442ed5 ui: don't use fixed size arrays
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
105 unsigned int spaceh; /* and vertically */
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
106 /** \endcond MLK_PRIVATE_DECLS */
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 };
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
108
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
109 /**
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
110 * \struct mlk_gridmenu_style
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
111 * \brief Grid menu style.
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
112 */
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
113 struct mlk_gridmenu_style {
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
114 /**
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
115 * (read-write)
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
116 *
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
117 * Background color.
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
118 */
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
119 unsigned long background;
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
120
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
121 /**
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
122 * (read-write)
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
123 *
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
124 * Border color.
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
125 */
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
126 unsigned long border;
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
127
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
128 /**
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
129 * (read-write)
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
130 *
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
131 * Border size.
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
132 */
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
133 unsigned int border_size;
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
134
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
135 /**
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
136 * (read-write)
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
137 *
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
138 * Text color.
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
139 */
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
140 unsigned long color;
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
141
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
142 /**
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
143 * (read-write)
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
144 *
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
145 * Selected color.
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
146 */
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
147 unsigned long color_selected;
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
148
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
149 /**
621
eecdf5140245 ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents: 620
diff changeset
150 * (read-write)
eecdf5140245 ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents: 620
diff changeset
151 *
eecdf5140245 ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents: 620
diff changeset
152 * Padding around items.
eecdf5140245 ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents: 620
diff changeset
153 */
eecdf5140245 ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents: 620
diff changeset
154 unsigned int padding;
eecdf5140245 ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents: 620
diff changeset
155
eecdf5140245 ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents: 620
diff changeset
156 /**
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
157 * (read-write, borrowed, optional)
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
158 *
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
159 * Font for drawing text.
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
160 */
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
161 struct mlk_font *font;
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
162
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
163 /*
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
164 * (read-write, borrowed, optional)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
165 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
166 * Arbitrary user data.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
167 */
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
168 void *data;
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
169
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
170 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
171 * (read-write, optional)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
172 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
173 * Update the grid menu.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
174 *
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
175 * \param self this style
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
176 * \param menu the menu to update
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
177 * \param ticks number of ticks since last frame
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
178 */
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
179 void (*update)(struct mlk_gridmenu_style *self,
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
180 struct mlk_gridmenu *menu,
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
181 unsigned int ticks);
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
182
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
183 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
184 * (read-write, optional)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
185 *
609
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
186 * Draw a frame box for this menu.
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
187 *
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
188 * \param self this style
609
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
189 * \param menu the underlying menu
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
190 */
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
191 void (*draw_frame)(struct mlk_gridmenu_style *self,
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
192 struct mlk_gridmenu *menu);
609
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
193
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
194 /**
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
195 * (read-write, optional)
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
196 *
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
197 * Draw a specific item.
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
198 *
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
199 * \param self this style
609
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
200 * \param menu the underlying menu
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
201 * \param item the item content
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
202 * \param row the row number (relative)
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
203 * \param col the column number (relative)
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
204 * \param selected non-zero if the item is currently selected
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
205 */
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
206 void (*draw_text)(struct mlk_gridmenu_style *self,
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
207 struct mlk_gridmenu *menu,
609
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
208 const char *item,
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
209 unsigned int row,
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
210 unsigned int col,
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
211 int selected);
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
212 };
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
213
609
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
214 /**
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
215 * \brief Dark default style for gridmenu.
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
216 */
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
217 extern struct mlk_gridmenu_style mlk_gridmenu_style_dark;
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
218
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
219 /**
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
220 * \brief Light default style for gridmenu.
609
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
221 */
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
222 extern struct mlk_gridmenu_style mlk_gridmenu_style_light;
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
223
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
224 /**
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
225 * \brief Default style for all gridmenus.
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
226 */
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
227 extern struct mlk_gridmenu_style *mlk_gridmenu_style;
505
6100c643dba0 ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
228
517
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
229 #if defined(__cplusplus)
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
230 extern "C" {
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
231 #endif
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
232
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
233 /**
621
eecdf5140245 ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents: 620
diff changeset
234 * Prepare the grid menu before drawing.
eecdf5140245 ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents: 620
diff changeset
235 *
eecdf5140245 ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents: 620
diff changeset
236 * This function should be called at least once and/or when the elements are
eecdf5140245 ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents: 620
diff changeset
237 * updated, the geometry or the style changes.
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
238 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
239 * \pre menu != NULL
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
240 * \param menu the menu
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
241 */
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
242 void
621
eecdf5140245 ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents: 620
diff changeset
243 mlk_gridmenu_start(struct mlk_gridmenu *menu);
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
244
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
245 /**
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
246 * Handle an event.
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
247 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
248 * \pre menu != NULL
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
249 * \pre ev != NULL
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
250 * \param menu the menu
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
251 * \param ev the event
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
252 * \return non-zero if a new item is selected, 0 otherwise
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
253 */
395
ef2fc4442ed5 ui: don't use fixed size arrays
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
254 int
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
255 mlk_gridmenu_handle(struct mlk_gridmenu *menu, const union mlk_event *ev);
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
256
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
257 /**
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
258 * Invoke ::mlk_gridmenu_style::update.
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
259 */
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
260 void
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
261 mlk_gridmenu_update(struct mlk_gridmenu *menu, unsigned int ticks);
506
e205625015ba ui: gridmenu is stylable
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
262
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
263 /**
609
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
264 * Invoke the functions:
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
265 *
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
266 * - ::mlk_gridmenu_style::draw_frame,
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
267 * - ::mlk_gridmenu_style::draw_item.
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
268 */
506
e205625015ba ui: gridmenu is stylable
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
269 void
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
270 mlk_gridmenu_draw(struct mlk_gridmenu *menu);
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
271
517
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
272 #if defined(__cplusplus)
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
273 }
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
274 #endif
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
275
366
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
276 #endif /* !MLK_UI_GRIDMENU_H */