annotate src/painter.h @ 36:798baf7f3ec0

core: implement sys_data* functions for Windows
author David Demelier <markand@malikania.fr>
date Mon, 13 Jan 2020 20:48:41 +0100
parents 783841af4033
children 3996f873a54b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * painter.h -- basic drawing routines
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #ifndef MOLKO_PAINTER_H
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #define MOLKO_PAINTER_H
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 /**
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 * \file painter.h
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 * \brief Basic drawing routines.
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 */
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
26
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 #include <stdbool.h>
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 #include <stdint.h>
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 struct texture;
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
31
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 /**
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 * Set the rendering context to the given texture.
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 *
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 * If texture is NULL, use default context aka the window.
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 *
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 * \param tex the texture
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 */
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 void
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 painter_use(struct texture *tex);
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
41
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 /**
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 * Get the current drawing color.
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 *
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 * \return the color in RRGGBBAA format
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 */
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 uint32_t
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 painter_get_color(void);
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
49
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 /**
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 * Set the rendering drawing color.
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 *
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 * \param color in RRGGBBAA format
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 */
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 void
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 painter_set_color(uint32_t color);
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
57
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 /**
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 * Draw a line.
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 *
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 * \param x1 first X coordinate
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 * \param y1 first Y coordinate
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 * \param x2 second X coordinate
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 * \param y2 second Y coordinate
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 */
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 void
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 painter_draw_line(int x1, int y1, int x2, int y2);
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
68
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 /**
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 * Draw a pixel point.
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 *
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 * \param x the X coordinate
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 * \param y the Y coordinate
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 */
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 void
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 painter_draw_point(int x, int y);
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
77
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 /**
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 * Draw a rectangle
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 *
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 * \param fill set to true to fill the rectangle
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 * \param x the X coordinate
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 * \param y the Y coordinate
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 * \param w the rectangle width
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 * \param h the rectangle height
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 */
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 void
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 painter_draw_rectangle(bool fill, int x, int y, unsigned w, unsigned h);
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
89
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 /**
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 * Clear the window.
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 */
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 void
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 painter_clear(void);
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
95
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 /**
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 * Present the window, only call this function one time in the main loop.
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 */
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 void
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 painter_present(void);
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
101
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 #endif /* !MOLKO_PAINTER_H */