annotate src/texture.h @ 28:783841af4033

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