annotate examples/example-font.c @ 193:78774cc2cc6b

doc: minimal typo
author David Demelier <markand@malikania.fr>
date Sat, 07 Nov 2020 19:26:51 +0100
parents 6992085d47fd
children 133926e08d6e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
144
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * example-font.c -- show how to use fonts
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <core/clock.h>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
20 #include <core/core.h>
144
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <core/event.h>
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <core/font.h>
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <core/painter.h>
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 #include <core/panic.h>
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include <core/sys.h>
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 #include <core/texture.h>
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 #include <core/util.h>
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 #include <core/window.h>
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 144
diff changeset
30 #include <ui/theme.h>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
31 #include <ui/ui.h>
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 144
diff changeset
32
144
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 #define W (1280)
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 #define H (720)
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
35
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 /* Friendly taken from: https://lospec.com/palette-list/apollo */
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 static const unsigned long colors[] = {
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 0x3c5e8bff, /* Blue. */
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 0x468232ff, /* Green. */
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 0xad7757ff, /* Light brown. */
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 0x884b2bff, /* Brown. */
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 0x752438ff, /* Red. */
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 0x7a367bff, /* Magenta. */
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 0x151d28ff, /* Dark */
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 0xc7cfccff, /* Christian Grey. */
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 };
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
47
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 static void
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 init(void)
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 {
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
51 if (!core_init() || !ui_init())
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
52 panic();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
53 if (!window_open("Example - Font", W, H))
144
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 panic();
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 }
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
56
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 static void
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 run(void)
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 {
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 struct clock clock = {0};
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 struct font *font = theme_default()->fonts[THEME_FONT_INTERFACE];
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 int ci = 0;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 enum font_style style = font->style;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
64
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 clock_start(&clock);
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
66
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 for (;;) {
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 struct texture tex;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 union event ev;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 unsigned int elapsed = clock_elapsed(&clock);
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
71
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 clock_start(&clock);
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
73
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 while (event_poll(&ev)) {
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 switch (ev.type) {
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 case EVENT_KEYDOWN:
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 switch (ev.key.key) {
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 case KEY_LEFT:
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 if (ci > 0)
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 ci--;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 break;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 case KEY_RIGHT:
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 if ((size_t)ci < NELEM(colors))
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 ci++;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 break;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 case KEY_SPACE:
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 if (style == FONT_STYLE_ANTIALIASED)
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 style = FONT_STYLE_NONE;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 else
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 style = FONT_STYLE_ANTIALIASED;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 default:
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 break;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 }
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 break;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 case EVENT_QUIT:
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 return;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 default:
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 break;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 }
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 }
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
101
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 painter_set_color(0xffffffff);
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 painter_clear();
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
104
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 font->style = style;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
106
174
6992085d47fd ui: major theme overhaul, closes #2509 @1h
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
107 if (!font_render(font, &tex, "Example of text. Use <Left>/<Right> to change color and <Space> to toggle antialiasing.", colors[ci]))
144
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 panic();
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
109
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 texture_draw(&tex, 10, 10);
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 painter_present();
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 texture_finish(&tex);
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
113
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 if ((elapsed = clock_elapsed(&clock)) < 20)
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 delay(20 - elapsed);
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 }
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 }
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
118
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 static void
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 quit(void)
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 {
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 window_finish();
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
123 ui_finish();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
124 core_finish();
144
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 }
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
126
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 int
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 main(int argc, char **argv)
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 {
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 (void)argc;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 (void)argv;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
132
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 init();
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 run();
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 quit();
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
136
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 return 0;
28d9bb62fcb1 core: add font_box function, closes #2495
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 }