annotate src/painter.c @ 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 3996f873a54b
children
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.c -- 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 #include "color.h"
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include "painter.h"
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include "texture_p.h"
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include "window_p.h"
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
24 static struct texture *renderer;
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
25
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
26 struct texture *
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
27 painter_get_target(void)
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
28 {
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
29 return renderer;
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
30 }
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
31
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 void
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
33 painter_set_target(struct texture *tex)
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 {
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
35 renderer = tex;
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 SDL_SetRenderTarget(win.renderer, tex ? tex->handle : NULL);
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 }
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
38
46
b815621df3e3 core: remove all fixed width integers, closes #2460
David Demelier <markand@malikania.fr>
parents: 41
diff changeset
39 unsigned long
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 painter_get_color(void)
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 Uint8 r = 0, g = 0, b = 0, a = 0;
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
43
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 SDL_GetRenderDrawColor(win.renderer, &r, &g, &b, &a);
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
45
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 return COLOR_HEX(r, g, b, a);
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 }
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 void
46
b815621df3e3 core: remove all fixed width integers, closes #2460
David Demelier <markand@malikania.fr>
parents: 41
diff changeset
50 painter_set_color(unsigned long color)
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 {
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 SDL_SetRenderDrawColor(
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 win.renderer,
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 COLOR_R(color),
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 COLOR_G(color),
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 COLOR_B(color),
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 COLOR_A(color)
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 }
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 void
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 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
63 {
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 SDL_RenderDrawLine(win.renderer, x1, y1, x2, y2);
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
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 void
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 painter_draw_point(int x1, int y1)
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 SDL_RenderDrawPoint(win.renderer, x1, y1);
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
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 void
46
b815621df3e3 core: remove all fixed width integers, closes #2460
David Demelier <markand@malikania.fr>
parents: 41
diff changeset
74 painter_draw_rectangle(bool fill, int x, int y, unsigned int width, unsigned int height)
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 {
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 const SDL_Rect rect = {
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 .w = width,
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 .h = height,
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 .x = x,
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 .y = y
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 };
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
82
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 if (fill)
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 SDL_RenderFillRect(win.renderer, &rect);
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 else
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 SDL_RenderDrawRect(win.renderer, &rect);
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 }
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
88
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 void
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 painter_clear(void)
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 {
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 SDL_RenderClear(win.renderer);
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 }
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
94
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 void
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 painter_present(void)
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 {
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 SDL_RenderPresent(win.renderer);
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 }