Mercurial > molko
annotate libui/ui/theme.c @ 149:a43e79d489ea
ui: allow custom position of labels
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 15 Oct 2020 10:45:40 +0200 |
parents | c577c15df07f |
children | 9733d379be89 |
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 * theme.c -- abstract theming |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr> |
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> |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 #include <stddef.h> |
146
7d7ea7a9cf50
core: add theme_shallow function
David Demelier <markand@malikania.fr>
parents:
145
diff
changeset
|
21 #include <string.h> |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 |
148
c577c15df07f
misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents:
146
diff
changeset
|
23 #include <core/font.h> |
c577c15df07f
misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents:
146
diff
changeset
|
24 #include <core/maths.h> |
c577c15df07f
misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents:
146
diff
changeset
|
25 #include <core/painter.h> |
c577c15df07f
misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents:
146
diff
changeset
|
26 #include <core/panic.h> |
c577c15df07f
misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents:
146
diff
changeset
|
27 #include <core/texture.h> |
c577c15df07f
misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents:
146
diff
changeset
|
28 #include <core/util.h> |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 |
133
c46f80820b42
core: revamp debug using theme
David Demelier <markand@malikania.fr>
parents:
121
diff
changeset
|
30 #include <core/assets/fonts/f25-bank-printer.h> |
c46f80820b42
core: revamp debug using theme
David Demelier <markand@malikania.fr>
parents:
121
diff
changeset
|
31 #include <core/assets/fonts/comic-neue.h> |
102
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
32 |
148
c577c15df07f
misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents:
146
diff
changeset
|
33 #include "button.h" |
c577c15df07f
misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents:
146
diff
changeset
|
34 #include "checkbox.h" |
c577c15df07f
misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents:
146
diff
changeset
|
35 #include "frame.h" |
c577c15df07f
misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents:
146
diff
changeset
|
36 #include "label.h" |
c577c15df07f
misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents:
146
diff
changeset
|
37 #include "theme.h" |
c577c15df07f
misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents:
146
diff
changeset
|
38 |
108
5e38f88cb9ab
make: generate binary files during build
David Demelier <markand@malikania.fr>
parents:
107
diff
changeset
|
39 #define THEME(t) (t ? t : &default_theme) |
102
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
40 |
115
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
41 #define CHECKBOX_W 16 |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
42 #define CHECKBOX_H 16 |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
43 #define CHECKBOX_RAD 6 |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
44 |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 static void |
105
f6b5e2fbbc81
inventory_dialog: add basic movements
David Demelier <markand@malikania.fr>
parents:
102
diff
changeset
|
46 box(int x, int y, unsigned int w, unsigned int h) |
f6b5e2fbbc81
inventory_dialog: add basic movements
David Demelier <markand@malikania.fr>
parents:
102
diff
changeset
|
47 { |
f6b5e2fbbc81
inventory_dialog: add basic movements
David Demelier <markand@malikania.fr>
parents:
102
diff
changeset
|
48 /* Some basic outlines. */ |
f6b5e2fbbc81
inventory_dialog: add basic movements
David Demelier <markand@malikania.fr>
parents:
102
diff
changeset
|
49 painter_set_color(0x4d3533ff); |
f6b5e2fbbc81
inventory_dialog: add basic movements
David Demelier <markand@malikania.fr>
parents:
102
diff
changeset
|
50 |
f6b5e2fbbc81
inventory_dialog: add basic movements
David Demelier <markand@malikania.fr>
parents:
102
diff
changeset
|
51 painter_draw_line(x, y, x + w, y); |
f6b5e2fbbc81
inventory_dialog: add basic movements
David Demelier <markand@malikania.fr>
parents:
102
diff
changeset
|
52 painter_draw_line(x, y + h, x + w, y + h); |
f6b5e2fbbc81
inventory_dialog: add basic movements
David Demelier <markand@malikania.fr>
parents:
102
diff
changeset
|
53 painter_draw_line(x, y, x, y + h); |
f6b5e2fbbc81
inventory_dialog: add basic movements
David Demelier <markand@malikania.fr>
parents:
102
diff
changeset
|
54 painter_draw_line(x + w, y, x + w, y + h); |
f6b5e2fbbc81
inventory_dialog: add basic movements
David Demelier <markand@malikania.fr>
parents:
102
diff
changeset
|
55 } |
f6b5e2fbbc81
inventory_dialog: add basic movements
David Demelier <markand@malikania.fr>
parents:
102
diff
changeset
|
56 |
f6b5e2fbbc81
inventory_dialog: add basic movements
David Demelier <markand@malikania.fr>
parents:
102
diff
changeset
|
57 static void |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 draw_frame(struct theme *t, const struct frame *frame) |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 { |
135
eadfed7674ac
misc: fix all warnings
David Demelier <markand@malikania.fr>
parents:
134
diff
changeset
|
60 (void)t; |
eadfed7674ac
misc: fix all warnings
David Demelier <markand@malikania.fr>
parents:
134
diff
changeset
|
61 |
102
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
62 if (frame->style == FRAME_STYLE_BOX) |
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
63 painter_set_color(0x6e4c30ff); |
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
64 else |
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
65 painter_set_color(0xce9248ff); |
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
66 |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 painter_draw_rectangle(frame->x, frame->y, frame->w, frame->h); |
105
f6b5e2fbbc81
inventory_dialog: add basic movements
David Demelier <markand@malikania.fr>
parents:
102
diff
changeset
|
68 box(frame->x, frame->y, frame->w, frame->h); |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 } |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 static void |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 draw_label(struct theme *t, const struct label *label) |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 { |
145
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
74 struct font *font; |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 struct texture tex; |
145
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
76 int x, y, bx, by; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
77 unsigned int tw, th, bw, bh; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
78 |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
79 /* Compute real box size according to padding. */ |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
80 bx = label->x + t->padding; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
81 by = label->y + t->padding; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
82 bw = label->w - (t->padding * 2); |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
83 bh = label->h - (t->padding * 2); |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
84 |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
85 /* Make a shallow copy of the interface font. */ |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
86 font = t->fonts[THEME_FONT_INTERFACE]; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
87 |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
88 /* Compute text size. */ |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
89 if (!font_box(font, label->text, &tw, &th)) |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
90 panic(); |
102
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
91 |
145
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
92 /* Compute position according to alignment and box. */ |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
93 switch (label->align) { |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
94 case LABEL_ALIGN_CENTER: |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
95 maths_centerize(&x, &y, tw, th, bx, by, bw, bh); |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
96 break; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
97 case LABEL_ALIGN_TOP_LEFT: |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
98 x = bx; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
99 y = by; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
100 break; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
101 case LABEL_ALIGN_TOP: |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
102 maths_centerize(&x, NULL, tw, th, bx, by, bw, bh); |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
103 y = by; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
104 break; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
105 case LABEL_ALIGN_TOP_RIGHT: |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
106 x = bx + bw - tw; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
107 y = by; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
108 break; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
109 case LABEL_ALIGN_RIGHT: |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
110 maths_centerize(NULL, &y, tw, th, bx, by, bw, bh); |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
111 x = bx + bw - tw; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
112 break; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
113 case LABEL_ALIGN_BOTTOM_RIGHT: |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
114 x = bx + bw - tw; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
115 y = by + bh - th; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
116 break; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
117 case LABEL_ALIGN_BOTTOM: |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
118 maths_centerize(&x, NULL, tw, th, bx, by, bw, bh); |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
119 y = by + bh - th; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
120 break; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
121 case LABEL_ALIGN_BOTTOM_LEFT: |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
122 x = bx; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
123 y = by + bh - th; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
124 break; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
125 case LABEL_ALIGN_LEFT: |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
126 maths_centerize(NULL, &y, tw, th, bx, by, bw, bh); |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
127 x = bx; |
149
a43e79d489ea
ui: allow custom position of labels
David Demelier <markand@malikania.fr>
parents:
148
diff
changeset
|
128 break; |
145
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
129 default: |
149
a43e79d489ea
ui: allow custom position of labels
David Demelier <markand@malikania.fr>
parents:
148
diff
changeset
|
130 x = label->x; |
a43e79d489ea
ui: allow custom position of labels
David Demelier <markand@malikania.fr>
parents:
148
diff
changeset
|
131 y = label->y; |
145
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
132 break; |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
133 } |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
134 |
101
0bc32f70d67c
label: add more customization
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
135 /* Shadow text, only if enabled. */ |
145
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
136 if (label->flags & LABEL_FLAGS_SHADOW) { |
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
137 font->color = t->colors[THEME_COLOR_SHADOW]; |
101
0bc32f70d67c
label: add more customization
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
138 |
145
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
139 if (!font_render(font, &tex, label->text)) |
101
0bc32f70d67c
label: add more customization
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
140 panic(); |
0bc32f70d67c
label: add more customization
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
141 |
102
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
142 texture_draw(&tex, x + 1, y + 1); |
101
0bc32f70d67c
label: add more customization
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
143 texture_finish(&tex); |
0bc32f70d67c
label: add more customization
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
144 } |
0bc32f70d67c
label: add more customization
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
145 |
0bc32f70d67c
label: add more customization
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
146 /* Normal text. */ |
145
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
147 font->color = t->colors[THEME_COLOR_NORMAL]; |
101
0bc32f70d67c
label: add more customization
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
148 |
145
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
149 if (!font_render(font, &tex, label->text)) |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
150 panic(); |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
151 |
102
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
152 texture_draw(&tex, x, y); |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
153 texture_finish(&tex); |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
154 } |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
155 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
156 static void |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
157 draw_button(struct theme *t, const struct button *button) |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
158 { |
135
eadfed7674ac
misc: fix all warnings
David Demelier <markand@malikania.fr>
parents:
134
diff
changeset
|
159 (void)t; |
eadfed7674ac
misc: fix all warnings
David Demelier <markand@malikania.fr>
parents:
134
diff
changeset
|
160 |
102
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
161 struct label label = { |
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
162 .text = button->text, |
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
163 .x = button->x, |
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
164 .y = button->y, |
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
165 .w = button->w, |
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
166 .h = button->h |
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
167 }; |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
168 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
169 painter_set_color(0xabcdefff); |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
170 painter_draw_rectangle(button->x, button->y, button->w, button->h); |
102
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
171 |
26fef20fd89d
inventory_dialog: draw basic shapes
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
172 label_draw(&label); |
105
f6b5e2fbbc81
inventory_dialog: add basic movements
David Demelier <markand@malikania.fr>
parents:
102
diff
changeset
|
173 |
f6b5e2fbbc81
inventory_dialog: add basic movements
David Demelier <markand@malikania.fr>
parents:
102
diff
changeset
|
174 box(button->x, button->y, button->w, button->h); |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
175 } |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
176 |
115
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
177 static void |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
178 draw_checkbox(struct theme *t, const struct checkbox *cb) |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
179 { |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
180 box(cb->x, cb->y, CHECKBOX_W, CHECKBOX_H); |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
181 |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
182 if (cb->checked) |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
183 painter_draw_rectangle(cb->x + 5, cb->y + 5, CHECKBOX_W - 9, CHECKBOX_H - 9); |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
184 |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
185 if (cb->label) { |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
186 const unsigned int w = cb->w - (t->padding * 2) - CHECKBOX_W; |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
187 const int x = cb->x + (t->padding * 2) + CHECKBOX_W; |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
188 |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
189 struct label label = { |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
190 .text = cb->label, |
145
7f1af54bb35a
core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents:
135
diff
changeset
|
191 .align = LABEL_ALIGN_LEFT, |
115
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
192 .x = x, |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
193 .y = cb->y, |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
194 .w = w, |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
195 .h = cb->h |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
196 }; |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
197 |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
198 draw_label(t, &label); |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
199 } |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
200 } |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
201 |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
202 /* Default theme. */ |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
203 static struct theme default_theme = { |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
204 .colors = { |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
205 [THEME_COLOR_NORMAL] = 0xffffffff, |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
206 [THEME_COLOR_SELECTED] = 0x006554ff, |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
207 [THEME_COLOR_SHADOW] = 0x000000ff |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
208 }, |
115
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
209 .padding = 10, |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
210 .draw_frame = draw_frame, |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
211 .draw_label = draw_label, |
115
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
212 .draw_button = draw_button, |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
213 .draw_checkbox = draw_checkbox |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
214 }; |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
215 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
216 /* Default font catalog. */ |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
217 #define FONT(bin, size, index) \ |
135
eadfed7674ac
misc: fix all warnings
David Demelier <markand@malikania.fr>
parents:
134
diff
changeset
|
218 { bin, sizeof (bin), size, &default_theme.fonts[index], {0} } |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
219 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
220 static struct font_catalog { |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
221 const unsigned char *data; |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
222 const size_t datasz; |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
223 unsigned int size; |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
224 struct font **dest; |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
225 struct font font; |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
226 } default_fonts[] = { |
134
197374e9f0b2
cmake: prefix assets with their directory
David Demelier <markand@malikania.fr>
parents:
133
diff
changeset
|
227 FONT(fonts_f25_bank_printer, 10, THEME_FONT_DEBUG), |
197374e9f0b2
cmake: prefix assets with their directory
David Demelier <markand@malikania.fr>
parents:
133
diff
changeset
|
228 FONT(fonts_comic_neue, 20, THEME_FONT_INTERFACE) |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
229 }; |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
230 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
231 bool |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
232 theme_init(void) |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
233 { |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
234 /* Open all fonts. */ |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
235 for (size_t i = 0; i < NELEM(default_fonts); ++i) { |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
236 struct font_catalog *fc = &default_fonts[i]; |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
237 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
238 if (!font_openmem(&fc->font, fc->data, fc->datasz, fc->size)) |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
239 goto failed; |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
240 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
241 /* Reference this font into the catalog. */ |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
242 *default_fonts[i].dest = &default_fonts[i].font; |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
243 } |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
244 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
245 return true; |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
246 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
247 failed: |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
248 theme_finish(); |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
249 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
250 return false; |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
251 } |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
252 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
253 struct theme * |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
254 theme_default(void) |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
255 { |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
256 return &default_theme; |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
257 } |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
258 |
115
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
259 unsigned int |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
260 theme_padding(const struct theme *t) |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
261 { |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
262 return THEME(t)->padding; |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
263 } |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
264 |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
265 void |
146
7d7ea7a9cf50
core: add theme_shallow function
David Demelier <markand@malikania.fr>
parents:
145
diff
changeset
|
266 theme_shallow(struct theme *dst, const struct theme *src) |
7d7ea7a9cf50
core: add theme_shallow function
David Demelier <markand@malikania.fr>
parents:
145
diff
changeset
|
267 { |
7d7ea7a9cf50
core: add theme_shallow function
David Demelier <markand@malikania.fr>
parents:
145
diff
changeset
|
268 assert(dst); |
7d7ea7a9cf50
core: add theme_shallow function
David Demelier <markand@malikania.fr>
parents:
145
diff
changeset
|
269 |
7d7ea7a9cf50
core: add theme_shallow function
David Demelier <markand@malikania.fr>
parents:
145
diff
changeset
|
270 memcpy(dst, src ? src : &default_theme, sizeof (*src)); |
7d7ea7a9cf50
core: add theme_shallow function
David Demelier <markand@malikania.fr>
parents:
145
diff
changeset
|
271 } |
7d7ea7a9cf50
core: add theme_shallow function
David Demelier <markand@malikania.fr>
parents:
145
diff
changeset
|
272 |
7d7ea7a9cf50
core: add theme_shallow function
David Demelier <markand@malikania.fr>
parents:
145
diff
changeset
|
273 void |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
274 theme_draw_frame(struct theme *t, const struct frame *frame) |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
275 { |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
276 assert(frame); |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
277 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
278 THEME(t)->draw_frame(THEME(t), frame); |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
279 } |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
280 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
281 void |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
282 theme_draw_label(struct theme *t, const struct label *label) |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
283 { |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
284 assert(label); |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
285 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
286 THEME(t)->draw_label(THEME(t), label); |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
287 } |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
288 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
289 void |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
290 theme_draw_button(struct theme *t, const struct button *button) |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
291 { |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
292 assert(button); |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
293 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
294 THEME(t)->draw_button(THEME(t), button); |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
295 } |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
296 |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
297 void |
115
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
298 theme_draw_checkbox(struct theme *t, const struct checkbox *cb) |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
299 { |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
300 assert(cb); |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
301 |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
302 THEME(t)->draw_checkbox(THEME(t), cb); |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
303 } |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
304 |
3bd0d3a39e30
core: implement checkbox, closes #2486
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
305 void |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
306 theme_finish(void) |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
307 { |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
308 for (size_t i = 0; i < NELEM(default_fonts); ++i) { |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
309 font_finish(&default_fonts[i].font); |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
310 *default_fonts[i].dest = NULL; |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
311 } |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
312 } |