Mercurial > molko
annotate libmlk-core/mlk/core/drawable.h @ 623:20b818193ce0
ui: remove useless stuff
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 23 Aug 2023 20:01:00 +0200 |
parents | 8b603a7e048a |
children |
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 * |
445
773a082f0b91
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> |
129
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 |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
19 #ifndef MLK_CORE_DRAWABLE_H |
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
20 #define MLK_CORE_DRAWABLE_H |
129
9301c7c84471
core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
519
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
22 /** |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
23 * \file mlk/core/drawable.h |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
24 * \brief Automatic drawable objects |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
25 */ |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
26 |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
27 /** |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
28 * \struct mlk_drawable |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
29 * \brief Drawable structure |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
30 */ |
449
f2f0e73ea9da
core: drawable -> mlk_drawable
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
31 struct mlk_drawable { |
519
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
32 /** |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
33 * (read-write, borrowed, optional) |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
34 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
35 * Arbitrary user data. |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
36 */ |
253
c4da052c0def
core: goodbye doxygen
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
37 void *data; |
519
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
38 |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
39 /** |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
40 * (read-write) |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
41 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
42 * Position in x. |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
43 */ |
253
c4da052c0def
core: goodbye doxygen
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
44 int x; |
519
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
45 |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
46 /** |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
47 * (read-write) |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
48 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
49 * Position in y. |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
50 */ |
253
c4da052c0def
core: goodbye doxygen
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
51 int y; |
519
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
52 |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
53 /** |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
54 * (optional) |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
55 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
56 * Update the drawable with the given ticks since last frame. |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
57 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
58 * The callback should return non-zero if it is considered complete. |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
59 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
60 * \param self this drawable |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
61 * \param ticks frame ticks |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
62 * \return non-zero if complete |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
63 */ |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
64 int (*update)(struct mlk_drawable *self, unsigned int ticks); |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
65 |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
66 /** |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
67 * (optional) |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
68 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
69 * Draw the drawable. |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
70 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
71 * \param self this drawable |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
72 */ |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
73 void (*draw)(struct mlk_drawable *self); |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
74 |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
75 /** |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
76 * (optional) |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
77 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
78 * Terminate the drawable. |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
79 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
80 * In contrast to finish, this function should be called after the |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
81 * drawable was considered complete. |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
82 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
83 * \param self this drawable |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
84 */ |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
85 void (*end)(struct mlk_drawable *self); |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
86 |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
87 /** |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
88 * (optional) |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
89 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
90 * Dispose resources allocated by/for the drawable. |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
91 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
92 * \param self this drawable |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
93 */ |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
94 void (*finish)(struct mlk_drawable *self); |
129
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 |
517
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
97 #if defined(__cplusplus) |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
98 extern "C" { |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
99 #endif |
292
08ab73b32832
misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents:
253
diff
changeset
|
100 |
519
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
101 /** |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
102 * Invoke ::mlk_drawable::update function if not null. |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
103 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
104 * \pre drawable != NULL |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
105 * \param drawable the drawable |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
106 * \param ticks frame ticks |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
107 */ |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
292
diff
changeset
|
108 int |
519
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
109 mlk_drawable_update(struct mlk_drawable *drawable, unsigned int ticks); |
129
9301c7c84471
core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 |
519
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
111 /** |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
112 * Invoke ::mlk_drawable::draw function if not null. |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
113 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
114 * \pre drawable != NULL |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
115 * \param drawable the drawable |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
116 */ |
142
fea0cc899931
core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
117 void |
519
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
118 mlk_drawable_draw(struct mlk_drawable *drawable); |
142
fea0cc899931
core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
119 |
519
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
120 /** |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
121 * Invoke ::mlk_drawable::end function if not null. |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
122 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
123 * \pre drawable != NULL |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
124 * \param drawable the drawable |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
125 */ |
129
9301c7c84471
core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 void |
519
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
127 mlk_drawable_end(struct mlk_drawable *drawable); |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
128 |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
129 /** |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
130 * Invoke ::mlk_drawable::finish function if not null. |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
131 * |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
132 * \pre drawable != NULL |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
133 * \param drawable the drawable |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
134 */ |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
135 void |
8b603a7e048a
core: doxygenize drawable
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
136 mlk_drawable_finish(struct mlk_drawable *drawable); |
129
9301c7c84471
core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
137 |
517
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
138 #if defined(__cplusplus) |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
139 } |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
140 #endif |
292
08ab73b32832
misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents:
253
diff
changeset
|
141 |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
142 #endif /* !MLK_CORE_DRAWABLE_H */ |