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