ruby2d 0.8.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (192) hide show
  1. checksums.yaml +4 -4
  2. data/assets/README.md +20 -7
  3. data/assets/include/SDL2/SDL.h +135 -0
  4. data/assets/include/SDL2/SDL_assert.h +291 -0
  5. data/assets/include/SDL2/SDL_atomic.h +277 -0
  6. data/assets/include/SDL2/SDL_audio.h +826 -0
  7. data/assets/include/SDL2/SDL_bits.h +112 -0
  8. data/assets/include/SDL2/SDL_blendmode.h +120 -0
  9. data/assets/include/SDL2/SDL_clipboard.h +71 -0
  10. data/assets/include/SDL2/SDL_config.h +421 -0
  11. data/assets/include/SDL2/SDL_cpuinfo.h +188 -0
  12. data/assets/include/SDL2/SDL_egl.h +1673 -0
  13. data/assets/include/SDL2/SDL_endian.h +260 -0
  14. data/assets/include/SDL2/SDL_error.h +76 -0
  15. data/assets/include/SDL2/SDL_events.h +788 -0
  16. data/assets/include/SDL2/SDL_filesystem.h +136 -0
  17. data/assets/include/SDL2/SDL_gamecontroller.h +390 -0
  18. data/assets/include/SDL2/SDL_gesture.h +87 -0
  19. data/assets/include/SDL2/SDL_haptic.h +1238 -0
  20. data/assets/include/SDL2/SDL_hints.h +1135 -0
  21. data/assets/include/SDL2/SDL_image.h +161 -0
  22. data/assets/include/SDL2/SDL_joystick.h +408 -0
  23. data/assets/include/SDL2/SDL_keyboard.h +217 -0
  24. data/assets/include/SDL2/SDL_keycode.h +349 -0
  25. data/assets/include/SDL2/SDL_loadso.h +81 -0
  26. data/assets/include/SDL2/SDL_log.h +211 -0
  27. data/assets/include/SDL2/SDL_main.h +168 -0
  28. data/assets/include/SDL2/SDL_messagebox.h +144 -0
  29. data/assets/include/SDL2/SDL_mixer.h +651 -0
  30. data/assets/include/SDL2/SDL_mouse.h +302 -0
  31. data/assets/include/SDL2/SDL_mutex.h +251 -0
  32. data/assets/include/SDL2/SDL_name.h +33 -0
  33. data/assets/include/SDL2/SDL_opengl.h +2183 -0
  34. data/assets/include/SDL2/SDL_opengl_glext.h +11177 -0
  35. data/assets/include/SDL2/SDL_opengles.h +39 -0
  36. data/assets/include/SDL2/SDL_opengles2.h +52 -0
  37. data/assets/include/SDL2/SDL_opengles2_gl2.h +621 -0
  38. data/assets/include/SDL2/SDL_opengles2_gl2ext.h +2050 -0
  39. data/assets/include/SDL2/SDL_opengles2_gl2platform.h +30 -0
  40. data/assets/include/SDL2/SDL_opengles2_khrplatform.h +282 -0
  41. data/assets/include/SDL2/SDL_pixels.h +470 -0
  42. data/assets/include/SDL2/SDL_platform.h +198 -0
  43. data/assets/include/SDL2/SDL_power.h +75 -0
  44. data/assets/include/SDL2/SDL_quit.h +58 -0
  45. data/assets/include/SDL2/SDL_rect.h +148 -0
  46. data/assets/include/SDL2/SDL_render.h +931 -0
  47. data/assets/include/SDL2/SDL_revision.h +2 -0
  48. data/assets/include/SDL2/SDL_rwops.h +254 -0
  49. data/assets/include/SDL2/SDL_scancode.h +413 -0
  50. data/assets/include/SDL2/SDL_sensor.h +251 -0
  51. data/assets/include/SDL2/SDL_shape.h +144 -0
  52. data/assets/include/SDL2/SDL_stdinc.h +607 -0
  53. data/assets/include/SDL2/SDL_surface.h +553 -0
  54. data/assets/include/SDL2/SDL_system.h +279 -0
  55. data/assets/include/SDL2/SDL_syswm.h +324 -0
  56. data/assets/include/SDL2/SDL_test.h +69 -0
  57. data/assets/include/SDL2/SDL_test_assert.h +105 -0
  58. data/assets/include/SDL2/SDL_test_common.h +188 -0
  59. data/assets/include/SDL2/SDL_test_compare.h +69 -0
  60. data/assets/include/SDL2/SDL_test_crc32.h +124 -0
  61. data/assets/include/SDL2/SDL_test_font.h +81 -0
  62. data/assets/include/SDL2/SDL_test_fuzzer.h +384 -0
  63. data/assets/include/SDL2/SDL_test_harness.h +134 -0
  64. data/assets/include/SDL2/SDL_test_images.h +78 -0
  65. data/assets/include/SDL2/SDL_test_log.h +67 -0
  66. data/assets/include/SDL2/SDL_test_md5.h +129 -0
  67. data/assets/include/SDL2/SDL_test_memory.h +63 -0
  68. data/assets/include/SDL2/SDL_test_random.h +115 -0
  69. data/assets/include/SDL2/SDL_thread.h +343 -0
  70. data/assets/include/SDL2/SDL_timer.h +115 -0
  71. data/assets/include/SDL2/SDL_touch.h +86 -0
  72. data/assets/include/SDL2/SDL_ttf.h +294 -0
  73. data/assets/include/SDL2/SDL_types.h +29 -0
  74. data/assets/include/SDL2/SDL_version.h +162 -0
  75. data/assets/include/SDL2/SDL_video.h +1276 -0
  76. data/assets/include/SDL2/SDL_vulkan.h +278 -0
  77. data/assets/include/SDL2/begin_code.h +167 -0
  78. data/assets/include/SDL2/close_code.h +37 -0
  79. data/assets/include/glew.h +23686 -0
  80. data/assets/include/simple2d.h +735 -0
  81. data/assets/ios/MRuby.framework/Headers/mrbconf.h +3 -5
  82. data/assets/ios/MRuby.framework/Headers/mruby.h +35 -32
  83. data/assets/ios/MRuby.framework/Headers/mruby/array.h +1 -0
  84. data/assets/ios/MRuby.framework/Headers/mruby/boxing_word.h +9 -1
  85. data/assets/ios/MRuby.framework/Headers/mruby/class.h +14 -11
  86. data/assets/ios/MRuby.framework/Headers/mruby/common.h +5 -0
  87. data/assets/ios/MRuby.framework/Headers/mruby/compile.h +4 -3
  88. data/assets/ios/MRuby.framework/Headers/mruby/debug.h +3 -2
  89. data/assets/ios/MRuby.framework/Headers/mruby/dump.h +2 -2
  90. data/assets/ios/MRuby.framework/Headers/mruby/hash.h +38 -5
  91. data/assets/ios/MRuby.framework/Headers/mruby/irep.h +17 -4
  92. data/assets/ios/MRuby.framework/Headers/mruby/object.h +4 -5
  93. data/assets/ios/MRuby.framework/Headers/mruby/opcode.h +47 -139
  94. data/assets/ios/MRuby.framework/Headers/mruby/ops.h +117 -0
  95. data/assets/ios/MRuby.framework/Headers/mruby/proc.h +4 -4
  96. data/assets/ios/MRuby.framework/Headers/mruby/string.h +11 -7
  97. data/assets/ios/MRuby.framework/Headers/mruby/throw.h +4 -4
  98. data/assets/ios/MRuby.framework/Headers/mruby/variable.h +2 -4
  99. data/assets/ios/MRuby.framework/Headers/mruby/version.h +6 -6
  100. data/assets/ios/MRuby.framework/MRuby +0 -0
  101. data/assets/ios/MyApp.xcodeproj/project.pbxproj +24 -18
  102. data/assets/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  103. data/assets/ios/main.c +1 -1
  104. data/assets/macos/lib/libFLAC.a +0 -0
  105. data/assets/macos/lib/libSDL2.a +0 -0
  106. data/assets/macos/lib/libSDL2_image.a +0 -0
  107. data/assets/macos/lib/libSDL2_mixer.a +0 -0
  108. data/assets/macos/lib/libSDL2_ttf.a +0 -0
  109. data/assets/macos/lib/libfreetype.a +0 -0
  110. data/assets/macos/lib/libjpeg.a +0 -0
  111. data/assets/macos/lib/libmpg123.a +0 -0
  112. data/assets/macos/lib/libogg.a +0 -0
  113. data/assets/macos/lib/libpng16.a +0 -0
  114. data/assets/macos/lib/libsimple2d.a +0 -0
  115. data/assets/macos/lib/libtiff.a +0 -0
  116. data/assets/macos/lib/libvorbis.a +0 -0
  117. data/assets/macos/lib/libvorbisfile.a +0 -0
  118. data/assets/macos/lib/libwebp.a +0 -0
  119. data/assets/mingw/bin/SDL2.dll +0 -0
  120. data/assets/mingw/bin/SDL2_image.dll +0 -0
  121. data/assets/mingw/bin/SDL2_mixer.dll +0 -0
  122. data/assets/mingw/bin/SDL2_ttf.dll +0 -0
  123. data/assets/mingw/bin/glew32.dll +0 -0
  124. data/assets/mingw/bin/libFLAC-8.dll +0 -0
  125. data/assets/mingw/bin/libfreetype-6.dll +0 -0
  126. data/assets/mingw/bin/libjpeg-9.dll +0 -0
  127. data/assets/mingw/bin/libmodplug-1.dll +0 -0
  128. data/assets/mingw/bin/libmpg123-0.dll +0 -0
  129. data/assets/mingw/bin/libogg-0.dll +0 -0
  130. data/assets/mingw/bin/libopus-0.dll +0 -0
  131. data/assets/mingw/bin/libopusfile-0.dll +0 -0
  132. data/assets/mingw/bin/libpng16-16.dll +0 -0
  133. data/assets/mingw/bin/libtiff-5.dll +0 -0
  134. data/assets/mingw/bin/libvorbis-0.dll +0 -0
  135. data/assets/mingw/bin/libvorbisfile-3.dll +0 -0
  136. data/assets/mingw/bin/libwebp-7.dll +0 -0
  137. data/assets/mingw/bin/zlib1.dll +0 -0
  138. data/assets/mingw/lib/libSDL2.a +0 -0
  139. data/assets/mingw/lib/libSDL2.dll.a +0 -0
  140. data/assets/mingw/lib/libSDL2_image.a +0 -0
  141. data/assets/mingw/lib/libSDL2_image.dll.a +0 -0
  142. data/assets/mingw/lib/libSDL2_mixer.a +0 -0
  143. data/assets/mingw/lib/libSDL2_mixer.dll.a +0 -0
  144. data/assets/mingw/lib/libSDL2_test.a +0 -0
  145. data/assets/mingw/lib/libSDL2_ttf.a +0 -0
  146. data/assets/mingw/lib/libSDL2_ttf.dll.a +0 -0
  147. data/assets/mingw/lib/libSDL2main.a +0 -0
  148. data/assets/mingw/lib/libglew32.a +0 -0
  149. data/assets/mingw/lib/libglew32.dll.a +0 -0
  150. data/assets/mingw/lib/libsimple2d.a +0 -0
  151. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +4 -0
  152. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +4 -0
  153. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +4 -0
  154. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +4 -0
  155. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +4 -0
  156. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +4 -0
  157. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json +4 -0
  158. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json +4 -0
  159. data/assets/tvos/Assets.xcassets/LaunchImage.launchimage/Contents.json +7 -0
  160. data/assets/tvos/MRuby.framework/Headers/mrbconf.h +3 -5
  161. data/assets/tvos/MRuby.framework/Headers/mruby.h +35 -32
  162. data/assets/tvos/MRuby.framework/Headers/mruby/array.h +1 -0
  163. data/assets/tvos/MRuby.framework/Headers/mruby/boxing_word.h +9 -1
  164. data/assets/tvos/MRuby.framework/Headers/mruby/class.h +14 -11
  165. data/assets/tvos/MRuby.framework/Headers/mruby/common.h +5 -0
  166. data/assets/tvos/MRuby.framework/Headers/mruby/compile.h +4 -3
  167. data/assets/tvos/MRuby.framework/Headers/mruby/debug.h +3 -2
  168. data/assets/tvos/MRuby.framework/Headers/mruby/dump.h +2 -2
  169. data/assets/tvos/MRuby.framework/Headers/mruby/hash.h +38 -5
  170. data/assets/tvos/MRuby.framework/Headers/mruby/irep.h +17 -4
  171. data/assets/tvos/MRuby.framework/Headers/mruby/object.h +4 -5
  172. data/assets/tvos/MRuby.framework/Headers/mruby/opcode.h +47 -139
  173. data/assets/tvos/MRuby.framework/Headers/mruby/ops.h +117 -0
  174. data/assets/tvos/MRuby.framework/Headers/mruby/proc.h +4 -4
  175. data/assets/tvos/MRuby.framework/Headers/mruby/string.h +11 -7
  176. data/assets/tvos/MRuby.framework/Headers/mruby/throw.h +4 -4
  177. data/assets/tvos/MRuby.framework/Headers/mruby/variable.h +2 -4
  178. data/assets/tvos/MRuby.framework/Headers/mruby/version.h +6 -6
  179. data/assets/tvos/MRuby.framework/MRuby +0 -0
  180. data/assets/tvos/MyApp.xcodeproj/project.pbxproj +25 -19
  181. data/assets/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  182. data/assets/tvos/main.c +1 -1
  183. data/ext/ruby2d/extconf.rb +59 -50
  184. data/ext/ruby2d/ruby2d.c +0 -1
  185. data/lib/ruby2d.rb +1 -7
  186. data/lib/ruby2d/cli/launch.rb +1 -1
  187. data/lib/ruby2d/font.rb +32 -7
  188. data/lib/ruby2d/version.rb +1 -1
  189. metadata +132 -6
  190. data/assets/opal.js +0 -21637
  191. data/assets/simple2d.js +0 -1379
  192. data/assets/template.html +0 -18
@@ -0,0 +1,931 @@
1
+ /*
2
+ Simple DirectMedia Layer
3
+ Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
4
+
5
+ This software is provided 'as-is', without any express or implied
6
+ warranty. In no event will the authors be held liable for any damages
7
+ arising from the use of this software.
8
+
9
+ Permission is granted to anyone to use this software for any purpose,
10
+ including commercial applications, and to alter it and redistribute it
11
+ freely, subject to the following restrictions:
12
+
13
+ 1. The origin of this software must not be misrepresented; you must not
14
+ claim that you wrote the original software. If you use this software
15
+ in a product, an acknowledgment in the product documentation would be
16
+ appreciated but is not required.
17
+ 2. Altered source versions must be plainly marked as such, and must not be
18
+ misrepresented as being the original software.
19
+ 3. This notice may not be removed or altered from any source distribution.
20
+ */
21
+
22
+ /**
23
+ * \file SDL_render.h
24
+ *
25
+ * Header file for SDL 2D rendering functions.
26
+ *
27
+ * This API supports the following features:
28
+ * * single pixel points
29
+ * * single pixel lines
30
+ * * filled rectangles
31
+ * * texture images
32
+ *
33
+ * The primitives may be drawn in opaque, blended, or additive modes.
34
+ *
35
+ * The texture images may be drawn in opaque, blended, or additive modes.
36
+ * They can have an additional color tint or alpha modulation applied to
37
+ * them, and may also be stretched with linear interpolation.
38
+ *
39
+ * This API is designed to accelerate simple 2D operations. You may
40
+ * want more functionality such as polygons and particle effects and
41
+ * in that case you should use SDL's OpenGL/Direct3D support or one
42
+ * of the many good 3D engines.
43
+ *
44
+ * These functions must be called from the main thread.
45
+ * See this bug for details: http://bugzilla.libsdl.org/show_bug.cgi?id=1995
46
+ */
47
+
48
+ #ifndef SDL_render_h_
49
+ #define SDL_render_h_
50
+
51
+ #include "SDL_stdinc.h"
52
+ #include "SDL_rect.h"
53
+ #include "SDL_video.h"
54
+
55
+ #include "begin_code.h"
56
+ /* Set up for C function definitions, even when using C++ */
57
+ #ifdef __cplusplus
58
+ extern "C" {
59
+ #endif
60
+
61
+ /**
62
+ * \brief Flags used when creating a rendering context
63
+ */
64
+ typedef enum
65
+ {
66
+ SDL_RENDERER_SOFTWARE = 0x00000001, /**< The renderer is a software fallback */
67
+ SDL_RENDERER_ACCELERATED = 0x00000002, /**< The renderer uses hardware
68
+ acceleration */
69
+ SDL_RENDERER_PRESENTVSYNC = 0x00000004, /**< Present is synchronized
70
+ with the refresh rate */
71
+ SDL_RENDERER_TARGETTEXTURE = 0x00000008 /**< The renderer supports
72
+ rendering to texture */
73
+ } SDL_RendererFlags;
74
+
75
+ /**
76
+ * \brief Information on the capabilities of a render driver or context.
77
+ */
78
+ typedef struct SDL_RendererInfo
79
+ {
80
+ const char *name; /**< The name of the renderer */
81
+ Uint32 flags; /**< Supported ::SDL_RendererFlags */
82
+ Uint32 num_texture_formats; /**< The number of available texture formats */
83
+ Uint32 texture_formats[16]; /**< The available texture formats */
84
+ int max_texture_width; /**< The maximum texture width */
85
+ int max_texture_height; /**< The maximum texture height */
86
+ } SDL_RendererInfo;
87
+
88
+ /**
89
+ * \brief The access pattern allowed for a texture.
90
+ */
91
+ typedef enum
92
+ {
93
+ SDL_TEXTUREACCESS_STATIC, /**< Changes rarely, not lockable */
94
+ SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */
95
+ SDL_TEXTUREACCESS_TARGET /**< Texture can be used as a render target */
96
+ } SDL_TextureAccess;
97
+
98
+ /**
99
+ * \brief The texture channel modulation used in SDL_RenderCopy().
100
+ */
101
+ typedef enum
102
+ {
103
+ SDL_TEXTUREMODULATE_NONE = 0x00000000, /**< No modulation */
104
+ SDL_TEXTUREMODULATE_COLOR = 0x00000001, /**< srcC = srcC * color */
105
+ SDL_TEXTUREMODULATE_ALPHA = 0x00000002 /**< srcA = srcA * alpha */
106
+ } SDL_TextureModulate;
107
+
108
+ /**
109
+ * \brief Flip constants for SDL_RenderCopyEx
110
+ */
111
+ typedef enum
112
+ {
113
+ SDL_FLIP_NONE = 0x00000000, /**< Do not flip */
114
+ SDL_FLIP_HORIZONTAL = 0x00000001, /**< flip horizontally */
115
+ SDL_FLIP_VERTICAL = 0x00000002 /**< flip vertically */
116
+ } SDL_RendererFlip;
117
+
118
+ /**
119
+ * \brief A structure representing rendering state
120
+ */
121
+ struct SDL_Renderer;
122
+ typedef struct SDL_Renderer SDL_Renderer;
123
+
124
+ /**
125
+ * \brief An efficient driver-specific representation of pixel data
126
+ */
127
+ struct SDL_Texture;
128
+ typedef struct SDL_Texture SDL_Texture;
129
+
130
+
131
+ /* Function prototypes */
132
+
133
+ /**
134
+ * \brief Get the number of 2D rendering drivers available for the current
135
+ * display.
136
+ *
137
+ * A render driver is a set of code that handles rendering and texture
138
+ * management on a particular display. Normally there is only one, but
139
+ * some drivers may have several available with different capabilities.
140
+ *
141
+ * \sa SDL_GetRenderDriverInfo()
142
+ * \sa SDL_CreateRenderer()
143
+ */
144
+ extern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void);
145
+
146
+ /**
147
+ * \brief Get information about a specific 2D rendering driver for the current
148
+ * display.
149
+ *
150
+ * \param index The index of the driver to query information about.
151
+ * \param info A pointer to an SDL_RendererInfo struct to be filled with
152
+ * information on the rendering driver.
153
+ *
154
+ * \return 0 on success, -1 if the index was out of range.
155
+ *
156
+ * \sa SDL_CreateRenderer()
157
+ */
158
+ extern DECLSPEC int SDLCALL SDL_GetRenderDriverInfo(int index,
159
+ SDL_RendererInfo * info);
160
+
161
+ /**
162
+ * \brief Create a window and default renderer
163
+ *
164
+ * \param width The width of the window
165
+ * \param height The height of the window
166
+ * \param window_flags The flags used to create the window
167
+ * \param window A pointer filled with the window, or NULL on error
168
+ * \param renderer A pointer filled with the renderer, or NULL on error
169
+ *
170
+ * \return 0 on success, or -1 on error
171
+ */
172
+ extern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer(
173
+ int width, int height, Uint32 window_flags,
174
+ SDL_Window **window, SDL_Renderer **renderer);
175
+
176
+
177
+ /**
178
+ * \brief Create a 2D rendering context for a window.
179
+ *
180
+ * \param window The window where rendering is displayed.
181
+ * \param index The index of the rendering driver to initialize, or -1 to
182
+ * initialize the first one supporting the requested flags.
183
+ * \param flags ::SDL_RendererFlags.
184
+ *
185
+ * \return A valid rendering context or NULL if there was an error.
186
+ *
187
+ * \sa SDL_CreateSoftwareRenderer()
188
+ * \sa SDL_GetRendererInfo()
189
+ * \sa SDL_DestroyRenderer()
190
+ */
191
+ extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window,
192
+ int index, Uint32 flags);
193
+
194
+ /**
195
+ * \brief Create a 2D software rendering context for a surface.
196
+ *
197
+ * \param surface The surface where rendering is done.
198
+ *
199
+ * \return A valid rendering context or NULL if there was an error.
200
+ *
201
+ * \sa SDL_CreateRenderer()
202
+ * \sa SDL_DestroyRenderer()
203
+ */
204
+ extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface * surface);
205
+
206
+ /**
207
+ * \brief Get the renderer associated with a window.
208
+ */
209
+ extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window * window);
210
+
211
+ /**
212
+ * \brief Get information about a rendering context.
213
+ */
214
+ extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer,
215
+ SDL_RendererInfo * info);
216
+
217
+ /**
218
+ * \brief Get the output size in pixels of a rendering context.
219
+ */
220
+ extern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer,
221
+ int *w, int *h);
222
+
223
+ /**
224
+ * \brief Create a texture for a rendering context.
225
+ *
226
+ * \param renderer The renderer.
227
+ * \param format The format of the texture.
228
+ * \param access One of the enumerated values in ::SDL_TextureAccess.
229
+ * \param w The width of the texture in pixels.
230
+ * \param h The height of the texture in pixels.
231
+ *
232
+ * \return The created texture is returned, or NULL if no rendering context was
233
+ * active, the format was unsupported, or the width or height were out
234
+ * of range.
235
+ *
236
+ * \note The contents of the texture are not defined at creation.
237
+ *
238
+ * \sa SDL_QueryTexture()
239
+ * \sa SDL_UpdateTexture()
240
+ * \sa SDL_DestroyTexture()
241
+ */
242
+ extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer,
243
+ Uint32 format,
244
+ int access, int w,
245
+ int h);
246
+
247
+ /**
248
+ * \brief Create a texture from an existing surface.
249
+ *
250
+ * \param renderer The renderer.
251
+ * \param surface The surface containing pixel data used to fill the texture.
252
+ *
253
+ * \return The created texture is returned, or NULL on error.
254
+ *
255
+ * \note The surface is not modified or freed by this function.
256
+ *
257
+ * \sa SDL_QueryTexture()
258
+ * \sa SDL_DestroyTexture()
259
+ */
260
+ extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface);
261
+
262
+ /**
263
+ * \brief Query the attributes of a texture
264
+ *
265
+ * \param texture A texture to be queried.
266
+ * \param format A pointer filled in with the raw format of the texture. The
267
+ * actual format may differ, but pixel transfers will use this
268
+ * format.
269
+ * \param access A pointer filled in with the actual access to the texture.
270
+ * \param w A pointer filled in with the width of the texture in pixels.
271
+ * \param h A pointer filled in with the height of the texture in pixels.
272
+ *
273
+ * \return 0 on success, or -1 if the texture is not valid.
274
+ */
275
+ extern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture,
276
+ Uint32 * format, int *access,
277
+ int *w, int *h);
278
+
279
+ /**
280
+ * \brief Set an additional color value used in render copy operations.
281
+ *
282
+ * \param texture The texture to update.
283
+ * \param r The red color value multiplied into copy operations.
284
+ * \param g The green color value multiplied into copy operations.
285
+ * \param b The blue color value multiplied into copy operations.
286
+ *
287
+ * \return 0 on success, or -1 if the texture is not valid or color modulation
288
+ * is not supported.
289
+ *
290
+ * \sa SDL_GetTextureColorMod()
291
+ */
292
+ extern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture,
293
+ Uint8 r, Uint8 g, Uint8 b);
294
+
295
+
296
+ /**
297
+ * \brief Get the additional color value used in render copy operations.
298
+ *
299
+ * \param texture The texture to query.
300
+ * \param r A pointer filled in with the current red color value.
301
+ * \param g A pointer filled in with the current green color value.
302
+ * \param b A pointer filled in with the current blue color value.
303
+ *
304
+ * \return 0 on success, or -1 if the texture is not valid.
305
+ *
306
+ * \sa SDL_SetTextureColorMod()
307
+ */
308
+ extern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture,
309
+ Uint8 * r, Uint8 * g,
310
+ Uint8 * b);
311
+
312
+ /**
313
+ * \brief Set an additional alpha value used in render copy operations.
314
+ *
315
+ * \param texture The texture to update.
316
+ * \param alpha The alpha value multiplied into copy operations.
317
+ *
318
+ * \return 0 on success, or -1 if the texture is not valid or alpha modulation
319
+ * is not supported.
320
+ *
321
+ * \sa SDL_GetTextureAlphaMod()
322
+ */
323
+ extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture,
324
+ Uint8 alpha);
325
+
326
+ /**
327
+ * \brief Get the additional alpha value used in render copy operations.
328
+ *
329
+ * \param texture The texture to query.
330
+ * \param alpha A pointer filled in with the current alpha value.
331
+ *
332
+ * \return 0 on success, or -1 if the texture is not valid.
333
+ *
334
+ * \sa SDL_SetTextureAlphaMod()
335
+ */
336
+ extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture,
337
+ Uint8 * alpha);
338
+
339
+ /**
340
+ * \brief Set the blend mode used for texture copy operations.
341
+ *
342
+ * \param texture The texture to update.
343
+ * \param blendMode ::SDL_BlendMode to use for texture blending.
344
+ *
345
+ * \return 0 on success, or -1 if the texture is not valid or the blend mode is
346
+ * not supported.
347
+ *
348
+ * \note If the blend mode is not supported, the closest supported mode is
349
+ * chosen.
350
+ *
351
+ * \sa SDL_GetTextureBlendMode()
352
+ */
353
+ extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture,
354
+ SDL_BlendMode blendMode);
355
+
356
+ /**
357
+ * \brief Get the blend mode used for texture copy operations.
358
+ *
359
+ * \param texture The texture to query.
360
+ * \param blendMode A pointer filled in with the current blend mode.
361
+ *
362
+ * \return 0 on success, or -1 if the texture is not valid.
363
+ *
364
+ * \sa SDL_SetTextureBlendMode()
365
+ */
366
+ extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture,
367
+ SDL_BlendMode *blendMode);
368
+
369
+ /**
370
+ * \brief Update the given texture rectangle with new pixel data.
371
+ *
372
+ * \param texture The texture to update
373
+ * \param rect A pointer to the rectangle of pixels to update, or NULL to
374
+ * update the entire texture.
375
+ * \param pixels The raw pixel data in the format of the texture.
376
+ * \param pitch The number of bytes in a row of pixel data, including padding between lines.
377
+ *
378
+ * The pixel data must be in the format of the texture. The pixel format can be
379
+ * queried with SDL_QueryTexture.
380
+ *
381
+ * \return 0 on success, or -1 if the texture is not valid.
382
+ *
383
+ * \note This is a fairly slow function.
384
+ */
385
+ extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture,
386
+ const SDL_Rect * rect,
387
+ const void *pixels, int pitch);
388
+
389
+ /**
390
+ * \brief Update a rectangle within a planar YV12 or IYUV texture with new pixel data.
391
+ *
392
+ * \param texture The texture to update
393
+ * \param rect A pointer to the rectangle of pixels to update, or NULL to
394
+ * update the entire texture.
395
+ * \param Yplane The raw pixel data for the Y plane.
396
+ * \param Ypitch The number of bytes between rows of pixel data for the Y plane.
397
+ * \param Uplane The raw pixel data for the U plane.
398
+ * \param Upitch The number of bytes between rows of pixel data for the U plane.
399
+ * \param Vplane The raw pixel data for the V plane.
400
+ * \param Vpitch The number of bytes between rows of pixel data for the V plane.
401
+ *
402
+ * \return 0 on success, or -1 if the texture is not valid.
403
+ *
404
+ * \note You can use SDL_UpdateTexture() as long as your pixel data is
405
+ * a contiguous block of Y and U/V planes in the proper order, but
406
+ * this function is available if your pixel data is not contiguous.
407
+ */
408
+ extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture,
409
+ const SDL_Rect * rect,
410
+ const Uint8 *Yplane, int Ypitch,
411
+ const Uint8 *Uplane, int Upitch,
412
+ const Uint8 *Vplane, int Vpitch);
413
+
414
+ /**
415
+ * \brief Lock a portion of the texture for write-only pixel access.
416
+ *
417
+ * \param texture The texture to lock for access, which was created with
418
+ * ::SDL_TEXTUREACCESS_STREAMING.
419
+ * \param rect A pointer to the rectangle to lock for access. If the rect
420
+ * is NULL, the entire texture will be locked.
421
+ * \param pixels This is filled in with a pointer to the locked pixels,
422
+ * appropriately offset by the locked area.
423
+ * \param pitch This is filled in with the pitch of the locked pixels.
424
+ *
425
+ * \return 0 on success, or -1 if the texture is not valid or was not created with ::SDL_TEXTUREACCESS_STREAMING.
426
+ *
427
+ * \sa SDL_UnlockTexture()
428
+ */
429
+ extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture,
430
+ const SDL_Rect * rect,
431
+ void **pixels, int *pitch);
432
+
433
+ /**
434
+ * \brief Unlock a texture, uploading the changes to video memory, if needed.
435
+ *
436
+ * \sa SDL_LockTexture()
437
+ */
438
+ extern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture);
439
+
440
+ /**
441
+ * \brief Determines whether a window supports the use of render targets
442
+ *
443
+ * \param renderer The renderer that will be checked
444
+ *
445
+ * \return SDL_TRUE if supported, SDL_FALSE if not.
446
+ */
447
+ extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *renderer);
448
+
449
+ /**
450
+ * \brief Set a texture as the current rendering target.
451
+ *
452
+ * \param renderer The renderer.
453
+ * \param texture The targeted texture, which must be created with the SDL_TEXTUREACCESS_TARGET flag, or NULL for the default render target
454
+ *
455
+ * \return 0 on success, or -1 on error
456
+ *
457
+ * \sa SDL_GetRenderTarget()
458
+ */
459
+ extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer,
460
+ SDL_Texture *texture);
461
+
462
+ /**
463
+ * \brief Get the current render target or NULL for the default render target.
464
+ *
465
+ * \return The current render target
466
+ *
467
+ * \sa SDL_SetRenderTarget()
468
+ */
469
+ extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer);
470
+
471
+ /**
472
+ * \brief Set device independent resolution for rendering
473
+ *
474
+ * \param renderer The renderer for which resolution should be set.
475
+ * \param w The width of the logical resolution
476
+ * \param h The height of the logical resolution
477
+ *
478
+ * This function uses the viewport and scaling functionality to allow a fixed logical
479
+ * resolution for rendering, regardless of the actual output resolution. If the actual
480
+ * output resolution doesn't have the same aspect ratio the output rendering will be
481
+ * centered within the output display.
482
+ *
483
+ * If the output display is a window, mouse events in the window will be filtered
484
+ * and scaled so they seem to arrive within the logical resolution.
485
+ *
486
+ * \note If this function results in scaling or subpixel drawing by the
487
+ * rendering backend, it will be handled using the appropriate
488
+ * quality hints.
489
+ *
490
+ * \sa SDL_RenderGetLogicalSize()
491
+ * \sa SDL_RenderSetScale()
492
+ * \sa SDL_RenderSetViewport()
493
+ */
494
+ extern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h);
495
+
496
+ /**
497
+ * \brief Get device independent resolution for rendering
498
+ *
499
+ * \param renderer The renderer from which resolution should be queried.
500
+ * \param w A pointer filled with the width of the logical resolution
501
+ * \param h A pointer filled with the height of the logical resolution
502
+ *
503
+ * \sa SDL_RenderSetLogicalSize()
504
+ */
505
+ extern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h);
506
+
507
+ /**
508
+ * \brief Set whether to force integer scales for resolution-independent rendering
509
+ *
510
+ * \param renderer The renderer for which integer scaling should be set.
511
+ * \param enable Enable or disable integer scaling
512
+ *
513
+ * This function restricts the logical viewport to integer values - that is, when
514
+ * a resolution is between two multiples of a logical size, the viewport size is
515
+ * rounded down to the lower multiple.
516
+ *
517
+ * \sa SDL_RenderSetLogicalSize()
518
+ */
519
+ extern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer,
520
+ SDL_bool enable);
521
+
522
+ /**
523
+ * \brief Get whether integer scales are forced for resolution-independent rendering
524
+ *
525
+ * \param renderer The renderer from which integer scaling should be queried.
526
+ *
527
+ * \sa SDL_RenderSetIntegerScale()
528
+ */
529
+ extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer);
530
+
531
+ /**
532
+ * \brief Set the drawing area for rendering on the current target.
533
+ *
534
+ * \param renderer The renderer for which the drawing area should be set.
535
+ * \param rect The rectangle representing the drawing area, or NULL to set the viewport to the entire target.
536
+ *
537
+ * The x,y of the viewport rect represents the origin for rendering.
538
+ *
539
+ * \return 0 on success, or -1 on error
540
+ *
541
+ * \note If the window associated with the renderer is resized, the viewport is automatically reset.
542
+ *
543
+ * \sa SDL_RenderGetViewport()
544
+ * \sa SDL_RenderSetLogicalSize()
545
+ */
546
+ extern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer,
547
+ const SDL_Rect * rect);
548
+
549
+ /**
550
+ * \brief Get the drawing area for the current target.
551
+ *
552
+ * \sa SDL_RenderSetViewport()
553
+ */
554
+ extern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer,
555
+ SDL_Rect * rect);
556
+
557
+ /**
558
+ * \brief Set the clip rectangle for the current target.
559
+ *
560
+ * \param renderer The renderer for which clip rectangle should be set.
561
+ * \param rect A pointer to the rectangle to set as the clip rectangle, or
562
+ * NULL to disable clipping.
563
+ *
564
+ * \return 0 on success, or -1 on error
565
+ *
566
+ * \sa SDL_RenderGetClipRect()
567
+ */
568
+ extern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer,
569
+ const SDL_Rect * rect);
570
+
571
+ /**
572
+ * \brief Get the clip rectangle for the current target.
573
+ *
574
+ * \param renderer The renderer from which clip rectangle should be queried.
575
+ * \param rect A pointer filled in with the current clip rectangle, or
576
+ * an empty rectangle if clipping is disabled.
577
+ *
578
+ * \sa SDL_RenderSetClipRect()
579
+ */
580
+ extern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer,
581
+ SDL_Rect * rect);
582
+
583
+ /**
584
+ * \brief Get whether clipping is enabled on the given renderer.
585
+ *
586
+ * \param renderer The renderer from which clip state should be queried.
587
+ *
588
+ * \sa SDL_RenderGetClipRect()
589
+ */
590
+ extern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer);
591
+
592
+
593
+ /**
594
+ * \brief Set the drawing scale for rendering on the current target.
595
+ *
596
+ * \param renderer The renderer for which the drawing scale should be set.
597
+ * \param scaleX The horizontal scaling factor
598
+ * \param scaleY The vertical scaling factor
599
+ *
600
+ * The drawing coordinates are scaled by the x/y scaling factors
601
+ * before they are used by the renderer. This allows resolution
602
+ * independent drawing with a single coordinate system.
603
+ *
604
+ * \note If this results in scaling or subpixel drawing by the
605
+ * rendering backend, it will be handled using the appropriate
606
+ * quality hints. For best results use integer scaling factors.
607
+ *
608
+ * \sa SDL_RenderGetScale()
609
+ * \sa SDL_RenderSetLogicalSize()
610
+ */
611
+ extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer,
612
+ float scaleX, float scaleY);
613
+
614
+ /**
615
+ * \brief Get the drawing scale for the current target.
616
+ *
617
+ * \param renderer The renderer from which drawing scale should be queried.
618
+ * \param scaleX A pointer filled in with the horizontal scaling factor
619
+ * \param scaleY A pointer filled in with the vertical scaling factor
620
+ *
621
+ * \sa SDL_RenderSetScale()
622
+ */
623
+ extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer,
624
+ float *scaleX, float *scaleY);
625
+
626
+ /**
627
+ * \brief Set the color used for drawing operations (Rect, Line and Clear).
628
+ *
629
+ * \param renderer The renderer for which drawing color should be set.
630
+ * \param r The red value used to draw on the rendering target.
631
+ * \param g The green value used to draw on the rendering target.
632
+ * \param b The blue value used to draw on the rendering target.
633
+ * \param a The alpha value used to draw on the rendering target, usually
634
+ * ::SDL_ALPHA_OPAQUE (255).
635
+ *
636
+ * \return 0 on success, or -1 on error
637
+ */
638
+ extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer,
639
+ Uint8 r, Uint8 g, Uint8 b,
640
+ Uint8 a);
641
+
642
+ /**
643
+ * \brief Get the color used for drawing operations (Rect, Line and Clear).
644
+ *
645
+ * \param renderer The renderer from which drawing color should be queried.
646
+ * \param r A pointer to the red value used to draw on the rendering target.
647
+ * \param g A pointer to the green value used to draw on the rendering target.
648
+ * \param b A pointer to the blue value used to draw on the rendering target.
649
+ * \param a A pointer to the alpha value used to draw on the rendering target,
650
+ * usually ::SDL_ALPHA_OPAQUE (255).
651
+ *
652
+ * \return 0 on success, or -1 on error
653
+ */
654
+ extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer,
655
+ Uint8 * r, Uint8 * g, Uint8 * b,
656
+ Uint8 * a);
657
+
658
+ /**
659
+ * \brief Set the blend mode used for drawing operations (Fill and Line).
660
+ *
661
+ * \param renderer The renderer for which blend mode should be set.
662
+ * \param blendMode ::SDL_BlendMode to use for blending.
663
+ *
664
+ * \return 0 on success, or -1 on error
665
+ *
666
+ * \note If the blend mode is not supported, the closest supported mode is
667
+ * chosen.
668
+ *
669
+ * \sa SDL_GetRenderDrawBlendMode()
670
+ */
671
+ extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer,
672
+ SDL_BlendMode blendMode);
673
+
674
+ /**
675
+ * \brief Get the blend mode used for drawing operations.
676
+ *
677
+ * \param renderer The renderer from which blend mode should be queried.
678
+ * \param blendMode A pointer filled in with the current blend mode.
679
+ *
680
+ * \return 0 on success, or -1 on error
681
+ *
682
+ * \sa SDL_SetRenderDrawBlendMode()
683
+ */
684
+ extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer,
685
+ SDL_BlendMode *blendMode);
686
+
687
+ /**
688
+ * \brief Clear the current rendering target with the drawing color
689
+ *
690
+ * This function clears the entire rendering target, ignoring the viewport and
691
+ * the clip rectangle.
692
+ *
693
+ * \return 0 on success, or -1 on error
694
+ */
695
+ extern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer);
696
+
697
+ /**
698
+ * \brief Draw a point on the current rendering target.
699
+ *
700
+ * \param renderer The renderer which should draw a point.
701
+ * \param x The x coordinate of the point.
702
+ * \param y The y coordinate of the point.
703
+ *
704
+ * \return 0 on success, or -1 on error
705
+ */
706
+ extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer,
707
+ int x, int y);
708
+
709
+ /**
710
+ * \brief Draw multiple points on the current rendering target.
711
+ *
712
+ * \param renderer The renderer which should draw multiple points.
713
+ * \param points The points to draw
714
+ * \param count The number of points to draw
715
+ *
716
+ * \return 0 on success, or -1 on error
717
+ */
718
+ extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer,
719
+ const SDL_Point * points,
720
+ int count);
721
+
722
+ /**
723
+ * \brief Draw a line on the current rendering target.
724
+ *
725
+ * \param renderer The renderer which should draw a line.
726
+ * \param x1 The x coordinate of the start point.
727
+ * \param y1 The y coordinate of the start point.
728
+ * \param x2 The x coordinate of the end point.
729
+ * \param y2 The y coordinate of the end point.
730
+ *
731
+ * \return 0 on success, or -1 on error
732
+ */
733
+ extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer,
734
+ int x1, int y1, int x2, int y2);
735
+
736
+ /**
737
+ * \brief Draw a series of connected lines on the current rendering target.
738
+ *
739
+ * \param renderer The renderer which should draw multiple lines.
740
+ * \param points The points along the lines
741
+ * \param count The number of points, drawing count-1 lines
742
+ *
743
+ * \return 0 on success, or -1 on error
744
+ */
745
+ extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer,
746
+ const SDL_Point * points,
747
+ int count);
748
+
749
+ /**
750
+ * \brief Draw a rectangle on the current rendering target.
751
+ *
752
+ * \param renderer The renderer which should draw a rectangle.
753
+ * \param rect A pointer to the destination rectangle, or NULL to outline the entire rendering target.
754
+ *
755
+ * \return 0 on success, or -1 on error
756
+ */
757
+ extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer,
758
+ const SDL_Rect * rect);
759
+
760
+ /**
761
+ * \brief Draw some number of rectangles on the current rendering target.
762
+ *
763
+ * \param renderer The renderer which should draw multiple rectangles.
764
+ * \param rects A pointer to an array of destination rectangles.
765
+ * \param count The number of rectangles.
766
+ *
767
+ * \return 0 on success, or -1 on error
768
+ */
769
+ extern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer,
770
+ const SDL_Rect * rects,
771
+ int count);
772
+
773
+ /**
774
+ * \brief Fill a rectangle on the current rendering target with the drawing color.
775
+ *
776
+ * \param renderer The renderer which should fill a rectangle.
777
+ * \param rect A pointer to the destination rectangle, or NULL for the entire
778
+ * rendering target.
779
+ *
780
+ * \return 0 on success, or -1 on error
781
+ */
782
+ extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer,
783
+ const SDL_Rect * rect);
784
+
785
+ /**
786
+ * \brief Fill some number of rectangles on the current rendering target with the drawing color.
787
+ *
788
+ * \param renderer The renderer which should fill multiple rectangles.
789
+ * \param rects A pointer to an array of destination rectangles.
790
+ * \param count The number of rectangles.
791
+ *
792
+ * \return 0 on success, or -1 on error
793
+ */
794
+ extern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer,
795
+ const SDL_Rect * rects,
796
+ int count);
797
+
798
+ /**
799
+ * \brief Copy a portion of the texture to the current rendering target.
800
+ *
801
+ * \param renderer The renderer which should copy parts of a texture.
802
+ * \param texture The source texture.
803
+ * \param srcrect A pointer to the source rectangle, or NULL for the entire
804
+ * texture.
805
+ * \param dstrect A pointer to the destination rectangle, or NULL for the
806
+ * entire rendering target.
807
+ *
808
+ * \return 0 on success, or -1 on error
809
+ */
810
+ extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer,
811
+ SDL_Texture * texture,
812
+ const SDL_Rect * srcrect,
813
+ const SDL_Rect * dstrect);
814
+
815
+ /**
816
+ * \brief Copy a portion of the source texture to the current rendering target, rotating it by angle around the given center
817
+ *
818
+ * \param renderer The renderer which should copy parts of a texture.
819
+ * \param texture The source texture.
820
+ * \param srcrect A pointer to the source rectangle, or NULL for the entire
821
+ * texture.
822
+ * \param dstrect A pointer to the destination rectangle, or NULL for the
823
+ * entire rendering target.
824
+ * \param angle An angle in degrees that indicates the rotation that will be applied to dstrect, rotating it in a clockwise direction
825
+ * \param center A pointer to a point indicating the point around which dstrect will be rotated (if NULL, rotation will be done around dstrect.w/2, dstrect.h/2).
826
+ * \param flip An SDL_RendererFlip value stating which flipping actions should be performed on the texture
827
+ *
828
+ * \return 0 on success, or -1 on error
829
+ */
830
+ extern DECLSPEC int SDLCALL SDL_RenderCopyEx(SDL_Renderer * renderer,
831
+ SDL_Texture * texture,
832
+ const SDL_Rect * srcrect,
833
+ const SDL_Rect * dstrect,
834
+ const double angle,
835
+ const SDL_Point *center,
836
+ const SDL_RendererFlip flip);
837
+
838
+ /**
839
+ * \brief Read pixels from the current rendering target.
840
+ *
841
+ * \param renderer The renderer from which pixels should be read.
842
+ * \param rect A pointer to the rectangle to read, or NULL for the entire
843
+ * render target.
844
+ * \param format The desired format of the pixel data, or 0 to use the format
845
+ * of the rendering target
846
+ * \param pixels A pointer to be filled in with the pixel data
847
+ * \param pitch The pitch of the pixels parameter.
848
+ *
849
+ * \return 0 on success, or -1 if pixel reading is not supported.
850
+ *
851
+ * \warning This is a very slow operation, and should not be used frequently.
852
+ */
853
+ extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer,
854
+ const SDL_Rect * rect,
855
+ Uint32 format,
856
+ void *pixels, int pitch);
857
+
858
+ /**
859
+ * \brief Update the screen with rendering performed.
860
+ */
861
+ extern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer);
862
+
863
+ /**
864
+ * \brief Destroy the specified texture.
865
+ *
866
+ * \sa SDL_CreateTexture()
867
+ * \sa SDL_CreateTextureFromSurface()
868
+ */
869
+ extern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture);
870
+
871
+ /**
872
+ * \brief Destroy the rendering context for a window and free associated
873
+ * textures.
874
+ *
875
+ * \sa SDL_CreateRenderer()
876
+ */
877
+ extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer);
878
+
879
+
880
+ /**
881
+ * \brief Bind the texture to the current OpenGL/ES/ES2 context for use with
882
+ * OpenGL instructions.
883
+ *
884
+ * \param texture The SDL texture to bind
885
+ * \param texw A pointer to a float that will be filled with the texture width
886
+ * \param texh A pointer to a float that will be filled with the texture height
887
+ *
888
+ * \return 0 on success, or -1 if the operation is not supported
889
+ */
890
+ extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh);
891
+
892
+ /**
893
+ * \brief Unbind a texture from the current OpenGL/ES/ES2 context.
894
+ *
895
+ * \param texture The SDL texture to unbind
896
+ *
897
+ * \return 0 on success, or -1 if the operation is not supported
898
+ */
899
+ extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture);
900
+
901
+ /**
902
+ * \brief Get the CAMetalLayer associated with the given Metal renderer
903
+ *
904
+ * \param renderer The renderer to query
905
+ *
906
+ * \return CAMetalLayer* on success, or NULL if the renderer isn't a Metal renderer
907
+ *
908
+ * \sa SDL_RenderGetMetalCommandEncoder()
909
+ */
910
+ extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer);
911
+
912
+ /**
913
+ * \brief Get the Metal command encoder for the current frame
914
+ *
915
+ * \param renderer The renderer to query
916
+ *
917
+ * \return id<MTLRenderCommandEncoder> on success, or NULL if the renderer isn't a Metal renderer
918
+ *
919
+ * \sa SDL_RenderGetMetalLayer()
920
+ */
921
+ extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer);
922
+
923
+ /* Ends C function definitions when using C++ */
924
+ #ifdef __cplusplus
925
+ }
926
+ #endif
927
+ #include "close_code.h"
928
+
929
+ #endif /* SDL_render_h_ */
930
+
931
+ /* vi: set ts=4 sw=4 expandtab: */