annotate examples/example-message.c @ 157:fb306ed990f8

ui: make message more flexible, closes #2501
author David Demelier <markand@malikania.fr>
date Fri, 16 Oct 2020 14:32:22 +0200
parents c3a40062acc2
children e8d2740703df
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)
157
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
41 #define MH (H * 0.130)
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
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
100 my_draw_frame(struct theme *th, const struct frame *f)
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,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
115 .h = MH,
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.",
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 "You need to press <Enter> to close it."
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 },
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 run(&msg);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 }
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
124
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 static void
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 automatic(void)
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 struct message msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
129 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
130 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
131 .w = MW,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
132 .h = MH,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
133 .timeout = MESSAGE_TIMEOUT_DEFAULT,
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 .text = {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 "This is a an automatic message.",
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 "It will disappear in a few seconds.",
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 "You can still press <Enter> to close it quicker."
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 },
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
139 .flags = MESSAGE_FLAGS_AUTOMATIC
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
140 };
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 run(&msg);
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
143 }
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
144
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
145 static void
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
146 fadein(void)
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
147 {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
148 struct message msg = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
149 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
150 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
151 .w = MW,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
152 .h = MH,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
153 .delay = MESSAGE_DELAY_DEFAULT,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
154 .text = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
155 "This message will fade in."
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
156 },
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
157 .flags = MESSAGE_FLAGS_FADEIN
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
158 };
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 run(&msg);
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
161 }
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
162
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
163 static void
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
164 fadeout(void)
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
165 {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
166 struct message msg = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
167 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
168 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
169 .w = MW,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
170 .h = MH,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
171 .delay = MESSAGE_DELAY_DEFAULT,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
172 .text = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
173 "This message will fade out."
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
174 },
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
175 .flags = MESSAGE_FLAGS_FADEOUT
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
176 };
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 run(&msg);
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
179 }
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
180
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
181 static void
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
182 fade(void)
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
183 {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
184 struct message msg = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
185 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
186 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
187 .w = MW,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
188 .h = MH,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
189 .delay = MESSAGE_DELAY_DEFAULT,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
190 .text = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
191 "This message will fade in and out."
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
192 },
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
193 .flags = MESSAGE_FLAGS_FADEIN | MESSAGE_FLAGS_FADEOUT
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 };
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 run(&msg);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 }
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
198
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 static void
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 question(void)
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 struct message msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
203 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
204 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
205 .w = MW,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
206 .h = MH,
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 .text = {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 "Okay, I've understood.",
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
209 "Nevermind, I'll do it again."
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 },
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
211 .flags = MESSAGE_FLAGS_QUESTION
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
212 };
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 run(&msg);
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
215 }
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
216
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
217 static void
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
218 smallbottom(void)
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
219 {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
220 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
221 const unsigned int h = MH;
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
222 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
223 const int y = (window.h - h - 10);
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
224
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
225 struct message msg = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
226 .x = x,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
227 .y = y,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
228 .w = w,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
229 .h = h,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
230 .delay = MESSAGE_DELAY_DEFAULT,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
231 .flags = MESSAGE_FLAGS_FADEIN | MESSAGE_FLAGS_FADEOUT,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
232 .text = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
233 "This one is small here."
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
234 }
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 };
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
236
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 run(&msg);
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
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
240 static void
157
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
241 toosmallh(void)
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
242 {
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
243 struct message msg = {
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
244 .x = MX,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
245 .y = MY,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
246 .w = MW,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
247 .h = 50,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
248 .text = {
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
249 "This one is too small in height and will emit a warning.",
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
250 },
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
251 };
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
252
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
253 run(&msg);
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 static void
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
257 toosmallw(void)
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 struct message msg = {
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
260 .x = MX,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
261 .y = MY,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
262 .w = 160,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
263 .h = MH,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
264 .text = {
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
265 "This one is too small in width."
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
266 },
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
267 };
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
268
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
269 run(&msg);
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 static void
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
273 custom(void)
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
274 {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
275 struct theme theme;
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
276 struct message msg = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
277 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
278 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
279 .w = MW,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
280 .h = MH,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
281 .text = {
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
282 "This one will destroy your eyes.",
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
283 "Because it use a terrible custom theme."
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
284 },
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
285 .theme = &theme
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
286 };
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 /* 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
289 memcpy(&theme, theme_default(), sizeof (theme));
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
290 theme.draw_frame = my_draw_frame;
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
291 theme.colors[THEME_COLOR_NORMAL] = 0x0000ffff;
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
292
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
293 run(&msg);
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
294 }
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
295
157
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
296 static void
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
297 large(void)
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
298 {
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
299 struct message msg = {
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
300 .x = MX,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
301 .y = MY,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
302 .w = 500,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
303 .h = 500,
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
304 .text = {
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
305 "And this one is terribly large.",
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
306 "But lines are still padded at top."
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
307 },
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
308 };
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
309
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
310 run(&msg);
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
311 }
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
312
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
313 int
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
314 main(int argc, char **argv)
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
315 {
135
eadfed7674ac misc: fix all warnings
David Demelier <markand@malikania.fr>
parents: 125
diff changeset
316 (void)argc;
eadfed7674ac misc: fix all warnings
David Demelier <markand@malikania.fr>
parents: 125
diff changeset
317 (void)argv;
eadfed7674ac misc: fix all warnings
David Demelier <markand@malikania.fr>
parents: 125
diff changeset
318
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
319 init();
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
320 basic();
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
321 fadein();
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
322 fadeout();
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
323 fade();
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
324 automatic();
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
325 question();
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
326 smallbottom();
157
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
327 toosmallh();
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
328 toosmallw();
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 135
diff changeset
329 custom();
157
fb306ed990f8 ui: make message more flexible, closes #2501
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
330 large();
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
331 quit();
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
332 }