annotate libcore/core/texture.h @ 147:b386d25832c8

doc: use new nomenclature, closes #2497
author David Demelier <markand@malikania.fr>
date Thu, 15 Oct 2020 09:21:04 +0200
parents 789b23e01f52
children b9b826cd9832
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * texture.h -- basic texture management
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
17
fc71221b7bee core: minimal cleanups
David Demelier <markand@malikania.fr>
parents: 3
diff changeset
19 #ifndef MOLKO_TEXTURE_H
fc71221b7bee core: minimal cleanups
David Demelier <markand@malikania.fr>
parents: 3
diff changeset
20 #define MOLKO_TEXTURE_H
fc71221b7bee core: minimal cleanups
David Demelier <markand@malikania.fr>
parents: 3
diff changeset
21
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 /**
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 * \file texture.h
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 * \brief Basic texture management.
72
6203e1ac9b18 doc: improve doxygen documentation a lot
David Demelier <markand@malikania.fr>
parents: 59
diff changeset
25 * \ingroup drawing
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 *
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 * See also \a image.h for usage of textures.
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 */
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
26
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
30 #include <stdbool.h>
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
31
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 /**
21
63eaec5ceba9 misc: minor cleanups
David Demelier <markand@malikania.fr>
parents: 17
diff changeset
33 * \brief Texture object.
63eaec5ceba9 misc: minor cleanups
David Demelier <markand@malikania.fr>
parents: 17
diff changeset
34 */
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
35 struct texture {
147
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
36 unsigned int w; /*!< (-) Texture width. */
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
37 unsigned int h; /*!< (-) Texture height. */
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
38 void *handle; /*!< (*) Native handle. */
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
39 };
21
63eaec5ceba9 misc: minor cleanups
David Demelier <markand@malikania.fr>
parents: 17
diff changeset
40
63eaec5ceba9 misc: minor cleanups
David Demelier <markand@malikania.fr>
parents: 17
diff changeset
41 /**
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
42 * Create a new texture.
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
43 *
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
44 * \pre tex != NULL
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
45 * \param tex the texture to initialize
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
46 * \param w the width
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
47 * \param h the height
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
48 * \return False on error.
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
49 */
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
50 bool
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
51 texture_new(struct texture *tex, unsigned int w, unsigned int h);
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
52
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
53 /**
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
54 * Check if the texture is valid.
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
55 *
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
56 * This function simply checks if the texture is initialized and has non-null
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
57 * dimensions.
26
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
58 *
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
59 * \pre tex != NULL
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
60 * \param tex the texture to check
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
61 * \return True if the texture is initialized
26
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
62 */
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
63 bool
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
64 texture_ok(const struct texture *tex);
26
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
65
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
66 /**
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 * Simple texture drawing.
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 *
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 * \pre tex != NULL
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 * \param tex the texture
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 * \param x the X coordinate
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 * \param y the Y coordinate
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 */
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 void
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 texture_draw(struct texture *tex, int x, int y);
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
76
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 /**
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 * Advanced texture drawing.
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 *
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 * \pre tex != NULL
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 * \param tex the texture
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 * \param src_x the source rectangle X coordinate
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 * \param src_y the source rectangle Y coordinate
22
5519ad48822e doc: add Doxygen documentation, closes #2450
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
84 * \param src_w the source rectangle width
5519ad48822e doc: add Doxygen documentation, closes #2450
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
85 * \param src_h the source rectangle height
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 * \param dst_x the destination rectangle X coordinate
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 * \param dst_y the destination rectangle Y coordinate
22
5519ad48822e doc: add Doxygen documentation, closes #2450
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
88 * \param dst_w the destination rectangle width
5519ad48822e doc: add Doxygen documentation, closes #2450
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
89 * \param dst_h the destination rectangle height
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 * \param angle the angle
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 */
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 void
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
93 texture_scale(struct texture *tex,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
94 int src_x,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
95 int src_y,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
96 unsigned src_w,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
97 unsigned src_h,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
98 int dst_x,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
99 int dst_y,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
100 unsigned dst_w,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
101 unsigned dst_h,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
102 double angle);
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
103
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 /**
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 * Close the texture, do not use afterwards.
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 *
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 * \pre tex != NULL
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 * \param tex the texture
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 */
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 void
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
111 texture_finish(struct texture *tex);
17
fc71221b7bee core: minimal cleanups
David Demelier <markand@malikania.fr>
parents: 3
diff changeset
112
fc71221b7bee core: minimal cleanups
David Demelier <markand@malikania.fr>
parents: 3
diff changeset
113 #endif /* !MOLKO_TEXTURE_H */