annotate src/texture.h @ 46:b815621df3e3

core: remove all fixed width integers, closes #2460
author David Demelier <markand@malikania.fr>
date Wed, 15 Jan 2020 22:31:17 +0100
parents 783841af4033
children f053a9f38c0e
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.
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 *
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 * See also \a image.h for usage of textures.
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 */
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
26
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
29 #include <stdbool.h>
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
30
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 /**
21
63eaec5ceba9 misc: minor cleanups
David Demelier <markand@malikania.fr>
parents: 17
diff changeset
32 * \brief Texture object.
63eaec5ceba9 misc: minor cleanups
David Demelier <markand@malikania.fr>
parents: 17
diff changeset
33 *
63eaec5ceba9 misc: minor cleanups
David Demelier <markand@malikania.fr>
parents: 17
diff changeset
34 * This object is not publicly defined because it contains
63eaec5ceba9 misc: minor cleanups
David Demelier <markand@malikania.fr>
parents: 17
diff changeset
35 * implementation-defined data.
63eaec5ceba9 misc: minor cleanups
David Demelier <markand@malikania.fr>
parents: 17
diff changeset
36 */
63eaec5ceba9 misc: minor cleanups
David Demelier <markand@malikania.fr>
parents: 17
diff changeset
37 struct texture;
63eaec5ceba9 misc: minor cleanups
David Demelier <markand@malikania.fr>
parents: 17
diff changeset
38
63eaec5ceba9 misc: minor cleanups
David Demelier <markand@malikania.fr>
parents: 17
diff changeset
39 /**
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
40 * Create a new texture.
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
41 *
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
42 * \param w the width
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
43 * \param h the height
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
44 * \return the texture or NULL on error
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
45 */
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
46 struct texture *
46
b815621df3e3 core: remove all fixed width integers, closes #2460
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
47 texture_new(unsigned int w, unsigned int h);
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
48
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 26
diff changeset
49 /**
26
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
50 * Get texture size.
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
51 *
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
52 * \pre tex != NULL
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
53 * \param tex the texture
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
54 * \param w the width
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
55 * \param h the height
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
56 */
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
57 bool
46
b815621df3e3 core: remove all fixed width integers, closes #2460
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
58 texture_get_size(struct texture *tex, unsigned int *w, unsigned int *h);
26
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
59
65398df5fb5c core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents: 22
diff changeset
60 /**
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 * Simple texture drawing.
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 *
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 * \pre tex != NULL
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 * \param tex the texture
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 * \param x the X coordinate
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 * \param y the Y coordinate
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 */
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 void
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 texture_draw(struct texture *tex, int x, int y);
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
70
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 /**
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 * Advanced texture drawing.
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 * \pre tex != NULL
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 * \param tex the texture
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 * \param src_x the source rectangle X coordinate
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 * \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
78 * \param src_w the source rectangle width
5519ad48822e doc: add Doxygen documentation, closes #2450
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
79 * \param src_h the source rectangle height
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 * \param dst_x the destination rectangle X coordinate
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 * \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
82 * \param dst_w the destination rectangle width
5519ad48822e doc: add Doxygen documentation, closes #2450
David Demelier <markand@malikania.fr>
parents: 21
diff changeset
83 * \param dst_h the destination rectangle height
3
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 * \param angle the angle
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 */
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 void
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 texture_draw_ex(struct texture *tex,
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 int src_x,
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 int src_y,
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 unsigned src_w,
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 unsigned src_h,
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 int dst_x,
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 int dst_y,
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 unsigned dst_w,
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 unsigned dst_h,
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 double angle);
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
97
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 /**
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 * Close the texture, do not use afterwards.
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 *
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 * \pre tex != NULL
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 * \param tex the texture
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 void
c013f41a72a5 core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 texture_close(struct texture *tex);
17
fc71221b7bee core: minimal cleanups
David Demelier <markand@malikania.fr>
parents: 3
diff changeset
106
fc71221b7bee core: minimal cleanups
David Demelier <markand@malikania.fr>
parents: 3
diff changeset
107 #endif /* !MOLKO_TEXTURE_H */