annotate examples/example-message.c @ 174:6992085d47fd

ui: major theme overhaul, closes #2509 @1h - The font does not contain a color anymore, - Add a new color argument to font_render, - Theme are stored `const` in UI elements to promise no modifications, - Also make all <ui>_draw function to take a const widget too.
author David Demelier <markand@malikania.fr>
date Thu, 22 Oct 2020 15:16:43 +0200
parents e05a792f6910
children 133926e08d6e
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 * example-message.c -- show how to use messages
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
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
19 #include <string.h>
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
20
125
d59efa737fcc cmake: add examples and fix
David Demelier <markand@malikania.fr>
parents: 114
diff changeset
21 #include <core/clock.h>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
22 #include <core/core.h>
125
d59efa737fcc cmake: add examples and fix
David Demelier <markand@malikania.fr>
parents: 114
diff changeset
23 #include <core/event.h>
d59efa737fcc cmake: add examples and fix
David Demelier <markand@malikania.fr>
parents: 114
diff changeset
24 #include <core/painter.h>
d59efa737fcc cmake: add examples and fix
David Demelier <markand@malikania.fr>
parents: 114
diff changeset
25 #include <core/panic.h>
d59efa737fcc cmake: add examples and fix
David Demelier <markand@malikania.fr>
parents: 114
diff changeset
26 #include <core/sys.h>
d59efa737fcc cmake: add examples and fix
David Demelier <markand@malikania.fr>
parents: 114
diff changeset
27 #include <core/util.h>
d59efa737fcc cmake: add examples and fix
David Demelier <markand@malikania.fr>
parents: 114
diff changeset
28 #include <core/window.h>
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 140
diff changeset
30 #include <ui/frame.h>
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 140
diff changeset
31 #include <ui/theme.h>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
32 #include <ui/ui.h>
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 140
diff changeset
33
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 140
diff changeset
34 #include <rpg/message.h>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
35 #include <rpg/rpg.h>
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 140
diff changeset
36
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
37 #define W (1280)
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
38 #define H (720)
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
39
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
40 #define MW (W * 0.75)
158
e8d2740703df ui: make message auto-spacing lines
David Demelier <markand@malikania.fr>
parents: 157
diff changeset
41 #define MH (H * 0.120)
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
42 #define MX ((W / 2) - (MW / 2))
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
43 #define MY (100)
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
44
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 static void
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 init(void)
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 {
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
48 if (!core_init() || !ui_init() || !rpg_init())
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
49 panic();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
50 if (!window_open("Example - Message", W, H))
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 panic();
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 }
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
53
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 static void
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 quit(void)
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 window_finish();
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
58 rpg_finish();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
59 ui_finish();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
60 core_finish();
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 }
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
62
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 static void
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 run(struct message *msg)
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 struct clock clock = {0};
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
67
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 message_start(msg);
100
ef9135c34505 message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents: 99
diff changeset
69 clock_start(&clock);
99
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 while (msg->state) {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 union event ev;
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 unsigned int elapsed = clock_elapsed(&clock);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 clock_start(&clock);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
76
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 while (event_poll(&ev)) {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 switch (ev.type) {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 case EVENT_QUIT:
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
80 msg->state = MESSAGE_STATE_NONE;
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 break;
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 default:
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 message_handle(msg, &ev);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 break;
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 }
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 }
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
87
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 message_update(msg, elapsed);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 painter_set_color(0xffffffff);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 painter_clear();
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 message_draw(msg);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 painter_present();
100
ef9135c34505 message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents: 99
diff changeset
93
ef9135c34505 message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents: 99
diff changeset
94 if ((elapsed = clock_elapsed(&clock)) < 20)
ef9135c34505 message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents: 99
diff changeset
95 delay(20 - elapsed);
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 }
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 }
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
98
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 static void
174
6992085d47fd ui: major theme overhaul, closes #2509 @1h
David Demelier <markand@malikania.fr>
parents: 159
diff changeset
100 my_draw_frame(const struct theme *th, const struct frame *f)
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
101 {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
102 (void)th;
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
103
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
104 painter_set_color(0xff0000ff);
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
105 painter_draw_rectangle(f->x, f->y, f->w, f->h);
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
106 }
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
107
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
108 static void
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 basic(void)
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 struct message msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
112 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
113 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
114 .w = MW,
159
e05a792f6910 ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents: 158
diff changeset
115 .spacing = 12,
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 .text = {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 "This is a basic message.",
159
e05a792f6910 ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents: 158
diff changeset
118 "Vertical spacing is automatically computed.",
e05a792f6910 ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents: 158
diff changeset
119 "You need to press <Enter> to close it.",
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 },
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 };
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
122
159
e05a792f6910 ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents: 158
diff changeset
123 message_query(&msg, NULL, &msg.h);
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 run(&msg);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 }
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
126
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 static void
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 automatic(void)
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 struct message msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
131 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
132 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
133 .w = MW,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
134 .timeout = MESSAGE_TIMEOUT_DEFAULT,
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 .text = {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 "This is a an automatic message.",
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 "It will disappear in a few seconds.",
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 "You can still press <Enter> to close it quicker."
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 },
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
140 .flags = MESSAGE_FLAGS_AUTOMATIC
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
141 };
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
142
159
e05a792f6910 ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents: 158
diff changeset
143 message_query(&msg, NULL, &msg.h);
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
144 run(&msg);
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
145 }
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
146
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
147 static void
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
148 fadein(void)
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
149 {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
150 struct message msg = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
151 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
152 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
153 .w = MW,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
154 .delay = MESSAGE_DELAY_DEFAULT,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
155 .text = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
156 "This message will fade in."
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
157 },
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
158 .flags = MESSAGE_FLAGS_FADEIN
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
159 };
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
160
159
e05a792f6910 ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents: 158
diff changeset
161 message_query(&msg, NULL, &msg.h);
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
162 run(&msg);
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
163 }
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
164
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
165 static void
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
166 fadeout(void)
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
167 {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
168 struct message msg = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
169 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
170 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
171 .w = MW,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
172 .delay = MESSAGE_DELAY_DEFAULT,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
173 .text = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
174 "This message will fade out."
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
175 },
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
176 .flags = MESSAGE_FLAGS_FADEOUT
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
177 };
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
178
159
e05a792f6910 ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents: 158
diff changeset
179 message_query(&msg, NULL, &msg.h);
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
180 run(&msg);
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
181 }
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
182
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
183 static void
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
184 fade(void)
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
185 {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
186 struct message msg = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
187 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
188 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
189 .w = MW,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
190 .delay = MESSAGE_DELAY_DEFAULT,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
191 .text = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
192 "This message will fade in and out."
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
193 },
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
194 .flags = MESSAGE_FLAGS_FADEIN | MESSAGE_FLAGS_FADEOUT
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 };
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
196
159
e05a792f6910 ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents: 158
diff changeset
197 message_query(&msg, NULL, &msg.h);
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 run(&msg);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 }
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
200
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 static void
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 question(void)
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 struct message msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
205 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
206 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
207 .w = MW,
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 .text = {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
209 "Okay, I've understood.",
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 "Nevermind, I'll do it again."
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 },
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
212 .flags = MESSAGE_FLAGS_QUESTION
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
213 };
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
214
159
e05a792f6910 ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents: 158
diff changeset
215 message_query(&msg, NULL, &msg.h);
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
216 run(&msg);
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
217 }
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
218
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
219 static void
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
220 smallbottom(void)
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
221 {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
222 const unsigned int w = window.w / 4;
157
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
223 const unsigned int h = MH;
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
224 const int x = (window.w / 2) - (w / 2);
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
225 const int y = (window.h - h - 10);
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
226
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
227 struct message msg = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
228 .x = x,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
229 .y = y,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
230 .w = w,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
231 .h = h,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
232 .delay = MESSAGE_DELAY_DEFAULT,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
233 .flags = MESSAGE_FLAGS_FADEIN | MESSAGE_FLAGS_FADEOUT,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
234 .text = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
235 "This one is small here."
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
236 }
99
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
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 run(&msg);
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
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
242 static void
157
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
243 toosmallh(void)
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
244 {
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
245 struct message msg = {
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
246 .x = MX,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
247 .y = MY,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
248 .w = MW,
159
e05a792f6910 ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents: 158
diff changeset
249 .h = 40,
157
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
250 .text = {
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
251 "This one is too small in height and will emit a warning.",
159
e05a792f6910 ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents: 158
diff changeset
252 "Because this line will be incomplete."
157
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
253 },
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
254 };
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
255
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
256 run(&msg);
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
257 }
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
258
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
259 static void
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
260 toosmallw(void)
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
261 {
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
262 struct message msg = {
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
263 .x = MX,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
264 .y = MY,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
265 .w = 160,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
266 .h = MH,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
267 .text = {
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
268 "This one is too small in width."
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
269 },
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
270 };
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
271
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
272 run(&msg);
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
273 }
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
274
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
275 static void
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
276 custom(void)
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
277 {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
278 struct theme theme;
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
279 struct message msg = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
280 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
281 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
282 .w = MW,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
283 .h = MH,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
284 .text = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
285 "This one will destroy your eyes.",
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
286 "Because it use a terrible custom theme."
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
287 },
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
288 .theme = &theme
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
289 };
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
290
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
291 /* Borrow default theme and change its frame drawing. */
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
292 memcpy(&theme, theme_default(), sizeof (theme));
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
293 theme.draw_frame = my_draw_frame;
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
294 theme.colors[THEME_COLOR_NORMAL] = 0x0000ffff;
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
295
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
296 run(&msg);
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
297 }
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
298
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
299 int
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
300 main(int argc, char **argv)
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
301 {
135
eadfed7674ac misc: fix all warnings
David Demelier <markand@malikania.fr>
parents: 125
diff changeset
302 (void)argc;
eadfed7674ac misc: fix all warnings
David Demelier <markand@malikania.fr>
parents: 125
diff changeset
303 (void)argv;
eadfed7674ac misc: fix all warnings
David Demelier <markand@malikania.fr>
parents: 125
diff changeset
304
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
305 init();
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
306 basic();
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
307 fadein();
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
308 fadeout();
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
309 fade();
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
310 automatic();
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
311 question();
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
312 smallbottom();
157
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
313 toosmallh();
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
314 toosmallw();
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
315 custom();
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
316 quit();
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
317 }