annotate libmlk-core/mlk/core/animation.h @ 515:2e05c1804b25

core: doxygenize sprite
author David Demelier <markand@malikania.fr>
date Sat, 04 Mar 2023 11:02:48 +0100
parents a1b118127f47
children 6e8f6640e05b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * animation.h -- basic animations
fbb7101b7bd8 core: implement animations, closes #2439
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>
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
fbb7101b7bd8 core: implement animations, closes #2439
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_ANIMATION_H
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
20 #define MLK_CORE_ANIMATION_H
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
511
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
22 /**
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
23 * \file mlk/core/animation.h
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
24 * \brief Basic animations
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
25 *
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
26 * Drawable animations.
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
27 *
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
28 * Animations are small objects using a ::mlk_sprite to update themselves and
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
29 * draw next frames depending on delay set.
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
30 */
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
31
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 253
diff changeset
32 #include "core.h"
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 253
diff changeset
33
468
91ce23a36143 core: sprite -> mlk_sprite
David Demelier <markand@malikania.fr>
parents: 462
diff changeset
34 struct mlk_sprite;
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
35
511
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
36 /**
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
37 * \struct mlk_animation
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
38 * \brief Animation structure
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
39 */
448
0c4cd552879d core: animation -> mlk_animation
David Demelier <markand@malikania.fr>
parents: 445
diff changeset
40 struct mlk_animation {
511
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
41 /**
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
42 * (read-write, borrowed)
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
43 *
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
44 * The sprite to draw.
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
45 */
468
91ce23a36143 core: sprite -> mlk_sprite
David Demelier <markand@malikania.fr>
parents: 462
diff changeset
46 const struct mlk_sprite *sprite;
511
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
47
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
48 /**
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
49 * (read-write)
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
50 *
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
51 * Delay in milliseconds between each frame.
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
52 */
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
53 unsigned int delay;
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
54
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
55 /** \cond MLK_PRIVATE_DECLS */
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
56 unsigned int elapsed;
253
c4da052c0def core: goodbye doxygen
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
57 unsigned int row;
c4da052c0def core: goodbye doxygen
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
58 unsigned int column;
511
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
59 /** \endcond MLK_PRIVATE_DECLS */
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 };
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
61
462
5729efd23286 core: core -> mlk_core
David Demelier <markand@malikania.fr>
parents: 449
diff changeset
62 MLK_CORE_BEGIN_DECLS
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 253
diff changeset
63
511
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
64 /**
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
65 * Start or reset the animation to the beginning.
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
66 *
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
67 * \pre animation != NULL
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
68 * \param animation the animation
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
69 */
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 void
511
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
71 mlk_animation_start(struct mlk_animation *animation);
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
72
511
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
73 /**
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
74 * Tells if the animation is complete.
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
75 *
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
76 * \pre animation != NULL
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
77 * \param animation the animation
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
78 * \return non-zero if completed
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
79 */
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 292
diff changeset
80 int
511
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
81 mlk_animation_completed(const struct mlk_animation *animation);
183
604fad63bd9c core: fix animation delay
David Demelier <markand@malikania.fr>
parents: 169
diff changeset
82
511
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
83 /**
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
84 * Update the animation.
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
85 *
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
86 * This function MUST not be called if the animation is complete.
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
87 *
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
88 * \pre animation != NULL and animation is not complete
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
89 * \param animation the animation
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
90 * \param ticks frame ticks
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
91 * \return non-zero if completed
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
92 */
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 292
diff changeset
93 int
511
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
94 mlk_animation_update(struct mlk_animation *animation, unsigned int ticks);
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
95
511
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
96 /**
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
97 * Draw the animation at the given position
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
98 *
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
99 * This function MUST not be called if the animation is complete.
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
100 *
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
101 * \pre animation != NULL and animation is not complete
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
102 * \param animation the animation
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
103 * \param x the x coordinate
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
104 * \param y the y coordinate
515
2e05c1804b25 core: doxygenize sprite
David Demelier <markand@malikania.fr>
parents: 511
diff changeset
105 * \return 0 on success or any error propagated from ::mlk_sprite_draw.
511
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
106 */
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 292
diff changeset
107 int
511
a1b118127f47 core: doxygenize animation
David Demelier <markand@malikania.fr>
parents: 483
diff changeset
108 mlk_animation_draw(const struct mlk_animation *animation, int x, int y);
7
fbb7101b7bd8 core: implement animations, closes #2439
David Demelier <markand@malikania.fr>
parents:
diff changeset
109
462
5729efd23286 core: core -> mlk_core
David Demelier <markand@malikania.fr>
parents: 449
diff changeset
110 MLK_CORE_END_DECLS
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 253
diff changeset
111
366
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
112 #endif /* !MLK_CORE_ANIMATION_H */