annotate libmlk-ui/mlk/ui/button.c @ 528:95792046d3d2

core: doxygenize maths
author David Demelier <markand@malikania.fr>
date Sat, 04 Mar 2023 20:16:03 +0100
parents 7e7c6786d21e
children ed1d3244ed57
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * button.c -- GUI button
4ac71ac10c9f core: start adding some UI elements
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>
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <assert.h>
152
1008a796a9e7 ui: make UI widgets usable as actions
David Demelier <markand@malikania.fr>
parents: 151
diff changeset
20 #include <string.h>
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
431
8f59201dc76b core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
22 #include <mlk/core/event.h>
8f59201dc76b core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
23 #include <mlk/core/maths.h>
8f59201dc76b core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
24 #include <mlk/core/painter.h>
8f59201dc76b core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
25 #include <mlk/core/trace.h>
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
26
152
1008a796a9e7 ui: make UI widgets usable as actions
David Demelier <markand@malikania.fr>
parents: 151
diff changeset
27 #include "align.h"
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 #include "button.h"
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
29 #include "ui.h"
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
30 #include "ui_p.h"
151
b19d076856d2 ui: cleanup theme module, closes #2498
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
31
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
32 static inline int
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
33 is_boxed(const struct mlk_button *button, const struct mlk_event_click *click)
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
34 {
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
35 assert(button);
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
36 assert(click);
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
37 assert(click->type == MLK_EVENT_CLICKDOWN || click->type == MLK_EVENT_CLICKUP);
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
38
528
95792046d3d2 core: doxygenize maths
David Demelier <markand@malikania.fr>
parents: 520
diff changeset
39 return mlk_maths_is_boxed(click->x, click->y,
95792046d3d2 core: doxygenize maths
David Demelier <markand@malikania.fr>
parents: 520
diff changeset
40 button->x, button->y, button->w, button->h);
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
41 }
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
42
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
43 static inline struct mlk_font *
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
44 style_font(const struct mlk_button *button)
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
45 {
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
46 const struct mlk_button_style *style = MLK__STYLE(button, mlk_button_style);
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
47
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
48 if (style->text_font)
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
49 return style->text_font;
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
50
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
51 return mlk_ui_fonts[MLK_UI_FONT_INTERFACE];
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
52 }
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
53
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
54 static void
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
55 delegate_draw_frame(struct mlk_button_delegate *delegate, const struct mlk_button *button)
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
56 {
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
57 (void)delegate;
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
58
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
59 const struct mlk_button_style *style = MLK__STYLE(button, mlk_button_style);
520
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
60 unsigned long long border_color, bg_color;
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
61
520
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
62 if (button->pressed) {
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
63 bg_color = style->pressed_bg_color;
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
64 border_color = style->pressed_border_color;
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
65 } else {
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
66 bg_color = style->bg_color;
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
67 border_color = style->border_color;
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
68 }
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
69
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
70 mlk_painter_set_color(border_color);
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
71 mlk_painter_draw_rectangle(button->x, button->y, button->w, button->h);
520
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
72 mlk_painter_set_color(bg_color);
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
73 mlk_painter_draw_rectangle(
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
74 button->x + style->border_size,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
75 button->y + style->border_size,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
76 button->w - (style->border_size * 2),
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
77 button->h - (style->border_size * 2)
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
78 );
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
79 }
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
80
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
81 static void
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
82 delegate_draw_text(struct mlk_button_delegate *delegate, const struct mlk_button *button)
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
83 {
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
84 (void)delegate;
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
85
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
86 const struct mlk_button_style *style = MLK__STYLE(button, mlk_button_style);
520
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
87 unsigned long long text_color;
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
88
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
89 if (button->pressed)
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
90 text_color = style->pressed_text_color;
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
91 else
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
92 text_color = style->text_color;
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
93
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
94 mlk_ui_draw_text(
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
95 MLK_ALIGN_CENTER,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
96 style_font(button),
520
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
97 text_color,
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
98 button->text,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
99 button->x,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
100 button->y,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
101 button->w,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
102 button->h
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
103 );
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
104 }
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
105
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
106 struct mlk_button_style mlk_button_style = {
520
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
107 .bg_color = MLK_UI_COLOR_BG,
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
108 .pressed_bg_color = 0xcdd2daff,
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
109 .border_color = MLK_UI_COLOR_BORDER,
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
110 .pressed_border_color = 0xa6aebaff,
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
111 .border_size = 1,
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
112 .text_color = MLK_UI_COLOR_TEXT,
7e7c6786d21e ui: button has now pressed style attributes
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
113 .pressed_text_color = MLK_UI_COLOR_TEXT
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
114 };
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
115
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
116 struct mlk_button_delegate mlk_button_delegate = {
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
117 .draw_frame = delegate_draw_frame,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
118 .draw_text = delegate_draw_text
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
119 };
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
120
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
121 int
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
122 mlk_button_ok(const struct mlk_button *button)
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
123 {
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
124 if (!button)
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
125 return 0;
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
126 if (button->text && strlen(button->text) == 0)
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
127 return 0;
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
128
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
129 return 1;
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
130 }
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
131
409
6011ad866e99 ui: delete action functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
132 int
488
441c37e7474f ui: button -> mlk_button
David Demelier <markand@malikania.fr>
parents: 487
diff changeset
133 mlk_button_handle(struct mlk_button *button, const union mlk_event *ev)
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 assert(button);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 assert(ev);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
137
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
138 int active = 0;
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
139
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 switch (ev->type) {
450
b26dd49f69ff core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents: 445
diff changeset
141 case MLK_EVENT_CLICKDOWN:
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 if (is_boxed(button, &ev->click))
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
143 button->pressed = 1;
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 break;
450
b26dd49f69ff core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents: 445
diff changeset
145 case MLK_EVENT_CLICKUP:
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 /*
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 * If the button was pressed, indicate that the button is
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 * finally activated. This let the user to move the cursor
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 * outside the button to "forget" the press.
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 */
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
151 button->pressed = 0;
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
152
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
153 if (is_boxed(button, &ev->click))
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
154 active = 1;
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 break;
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 default:
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 break;
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 }
409
6011ad866e99 ui: delete action functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
159
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
160 return active;
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 }
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
162
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 void
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
164 mlk_button_update(struct mlk_button *button, unsigned int ticks)
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 assert(button);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
167
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
168 MLK__DELEGATE_INVOKE(button->delegate, mlk_button_delegate, update, button, ticks);
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 }
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
170
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 void
488
441c37e7474f ui: button -> mlk_button
David Demelier <markand@malikania.fr>
parents: 487
diff changeset
172 mlk_button_draw(const struct mlk_button *button)
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 assert(button);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
175
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
176 MLK__DELEGATE_INVOKE(button->delegate, mlk_button_delegate, draw_frame, button);
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
177
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
178 if (button->text)
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
179 MLK__DELEGATE_INVOKE(button->delegate, mlk_button_delegate, draw_text, button);
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
180 }