annotate examples/example-drawable.c @ 159:e05a792f6910

ui: make message less clever and provide spacing field
author David Demelier <markand@malikania.fr>
date Fri, 16 Oct 2020 18:44:05 +0200
parents c3a40062acc2
children f6497ec74b49
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * example-drawable.c -- example on how to use automatic drawables
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
19 #include <stdlib.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
20
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <core/animation.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <core/clock.h>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
23 #include <core/core.h>
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 #include <core/event.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include <core/drawable.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 #include <core/key.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 #include <core/painter.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 #include <core/panic.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 #include <core/sys.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 #include <core/image.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 #include <core/sprite.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 #include <core/texture.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 #include <core/util.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 #include <core/window.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
35
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 145
diff changeset
36 #include <ui/label.h>
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 145
diff changeset
37 #include <ui/theme.h>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
38 #include <ui/ui.h>
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 145
diff changeset
39
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 #include <assets/sprites/explosion.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
41
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 #define W 1280
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 #define H 720
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
44
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 static struct label help = {
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 .x = 10,
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 .y = 10,
153
aa6e70e330a1 ui: make label less smart
David Demelier <markand@malikania.fr>
parents: 150
diff changeset
48 .text = "Keys: <Esc> to reset. Click anywhere to spawn a drawable.",
145
7f1af54bb35a core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
49 .flags = LABEL_FLAGS_SHADOW
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 };
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 static struct drawable_stack stack;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
53
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 /*
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 * List of drawables for this example.
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 * -----------------------------------------------------------------------------
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 */
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
58
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 /* 0: Explosion animation. */
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 static struct texture explosion_tex;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 static struct sprite explosion_sprite;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
62
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
63 struct explosion {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
64 struct animation anim;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
65 struct drawable dw;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
66 };
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
67
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 static void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 init(void)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 {
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
71 if (!core_init() || !ui_init())
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
72 panic();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
73 if (!window_open("Example - Drawable", W, H))
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 panic();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
75
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 /* 0: Explosion animation. */
134
197374e9f0b2 cmake: prefix assets with their directory
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
77 if (!image_openmem(&explosion_tex, sprites_explosion, sizeof (sprites_explosion)))
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 panic();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
79
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 sprite_init(&explosion_sprite, &explosion_tex, 256, 256);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
81 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
82
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
83 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
84 explosion_finish(struct drawable *dw)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
85 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
86 free(dw->data);
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 }
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
88
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 static void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 spawn(int x, int y)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 {
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
92 struct explosion *expl = emalloc(sizeof (struct explosion));
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
93
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
94 animation_init(&expl->anim, &explosion_sprite, 100);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
95 animation_drawable(&expl->anim, &expl->dw, x, y);
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
96
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
97 /*
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
98 * This work because the drawable->data field expects a struct animation
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
99 * pointer which is the first member of struct explosion.
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
100 *
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
101 * Thus this "poor man inheritance" trick works perfectly in our case
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
102 * and we simply need to free the whole explosion struct afterwards.
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
103 */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
104 expl->dw.finish = explosion_finish;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
105
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
106 drawable_stack_add(&stack, &expl->dw);
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 }
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
108
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 static void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 run(void)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 {
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 struct clock clock = {0};
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
113
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 clock_start(&clock);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
115
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 for (;;) {
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 union event ev;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 unsigned int elapsed = clock_elapsed(&clock);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
119
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 clock_start(&clock);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
121
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 while (event_poll(&ev)) {
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 switch (ev.type) {
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 case EVENT_KEYDOWN:
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 switch (ev.key.key) {
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 case KEY_ESCAPE:
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 drawable_stack_finish(&stack);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 break;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 default:
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 break;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 }
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 break;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 case EVENT_CLICKDOWN:
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 spawn(ev.click.x, ev.click.y);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 break;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 case EVENT_QUIT:
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 return;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 default:
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 break;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 }
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 }
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
142
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 drawable_stack_update(&stack, elapsed);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 painter_set_color(0xebede9ff);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 painter_clear();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 label_draw(&help);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 drawable_stack_draw(&stack);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 painter_present();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
149
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 if ((elapsed = clock_elapsed(&clock)) < 20)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 delay(20 - elapsed);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 }
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 }
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
154
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 static void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 quit(void)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 {
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
158 window_finish();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
159 ui_finish();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
160 core_finish();
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 }
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
162
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 int
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 main(int argc, char **argv)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 {
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 (void)argc;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 (void)argv;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
168
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 init();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 run();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 quit();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 }