Mercurial > molko
annotate libmlk-core/mlk/core/texture.c @ 646:7e1eb7f6c049 default tip @
misc: remove .clang
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 04 Feb 2024 15:24:37 +0100 |
parents | e16808365d42 |
children |
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.c -- basic texture management |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
445
773a082f0b91
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
437
diff
changeset
|
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> |
3
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 |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <assert.h> |
362
12367bfc2df6
misc: even more warnings cleaned
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
20 #include <string.h> |
3
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
184
c92957c3b82b
core: add texture_set_(alpha|color)_mod functions
David Demelier <markand@malikania.fr>
parents:
179
diff
changeset
|
22 #include "color.h" |
585 | 23 #include "err.h" |
3
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 #include "texture.h" |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 #include "texture_p.h" |
39
9d1421c09dfb
core: add more utilities to improve code simplicity
David Demelier <markand@malikania.fr>
parents:
28
diff
changeset
|
26 #include "util.h" |
97
58133933ea17
window: expose some data to avoid functions
David Demelier <markand@malikania.fr>
parents:
94
diff
changeset
|
27 #include "window.h" |
3
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 #include "window_p.h" |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 |
421
3edda1ce314c
core: remove mlk_ prefix for now
David Demelier <markand@malikania.fr>
parents:
419
diff
changeset
|
30 int |
638
e16808365d42
core: s/mlk_texture_new/mlk_texture_init/g
David Demelier <markand@malikania.fr>
parents:
613
diff
changeset
|
31 mlk_texture_init(struct mlk_texture *tex, unsigned int w, unsigned int h) |
26
65398df5fb5c
core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents:
3
diff
changeset
|
32 { |
65398df5fb5c
core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents:
3
diff
changeset
|
33 assert(tex); |
419
1b4e61bdb9ab
core: introduce err.h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
34 assert(w); |
1b4e61bdb9ab
core: introduce err.h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
35 assert(h); |
26
65398df5fb5c
core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents:
3
diff
changeset
|
36 |
485
3ff1fe64d0cd
core: window -> mlk_window
David Demelier <markand@malikania.fr>
parents:
472
diff
changeset
|
37 tex->handle = SDL_CreateTexture(MLK__RENDERER(), |
94
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
38 SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, w, h); |
47
f053a9f38c0e
core: implement basic scrolling, closes #2459
David Demelier <markand@malikania.fr>
parents:
46
diff
changeset
|
39 |
94
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
40 if (!tex->handle) { |
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
41 tex->w = tex->h = 0; |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
538
diff
changeset
|
42 return mlk_errf("%s", SDL_GetError()); |
94
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
43 } |
47
f053a9f38c0e
core: implement basic scrolling, closes #2459
David Demelier <markand@malikania.fr>
parents:
46
diff
changeset
|
44 |
94
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
45 tex->w = w; |
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
46 tex->h = h; |
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
47 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
48 return 0; |
47
f053a9f38c0e
core: implement basic scrolling, closes #2459
David Demelier <markand@malikania.fr>
parents:
46
diff
changeset
|
49 } |
26
65398df5fb5c
core: add texture_get_size function
David Demelier <markand@malikania.fr>
parents:
3
diff
changeset
|
50 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
51 int |
472
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
461
diff
changeset
|
52 mlk_texture_set_blend_mode(struct mlk_texture *tex, enum mlk_texture_blend blend) |
186
f37b8e95aaaa
core: add blend routines in texture
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
53 { |
f37b8e95aaaa
core: add blend routines in texture
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
54 assert(tex); |
472
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
461
diff
changeset
|
55 assert(blend >= MLK_TEXTURE_BLEND_NONE && blend < MLK_TEXTURE_BLEND_LAST); |
186
f37b8e95aaaa
core: add blend routines in texture
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
56 |
f37b8e95aaaa
core: add blend routines in texture
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
57 static const SDL_BlendMode table[] = { |
472
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
461
diff
changeset
|
58 [MLK_TEXTURE_BLEND_NONE] = SDL_BLENDMODE_NONE, |
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
461
diff
changeset
|
59 [MLK_TEXTURE_BLEND_BLEND] = SDL_BLENDMODE_BLEND, |
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
461
diff
changeset
|
60 [MLK_TEXTURE_BLEND_ADD] = SDL_BLENDMODE_ADD, |
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
461
diff
changeset
|
61 [MLK_TEXTURE_BLEND_MODULATE] = SDL_BLENDMODE_MOD |
186
f37b8e95aaaa
core: add blend routines in texture
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
62 }; |
f37b8e95aaaa
core: add blend routines in texture
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
63 |
f37b8e95aaaa
core: add blend routines in texture
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
64 if (SDL_SetTextureBlendMode(tex->handle, table[blend]) < 0) |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
538
diff
changeset
|
65 return mlk_errf("%s", SDL_GetError()); |
186
f37b8e95aaaa
core: add blend routines in texture
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
66 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
67 return 0; |
186
f37b8e95aaaa
core: add blend routines in texture
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
68 } |
f37b8e95aaaa
core: add blend routines in texture
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
69 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
70 int |
472
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
461
diff
changeset
|
71 mlk_texture_set_alpha_mod(struct mlk_texture *tex, unsigned int alpha) |
184
c92957c3b82b
core: add texture_set_(alpha|color)_mod functions
David Demelier <markand@malikania.fr>
parents:
179
diff
changeset
|
72 { |
638
e16808365d42
core: s/mlk_texture_new/mlk_texture_init/g
David Demelier <markand@malikania.fr>
parents:
613
diff
changeset
|
73 assert(tex); |
184
c92957c3b82b
core: add texture_set_(alpha|color)_mod functions
David Demelier <markand@malikania.fr>
parents:
179
diff
changeset
|
74 assert(alpha <= 255); |
c92957c3b82b
core: add texture_set_(alpha|color)_mod functions
David Demelier <markand@malikania.fr>
parents:
179
diff
changeset
|
75 |
c92957c3b82b
core: add texture_set_(alpha|color)_mod functions
David Demelier <markand@malikania.fr>
parents:
179
diff
changeset
|
76 if (SDL_SetTextureAlphaMod(tex->handle, alpha) < 0) |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
538
diff
changeset
|
77 return mlk_errf("%s", SDL_GetError()); |
184
c92957c3b82b
core: add texture_set_(alpha|color)_mod functions
David Demelier <markand@malikania.fr>
parents:
179
diff
changeset
|
78 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
79 return 0; |
184
c92957c3b82b
core: add texture_set_(alpha|color)_mod functions
David Demelier <markand@malikania.fr>
parents:
179
diff
changeset
|
80 } |
c92957c3b82b
core: add texture_set_(alpha|color)_mod functions
David Demelier <markand@malikania.fr>
parents:
179
diff
changeset
|
81 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
82 int |
472
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
461
diff
changeset
|
83 mlk_texture_set_color_mod(struct mlk_texture *tex, unsigned long color) |
184
c92957c3b82b
core: add texture_set_(alpha|color)_mod functions
David Demelier <markand@malikania.fr>
parents:
179
diff
changeset
|
84 { |
638
e16808365d42
core: s/mlk_texture_new/mlk_texture_init/g
David Demelier <markand@malikania.fr>
parents:
613
diff
changeset
|
85 assert(tex); |
184
c92957c3b82b
core: add texture_set_(alpha|color)_mod functions
David Demelier <markand@malikania.fr>
parents:
179
diff
changeset
|
86 |
461
d7874f11565f
core: color -> mlk_color
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
87 if (SDL_SetTextureColorMod(tex->handle, MLK_COLOR_R(color), MLK_COLOR_G(color), MLK_COLOR_B(color)) < 0) |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
538
diff
changeset
|
88 return mlk_errf("%s", SDL_GetError()); |
184
c92957c3b82b
core: add texture_set_(alpha|color)_mod functions
David Demelier <markand@malikania.fr>
parents:
179
diff
changeset
|
89 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
90 return 0; |
184
c92957c3b82b
core: add texture_set_(alpha|color)_mod functions
David Demelier <markand@malikania.fr>
parents:
179
diff
changeset
|
91 } |
c92957c3b82b
core: add texture_set_(alpha|color)_mod functions
David Demelier <markand@malikania.fr>
parents:
179
diff
changeset
|
92 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
93 int |
472
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
461
diff
changeset
|
94 mlk_texture_draw(const struct mlk_texture *tex, int x, int y) |
3
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 { |
94
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
96 assert(tex); |
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
97 |
613 | 98 SDL_FRect dst = { |
3
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 .x = x, |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 .y = y, |
94
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
101 .w = tex->w, |
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
102 .h = tex->h |
3
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 |
613 | 105 if (SDL_RenderTexture(MLK__RENDERER(), tex->handle, NULL, &dst) < 0) |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
538
diff
changeset
|
106 return mlk_errf("%s", SDL_GetError()); |
167
b9b826cd9832
core: texture_(scale|draw) now return a bool
David Demelier <markand@malikania.fr>
parents:
126
diff
changeset
|
107 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
108 return 0; |
3
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 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
111 int |
472
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
461
diff
changeset
|
112 mlk_texture_scale(const struct mlk_texture *tex, |
538
80242343d152
core: doxygenize texture
David Demelier <markand@malikania.fr>
parents:
501
diff
changeset
|
113 int src_x, |
80242343d152
core: doxygenize texture
David Demelier <markand@malikania.fr>
parents:
501
diff
changeset
|
114 int src_y, |
80242343d152
core: doxygenize texture
David Demelier <markand@malikania.fr>
parents:
501
diff
changeset
|
115 unsigned src_w, |
80242343d152
core: doxygenize texture
David Demelier <markand@malikania.fr>
parents:
501
diff
changeset
|
116 unsigned src_h, |
80242343d152
core: doxygenize texture
David Demelier <markand@malikania.fr>
parents:
501
diff
changeset
|
117 int dst_x, |
80242343d152
core: doxygenize texture
David Demelier <markand@malikania.fr>
parents:
501
diff
changeset
|
118 int dst_y, |
80242343d152
core: doxygenize texture
David Demelier <markand@malikania.fr>
parents:
501
diff
changeset
|
119 unsigned dst_w, |
80242343d152
core: doxygenize texture
David Demelier <markand@malikania.fr>
parents:
501
diff
changeset
|
120 unsigned dst_h, |
80242343d152
core: doxygenize texture
David Demelier <markand@malikania.fr>
parents:
501
diff
changeset
|
121 double angle) |
3
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 { |
613 | 123 const SDL_FRect src = { |
3
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 .x = src_x, |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
125 .y = src_y, |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 .w = src_w, |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
127 .h = src_h |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
128 }; |
613 | 129 const SDL_FRect dst = { |
3
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
130 .x = dst_x, |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 .y = dst_y, |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
132 .w = dst_w, |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
133 .h = dst_h |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
134 }; |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
135 |
613 | 136 if (SDL_RenderTextureRotated(MLK__RENDERER(), tex->handle, &src, &dst, angle, NULL, SDL_FLIP_NONE) < 0) |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
538
diff
changeset
|
137 return mlk_errf("%s", SDL_GetError()); |
167
b9b826cd9832
core: texture_(scale|draw) now return a bool
David Demelier <markand@malikania.fr>
parents:
126
diff
changeset
|
138 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
139 return 0; |
3
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
140 } |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
141 |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
142 void |
472
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
461
diff
changeset
|
143 mlk_texture_finish(struct mlk_texture *tex) |
3
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
144 { |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
145 assert(tex); |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
146 |
94
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
147 if (tex->handle) |
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
148 SDL_DestroyTexture(tex->handle); |
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
149 |
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
150 memset(tex, 0, sizeof (*tex)); |
3
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
151 } |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
152 |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
153 /* private */ |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
154 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
155 int |
501
23559c7ccf47
core: make sure everything start with mlk
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
156 mlk__texture_from_surface(struct mlk_texture *tex, SDL_Surface *surface) |
3
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
157 { |
94
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
158 assert(tex); |
39
9d1421c09dfb
core: add more utilities to improve code simplicity
David Demelier <markand@malikania.fr>
parents:
28
diff
changeset
|
159 assert(surface); |
3
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
160 |
485
3ff1fe64d0cd
core: window -> mlk_window
David Demelier <markand@malikania.fr>
parents:
472
diff
changeset
|
161 if (!(tex->handle = SDL_CreateTextureFromSurface(MLK__RENDERER(), surface))) { |
94
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
162 tex->w = tex->h = 0; |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
538
diff
changeset
|
163 return mlk_errf("%s", SDL_GetError()); |
3
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
164 } |
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
165 |
94
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
166 tex->w = surface->w; |
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
167 tex->h = surface->h; |
ed72843a7194
core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
168 |
613 | 169 SDL_DestroySurface(surface); |
126
52148edddcc6
core: fix leak in texture creation
David Demelier <markand@malikania.fr>
parents:
121
diff
changeset
|
170 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
171 return 0; |
3
c013f41a72a5
core: implement basic textures, closes #2442
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
172 } |