annotate libmlk-core/core/drawable.h @ 243:71b3b7036de7

misc: lot of cleanups, - prefix libraries with libmlk, - move assets from source directories closes #2520, - prefix header guards closes #2519
author David Demelier <markand@malikania.fr>
date Sat, 28 Nov 2020 22:37:30 +0100
parents libcore/core/drawable.h@eb0a7ab71023
children c4da052c0def
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 * drawable.h -- automatic drawable objects
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
243
71b3b7036de7 misc: lot of cleanups,
David Demelier <markand@malikania.fr>
parents: 169
diff changeset
19 #ifndef MOLKO_CORE_DRAWABLE_H
71b3b7036de7 misc: lot of cleanups,
David Demelier <markand@malikania.fr>
parents: 169
diff changeset
20 #define MOLKO_CORE_DRAWABLE_H
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
22 /**
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
23 * \file drawable.h
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
24 * \brief Automatic drawable objects.
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
25 */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
26
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 #include <stdbool.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 /**
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 * \brief Maximum number of drawable object into a stack.
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 */
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 #define DRAWABLE_STACK_MAX 128
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
33
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 /**
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 * \brief Abstract drawable object.
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 *
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 * This structure is used to
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 */
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 struct drawable {
147
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
40 void *data; /*!< (+&?) Drawable data. */
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
41 int x; /*!< (+) X coordinate if necessary. */
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
42 int y; /*!< (+) Y coordinate if necessary. */
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
43
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 /**
147
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
45 * (+?) Update this drawable.
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 *
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 * \param dw the drawable object
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 * \param ticks the number of ticks since last frame
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 * \return true if object has ended
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 bool (*update)(struct drawable *dw, unsigned int ticks);
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 /**
147
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
54 * (+?) Draw this drawable.
129
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 * \param dw the drawable object
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 void (*draw)(struct drawable *dw);
142
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
59
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
60 /**
147
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
61 * (+?) Called when drawable finished.
142
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
62 *
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
63 * \param act this action
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
64 */
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
65 void (*end)(struct drawable *act);
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
66
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 /**
147
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
68 * (+?) Destroy the drawable if necessary.
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 *
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 * \note This function is optional and can be NULL.
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 * \param dw the drawable object
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 */
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 void (*finish)(struct drawable *dw);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 };
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 /**
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
77 * Shortcut for dw->update (if not NULL).
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 *
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 * \pre dw != NULL
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 * \param dw the drawable object
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 * \param ticks elapsed milliseconds since last frame
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 * \return true if the drawable ended
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 */
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 bool
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 drawable_update(struct drawable *dw, unsigned int ticks);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
86
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 /**
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
88 * Shortcut for dw->draw (if not NULL).
129
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 * \pre dw != NULL
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 * \param dw the drawable object
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 */
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 drawable_draw(struct drawable *dw);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
95
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 /**
142
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
97 * Shortcut for dw->end (if not NULL).
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
98 *
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
99 * \pre dw != NULL
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
100 * \param dw the drawable object
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
101 */
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
102 void
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
103 drawable_end(struct drawable *dw);
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
104
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
105 /**
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
106 * Shortcut for dw->finish (if not NULL).
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 * \pre dw != NULL
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 * \param dw the drawable object
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 */
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 drawable_finish(struct drawable *dw);
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 /**
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 * \brief Stack of drawable objects.
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 * This stack of drawable object can be used to store drawable objects within
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 * a specific transition (state, battle, menu, etc).
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 *
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
120 * You can add, clear, update and draw them.
129
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 struct drawable_stack {
147
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
123 struct drawable *objects[DRAWABLE_STACK_MAX]; /*!< (+&?) Drawables. */
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 };
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
125
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 /**
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 * Initialize the stack.
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 *
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 * \pre st != NULL
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 * \param st the drawable stack
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 void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 drawable_stack_init(struct drawable_stack *st);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
134
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 /**
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 * Add a drawable object into the stack.
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 *
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
138 * The drawable object must be kept alive until the stack uses it.
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 *
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 * \pre st != NULL
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 * \pre dw != NULL
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 * \param st the stack
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
143 * \param dw the drawable to reference
169
eb0a7ab71023 misc: extreme cleanup, closes #2506
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
144 * \return True if the drawable was added correctly (enough space).
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 */
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 bool
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
147 drawable_stack_add(struct drawable_stack *st, struct drawable *dw);
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
148
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 * Update all drawable objects.
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 *
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 * Also remove drawable objects if they were finished.
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 * \pre st != NULL
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 * \param st the drawable stack
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 * \param ticks the number of ticks since last frame
169
eb0a7ab71023 misc: extreme cleanup, closes #2506
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
157 * \return True if all drawable were rendered.
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 */
142
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
159 bool
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 drawable_stack_update(struct drawable_stack *st, unsigned int ticks);
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 * Draw all drawable objects.
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 *
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 * \pre st != NULL
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 * \param st the drawable stack
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 */
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 drawable_stack_draw(struct drawable_stack *st);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
170
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 /**
142
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
172 * Tells if there is any pending drawable in the stack.
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
173 *
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
174 * \pre st != NULL
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
175 * \param st the stack
169
eb0a7ab71023 misc: extreme cleanup, closes #2506
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
176 * \return False if there is at least one drawable in the stack.
142
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
177 */
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
178 bool
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
179 drawable_stack_completed(const struct drawable_stack *st);
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
180
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
181 /**
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 * Clear all drawable objects into the stack.
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 */
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 drawable_stack_finish(struct drawable_stack *st);
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
186
243
71b3b7036de7 misc: lot of cleanups,
David Demelier <markand@malikania.fr>
parents: 169
diff changeset
187 #endif /* !MOLKO_CORE_DRAWABLE_H */