annotate examples/example-drawable.c @ 186:f37b8e95aaaa

core: add blend routines in texture
author David Demelier <markand@malikania.fr>
date Fri, 06 Nov 2020 11:30:29 +0100
parents f6497ec74b49
children 02285657294c
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
182
f6497ec74b49 core: add alloc module, closes #2512
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
21 #include <core/alloc.h>
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <core/animation.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <core/clock.h>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
24 #include <core/core.h>
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include <core/event.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 #include <core/drawable.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 #include <core/key.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 #include <core/painter.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 #include <core/panic.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 #include <core/sys.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 #include <core/image.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 #include <core/sprite.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 #include <core/texture.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 #include <core/util.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 #include <core/window.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
36
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 145
diff changeset
37 #include <ui/label.h>
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 145
diff changeset
38 #include <ui/theme.h>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
39 #include <ui/ui.h>
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 145
diff changeset
40
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 #include <assets/sprites/explosion.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 #define W 1280
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 #define H 720
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
45
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 static struct label help = {
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 .x = 10,
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 .y = 10,
153
aa6e70e330a1 ui: make label less smart
David Demelier <markand@malikania.fr>
parents: 150
diff changeset
49 .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
50 .flags = LABEL_FLAGS_SHADOW
129
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
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 static struct drawable_stack stack;
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 /*
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 * List of drawables for this example.
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
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 /* 0: Explosion animation. */
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 static struct texture explosion_tex;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 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
63
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
64 struct explosion {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
65 struct animation anim;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
66 struct drawable dw;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
67 };
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
68
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 static void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 init(void)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 {
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
72 if (!core_init() || !ui_init())
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
73 panic();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
74 if (!window_open("Example - Drawable", W, H))
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 panic();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
76
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 /* 0: Explosion animation. */
134
197374e9f0b2 cmake: prefix assets with their directory
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
78 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
79 panic();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
80
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 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
82 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
83
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
84 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
85 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
86 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
87 free(dw->data);
129
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
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 static void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 spawn(int x, int y)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 {
182
f6497ec74b49 core: add alloc module, closes #2512
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
93 struct explosion *expl = alloc(1, sizeof (struct explosion));
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
94
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
95 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
96 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
97
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
98 /*
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
99 * 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
100 * 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
101 *
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
102 * 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
103 * 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
104 */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
105 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
106
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
107 drawable_stack_add(&stack, &expl->dw);
129
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
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 static void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 run(void)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 {
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 struct clock clock = {0};
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
114
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 clock_start(&clock);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
116
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 for (;;) {
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 union event ev;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 unsigned int elapsed = clock_elapsed(&clock);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
120
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 clock_start(&clock);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
122
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 while (event_poll(&ev)) {
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 switch (ev.type) {
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 case EVENT_KEYDOWN:
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 switch (ev.key.key) {
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 case KEY_ESCAPE:
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 drawable_stack_finish(&stack);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 break;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 default:
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 break;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 }
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 break;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 case EVENT_CLICKDOWN:
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 spawn(ev.click.x, ev.click.y);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 break;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 case EVENT_QUIT:
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 return;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 default:
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 break;
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
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 drawable_stack_update(&stack, elapsed);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 painter_set_color(0xebede9ff);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 painter_clear();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 label_draw(&help);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 drawable_stack_draw(&stack);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 painter_present();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
150
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 if ((elapsed = clock_elapsed(&clock)) < 20)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 delay(20 - elapsed);
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
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 static void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 quit(void)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 {
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
159 window_finish();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
160 ui_finish();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
161 core_finish();
129
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
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 int
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 main(int argc, char **argv)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 {
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 (void)argc;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 (void)argv;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
169
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 init();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 run();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 quit();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 }