ruby2d-rpeck-windows 0.11.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (289) hide show
  1. checksums.yaml +7 -0
  2. data/assets/README.md +22 -0
  3. data/assets/Rakefile +85 -0
  4. data/assets/app.icns +0 -0
  5. data/assets/include/SDL2/SDL.h +138 -0
  6. data/assets/include/SDL2/SDL_assert.h +293 -0
  7. data/assets/include/SDL2/SDL_atomic.h +295 -0
  8. data/assets/include/SDL2/SDL_audio.h +859 -0
  9. data/assets/include/SDL2/SDL_bits.h +121 -0
  10. data/assets/include/SDL2/SDL_blendmode.h +123 -0
  11. data/assets/include/SDL2/SDL_clipboard.h +71 -0
  12. data/assets/include/SDL2/SDL_config.h +55 -0
  13. data/assets/include/SDL2/SDL_config_android.h +182 -0
  14. data/assets/include/SDL2/SDL_config_iphoneos.h +207 -0
  15. data/assets/include/SDL2/SDL_config_macosx.h +266 -0
  16. data/assets/include/SDL2/SDL_config_minimal.h +85 -0
  17. data/assets/include/SDL2/SDL_config_os2.h +188 -0
  18. data/assets/include/SDL2/SDL_config_pandora.h +135 -0
  19. data/assets/include/SDL2/SDL_config_psp.h +165 -0
  20. data/assets/include/SDL2/SDL_config_windows.h +288 -0
  21. data/assets/include/SDL2/SDL_config_winrt.h +243 -0
  22. data/assets/include/SDL2/SDL_config_wiz.h +149 -0
  23. data/assets/include/SDL2/SDL_copying.h +20 -0
  24. data/assets/include/SDL2/SDL_cpuinfo.h +299 -0
  25. data/assets/include/SDL2/SDL_egl.h +1676 -0
  26. data/assets/include/SDL2/SDL_endian.h +263 -0
  27. data/assets/include/SDL2/SDL_error.h +112 -0
  28. data/assets/include/SDL2/SDL_events.h +827 -0
  29. data/assets/include/SDL2/SDL_filesystem.h +136 -0
  30. data/assets/include/SDL2/SDL_gamecontroller.h +541 -0
  31. data/assets/include/SDL2/SDL_gesture.h +87 -0
  32. data/assets/include/SDL2/SDL_haptic.h +1247 -0
  33. data/assets/include/SDL2/SDL_hints.h +1578 -0
  34. data/assets/include/SDL2/SDL_image.h +161 -0
  35. data/assets/include/SDL2/SDL_joystick.h +499 -0
  36. data/assets/include/SDL2/SDL_keyboard.h +217 -0
  37. data/assets/include/SDL2/SDL_keycode.h +351 -0
  38. data/assets/include/SDL2/SDL_loadso.h +81 -0
  39. data/assets/include/SDL2/SDL_locale.h +101 -0
  40. data/assets/include/SDL2/SDL_log.h +211 -0
  41. data/assets/include/SDL2/SDL_main.h +180 -0
  42. data/assets/include/SDL2/SDL_messagebox.h +146 -0
  43. data/assets/include/SDL2/SDL_metal.h +117 -0
  44. data/assets/include/SDL2/SDL_misc.h +75 -0
  45. data/assets/include/SDL2/SDL_mixer.h +651 -0
  46. data/assets/include/SDL2/SDL_mouse.h +302 -0
  47. data/assets/include/SDL2/SDL_mutex.h +251 -0
  48. data/assets/include/SDL2/SDL_name.h +33 -0
  49. data/assets/include/SDL2/SDL_opengl.h +2183 -0
  50. data/assets/include/SDL2/SDL_opengl_glext.h +11180 -0
  51. data/assets/include/SDL2/SDL_opengles.h +39 -0
  52. data/assets/include/SDL2/SDL_opengles2.h +52 -0
  53. data/assets/include/SDL2/SDL_opengles2_gl2.h +621 -0
  54. data/assets/include/SDL2/SDL_opengles2_gl2ext.h +2050 -0
  55. data/assets/include/SDL2/SDL_opengles2_gl2platform.h +30 -0
  56. data/assets/include/SDL2/SDL_opengles2_khrplatform.h +282 -0
  57. data/assets/include/SDL2/SDL_pixels.h +479 -0
  58. data/assets/include/SDL2/SDL_platform.h +198 -0
  59. data/assets/include/SDL2/SDL_power.h +75 -0
  60. data/assets/include/SDL2/SDL_quit.h +58 -0
  61. data/assets/include/SDL2/SDL_rect.h +174 -0
  62. data/assets/include/SDL2/SDL_render.h +1158 -0
  63. data/assets/include/SDL2/SDL_revision.h +2 -0
  64. data/assets/include/SDL2/SDL_rwops.h +283 -0
  65. data/assets/include/SDL2/SDL_scancode.h +413 -0
  66. data/assets/include/SDL2/SDL_sensor.h +267 -0
  67. data/assets/include/SDL2/SDL_shape.h +144 -0
  68. data/assets/include/SDL2/SDL_stdinc.h +647 -0
  69. data/assets/include/SDL2/SDL_surface.h +563 -0
  70. data/assets/include/SDL2/SDL_system.h +325 -0
  71. data/assets/include/SDL2/SDL_syswm.h +354 -0
  72. data/assets/include/SDL2/SDL_test.h +69 -0
  73. data/assets/include/SDL2/SDL_test_assert.h +105 -0
  74. data/assets/include/SDL2/SDL_test_common.h +218 -0
  75. data/assets/include/SDL2/SDL_test_compare.h +69 -0
  76. data/assets/include/SDL2/SDL_test_crc32.h +124 -0
  77. data/assets/include/SDL2/SDL_test_font.h +81 -0
  78. data/assets/include/SDL2/SDL_test_fuzzer.h +384 -0
  79. data/assets/include/SDL2/SDL_test_harness.h +134 -0
  80. data/assets/include/SDL2/SDL_test_images.h +78 -0
  81. data/assets/include/SDL2/SDL_test_log.h +67 -0
  82. data/assets/include/SDL2/SDL_test_md5.h +129 -0
  83. data/assets/include/SDL2/SDL_test_memory.h +63 -0
  84. data/assets/include/SDL2/SDL_test_random.h +115 -0
  85. data/assets/include/SDL2/SDL_thread.h +366 -0
  86. data/assets/include/SDL2/SDL_timer.h +115 -0
  87. data/assets/include/SDL2/SDL_touch.h +102 -0
  88. data/assets/include/SDL2/SDL_ttf.h +294 -0
  89. data/assets/include/SDL2/SDL_types.h +29 -0
  90. data/assets/include/SDL2/SDL_version.h +162 -0
  91. data/assets/include/SDL2/SDL_video.h +1282 -0
  92. data/assets/include/SDL2/SDL_vulkan.h +276 -0
  93. data/assets/include/SDL2/begin_code.h +166 -0
  94. data/assets/include/SDL2/close_code.h +40 -0
  95. data/assets/include/glew.h +23686 -0
  96. data/assets/ios/Assets.xcassets/AppIcon.appiconset/Contents.json +98 -0
  97. data/assets/ios/Assets.xcassets/Contents.json +6 -0
  98. data/assets/ios/Base.lproj/LaunchScreen.storyboard +27 -0
  99. data/assets/ios/Info.plist +43 -0
  100. data/assets/ios/MRuby.framework/Headers/mrbconf.h +143 -0
  101. data/assets/ios/MRuby.framework/Headers/mruby/array.h +280 -0
  102. data/assets/ios/MRuby.framework/Headers/mruby/boxing_nan.h +102 -0
  103. data/assets/ios/MRuby.framework/Headers/mruby/boxing_no.h +56 -0
  104. data/assets/ios/MRuby.framework/Headers/mruby/boxing_word.h +144 -0
  105. data/assets/ios/MRuby.framework/Headers/mruby/class.h +97 -0
  106. data/assets/ios/MRuby.framework/Headers/mruby/common.h +77 -0
  107. data/assets/ios/MRuby.framework/Headers/mruby/compile.h +195 -0
  108. data/assets/ios/MRuby.framework/Headers/mruby/data.h +75 -0
  109. data/assets/ios/MRuby.framework/Headers/mruby/debug.h +67 -0
  110. data/assets/ios/MRuby.framework/Headers/mruby/dump.h +196 -0
  111. data/assets/ios/MRuby.framework/Headers/mruby/error.h +75 -0
  112. data/assets/ios/MRuby.framework/Headers/mruby/gc.h +91 -0
  113. data/assets/ios/MRuby.framework/Headers/mruby/hash.h +215 -0
  114. data/assets/ios/MRuby.framework/Headers/mruby/irep.h +75 -0
  115. data/assets/ios/MRuby.framework/Headers/mruby/istruct.h +47 -0
  116. data/assets/ios/MRuby.framework/Headers/mruby/khash.h +274 -0
  117. data/assets/ios/MRuby.framework/Headers/mruby/numeric.h +161 -0
  118. data/assets/ios/MRuby.framework/Headers/mruby/object.h +44 -0
  119. data/assets/ios/MRuby.framework/Headers/mruby/opcode.h +69 -0
  120. data/assets/ios/MRuby.framework/Headers/mruby/ops.h +117 -0
  121. data/assets/ios/MRuby.framework/Headers/mruby/proc.h +131 -0
  122. data/assets/ios/MRuby.framework/Headers/mruby/range.h +49 -0
  123. data/assets/ios/MRuby.framework/Headers/mruby/re.h +16 -0
  124. data/assets/ios/MRuby.framework/Headers/mruby/string.h +444 -0
  125. data/assets/ios/MRuby.framework/Headers/mruby/throw.h +55 -0
  126. data/assets/ios/MRuby.framework/Headers/mruby/value.h +309 -0
  127. data/assets/ios/MRuby.framework/Headers/mruby/variable.h +136 -0
  128. data/assets/ios/MRuby.framework/Headers/mruby/version.h +110 -0
  129. data/assets/ios/MRuby.framework/Headers/mruby.h +1282 -0
  130. data/assets/ios/MRuby.framework/Info.plist +20 -0
  131. data/assets/ios/MRuby.framework/MRuby +0 -0
  132. data/assets/ios/MyApp.xcodeproj/project.pbxproj +368 -0
  133. data/assets/ios/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  134. data/assets/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  135. data/assets/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +30 -0
  136. data/assets/ios/main.c +1 -0
  137. data/assets/macos/lib/libFLAC.a +0 -0
  138. data/assets/macos/lib/libSDL2.a +0 -0
  139. data/assets/macos/lib/libSDL2_image.a +0 -0
  140. data/assets/macos/lib/libSDL2_mixer.a +0 -0
  141. data/assets/macos/lib/libSDL2_ttf.a +0 -0
  142. data/assets/macos/lib/libfreetype.a +0 -0
  143. data/assets/macos/lib/libjpeg.a +0 -0
  144. data/assets/macos/lib/libmodplug.a +0 -0
  145. data/assets/macos/lib/libmpg123.a +0 -0
  146. data/assets/macos/lib/libogg.a +0 -0
  147. data/assets/macos/lib/libpng16.a +0 -0
  148. data/assets/macos/lib/libtiff.a +0 -0
  149. data/assets/macos/lib/libvorbis.a +0 -0
  150. data/assets/macos/lib/libvorbisfile.a +0 -0
  151. data/assets/macos/lib/libwebp.a +0 -0
  152. data/assets/mingw/bin/SDL2.dll +0 -0
  153. data/assets/mingw/bin/SDL2_image.dll +0 -0
  154. data/assets/mingw/bin/SDL2_mixer.dll +0 -0
  155. data/assets/mingw/bin/SDL2_ttf.dll +0 -0
  156. data/assets/mingw/bin/glew32.dll +0 -0
  157. data/assets/mingw/bin/libFLAC-8.dll +0 -0
  158. data/assets/mingw/bin/libfreetype-6.dll +0 -0
  159. data/assets/mingw/bin/libjpeg-9.dll +0 -0
  160. data/assets/mingw/bin/libmodplug-1.dll +0 -0
  161. data/assets/mingw/bin/libmpg123-0.dll +0 -0
  162. data/assets/mingw/bin/libogg-0.dll +0 -0
  163. data/assets/mingw/bin/libopus-0.dll +0 -0
  164. data/assets/mingw/bin/libopusfile-0.dll +0 -0
  165. data/assets/mingw/bin/libpng16-16.dll +0 -0
  166. data/assets/mingw/bin/libtiff-5.dll +0 -0
  167. data/assets/mingw/bin/libvorbis-0.dll +0 -0
  168. data/assets/mingw/bin/libvorbisfile-3.dll +0 -0
  169. data/assets/mingw/bin/libwebp-7.dll +0 -0
  170. data/assets/mingw/bin/libwinpthread-1.dll +0 -0
  171. data/assets/mingw/bin/zlib1.dll +0 -0
  172. data/assets/mingw/lib/libSDL2.a +0 -0
  173. data/assets/mingw/lib/libSDL2.dll.a +0 -0
  174. data/assets/mingw/lib/libSDL2_image.a +0 -0
  175. data/assets/mingw/lib/libSDL2_image.dll.a +0 -0
  176. data/assets/mingw/lib/libSDL2_mixer.a +0 -0
  177. data/assets/mingw/lib/libSDL2_mixer.dll.a +0 -0
  178. data/assets/mingw/lib/libSDL2_test.a +0 -0
  179. data/assets/mingw/lib/libSDL2_ttf.a +0 -0
  180. data/assets/mingw/lib/libSDL2_ttf.dll.a +0 -0
  181. data/assets/mingw/lib/libSDL2main.a +0 -0
  182. data/assets/mingw/lib/libglew32.a +0 -0
  183. data/assets/mingw/lib/libglew32.dll.a +0 -0
  184. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +16 -0
  185. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json +6 -0
  186. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json +17 -0
  187. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +16 -0
  188. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json +6 -0
  189. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +16 -0
  190. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json +6 -0
  191. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +16 -0
  192. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json +6 -0
  193. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json +17 -0
  194. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +16 -0
  195. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json +6 -0
  196. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +16 -0
  197. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json +6 -0
  198. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json +32 -0
  199. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json +16 -0
  200. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json +16 -0
  201. data/assets/tvos/Assets.xcassets/Contents.json +6 -0
  202. data/assets/tvos/Assets.xcassets/LaunchImage.launchimage/Contents.json +22 -0
  203. data/assets/tvos/Info.plist +30 -0
  204. data/assets/tvos/MRuby.framework/Headers/mrbconf.h +143 -0
  205. data/assets/tvos/MRuby.framework/Headers/mruby/array.h +280 -0
  206. data/assets/tvos/MRuby.framework/Headers/mruby/boxing_nan.h +102 -0
  207. data/assets/tvos/MRuby.framework/Headers/mruby/boxing_no.h +56 -0
  208. data/assets/tvos/MRuby.framework/Headers/mruby/boxing_word.h +144 -0
  209. data/assets/tvos/MRuby.framework/Headers/mruby/class.h +97 -0
  210. data/assets/tvos/MRuby.framework/Headers/mruby/common.h +77 -0
  211. data/assets/tvos/MRuby.framework/Headers/mruby/compile.h +195 -0
  212. data/assets/tvos/MRuby.framework/Headers/mruby/data.h +75 -0
  213. data/assets/tvos/MRuby.framework/Headers/mruby/debug.h +67 -0
  214. data/assets/tvos/MRuby.framework/Headers/mruby/dump.h +196 -0
  215. data/assets/tvos/MRuby.framework/Headers/mruby/error.h +75 -0
  216. data/assets/tvos/MRuby.framework/Headers/mruby/gc.h +91 -0
  217. data/assets/tvos/MRuby.framework/Headers/mruby/hash.h +215 -0
  218. data/assets/tvos/MRuby.framework/Headers/mruby/irep.h +75 -0
  219. data/assets/tvos/MRuby.framework/Headers/mruby/istruct.h +47 -0
  220. data/assets/tvos/MRuby.framework/Headers/mruby/khash.h +274 -0
  221. data/assets/tvos/MRuby.framework/Headers/mruby/numeric.h +161 -0
  222. data/assets/tvos/MRuby.framework/Headers/mruby/object.h +44 -0
  223. data/assets/tvos/MRuby.framework/Headers/mruby/opcode.h +69 -0
  224. data/assets/tvos/MRuby.framework/Headers/mruby/ops.h +117 -0
  225. data/assets/tvos/MRuby.framework/Headers/mruby/proc.h +131 -0
  226. data/assets/tvos/MRuby.framework/Headers/mruby/range.h +49 -0
  227. data/assets/tvos/MRuby.framework/Headers/mruby/re.h +16 -0
  228. data/assets/tvos/MRuby.framework/Headers/mruby/string.h +444 -0
  229. data/assets/tvos/MRuby.framework/Headers/mruby/throw.h +55 -0
  230. data/assets/tvos/MRuby.framework/Headers/mruby/value.h +309 -0
  231. data/assets/tvos/MRuby.framework/Headers/mruby/variable.h +136 -0
  232. data/assets/tvos/MRuby.framework/Headers/mruby/version.h +110 -0
  233. data/assets/tvos/MRuby.framework/Headers/mruby.h +1282 -0
  234. data/assets/tvos/MRuby.framework/Info.plist +20 -0
  235. data/assets/tvos/MRuby.framework/MRuby +0 -0
  236. data/assets/tvos/MyApp.xcodeproj/project.pbxproj +350 -0
  237. data/assets/tvos/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  238. data/assets/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  239. data/assets/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +30 -0
  240. data/assets/tvos/main.c +1 -0
  241. data/bin/ruby2d +142 -0
  242. data/ext/ruby2d/common.c +185 -0
  243. data/ext/ruby2d/controllers.c +110 -0
  244. data/ext/ruby2d/extconf.rb +147 -0
  245. data/ext/ruby2d/font.c +35 -0
  246. data/ext/ruby2d/gl.c +398 -0
  247. data/ext/ruby2d/gl2.c +86 -0
  248. data/ext/ruby2d/gl3.c +305 -0
  249. data/ext/ruby2d/gles.c +249 -0
  250. data/ext/ruby2d/image.c +58 -0
  251. data/ext/ruby2d/input.c +48 -0
  252. data/ext/ruby2d/music.c +127 -0
  253. data/ext/ruby2d/ruby2d.c +1374 -0
  254. data/ext/ruby2d/ruby2d.h +656 -0
  255. data/ext/ruby2d/shapes.c +154 -0
  256. data/ext/ruby2d/sound.c +118 -0
  257. data/ext/ruby2d/text.c +22 -0
  258. data/ext/ruby2d/window.c +414 -0
  259. data/lib/ruby2d/circle.rb +43 -0
  260. data/lib/ruby2d/cli/build.rb +237 -0
  261. data/lib/ruby2d/cli/colorize.rb +10 -0
  262. data/lib/ruby2d/cli/console.rb +65 -0
  263. data/lib/ruby2d/cli/enable_console.rb +5 -0
  264. data/lib/ruby2d/cli/launch.rb +50 -0
  265. data/lib/ruby2d/color.rb +136 -0
  266. data/lib/ruby2d/dsl.rb +46 -0
  267. data/lib/ruby2d/entity.rb +17 -0
  268. data/lib/ruby2d/exceptions.rb +6 -0
  269. data/lib/ruby2d/font.rb +96 -0
  270. data/lib/ruby2d/image.rb +58 -0
  271. data/lib/ruby2d/line.rb +89 -0
  272. data/lib/ruby2d/music.rb +67 -0
  273. data/lib/ruby2d/pixel.rb +17 -0
  274. data/lib/ruby2d/quad.rb +96 -0
  275. data/lib/ruby2d/rectangle.rb +65 -0
  276. data/lib/ruby2d/renderable.rb +40 -0
  277. data/lib/ruby2d/ruby2d.so +0 -0
  278. data/lib/ruby2d/sound.rb +55 -0
  279. data/lib/ruby2d/sprite.rb +232 -0
  280. data/lib/ruby2d/square.rb +37 -0
  281. data/lib/ruby2d/text.rb +76 -0
  282. data/lib/ruby2d/texture.rb +28 -0
  283. data/lib/ruby2d/tileset.rb +87 -0
  284. data/lib/ruby2d/triangle.rb +82 -0
  285. data/lib/ruby2d/version.rb +5 -0
  286. data/lib/ruby2d/vertices.rb +84 -0
  287. data/lib/ruby2d/window.rb +673 -0
  288. data/lib/ruby2d.rb +69 -0
  289. metadata +346 -0
@@ -0,0 +1,1282 @@
1
+ /*
2
+ Simple DirectMedia Layer
3
+ Copyright (C) 1997-2020 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_video.h
24
+ *
25
+ * Header file for SDL video functions.
26
+ */
27
+
28
+ #ifndef SDL_video_h_
29
+ #define SDL_video_h_
30
+
31
+ #include "SDL_stdinc.h"
32
+ #include "SDL_pixels.h"
33
+ #include "SDL_rect.h"
34
+ #include "SDL_surface.h"
35
+
36
+ #include "begin_code.h"
37
+ /* Set up for C function definitions, even when using C++ */
38
+ #ifdef __cplusplus
39
+ extern "C" {
40
+ #endif
41
+
42
+ /**
43
+ * \brief The structure that defines a display mode
44
+ *
45
+ * \sa SDL_GetNumDisplayModes()
46
+ * \sa SDL_GetDisplayMode()
47
+ * \sa SDL_GetDesktopDisplayMode()
48
+ * \sa SDL_GetCurrentDisplayMode()
49
+ * \sa SDL_GetClosestDisplayMode()
50
+ * \sa SDL_SetWindowDisplayMode()
51
+ * \sa SDL_GetWindowDisplayMode()
52
+ */
53
+ typedef struct
54
+ {
55
+ Uint32 format; /**< pixel format */
56
+ int w; /**< width, in screen coordinates */
57
+ int h; /**< height, in screen coordinates */
58
+ int refresh_rate; /**< refresh rate (or zero for unspecified) */
59
+ void *driverdata; /**< driver-specific data, initialize to 0 */
60
+ } SDL_DisplayMode;
61
+
62
+ /**
63
+ * \brief The type used to identify a window
64
+ *
65
+ * \sa SDL_CreateWindow()
66
+ * \sa SDL_CreateWindowFrom()
67
+ * \sa SDL_DestroyWindow()
68
+ * \sa SDL_GetWindowData()
69
+ * \sa SDL_GetWindowFlags()
70
+ * \sa SDL_GetWindowGrab()
71
+ * \sa SDL_GetWindowPosition()
72
+ * \sa SDL_GetWindowSize()
73
+ * \sa SDL_GetWindowTitle()
74
+ * \sa SDL_HideWindow()
75
+ * \sa SDL_MaximizeWindow()
76
+ * \sa SDL_MinimizeWindow()
77
+ * \sa SDL_RaiseWindow()
78
+ * \sa SDL_RestoreWindow()
79
+ * \sa SDL_SetWindowData()
80
+ * \sa SDL_SetWindowFullscreen()
81
+ * \sa SDL_SetWindowGrab()
82
+ * \sa SDL_SetWindowIcon()
83
+ * \sa SDL_SetWindowPosition()
84
+ * \sa SDL_SetWindowSize()
85
+ * \sa SDL_SetWindowBordered()
86
+ * \sa SDL_SetWindowResizable()
87
+ * \sa SDL_SetWindowTitle()
88
+ * \sa SDL_ShowWindow()
89
+ */
90
+ typedef struct SDL_Window SDL_Window;
91
+
92
+ /**
93
+ * \brief The flags on a window
94
+ *
95
+ * \sa SDL_GetWindowFlags()
96
+ */
97
+ typedef enum
98
+ {
99
+ SDL_WINDOW_FULLSCREEN = 0x00000001, /**< fullscreen window */
100
+ SDL_WINDOW_OPENGL = 0x00000002, /**< window usable with OpenGL context */
101
+ SDL_WINDOW_SHOWN = 0x00000004, /**< window is visible */
102
+ SDL_WINDOW_HIDDEN = 0x00000008, /**< window is not visible */
103
+ SDL_WINDOW_BORDERLESS = 0x00000010, /**< no window decoration */
104
+ SDL_WINDOW_RESIZABLE = 0x00000020, /**< window can be resized */
105
+ SDL_WINDOW_MINIMIZED = 0x00000040, /**< window is minimized */
106
+ SDL_WINDOW_MAXIMIZED = 0x00000080, /**< window is maximized */
107
+ SDL_WINDOW_INPUT_GRABBED = 0x00000100, /**< window has grabbed input focus */
108
+ SDL_WINDOW_INPUT_FOCUS = 0x00000200, /**< window has input focus */
109
+ SDL_WINDOW_MOUSE_FOCUS = 0x00000400, /**< window has mouse focus */
110
+ SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ),
111
+ SDL_WINDOW_FOREIGN = 0x00000800, /**< window not created by SDL */
112
+ SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000, /**< window should be created in high-DPI mode if supported.
113
+ On macOS NSHighResolutionCapable must be set true in the
114
+ application's Info.plist for this to have any effect. */
115
+ SDL_WINDOW_MOUSE_CAPTURE = 0x00004000, /**< window has mouse captured (unrelated to INPUT_GRABBED) */
116
+ SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000, /**< window should always be above others */
117
+ SDL_WINDOW_SKIP_TASKBAR = 0x00010000, /**< window should not be added to the taskbar */
118
+ SDL_WINDOW_UTILITY = 0x00020000, /**< window should be treated as a utility window */
119
+ SDL_WINDOW_TOOLTIP = 0x00040000, /**< window should be treated as a tooltip */
120
+ SDL_WINDOW_POPUP_MENU = 0x00080000, /**< window should be treated as a popup menu */
121
+ SDL_WINDOW_VULKAN = 0x10000000, /**< window usable for Vulkan surface */
122
+ SDL_WINDOW_METAL = 0x20000000 /**< window usable for Metal view */
123
+ } SDL_WindowFlags;
124
+
125
+ /**
126
+ * \brief Used to indicate that you don't care what the window position is.
127
+ */
128
+ #define SDL_WINDOWPOS_UNDEFINED_MASK 0x1FFF0000u
129
+ #define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X) (SDL_WINDOWPOS_UNDEFINED_MASK|(X))
130
+ #define SDL_WINDOWPOS_UNDEFINED SDL_WINDOWPOS_UNDEFINED_DISPLAY(0)
131
+ #define SDL_WINDOWPOS_ISUNDEFINED(X) \
132
+ (((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK)
133
+
134
+ /**
135
+ * \brief Used to indicate that the window position should be centered.
136
+ */
137
+ #define SDL_WINDOWPOS_CENTERED_MASK 0x2FFF0000u
138
+ #define SDL_WINDOWPOS_CENTERED_DISPLAY(X) (SDL_WINDOWPOS_CENTERED_MASK|(X))
139
+ #define SDL_WINDOWPOS_CENTERED SDL_WINDOWPOS_CENTERED_DISPLAY(0)
140
+ #define SDL_WINDOWPOS_ISCENTERED(X) \
141
+ (((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK)
142
+
143
+ /**
144
+ * \brief Event subtype for window events
145
+ */
146
+ typedef enum
147
+ {
148
+ SDL_WINDOWEVENT_NONE, /**< Never used */
149
+ SDL_WINDOWEVENT_SHOWN, /**< Window has been shown */
150
+ SDL_WINDOWEVENT_HIDDEN, /**< Window has been hidden */
151
+ SDL_WINDOWEVENT_EXPOSED, /**< Window has been exposed and should be
152
+ redrawn */
153
+ SDL_WINDOWEVENT_MOVED, /**< Window has been moved to data1, data2
154
+ */
155
+ SDL_WINDOWEVENT_RESIZED, /**< Window has been resized to data1xdata2 */
156
+ SDL_WINDOWEVENT_SIZE_CHANGED, /**< The window size has changed, either as
157
+ a result of an API call or through the
158
+ system or user changing the window size. */
159
+ SDL_WINDOWEVENT_MINIMIZED, /**< Window has been minimized */
160
+ SDL_WINDOWEVENT_MAXIMIZED, /**< Window has been maximized */
161
+ SDL_WINDOWEVENT_RESTORED, /**< Window has been restored to normal size
162
+ and position */
163
+ SDL_WINDOWEVENT_ENTER, /**< Window has gained mouse focus */
164
+ SDL_WINDOWEVENT_LEAVE, /**< Window has lost mouse focus */
165
+ SDL_WINDOWEVENT_FOCUS_GAINED, /**< Window has gained keyboard focus */
166
+ SDL_WINDOWEVENT_FOCUS_LOST, /**< Window has lost keyboard focus */
167
+ SDL_WINDOWEVENT_CLOSE, /**< The window manager requests that the window be closed */
168
+ SDL_WINDOWEVENT_TAKE_FOCUS, /**< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) */
169
+ SDL_WINDOWEVENT_HIT_TEST /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL. */
170
+ } SDL_WindowEventID;
171
+
172
+ /**
173
+ * \brief Event subtype for display events
174
+ */
175
+ typedef enum
176
+ {
177
+ SDL_DISPLAYEVENT_NONE, /**< Never used */
178
+ SDL_DISPLAYEVENT_ORIENTATION, /**< Display orientation has changed to data1 */
179
+ SDL_DISPLAYEVENT_CONNECTED, /**< Display has been added to the system */
180
+ SDL_DISPLAYEVENT_DISCONNECTED /**< Display has been removed from the system */
181
+ } SDL_DisplayEventID;
182
+
183
+ typedef enum
184
+ {
185
+ SDL_ORIENTATION_UNKNOWN, /**< The display orientation can't be determined */
186
+ SDL_ORIENTATION_LANDSCAPE, /**< The display is in landscape mode, with the right side up, relative to portrait mode */
187
+ SDL_ORIENTATION_LANDSCAPE_FLIPPED, /**< The display is in landscape mode, with the left side up, relative to portrait mode */
188
+ SDL_ORIENTATION_PORTRAIT, /**< The display is in portrait mode */
189
+ SDL_ORIENTATION_PORTRAIT_FLIPPED /**< The display is in portrait mode, upside down */
190
+ } SDL_DisplayOrientation;
191
+
192
+ /**
193
+ * \brief An opaque handle to an OpenGL context.
194
+ */
195
+ typedef void *SDL_GLContext;
196
+
197
+ /**
198
+ * \brief OpenGL configuration attributes
199
+ */
200
+ typedef enum
201
+ {
202
+ SDL_GL_RED_SIZE,
203
+ SDL_GL_GREEN_SIZE,
204
+ SDL_GL_BLUE_SIZE,
205
+ SDL_GL_ALPHA_SIZE,
206
+ SDL_GL_BUFFER_SIZE,
207
+ SDL_GL_DOUBLEBUFFER,
208
+ SDL_GL_DEPTH_SIZE,
209
+ SDL_GL_STENCIL_SIZE,
210
+ SDL_GL_ACCUM_RED_SIZE,
211
+ SDL_GL_ACCUM_GREEN_SIZE,
212
+ SDL_GL_ACCUM_BLUE_SIZE,
213
+ SDL_GL_ACCUM_ALPHA_SIZE,
214
+ SDL_GL_STEREO,
215
+ SDL_GL_MULTISAMPLEBUFFERS,
216
+ SDL_GL_MULTISAMPLESAMPLES,
217
+ SDL_GL_ACCELERATED_VISUAL,
218
+ SDL_GL_RETAINED_BACKING,
219
+ SDL_GL_CONTEXT_MAJOR_VERSION,
220
+ SDL_GL_CONTEXT_MINOR_VERSION,
221
+ SDL_GL_CONTEXT_EGL,
222
+ SDL_GL_CONTEXT_FLAGS,
223
+ SDL_GL_CONTEXT_PROFILE_MASK,
224
+ SDL_GL_SHARE_WITH_CURRENT_CONTEXT,
225
+ SDL_GL_FRAMEBUFFER_SRGB_CAPABLE,
226
+ SDL_GL_CONTEXT_RELEASE_BEHAVIOR,
227
+ SDL_GL_CONTEXT_RESET_NOTIFICATION,
228
+ SDL_GL_CONTEXT_NO_ERROR
229
+ } SDL_GLattr;
230
+
231
+ typedef enum
232
+ {
233
+ SDL_GL_CONTEXT_PROFILE_CORE = 0x0001,
234
+ SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = 0x0002,
235
+ SDL_GL_CONTEXT_PROFILE_ES = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */
236
+ } SDL_GLprofile;
237
+
238
+ typedef enum
239
+ {
240
+ SDL_GL_CONTEXT_DEBUG_FLAG = 0x0001,
241
+ SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002,
242
+ SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG = 0x0004,
243
+ SDL_GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008
244
+ } SDL_GLcontextFlag;
245
+
246
+ typedef enum
247
+ {
248
+ SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE = 0x0000,
249
+ SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x0001
250
+ } SDL_GLcontextReleaseFlag;
251
+
252
+ typedef enum
253
+ {
254
+ SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000,
255
+ SDL_GL_CONTEXT_RESET_LOSE_CONTEXT = 0x0001
256
+ } SDL_GLContextResetNotification;
257
+
258
+ /* Function prototypes */
259
+
260
+ /**
261
+ * \brief Get the number of video drivers compiled into SDL
262
+ *
263
+ * \sa SDL_GetVideoDriver()
264
+ */
265
+ extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void);
266
+
267
+ /**
268
+ * \brief Get the name of a built in video driver.
269
+ *
270
+ * \note The video drivers are presented in the order in which they are
271
+ * normally checked during initialization.
272
+ *
273
+ * \sa SDL_GetNumVideoDrivers()
274
+ */
275
+ extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index);
276
+
277
+ /**
278
+ * \brief Initialize the video subsystem, optionally specifying a video driver.
279
+ *
280
+ * \param driver_name Initialize a specific driver by name, or NULL for the
281
+ * default video driver.
282
+ *
283
+ * \return 0 on success, -1 on error
284
+ *
285
+ * This function initializes the video subsystem; setting up a connection
286
+ * to the window manager, etc, and determines the available display modes
287
+ * and pixel formats, but does not initialize a window or graphics mode.
288
+ *
289
+ * \sa SDL_VideoQuit()
290
+ */
291
+ extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name);
292
+
293
+ /**
294
+ * \brief Shuts down the video subsystem.
295
+ *
296
+ * This function closes all windows, and restores the original video mode.
297
+ *
298
+ * \sa SDL_VideoInit()
299
+ */
300
+ extern DECLSPEC void SDLCALL SDL_VideoQuit(void);
301
+
302
+ /**
303
+ * \brief Returns the name of the currently initialized video driver.
304
+ *
305
+ * \return The name of the current video driver or NULL if no driver
306
+ * has been initialized
307
+ *
308
+ * \sa SDL_GetNumVideoDrivers()
309
+ * \sa SDL_GetVideoDriver()
310
+ */
311
+ extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void);
312
+
313
+ /**
314
+ * \brief Returns the number of available video displays.
315
+ *
316
+ * \sa SDL_GetDisplayBounds()
317
+ */
318
+ extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void);
319
+
320
+ /**
321
+ * \brief Get the name of a display in UTF-8 encoding
322
+ *
323
+ * \return The name of a display, or NULL for an invalid display index.
324
+ *
325
+ * \sa SDL_GetNumVideoDisplays()
326
+ */
327
+ extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex);
328
+
329
+ /**
330
+ * \brief Get the desktop area represented by a display, with the primary
331
+ * display located at 0,0
332
+ *
333
+ * \return 0 on success, or -1 if the index is out of range.
334
+ *
335
+ * \sa SDL_GetNumVideoDisplays()
336
+ */
337
+ extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect);
338
+
339
+ /**
340
+ * \brief Get the usable desktop area represented by a display, with the
341
+ * primary display located at 0,0
342
+ *
343
+ * This is the same area as SDL_GetDisplayBounds() reports, but with portions
344
+ * reserved by the system removed. For example, on Mac OS X, this subtracts
345
+ * the area occupied by the menu bar and dock.
346
+ *
347
+ * Setting a window to be fullscreen generally bypasses these unusable areas,
348
+ * so these are good guidelines for the maximum space available to a
349
+ * non-fullscreen window.
350
+ *
351
+ * \return 0 on success, or -1 if the index is out of range.
352
+ *
353
+ * \sa SDL_GetDisplayBounds()
354
+ * \sa SDL_GetNumVideoDisplays()
355
+ */
356
+ extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect);
357
+
358
+ /**
359
+ * \brief Get the dots/pixels-per-inch for a display
360
+ *
361
+ * \note Diagonal, horizontal and vertical DPI can all be optionally
362
+ * returned if the parameter is non-NULL.
363
+ *
364
+ * \return 0 on success, or -1 if no DPI information is available or the index is out of range.
365
+ *
366
+ * \sa SDL_GetNumVideoDisplays()
367
+ */
368
+ extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi);
369
+
370
+ /**
371
+ * \brief Get the orientation of a display
372
+ *
373
+ * \return The orientation of the display, or SDL_ORIENTATION_UNKNOWN if it isn't available.
374
+ *
375
+ * \sa SDL_GetNumVideoDisplays()
376
+ */
377
+ extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex);
378
+
379
+ /**
380
+ * \brief Returns the number of available display modes.
381
+ *
382
+ * \sa SDL_GetDisplayMode()
383
+ */
384
+ extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex);
385
+
386
+ /**
387
+ * \brief Fill in information about a specific display mode.
388
+ *
389
+ * \note The display modes are sorted in this priority:
390
+ * \li bits per pixel -> more colors to fewer colors
391
+ * \li width -> largest to smallest
392
+ * \li height -> largest to smallest
393
+ * \li refresh rate -> highest to lowest
394
+ *
395
+ * \sa SDL_GetNumDisplayModes()
396
+ */
397
+ extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex,
398
+ SDL_DisplayMode * mode);
399
+
400
+ /**
401
+ * \brief Fill in information about the desktop display mode.
402
+ */
403
+ extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode);
404
+
405
+ /**
406
+ * \brief Fill in information about the current display mode.
407
+ */
408
+ extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode);
409
+
410
+
411
+ /**
412
+ * \brief Get the closest match to the requested display mode.
413
+ *
414
+ * \param displayIndex The index of display from which mode should be queried.
415
+ * \param mode The desired display mode
416
+ * \param closest A pointer to a display mode to be filled in with the closest
417
+ * match of the available display modes.
418
+ *
419
+ * \return The passed in value \c closest, or NULL if no matching video mode
420
+ * was available.
421
+ *
422
+ * The available display modes are scanned, and \c closest is filled in with the
423
+ * closest mode matching the requested mode and returned. The mode format and
424
+ * refresh_rate default to the desktop mode if they are 0. The modes are
425
+ * scanned with size being first priority, format being second priority, and
426
+ * finally checking the refresh_rate. If all the available modes are too
427
+ * small, then NULL is returned.
428
+ *
429
+ * \sa SDL_GetNumDisplayModes()
430
+ * \sa SDL_GetDisplayMode()
431
+ */
432
+ extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest);
433
+
434
+ /**
435
+ * \brief Get the display index associated with a window.
436
+ *
437
+ * \return the display index of the display containing the center of the
438
+ * window, or -1 on error.
439
+ */
440
+ extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window);
441
+
442
+ /**
443
+ * \brief Set the display mode used when a fullscreen window is visible.
444
+ *
445
+ * By default the window's dimensions and the desktop format and refresh rate
446
+ * are used.
447
+ *
448
+ * \param window The window for which the display mode should be set.
449
+ * \param mode The mode to use, or NULL for the default mode.
450
+ *
451
+ * \return 0 on success, or -1 if setting the display mode failed.
452
+ *
453
+ * \sa SDL_GetWindowDisplayMode()
454
+ * \sa SDL_SetWindowFullscreen()
455
+ */
456
+ extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window,
457
+ const SDL_DisplayMode
458
+ * mode);
459
+
460
+ /**
461
+ * \brief Fill in information about the display mode used when a fullscreen
462
+ * window is visible.
463
+ *
464
+ * \sa SDL_SetWindowDisplayMode()
465
+ * \sa SDL_SetWindowFullscreen()
466
+ */
467
+ extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window,
468
+ SDL_DisplayMode * mode);
469
+
470
+ /**
471
+ * \brief Get the pixel format associated with the window.
472
+ */
473
+ extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window);
474
+
475
+ /**
476
+ * \brief Create a window with the specified position, dimensions, and flags.
477
+ *
478
+ * \param title The title of the window, in UTF-8 encoding.
479
+ * \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or
480
+ * ::SDL_WINDOWPOS_UNDEFINED.
481
+ * \param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or
482
+ * ::SDL_WINDOWPOS_UNDEFINED.
483
+ * \param w The width of the window, in screen coordinates.
484
+ * \param h The height of the window, in screen coordinates.
485
+ * \param flags The flags for the window, a mask of any of the following:
486
+ * ::SDL_WINDOW_FULLSCREEN, ::SDL_WINDOW_OPENGL,
487
+ * ::SDL_WINDOW_HIDDEN, ::SDL_WINDOW_BORDERLESS,
488
+ * ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED,
489
+ * ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_INPUT_GRABBED,
490
+ * ::SDL_WINDOW_ALLOW_HIGHDPI, ::SDL_WINDOW_VULKAN
491
+ * ::SDL_WINDOW_METAL.
492
+ *
493
+ * \return The created window, or NULL if window creation failed.
494
+ *
495
+ * If the window is created with the SDL_WINDOW_ALLOW_HIGHDPI flag, its size
496
+ * in pixels may differ from its size in screen coordinates on platforms with
497
+ * high-DPI support (e.g. iOS and Mac OS X). Use SDL_GetWindowSize() to query
498
+ * the client area's size in screen coordinates, and SDL_GL_GetDrawableSize(),
499
+ * SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to query the
500
+ * drawable size in pixels.
501
+ *
502
+ * If the window is created with any of the SDL_WINDOW_OPENGL or
503
+ * SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function
504
+ * (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the
505
+ * corresponding UnloadLibrary function is called by SDL_DestroyWindow().
506
+ *
507
+ * If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver,
508
+ * SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail.
509
+ *
510
+ * If SDL_WINDOW_METAL is specified on an OS that does not support Metal,
511
+ * SDL_CreateWindow() will fail.
512
+ *
513
+ * \note On non-Apple devices, SDL requires you to either not link to the
514
+ * Vulkan loader or link to a dynamic library version. This limitation
515
+ * may be removed in a future version of SDL.
516
+ *
517
+ * \sa SDL_DestroyWindow()
518
+ * \sa SDL_GL_LoadLibrary()
519
+ * \sa SDL_Vulkan_LoadLibrary()
520
+ */
521
+ extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title,
522
+ int x, int y, int w,
523
+ int h, Uint32 flags);
524
+
525
+ /**
526
+ * \brief Create an SDL window from an existing native window.
527
+ *
528
+ * \param data A pointer to driver-dependent window creation data
529
+ *
530
+ * \return The created window, or NULL if window creation failed.
531
+ *
532
+ * \sa SDL_DestroyWindow()
533
+ */
534
+ extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data);
535
+
536
+ /**
537
+ * \brief Get the numeric ID of a window, for logging purposes.
538
+ */
539
+ extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window);
540
+
541
+ /**
542
+ * \brief Get a window from a stored ID, or NULL if it doesn't exist.
543
+ */
544
+ extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id);
545
+
546
+ /**
547
+ * \brief Get the window flags.
548
+ */
549
+ extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window);
550
+
551
+ /**
552
+ * \brief Set the title of a window, in UTF-8 format.
553
+ *
554
+ * \sa SDL_GetWindowTitle()
555
+ */
556
+ extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window,
557
+ const char *title);
558
+
559
+ /**
560
+ * \brief Get the title of a window, in UTF-8 format.
561
+ *
562
+ * \sa SDL_SetWindowTitle()
563
+ */
564
+ extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window);
565
+
566
+ /**
567
+ * \brief Set the icon for a window.
568
+ *
569
+ * \param window The window for which the icon should be set.
570
+ * \param icon The icon for the window.
571
+ */
572
+ extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window,
573
+ SDL_Surface * icon);
574
+
575
+ /**
576
+ * \brief Associate an arbitrary named pointer with a window.
577
+ *
578
+ * \param window The window to associate with the pointer.
579
+ * \param name The name of the pointer.
580
+ * \param userdata The associated pointer.
581
+ *
582
+ * \return The previous value associated with 'name'
583
+ *
584
+ * \note The name is case-sensitive.
585
+ *
586
+ * \sa SDL_GetWindowData()
587
+ */
588
+ extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window,
589
+ const char *name,
590
+ void *userdata);
591
+
592
+ /**
593
+ * \brief Retrieve the data pointer associated with a window.
594
+ *
595
+ * \param window The window to query.
596
+ * \param name The name of the pointer.
597
+ *
598
+ * \return The value associated with 'name'
599
+ *
600
+ * \sa SDL_SetWindowData()
601
+ */
602
+ extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window,
603
+ const char *name);
604
+
605
+ /**
606
+ * \brief Set the position of a window.
607
+ *
608
+ * \param window The window to reposition.
609
+ * \param x The x coordinate of the window in screen coordinates, or
610
+ * ::SDL_WINDOWPOS_CENTERED or ::SDL_WINDOWPOS_UNDEFINED.
611
+ * \param y The y coordinate of the window in screen coordinates, or
612
+ * ::SDL_WINDOWPOS_CENTERED or ::SDL_WINDOWPOS_UNDEFINED.
613
+ *
614
+ * \note The window coordinate origin is the upper left of the display.
615
+ *
616
+ * \sa SDL_GetWindowPosition()
617
+ */
618
+ extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window,
619
+ int x, int y);
620
+
621
+ /**
622
+ * \brief Get the position of a window.
623
+ *
624
+ * \param window The window to query.
625
+ * \param x Pointer to variable for storing the x position, in screen
626
+ * coordinates. May be NULL.
627
+ * \param y Pointer to variable for storing the y position, in screen
628
+ * coordinates. May be NULL.
629
+ *
630
+ * \sa SDL_SetWindowPosition()
631
+ */
632
+ extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window,
633
+ int *x, int *y);
634
+
635
+ /**
636
+ * \brief Set the size of a window's client area.
637
+ *
638
+ * \param window The window to resize.
639
+ * \param w The width of the window, in screen coordinates. Must be >0.
640
+ * \param h The height of the window, in screen coordinates. Must be >0.
641
+ *
642
+ * \note Fullscreen windows automatically match the size of the display mode,
643
+ * and you should use SDL_SetWindowDisplayMode() to change their size.
644
+ *
645
+ * The window size in screen coordinates may differ from the size in pixels, if
646
+ * the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a platform with
647
+ * high-dpi support (e.g. iOS or OS X). Use SDL_GL_GetDrawableSize() or
648
+ * SDL_GetRendererOutputSize() to get the real client area size in pixels.
649
+ *
650
+ * \sa SDL_GetWindowSize()
651
+ * \sa SDL_SetWindowDisplayMode()
652
+ */
653
+ extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w,
654
+ int h);
655
+
656
+ /**
657
+ * \brief Get the size of a window's client area.
658
+ *
659
+ * \param window The window to query.
660
+ * \param w Pointer to variable for storing the width, in screen
661
+ * coordinates. May be NULL.
662
+ * \param h Pointer to variable for storing the height, in screen
663
+ * coordinates. May be NULL.
664
+ *
665
+ * The window size in screen coordinates may differ from the size in pixels, if
666
+ * the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a platform with
667
+ * high-dpi support (e.g. iOS or OS X). Use SDL_GL_GetDrawableSize() or
668
+ * SDL_GetRendererOutputSize() to get the real client area size in pixels.
669
+ *
670
+ * \sa SDL_SetWindowSize()
671
+ */
672
+ extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w,
673
+ int *h);
674
+
675
+ /**
676
+ * \brief Get the size of a window's borders (decorations) around the client area.
677
+ *
678
+ * \param window The window to query.
679
+ * \param top Pointer to variable for storing the size of the top border. NULL is permitted.
680
+ * \param left Pointer to variable for storing the size of the left border. NULL is permitted.
681
+ * \param bottom Pointer to variable for storing the size of the bottom border. NULL is permitted.
682
+ * \param right Pointer to variable for storing the size of the right border. NULL is permitted.
683
+ *
684
+ * \return 0 on success, or -1 if getting this information is not supported.
685
+ *
686
+ * \note if this function fails (returns -1), the size values will be
687
+ * initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as
688
+ * if the window in question was borderless.
689
+ */
690
+ extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window,
691
+ int *top, int *left,
692
+ int *bottom, int *right);
693
+
694
+ /**
695
+ * \brief Set the minimum size of a window's client area.
696
+ *
697
+ * \param window The window to set a new minimum size.
698
+ * \param min_w The minimum width of the window, must be >0
699
+ * \param min_h The minimum height of the window, must be >0
700
+ *
701
+ * \note You can't change the minimum size of a fullscreen window, it
702
+ * automatically matches the size of the display mode.
703
+ *
704
+ * \sa SDL_GetWindowMinimumSize()
705
+ * \sa SDL_SetWindowMaximumSize()
706
+ */
707
+ extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window,
708
+ int min_w, int min_h);
709
+
710
+ /**
711
+ * \brief Get the minimum size of a window's client area.
712
+ *
713
+ * \param window The window to query.
714
+ * \param w Pointer to variable for storing the minimum width, may be NULL
715
+ * \param h Pointer to variable for storing the minimum height, may be NULL
716
+ *
717
+ * \sa SDL_GetWindowMaximumSize()
718
+ * \sa SDL_SetWindowMinimumSize()
719
+ */
720
+ extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window,
721
+ int *w, int *h);
722
+
723
+ /**
724
+ * \brief Set the maximum size of a window's client area.
725
+ *
726
+ * \param window The window to set a new maximum size.
727
+ * \param max_w The maximum width of the window, must be >0
728
+ * \param max_h The maximum height of the window, must be >0
729
+ *
730
+ * \note You can't change the maximum size of a fullscreen window, it
731
+ * automatically matches the size of the display mode.
732
+ *
733
+ * \sa SDL_GetWindowMaximumSize()
734
+ * \sa SDL_SetWindowMinimumSize()
735
+ */
736
+ extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window,
737
+ int max_w, int max_h);
738
+
739
+ /**
740
+ * \brief Get the maximum size of a window's client area.
741
+ *
742
+ * \param window The window to query.
743
+ * \param w Pointer to variable for storing the maximum width, may be NULL
744
+ * \param h Pointer to variable for storing the maximum height, may be NULL
745
+ *
746
+ * \sa SDL_GetWindowMinimumSize()
747
+ * \sa SDL_SetWindowMaximumSize()
748
+ */
749
+ extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window,
750
+ int *w, int *h);
751
+
752
+ /**
753
+ * \brief Set the border state of a window.
754
+ *
755
+ * This will add or remove the window's SDL_WINDOW_BORDERLESS flag and
756
+ * add or remove the border from the actual window. This is a no-op if the
757
+ * window's border already matches the requested state.
758
+ *
759
+ * \param window The window of which to change the border state.
760
+ * \param bordered SDL_FALSE to remove border, SDL_TRUE to add border.
761
+ *
762
+ * \note You can't change the border state of a fullscreen window.
763
+ *
764
+ * \sa SDL_GetWindowFlags()
765
+ */
766
+ extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window,
767
+ SDL_bool bordered);
768
+
769
+ /**
770
+ * \brief Set the user-resizable state of a window.
771
+ *
772
+ * This will add or remove the window's SDL_WINDOW_RESIZABLE flag and
773
+ * allow/disallow user resizing of the window. This is a no-op if the
774
+ * window's resizable state already matches the requested state.
775
+ *
776
+ * \param window The window of which to change the resizable state.
777
+ * \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow.
778
+ *
779
+ * \note You can't change the resizable state of a fullscreen window.
780
+ *
781
+ * \sa SDL_GetWindowFlags()
782
+ */
783
+ extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window,
784
+ SDL_bool resizable);
785
+
786
+ /**
787
+ * \brief Show a window.
788
+ *
789
+ * \sa SDL_HideWindow()
790
+ */
791
+ extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window);
792
+
793
+ /**
794
+ * \brief Hide a window.
795
+ *
796
+ * \sa SDL_ShowWindow()
797
+ */
798
+ extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window);
799
+
800
+ /**
801
+ * \brief Raise a window above other windows and set the input focus.
802
+ */
803
+ extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window);
804
+
805
+ /**
806
+ * \brief Make a window as large as possible.
807
+ *
808
+ * \sa SDL_RestoreWindow()
809
+ */
810
+ extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window);
811
+
812
+ /**
813
+ * \brief Minimize a window to an iconic representation.
814
+ *
815
+ * \sa SDL_RestoreWindow()
816
+ */
817
+ extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window);
818
+
819
+ /**
820
+ * \brief Restore the size and position of a minimized or maximized window.
821
+ *
822
+ * \sa SDL_MaximizeWindow()
823
+ * \sa SDL_MinimizeWindow()
824
+ */
825
+ extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window);
826
+
827
+ /**
828
+ * \brief Set a window's fullscreen state.
829
+ *
830
+ * \return 0 on success, or -1 if setting the display mode failed.
831
+ *
832
+ * \sa SDL_SetWindowDisplayMode()
833
+ * \sa SDL_GetWindowDisplayMode()
834
+ */
835
+ extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window,
836
+ Uint32 flags);
837
+
838
+ /**
839
+ * \brief Get the SDL surface associated with the window.
840
+ *
841
+ * \return The window's framebuffer surface, or NULL on error.
842
+ *
843
+ * A new surface will be created with the optimal format for the window,
844
+ * if necessary. This surface will be freed when the window is destroyed.
845
+ *
846
+ * \note You may not combine this with 3D or the rendering API on this window.
847
+ *
848
+ * \sa SDL_UpdateWindowSurface()
849
+ * \sa SDL_UpdateWindowSurfaceRects()
850
+ */
851
+ extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window);
852
+
853
+ /**
854
+ * \brief Copy the window surface to the screen.
855
+ *
856
+ * \return 0 on success, or -1 on error.
857
+ *
858
+ * \sa SDL_GetWindowSurface()
859
+ * \sa SDL_UpdateWindowSurfaceRects()
860
+ */
861
+ extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window);
862
+
863
+ /**
864
+ * \brief Copy a number of rectangles on the window surface to the screen.
865
+ *
866
+ * \return 0 on success, or -1 on error.
867
+ *
868
+ * \sa SDL_GetWindowSurface()
869
+ * \sa SDL_UpdateWindowSurface()
870
+ */
871
+ extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window,
872
+ const SDL_Rect * rects,
873
+ int numrects);
874
+
875
+ /**
876
+ * \brief Set a window's input grab mode.
877
+ *
878
+ * \param window The window for which the input grab mode should be set.
879
+ * \param grabbed This is SDL_TRUE to grab input, and SDL_FALSE to release input.
880
+ *
881
+ * If the caller enables a grab while another window is currently grabbed,
882
+ * the other window loses its grab in favor of the caller's window.
883
+ *
884
+ * \sa SDL_GetWindowGrab()
885
+ */
886
+ extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window,
887
+ SDL_bool grabbed);
888
+
889
+ /**
890
+ * \brief Get a window's input grab mode.
891
+ *
892
+ * \return This returns SDL_TRUE if input is grabbed, and SDL_FALSE otherwise.
893
+ *
894
+ * \sa SDL_SetWindowGrab()
895
+ */
896
+ extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window);
897
+
898
+ /**
899
+ * \brief Get the window that currently has an input grab enabled.
900
+ *
901
+ * \return This returns the window if input is grabbed, and NULL otherwise.
902
+ *
903
+ * \sa SDL_SetWindowGrab()
904
+ */
905
+ extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void);
906
+
907
+ /**
908
+ * \brief Set the brightness (gamma correction) for a window.
909
+ *
910
+ * \return 0 on success, or -1 if setting the brightness isn't supported.
911
+ *
912
+ * \sa SDL_GetWindowBrightness()
913
+ * \sa SDL_SetWindowGammaRamp()
914
+ */
915
+ extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness);
916
+
917
+ /**
918
+ * \brief Get the brightness (gamma correction) for a window.
919
+ *
920
+ * \return The last brightness value passed to SDL_SetWindowBrightness()
921
+ *
922
+ * \sa SDL_SetWindowBrightness()
923
+ */
924
+ extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window);
925
+
926
+ /**
927
+ * \brief Set the opacity for a window
928
+ *
929
+ * \param window The window which will be made transparent or opaque
930
+ * \param opacity Opacity (0.0f - transparent, 1.0f - opaque) This will be
931
+ * clamped internally between 0.0f and 1.0f.
932
+ *
933
+ * \return 0 on success, or -1 if setting the opacity isn't supported.
934
+ *
935
+ * \sa SDL_GetWindowOpacity()
936
+ */
937
+ extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity);
938
+
939
+ /**
940
+ * \brief Get the opacity of a window.
941
+ *
942
+ * If transparency isn't supported on this platform, opacity will be reported
943
+ * as 1.0f without error.
944
+ *
945
+ * \param window The window in question.
946
+ * \param out_opacity Opacity (0.0f - transparent, 1.0f - opaque)
947
+ *
948
+ * \return 0 on success, or -1 on error (invalid window, etc).
949
+ *
950
+ * \sa SDL_SetWindowOpacity()
951
+ */
952
+ extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity);
953
+
954
+ /**
955
+ * \brief Sets the window as a modal for another window (TODO: reconsider this function and/or its name)
956
+ *
957
+ * \param modal_window The window that should be modal
958
+ * \param parent_window The parent window
959
+ *
960
+ * \return 0 on success, or -1 otherwise.
961
+ */
962
+ extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window);
963
+
964
+ /**
965
+ * \brief Explicitly sets input focus to the window.
966
+ *
967
+ * You almost certainly want SDL_RaiseWindow() instead of this function. Use
968
+ * this with caution, as you might give focus to a window that's completely
969
+ * obscured by other windows.
970
+ *
971
+ * \param window The window that should get the input focus
972
+ *
973
+ * \return 0 on success, or -1 otherwise.
974
+ * \sa SDL_RaiseWindow()
975
+ */
976
+ extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window);
977
+
978
+ /**
979
+ * \brief Set the gamma ramp for a window.
980
+ *
981
+ * \param window The window for which the gamma ramp should be set.
982
+ * \param red The translation table for the red channel, or NULL.
983
+ * \param green The translation table for the green channel, or NULL.
984
+ * \param blue The translation table for the blue channel, or NULL.
985
+ *
986
+ * \return 0 on success, or -1 if gamma ramps are unsupported.
987
+ *
988
+ * Set the gamma translation table for the red, green, and blue channels
989
+ * of the video hardware. Each table is an array of 256 16-bit quantities,
990
+ * representing a mapping between the input and output for that channel.
991
+ * The input is the index into the array, and the output is the 16-bit
992
+ * gamma value at that index, scaled to the output color precision.
993
+ *
994
+ * \sa SDL_GetWindowGammaRamp()
995
+ */
996
+ extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window,
997
+ const Uint16 * red,
998
+ const Uint16 * green,
999
+ const Uint16 * blue);
1000
+
1001
+ /**
1002
+ * \brief Get the gamma ramp for a window.
1003
+ *
1004
+ * \param window The window from which the gamma ramp should be queried.
1005
+ * \param red A pointer to a 256 element array of 16-bit quantities to hold
1006
+ * the translation table for the red channel, or NULL.
1007
+ * \param green A pointer to a 256 element array of 16-bit quantities to hold
1008
+ * the translation table for the green channel, or NULL.
1009
+ * \param blue A pointer to a 256 element array of 16-bit quantities to hold
1010
+ * the translation table for the blue channel, or NULL.
1011
+ *
1012
+ * \return 0 on success, or -1 if gamma ramps are unsupported.
1013
+ *
1014
+ * \sa SDL_SetWindowGammaRamp()
1015
+ */
1016
+ extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window,
1017
+ Uint16 * red,
1018
+ Uint16 * green,
1019
+ Uint16 * blue);
1020
+
1021
+ /**
1022
+ * \brief Possible return values from the SDL_HitTest callback.
1023
+ *
1024
+ * \sa SDL_HitTest
1025
+ */
1026
+ typedef enum
1027
+ {
1028
+ SDL_HITTEST_NORMAL, /**< Region is normal. No special properties. */
1029
+ SDL_HITTEST_DRAGGABLE, /**< Region can drag entire window. */
1030
+ SDL_HITTEST_RESIZE_TOPLEFT,
1031
+ SDL_HITTEST_RESIZE_TOP,
1032
+ SDL_HITTEST_RESIZE_TOPRIGHT,
1033
+ SDL_HITTEST_RESIZE_RIGHT,
1034
+ SDL_HITTEST_RESIZE_BOTTOMRIGHT,
1035
+ SDL_HITTEST_RESIZE_BOTTOM,
1036
+ SDL_HITTEST_RESIZE_BOTTOMLEFT,
1037
+ SDL_HITTEST_RESIZE_LEFT
1038
+ } SDL_HitTestResult;
1039
+
1040
+ /**
1041
+ * \brief Callback used for hit-testing.
1042
+ *
1043
+ * \sa SDL_SetWindowHitTest
1044
+ */
1045
+ typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win,
1046
+ const SDL_Point *area,
1047
+ void *data);
1048
+
1049
+ /**
1050
+ * \brief Provide a callback that decides if a window region has special properties.
1051
+ *
1052
+ * Normally windows are dragged and resized by decorations provided by the
1053
+ * system window manager (a title bar, borders, etc), but for some apps, it
1054
+ * makes sense to drag them from somewhere else inside the window itself; for
1055
+ * example, one might have a borderless window that wants to be draggable
1056
+ * from any part, or simulate its own title bar, etc.
1057
+ *
1058
+ * This function lets the app provide a callback that designates pieces of
1059
+ * a given window as special. This callback is run during event processing
1060
+ * if we need to tell the OS to treat a region of the window specially; the
1061
+ * use of this callback is known as "hit testing."
1062
+ *
1063
+ * Mouse input may not be delivered to your application if it is within
1064
+ * a special area; the OS will often apply that input to moving the window or
1065
+ * resizing the window and not deliver it to the application.
1066
+ *
1067
+ * Specifying NULL for a callback disables hit-testing. Hit-testing is
1068
+ * disabled by default.
1069
+ *
1070
+ * Platforms that don't support this functionality will return -1
1071
+ * unconditionally, even if you're attempting to disable hit-testing.
1072
+ *
1073
+ * Your callback may fire at any time, and its firing does not indicate any
1074
+ * specific behavior (for example, on Windows, this certainly might fire
1075
+ * when the OS is deciding whether to drag your window, but it fires for lots
1076
+ * of other reasons, too, some unrelated to anything you probably care about
1077
+ * _and when the mouse isn't actually at the location it is testing_).
1078
+ * Since this can fire at any time, you should try to keep your callback
1079
+ * efficient, devoid of allocations, etc.
1080
+ *
1081
+ * \param window The window to set hit-testing on.
1082
+ * \param callback The callback to call when doing a hit-test.
1083
+ * \param callback_data An app-defined void pointer passed to the callback.
1084
+ * \return 0 on success, -1 on error (including unsupported).
1085
+ */
1086
+ extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window,
1087
+ SDL_HitTest callback,
1088
+ void *callback_data);
1089
+
1090
+ /**
1091
+ * \brief Destroy a window.
1092
+ */
1093
+ extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window);
1094
+
1095
+
1096
+ /**
1097
+ * \brief Returns whether the screensaver is currently enabled (default off).
1098
+ *
1099
+ * \sa SDL_EnableScreenSaver()
1100
+ * \sa SDL_DisableScreenSaver()
1101
+ */
1102
+ extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void);
1103
+
1104
+ /**
1105
+ * \brief Allow the screen to be blanked by a screensaver
1106
+ *
1107
+ * \sa SDL_IsScreenSaverEnabled()
1108
+ * \sa SDL_DisableScreenSaver()
1109
+ */
1110
+ extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void);
1111
+
1112
+ /**
1113
+ * \brief Prevent the screen from being blanked by a screensaver
1114
+ *
1115
+ * \sa SDL_IsScreenSaverEnabled()
1116
+ * \sa SDL_EnableScreenSaver()
1117
+ */
1118
+ extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void);
1119
+
1120
+
1121
+ /**
1122
+ * \name OpenGL support functions
1123
+ */
1124
+ /* @{ */
1125
+
1126
+ /**
1127
+ * \brief Dynamically load an OpenGL library.
1128
+ *
1129
+ * \param path The platform dependent OpenGL library name, or NULL to open the
1130
+ * default OpenGL library.
1131
+ *
1132
+ * \return 0 on success, or -1 if the library couldn't be loaded.
1133
+ *
1134
+ * This should be done after initializing the video driver, but before
1135
+ * creating any OpenGL windows. If no OpenGL library is loaded, the default
1136
+ * library will be loaded upon creation of the first OpenGL window.
1137
+ *
1138
+ * \note If you do this, you need to retrieve all of the GL functions used in
1139
+ * your program from the dynamic library using SDL_GL_GetProcAddress().
1140
+ *
1141
+ * \sa SDL_GL_GetProcAddress()
1142
+ * \sa SDL_GL_UnloadLibrary()
1143
+ */
1144
+ extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path);
1145
+
1146
+ /**
1147
+ * \brief Get the address of an OpenGL function.
1148
+ */
1149
+ extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc);
1150
+
1151
+ /**
1152
+ * \brief Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary().
1153
+ *
1154
+ * \sa SDL_GL_LoadLibrary()
1155
+ */
1156
+ extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void);
1157
+
1158
+ /**
1159
+ * \brief Return true if an OpenGL extension is supported for the current
1160
+ * context.
1161
+ */
1162
+ extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char
1163
+ *extension);
1164
+
1165
+ /**
1166
+ * \brief Reset all previously set OpenGL context attributes to their default values
1167
+ */
1168
+ extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void);
1169
+
1170
+ /**
1171
+ * \brief Set an OpenGL window attribute before window creation.
1172
+ *
1173
+ * \return 0 on success, or -1 if the attribute could not be set.
1174
+ */
1175
+ extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value);
1176
+
1177
+ /**
1178
+ * \brief Get the actual value for an attribute from the current context.
1179
+ *
1180
+ * \return 0 on success, or -1 if the attribute could not be retrieved.
1181
+ * The integer at \c value will be modified in either case.
1182
+ */
1183
+ extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value);
1184
+
1185
+ /**
1186
+ * \brief Create an OpenGL context for use with an OpenGL window, and make it
1187
+ * current.
1188
+ *
1189
+ * \sa SDL_GL_DeleteContext()
1190
+ */
1191
+ extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window *
1192
+ window);
1193
+
1194
+ /**
1195
+ * \brief Set up an OpenGL context for rendering into an OpenGL window.
1196
+ *
1197
+ * \note The context must have been created with a compatible window.
1198
+ */
1199
+ extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window,
1200
+ SDL_GLContext context);
1201
+
1202
+ /**
1203
+ * \brief Get the currently active OpenGL window.
1204
+ */
1205
+ extern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void);
1206
+
1207
+ /**
1208
+ * \brief Get the currently active OpenGL context.
1209
+ */
1210
+ extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void);
1211
+
1212
+ /**
1213
+ * \brief Get the size of a window's underlying drawable in pixels (for use
1214
+ * with glViewport).
1215
+ *
1216
+ * \param window Window from which the drawable size should be queried
1217
+ * \param w Pointer to variable for storing the width in pixels, may be NULL
1218
+ * \param h Pointer to variable for storing the height in pixels, may be NULL
1219
+ *
1220
+ * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI
1221
+ * drawable, i.e. the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a
1222
+ * platform with high-DPI support (Apple calls this "Retina"), and not disabled
1223
+ * by the SDL_HINT_VIDEO_HIGHDPI_DISABLED hint.
1224
+ *
1225
+ * \sa SDL_GetWindowSize()
1226
+ * \sa SDL_CreateWindow()
1227
+ */
1228
+ extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w,
1229
+ int *h);
1230
+
1231
+ /**
1232
+ * \brief Set the swap interval for the current OpenGL context.
1233
+ *
1234
+ * \param interval 0 for immediate updates, 1 for updates synchronized with the
1235
+ * vertical retrace. If the system supports it, you may
1236
+ * specify -1 to allow late swaps to happen immediately
1237
+ * instead of waiting for the next retrace.
1238
+ *
1239
+ * \return 0 on success, or -1 if setting the swap interval is not supported.
1240
+ *
1241
+ * \sa SDL_GL_GetSwapInterval()
1242
+ */
1243
+ extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval);
1244
+
1245
+ /**
1246
+ * \brief Get the swap interval for the current OpenGL context.
1247
+ *
1248
+ * \return 0 if there is no vertical retrace synchronization, 1 if the buffer
1249
+ * swap is synchronized with the vertical retrace, and -1 if late
1250
+ * swaps happen immediately instead of waiting for the next retrace.
1251
+ * If the system can't determine the swap interval, or there isn't a
1252
+ * valid current context, this will return 0 as a safe default.
1253
+ *
1254
+ * \sa SDL_GL_SetSwapInterval()
1255
+ */
1256
+ extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void);
1257
+
1258
+ /**
1259
+ * \brief Swap the OpenGL buffers for a window, if double-buffering is
1260
+ * supported.
1261
+ */
1262
+ extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window);
1263
+
1264
+ /**
1265
+ * \brief Delete an OpenGL context.
1266
+ *
1267
+ * \sa SDL_GL_CreateContext()
1268
+ */
1269
+ extern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context);
1270
+
1271
+ /* @} *//* OpenGL support functions */
1272
+
1273
+
1274
+ /* Ends C function definitions when using C++ */
1275
+ #ifdef __cplusplus
1276
+ }
1277
+ #endif
1278
+ #include "close_code.h"
1279
+
1280
+ #endif /* SDL_video_h_ */
1281
+
1282
+ /* vi: set ts=4 sw=4 expandtab: */