annotate libcore/core/texture.h @ 169:eb0a7ab71023

misc: extreme cleanup, closes #2506 While here, remove unneeded stuff.
author David Demelier <markand@malikania.fr>
date Tue, 20 Oct 2020 17:39:13 +0200
parents b9b826cd9832
children 5d1b7d123401
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
169
eb0a7ab71023 misc: extreme cleanup, closes #2506
David Demelier <markand@malikania.fr>
parents: 167
diff changeset
32 #include "plat.h"
eb0a7ab71023 misc: extreme cleanup, closes #2506
David Demelier <markand@malikania.fr>
parents: 167
diff changeset
33
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 /**
21
63eaec5ceba9 misc: minor cleanups
David Demelier <markand@malikania.fr>
parents: 17
diff changeset
35 * \brief Texture object.
63eaec5ceba9 misc: minor cleanups
David Demelier <markand@malikania.fr>
parents: 17
diff changeset
36 */
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
37 struct texture {
147
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
38 unsigned int w; /*!< (-) Texture width. */
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
39 unsigned int h; /*!< (-) Texture height. */
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
40 void *handle; /*!< (*) Native handle. */
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
41 };
21
63eaec5ceba9 misc: minor cleanups
David Demelier <markand@malikania.fr>
parents: 17
diff changeset
42
63eaec5ceba9 misc: minor cleanups
David Demelier <markand@malikania.fr>
parents: 17
diff changeset
43 /**
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
44 * Create a new texture.
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
45 *
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
46 * \pre tex != NULL
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
47 * \param tex the texture to initialize
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
48 * \param w the width
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
49 * \param h the height
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
50 * \return False on error.
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
51 */
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
52 bool
169
eb0a7ab71023 misc: extreme cleanup, closes #2506
David Demelier <markand@malikania.fr>
parents: 167
diff changeset
53 texture_new(struct texture *tex, unsigned int w, unsigned int h) PLAT_NODISCARD;
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
54
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
55 /**
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
56 * Check if the texture is valid.
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
57 *
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
58 * 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
59 * dimensions.
26
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
60 *
167
b9b826cd9832 core: texture_(scale|draw) now return a bool
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
61 * \param tex the texture to check (may be NULL)
b9b826cd9832 core: texture_(scale|draw) now return a bool
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
62 * \return True if the texture is properly initialized.
26
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
63 */
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
64 bool
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
65 texture_ok(const struct texture *tex);
26
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
66
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
67 /**
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 * Simple texture drawing.
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 *
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 * \pre tex != NULL
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 * \param tex the texture
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 * \param x the X coordinate
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 * \param y the Y coordinate
167
b9b826cd9832 core: texture_(scale|draw) now return a bool
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
74 * \return False in case of rendering error.
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 */
167
b9b826cd9832 core: texture_(scale|draw) now return a bool
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
76 bool
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 texture_draw(struct texture *tex, int x, int y);
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
78
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 * Advanced texture drawing.
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 *
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 * \pre tex != NULL
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 * \param tex the texture
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 * \param src_x the source rectangle X coordinate
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 * \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
86 * \param src_w the source rectangle width
5519ad48822e doc: add Doxygen documentation, closes #2450
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
87 * \param src_h the source rectangle height
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 * \param dst_x the destination rectangle X coordinate
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 * \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
90 * \param dst_w the destination rectangle width
5519ad48822e doc: add Doxygen documentation, closes #2450
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
91 * \param dst_h the destination rectangle height
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 * \param angle the angle
167
b9b826cd9832 core: texture_(scale|draw) now return a bool
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
93 * \return False in case of rendering error.
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 */
167
b9b826cd9832 core: texture_(scale|draw) now return a bool
David Demelier <markand@malikania.fr>
parents: 147
diff changeset
95 bool
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
96 texture_scale(struct texture *tex,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
97 int src_x,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
98 int src_y,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
99 unsigned src_w,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
100 unsigned src_h,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
101 int dst_x,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
102 int dst_y,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
103 unsigned dst_w,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
104 unsigned dst_h,
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
105 double angle);
3
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 /**
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 * Close the texture, do not use afterwards.
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 * \pre tex != NULL
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 * \param tex the texture
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 */
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 void
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
114 texture_finish(struct texture *tex);
17
fc71221b7bee core: minimal cleanups
David Demelier <markand@malikania.fr>
parents: 3
diff changeset
115
fc71221b7bee core: minimal cleanups
David Demelier <markand@malikania.fr>
parents: 3
diff changeset
116 #endif /* !MOLKO_TEXTURE_H */