gosu 0.15.2 → 1.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (234) hide show
  1. checksums.yaml +4 -4
  2. data/dependencies/SDL/include/SDL.h +138 -0
  3. data/dependencies/SDL/include/SDL_assert.h +293 -0
  4. data/dependencies/SDL/include/SDL_atomic.h +295 -0
  5. data/dependencies/SDL/include/SDL_audio.h +859 -0
  6. data/dependencies/SDL/include/SDL_bits.h +121 -0
  7. data/dependencies/SDL/include/SDL_blendmode.h +123 -0
  8. data/dependencies/SDL/include/SDL_clipboard.h +71 -0
  9. data/dependencies/SDL/include/SDL_config.h +55 -0
  10. data/dependencies/SDL/include/SDL_config_android.h +182 -0
  11. data/dependencies/SDL/include/SDL_config_iphoneos.h +207 -0
  12. data/dependencies/SDL/include/SDL_config_macosx.h +266 -0
  13. data/dependencies/SDL/include/SDL_config_minimal.h +85 -0
  14. data/dependencies/SDL/include/SDL_config_os2.h +188 -0
  15. data/dependencies/SDL/include/SDL_config_pandora.h +135 -0
  16. data/dependencies/SDL/include/SDL_config_psp.h +165 -0
  17. data/dependencies/SDL/include/SDL_config_windows.h +288 -0
  18. data/dependencies/SDL/include/SDL_config_winrt.h +243 -0
  19. data/dependencies/SDL/include/SDL_config_wiz.h +149 -0
  20. data/dependencies/SDL/include/SDL_copying.h +20 -0
  21. data/dependencies/SDL/include/SDL_cpuinfo.h +299 -0
  22. data/dependencies/SDL/include/SDL_egl.h +1676 -0
  23. data/dependencies/SDL/include/SDL_endian.h +263 -0
  24. data/dependencies/SDL/include/SDL_error.h +112 -0
  25. data/dependencies/SDL/include/SDL_events.h +827 -0
  26. data/dependencies/SDL/include/SDL_filesystem.h +136 -0
  27. data/dependencies/SDL/include/SDL_gamecontroller.h +541 -0
  28. data/dependencies/SDL/include/SDL_gesture.h +87 -0
  29. data/dependencies/SDL/include/SDL_haptic.h +1247 -0
  30. data/dependencies/SDL/include/SDL_hints.h +1578 -0
  31. data/dependencies/SDL/include/SDL_joystick.h +499 -0
  32. data/dependencies/SDL/include/SDL_keyboard.h +217 -0
  33. data/dependencies/SDL/include/SDL_keycode.h +351 -0
  34. data/dependencies/SDL/include/SDL_loadso.h +81 -0
  35. data/dependencies/SDL/include/SDL_locale.h +101 -0
  36. data/dependencies/SDL/include/SDL_log.h +211 -0
  37. data/dependencies/SDL/include/SDL_main.h +180 -0
  38. data/dependencies/SDL/include/SDL_messagebox.h +146 -0
  39. data/dependencies/SDL/include/SDL_metal.h +117 -0
  40. data/dependencies/SDL/include/SDL_misc.h +75 -0
  41. data/dependencies/SDL/include/SDL_mouse.h +302 -0
  42. data/dependencies/SDL/include/SDL_mutex.h +251 -0
  43. data/dependencies/SDL/include/SDL_name.h +33 -0
  44. data/dependencies/SDL/include/SDL_opengl.h +2183 -0
  45. data/dependencies/SDL/include/SDL_opengl_glext.h +11180 -0
  46. data/dependencies/SDL/include/SDL_opengles.h +39 -0
  47. data/dependencies/SDL/include/SDL_opengles2.h +52 -0
  48. data/dependencies/SDL/include/SDL_opengles2_gl2.h +621 -0
  49. data/dependencies/SDL/include/SDL_opengles2_gl2ext.h +2050 -0
  50. data/dependencies/SDL/include/SDL_opengles2_gl2platform.h +30 -0
  51. data/dependencies/SDL/include/SDL_opengles2_khrplatform.h +282 -0
  52. data/dependencies/SDL/include/SDL_pixels.h +479 -0
  53. data/dependencies/SDL/include/SDL_platform.h +198 -0
  54. data/dependencies/SDL/include/SDL_power.h +75 -0
  55. data/dependencies/SDL/include/SDL_quit.h +58 -0
  56. data/dependencies/SDL/include/SDL_rect.h +174 -0
  57. data/dependencies/SDL/include/SDL_render.h +1158 -0
  58. data/dependencies/SDL/include/SDL_revision.h +2 -0
  59. data/dependencies/SDL/include/SDL_rwops.h +283 -0
  60. data/dependencies/SDL/include/SDL_scancode.h +413 -0
  61. data/dependencies/SDL/include/SDL_sensor.h +267 -0
  62. data/dependencies/SDL/include/SDL_shape.h +144 -0
  63. data/dependencies/SDL/include/SDL_stdinc.h +647 -0
  64. data/dependencies/SDL/include/SDL_surface.h +563 -0
  65. data/dependencies/SDL/include/SDL_system.h +325 -0
  66. data/dependencies/SDL/include/SDL_syswm.h +354 -0
  67. data/dependencies/SDL/include/SDL_test.h +69 -0
  68. data/dependencies/SDL/include/SDL_test_assert.h +105 -0
  69. data/dependencies/SDL/include/SDL_test_common.h +218 -0
  70. data/dependencies/SDL/include/SDL_test_compare.h +69 -0
  71. data/dependencies/SDL/include/SDL_test_crc32.h +124 -0
  72. data/dependencies/SDL/include/SDL_test_font.h +81 -0
  73. data/dependencies/SDL/include/SDL_test_fuzzer.h +384 -0
  74. data/dependencies/SDL/include/SDL_test_harness.h +134 -0
  75. data/dependencies/SDL/include/SDL_test_images.h +78 -0
  76. data/dependencies/SDL/include/SDL_test_log.h +67 -0
  77. data/dependencies/SDL/include/SDL_test_md5.h +129 -0
  78. data/dependencies/SDL/include/SDL_test_memory.h +63 -0
  79. data/dependencies/SDL/include/SDL_test_random.h +115 -0
  80. data/dependencies/SDL/include/SDL_thread.h +366 -0
  81. data/dependencies/SDL/include/SDL_timer.h +115 -0
  82. data/dependencies/SDL/include/SDL_touch.h +102 -0
  83. data/dependencies/SDL/include/SDL_types.h +29 -0
  84. data/dependencies/SDL/include/SDL_version.h +162 -0
  85. data/dependencies/SDL/include/SDL_video.h +1282 -0
  86. data/dependencies/SDL/include/SDL_vulkan.h +276 -0
  87. data/dependencies/SDL/include/begin_code.h +166 -0
  88. data/dependencies/SDL/include/close_code.h +40 -0
  89. data/dependencies/SDL/lib/x64/libSDL2.dll.a +0 -0
  90. data/dependencies/SDL/lib/x86/libSDL2.dll.a +0 -0
  91. data/dependencies/SDL_sound/SDL_sound.c +795 -0
  92. data/dependencies/SDL_sound/SDL_sound.h +725 -0
  93. data/dependencies/SDL_sound/SDL_sound_aiff.c +537 -0
  94. data/dependencies/SDL_sound/SDL_sound_au.c +352 -0
  95. data/dependencies/SDL_sound/SDL_sound_coreaudio.c +747 -0
  96. data/dependencies/SDL_sound/SDL_sound_flac.c +182 -0
  97. data/dependencies/SDL_sound/SDL_sound_internal.h +304 -0
  98. data/dependencies/SDL_sound/SDL_sound_modplug.c +228 -0
  99. data/dependencies/SDL_sound/SDL_sound_mp3.c +184 -0
  100. data/dependencies/SDL_sound/SDL_sound_raw.c +164 -0
  101. data/dependencies/SDL_sound/SDL_sound_shn.c +1309 -0
  102. data/dependencies/SDL_sound/SDL_sound_voc.c +550 -0
  103. data/dependencies/SDL_sound/SDL_sound_vorbis.c +223 -0
  104. data/dependencies/SDL_sound/SDL_sound_wav.c +783 -0
  105. data/dependencies/SDL_sound/dr_flac.h +5906 -0
  106. data/dependencies/SDL_sound/dr_mp3.h +2832 -0
  107. data/dependencies/SDL_sound/libmodplug/fastmix.c +1748 -0
  108. data/dependencies/SDL_sound/libmodplug/libmodplug.h +1001 -0
  109. data/dependencies/SDL_sound/libmodplug/load_669.c +188 -0
  110. data/dependencies/SDL_sound/libmodplug/load_abc.c +4725 -0
  111. data/dependencies/SDL_sound/libmodplug/load_amf.c +403 -0
  112. data/dependencies/SDL_sound/libmodplug/load_ams.c +587 -0
  113. data/dependencies/SDL_sound/libmodplug/load_dbm.c +357 -0
  114. data/dependencies/SDL_sound/libmodplug/load_dmf.c +531 -0
  115. data/dependencies/SDL_sound/libmodplug/load_dsm.c +232 -0
  116. data/dependencies/SDL_sound/libmodplug/load_far.c +253 -0
  117. data/dependencies/SDL_sound/libmodplug/load_it.c +796 -0
  118. data/dependencies/SDL_sound/libmodplug/load_mdl.c +488 -0
  119. data/dependencies/SDL_sound/libmodplug/load_med.c +757 -0
  120. data/dependencies/SDL_sound/libmodplug/load_mid.c +1405 -0
  121. data/dependencies/SDL_sound/libmodplug/load_mod.c +269 -0
  122. data/dependencies/SDL_sound/libmodplug/load_mt2.c +546 -0
  123. data/dependencies/SDL_sound/libmodplug/load_mtm.c +142 -0
  124. data/dependencies/SDL_sound/libmodplug/load_okt.c +192 -0
  125. data/dependencies/SDL_sound/libmodplug/load_pat.c +1143 -0
  126. data/dependencies/SDL_sound/libmodplug/load_pat.h +25 -0
  127. data/dependencies/SDL_sound/libmodplug/load_psm.c +350 -0
  128. data/dependencies/SDL_sound/libmodplug/load_ptm.c +204 -0
  129. data/dependencies/SDL_sound/libmodplug/load_s3m.c +325 -0
  130. data/dependencies/SDL_sound/libmodplug/load_stm.c +180 -0
  131. data/dependencies/SDL_sound/libmodplug/load_ult.c +206 -0
  132. data/dependencies/SDL_sound/libmodplug/load_umx.c +51 -0
  133. data/dependencies/SDL_sound/libmodplug/load_xm.c +554 -0
  134. data/dependencies/SDL_sound/libmodplug/mmcmp.c +382 -0
  135. data/dependencies/SDL_sound/libmodplug/modplug.c +170 -0
  136. data/dependencies/SDL_sound/libmodplug/modplug.h +90 -0
  137. data/dependencies/SDL_sound/libmodplug/snd_dsp.c +301 -0
  138. data/dependencies/SDL_sound/libmodplug/snd_flt.c +63 -0
  139. data/dependencies/SDL_sound/libmodplug/snd_fx.c +2350 -0
  140. data/dependencies/SDL_sound/libmodplug/sndfile.c +1169 -0
  141. data/dependencies/SDL_sound/libmodplug/sndmix.c +1034 -0
  142. data/dependencies/SDL_sound/libmodplug/tables.h +371 -0
  143. data/{src/stb_vorbis.c → dependencies/SDL_sound/stb_vorbis.h} +143 -78
  144. data/dependencies/al_soft/AL/al.h +655 -0
  145. data/dependencies/al_soft/AL/alc.h +270 -0
  146. data/dependencies/al_soft/AL/alext.h +585 -0
  147. data/dependencies/al_soft/AL/efx-creative.h +3 -0
  148. data/dependencies/al_soft/AL/efx-presets.h +402 -0
  149. data/dependencies/al_soft/AL/efx.h +762 -0
  150. data/dependencies/al_soft/x64/libOpenAL32.dll.a +0 -0
  151. data/dependencies/al_soft/x86/libOpenAL32.dll.a +0 -0
  152. data/{src → dependencies/stb}/stb_image.h +330 -127
  153. data/{src → dependencies/stb}/stb_image_write.h +156 -85
  154. data/{src → dependencies/stb}/stb_truetype.h +192 -69
  155. data/{src → dependencies/utf8proc}/utf8proc.c +0 -0
  156. data/{src → dependencies/utf8proc}/utf8proc.h +0 -0
  157. data/{src → dependencies/utf8proc}/utf8proc_data.h +0 -0
  158. data/ext/gosu/extconf.rb +56 -22
  159. data/{Gosu → include/Gosu}/Audio.hpp +6 -8
  160. data/{Gosu → include/Gosu}/AutoLink.hpp +0 -0
  161. data/include/Gosu/Bitmap.hpp +100 -0
  162. data/{Gosu → include/Gosu}/Buttons.hpp +94 -35
  163. data/{Gosu → include/Gosu}/Channel.h +0 -0
  164. data/{Gosu → include/Gosu}/Color.h +0 -0
  165. data/{Gosu → include/Gosu}/Color.hpp +0 -0
  166. data/{Gosu → include/Gosu}/Directories.hpp +0 -0
  167. data/{Gosu → include/Gosu}/Font.h +0 -0
  168. data/{Gosu → include/Gosu}/Font.hpp +0 -0
  169. data/{Gosu → include/Gosu}/Fwd.hpp +0 -0
  170. data/{Gosu → include/Gosu}/Gosu.h +3 -0
  171. data/{Gosu → include/Gosu}/Gosu.hpp +0 -0
  172. data/{Gosu → include/Gosu}/Graphics.hpp +0 -0
  173. data/{Gosu → include/Gosu}/GraphicsBase.hpp +0 -0
  174. data/{Gosu → include/Gosu}/IO.hpp +0 -0
  175. data/{Gosu → include/Gosu}/Image.h +0 -0
  176. data/{Gosu → include/Gosu}/Image.hpp +7 -6
  177. data/{Gosu → include/Gosu}/ImageData.hpp +0 -0
  178. data/{Gosu → include/Gosu}/Input.hpp +30 -15
  179. data/{Gosu → include/Gosu}/Inspection.hpp +0 -0
  180. data/{Gosu → include/Gosu}/Math.hpp +0 -0
  181. data/{Gosu → include/Gosu}/Platform.hpp +0 -0
  182. data/{Gosu → include/Gosu}/Sample.h +0 -0
  183. data/{Gosu → include/Gosu}/Song.h +0 -0
  184. data/{Gosu → include/Gosu}/Text.hpp +0 -0
  185. data/{Gosu → include/Gosu}/TextInput.h +0 -0
  186. data/{Gosu → include/Gosu}/TextInput.hpp +0 -0
  187. data/{Gosu → include/Gosu}/Timing.hpp +0 -0
  188. data/{Gosu → include/Gosu}/Utility.hpp +1 -1
  189. data/{Gosu → include/Gosu}/Version.hpp +0 -0
  190. data/{Gosu → include/Gosu}/Window.h +2 -0
  191. data/{Gosu → include/Gosu}/Window.hpp +21 -13
  192. data/lib/OpenAL32.dll +0 -0
  193. data/lib/SDL2.dll +0 -0
  194. data/lib/gosu.rb +0 -3
  195. data/lib/gosu/patches.rb +0 -9
  196. data/lib/gosu/swig_patches.rb +3 -2
  197. data/lib/libmpg123.dll +0 -0
  198. data/lib/libsndfile.dll +0 -0
  199. data/lib64/OpenAL32.dll +0 -0
  200. data/lib64/SDL2.dll +0 -0
  201. data/lib64/libmpg123.dll +0 -0
  202. data/lib64/libsndfile.dll +0 -0
  203. data/rdoc/gosu.rb +95 -20
  204. data/src/Audio.cpp +50 -224
  205. data/src/AudioFile.hpp +17 -37
  206. data/src/AudioFileAudioToolbox.cpp +237 -0
  207. data/src/AudioFileSDLSound.cpp +147 -0
  208. data/src/AudioImpl.cpp +3 -12
  209. data/src/AudioImpl.hpp +3 -1
  210. data/src/Bitmap.cpp +85 -83
  211. data/src/BitmapIO.cpp +52 -58
  212. data/src/Constants.cpp +80 -33
  213. data/src/Font.cpp +3 -1
  214. data/src/GosuWrapper.cpp +19 -0
  215. data/src/Graphics.cpp +7 -4
  216. data/src/Image.cpp +13 -16
  217. data/src/Input.cpp +408 -159
  218. data/src/LargeImageData.cpp +1 -1
  219. data/src/MarkupParser.cpp +2 -1
  220. data/src/RubyGosu.cxx +349 -83
  221. data/src/RubyGosu.h +4 -2
  222. data/src/TexChunk.cpp +1 -1
  223. data/src/TextBuilder.cpp +3 -1
  224. data/src/Texture.cpp +1 -1
  225. data/src/TrueTypeFont.cpp +1 -1
  226. data/src/Utility.cpp +11 -7
  227. data/src/Window.cpp +30 -39
  228. data/src/WindowWrapper.cpp +28 -0
  229. metadata +207 -52
  230. data/Gosu/Bitmap.hpp +0 -113
  231. data/src/AudioToolboxFile.hpp +0 -210
  232. data/src/OggFile.hpp +0 -92
  233. data/src/SndFile.hpp +0 -174
  234. data/src/WinMain.cpp +0 -64
@@ -0,0 +1,146 @@
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
+ #ifndef SDL_messagebox_h_
23
+ #define SDL_messagebox_h_
24
+
25
+ #include "SDL_stdinc.h"
26
+ #include "SDL_video.h" /* For SDL_Window */
27
+
28
+ #include "begin_code.h"
29
+ /* Set up for C function definitions, even when using C++ */
30
+ #ifdef __cplusplus
31
+ extern "C" {
32
+ #endif
33
+
34
+ /**
35
+ * \brief SDL_MessageBox flags. If supported will display warning icon, etc.
36
+ */
37
+ typedef enum
38
+ {
39
+ SDL_MESSAGEBOX_ERROR = 0x00000010, /**< error dialog */
40
+ SDL_MESSAGEBOX_WARNING = 0x00000020, /**< warning dialog */
41
+ SDL_MESSAGEBOX_INFORMATION = 0x00000040, /**< informational dialog */
42
+ SDL_MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT = 0x00000080, /**< buttons placed left to right */
43
+ SDL_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT = 0x00000100 /**< buttons placed right to left */
44
+ } SDL_MessageBoxFlags;
45
+
46
+ /**
47
+ * \brief Flags for SDL_MessageBoxButtonData.
48
+ */
49
+ typedef enum
50
+ {
51
+ SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001, /**< Marks the default button when return is hit */
52
+ SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002 /**< Marks the default button when escape is hit */
53
+ } SDL_MessageBoxButtonFlags;
54
+
55
+ /**
56
+ * \brief Individual button data.
57
+ */
58
+ typedef struct
59
+ {
60
+ Uint32 flags; /**< ::SDL_MessageBoxButtonFlags */
61
+ int buttonid; /**< User defined button id (value returned via SDL_ShowMessageBox) */
62
+ const char * text; /**< The UTF-8 button text */
63
+ } SDL_MessageBoxButtonData;
64
+
65
+ /**
66
+ * \brief RGB value used in a message box color scheme
67
+ */
68
+ typedef struct
69
+ {
70
+ Uint8 r, g, b;
71
+ } SDL_MessageBoxColor;
72
+
73
+ typedef enum
74
+ {
75
+ SDL_MESSAGEBOX_COLOR_BACKGROUND,
76
+ SDL_MESSAGEBOX_COLOR_TEXT,
77
+ SDL_MESSAGEBOX_COLOR_BUTTON_BORDER,
78
+ SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND,
79
+ SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED,
80
+ SDL_MESSAGEBOX_COLOR_MAX
81
+ } SDL_MessageBoxColorType;
82
+
83
+ /**
84
+ * \brief A set of colors to use for message box dialogs
85
+ */
86
+ typedef struct
87
+ {
88
+ SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX];
89
+ } SDL_MessageBoxColorScheme;
90
+
91
+ /**
92
+ * \brief MessageBox structure containing title, text, window, etc.
93
+ */
94
+ typedef struct
95
+ {
96
+ Uint32 flags; /**< ::SDL_MessageBoxFlags */
97
+ SDL_Window *window; /**< Parent window, can be NULL */
98
+ const char *title; /**< UTF-8 title */
99
+ const char *message; /**< UTF-8 message text */
100
+
101
+ int numbuttons;
102
+ const SDL_MessageBoxButtonData *buttons;
103
+
104
+ const SDL_MessageBoxColorScheme *colorScheme; /**< ::SDL_MessageBoxColorScheme, can be NULL to use system settings */
105
+ } SDL_MessageBoxData;
106
+
107
+ /**
108
+ * \brief Create a modal message box.
109
+ *
110
+ * \param messageboxdata The SDL_MessageBoxData structure with title, text, etc.
111
+ * \param buttonid The pointer to which user id of hit button should be copied.
112
+ *
113
+ * \return -1 on error, otherwise 0 and buttonid contains user id of button
114
+ * hit or -1 if dialog was closed.
115
+ *
116
+ * \note This function should be called on the thread that created the parent
117
+ * window, or on the main thread if the messagebox has no parent. It will
118
+ * block execution of that thread until the user clicks a button or
119
+ * closes the messagebox.
120
+ */
121
+ extern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid);
122
+
123
+ /**
124
+ * \brief Create a simple modal message box
125
+ *
126
+ * \param flags ::SDL_MessageBoxFlags
127
+ * \param title UTF-8 title text
128
+ * \param message UTF-8 message text
129
+ * \param window The parent window, or NULL for no parent
130
+ *
131
+ * \return 0 on success, -1 on error
132
+ *
133
+ * \sa SDL_ShowMessageBox
134
+ */
135
+ extern DECLSPEC int SDLCALL SDL_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, SDL_Window *window);
136
+
137
+
138
+ /* Ends C function definitions when using C++ */
139
+ #ifdef __cplusplus
140
+ }
141
+ #endif
142
+ #include "close_code.h"
143
+
144
+ #endif /* SDL_messagebox_h_ */
145
+
146
+ /* vi: set ts=4 sw=4 expandtab: */
@@ -0,0 +1,117 @@
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_metal.h
24
+ *
25
+ * Header file for functions to creating Metal layers and views on SDL windows.
26
+ */
27
+
28
+ #ifndef SDL_metal_h_
29
+ #define SDL_metal_h_
30
+
31
+ #include "SDL_video.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 A handle to a CAMetalLayer-backed NSView (macOS) or UIView (iOS/tvOS).
41
+ *
42
+ * \note This can be cast directly to an NSView or UIView.
43
+ */
44
+ typedef void *SDL_MetalView;
45
+
46
+ /**
47
+ * \name Metal support functions
48
+ */
49
+ /* @{ */
50
+
51
+ /**
52
+ * \brief Create a CAMetalLayer-backed NSView/UIView and attach it to the
53
+ * specified window.
54
+ *
55
+ * On macOS, this does *not* associate a MTLDevice with the CAMetalLayer on its
56
+ * own. It is up to user code to do that.
57
+ *
58
+ * The returned handle can be casted directly to a NSView or UIView.
59
+ * To access the backing CAMetalLayer, call SDL_Metal_GetLayer().
60
+ *
61
+ * \note \a window must be created with the SDL_WINDOW_METAL flag.
62
+ *
63
+ * \sa SDL_Metal_DestroyView
64
+ * \sa SDL_Metal_GetLayer
65
+ */
66
+ extern DECLSPEC SDL_MetalView SDLCALL SDL_Metal_CreateView(SDL_Window * window);
67
+
68
+ /**
69
+ * \brief Destroy an existing SDL_MetalView object.
70
+ *
71
+ * This should be called before SDL_DestroyWindow, if SDL_Metal_CreateView was
72
+ * called after SDL_CreateWindow.
73
+ *
74
+ * \sa SDL_Metal_CreateView
75
+ */
76
+ extern DECLSPEC void SDLCALL SDL_Metal_DestroyView(SDL_MetalView view);
77
+
78
+ /**
79
+ * \brief Get a pointer to the backing CAMetalLayer for the given view.
80
+ *
81
+ * \sa SDL_MetalCreateView
82
+ */
83
+ extern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view);
84
+
85
+ /**
86
+ * \brief Get the size of a window's underlying drawable in pixels (for use
87
+ * with setting viewport, scissor & etc).
88
+ *
89
+ * \param window SDL_Window from which the drawable size should be queried
90
+ * \param w Pointer to variable for storing the width in pixels,
91
+ * may be NULL
92
+ * \param h Pointer to variable for storing the height in pixels,
93
+ * may be NULL
94
+ *
95
+ * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI
96
+ * drawable, i.e. the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a
97
+ * platform with high-DPI support (Apple calls this "Retina"), and not disabled
98
+ * by the \c SDL_HINT_VIDEO_HIGHDPI_DISABLED hint.
99
+ *
100
+ * \note On macOS high-DPI support must be enabled for an application by
101
+ * setting NSHighResolutionCapable to true in its Info.plist.
102
+ *
103
+ * \sa SDL_GetWindowSize()
104
+ * \sa SDL_CreateWindow()
105
+ */
106
+ extern DECLSPEC void SDLCALL SDL_Metal_GetDrawableSize(SDL_Window* window, int *w,
107
+ int *h);
108
+
109
+ /* @} *//* Metal support functions */
110
+
111
+ /* Ends C function definitions when using C++ */
112
+ #ifdef __cplusplus
113
+ }
114
+ #endif
115
+ #include "close_code.h"
116
+
117
+ #endif /* SDL_metal_h_ */
@@ -0,0 +1,75 @@
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_misc.h
24
+ *
25
+ * \brief Include file for SDL API functions that don't fit elsewhere.
26
+ */
27
+
28
+ #ifndef SDL_misc_h_
29
+ #define SDL_misc_h_
30
+
31
+ #include "SDL_stdinc.h"
32
+
33
+ #include "begin_code.h"
34
+
35
+ /* Set up for C function definitions, even when using C++ */
36
+ #ifdef __cplusplus
37
+ extern "C" {
38
+ #endif
39
+
40
+ /**
41
+ * \brief Open an URL / URI in the browser or other
42
+ *
43
+ * Open a URL in a separate, system-provided application. How this works will
44
+ * vary wildly depending on the platform. This will likely launch what
45
+ * makes sense to handle a specific URL's protocol (a web browser for http://,
46
+ * etc), but it might also be able to launch file managers for directories
47
+ * and other things.
48
+ *
49
+ * What happens when you open a URL varies wildly as well: your game window
50
+ * may lose focus (and may or may not lose focus if your game was fullscreen
51
+ * or grabbing input at the time). On mobile devices, your app will likely
52
+ * move to the background or your process might be paused. Any given platform
53
+ * may or may not handle a given URL.
54
+ *
55
+ * If this is unimplemented (or simply unavailable) for a platform, this will
56
+ * fail with an error. A successful result does not mean the URL loaded, just
57
+ * that we launched something to handle it (or at least believe we did).
58
+ *
59
+ * All this to say: this function can be useful, but you should definitely
60
+ * test it on every platform you target.
61
+ *
62
+ * \param url A valid URL to open.
63
+ * \return 0 on success, or -1 on error.
64
+ */
65
+ extern DECLSPEC int SDLCALL SDL_OpenURL(const char *url);
66
+
67
+ /* Ends C function definitions when using C++ */
68
+ #ifdef __cplusplus
69
+ }
70
+ #endif
71
+ #include "close_code.h"
72
+
73
+ #endif /* SDL_misc_h_ */
74
+
75
+ /* vi: set ts=4 sw=4 expandtab: */
@@ -0,0 +1,302 @@
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_mouse.h
24
+ *
25
+ * Include file for SDL mouse event handling.
26
+ */
27
+
28
+ #ifndef SDL_mouse_h_
29
+ #define SDL_mouse_h_
30
+
31
+ #include "SDL_stdinc.h"
32
+ #include "SDL_error.h"
33
+ #include "SDL_video.h"
34
+
35
+ #include "begin_code.h"
36
+ /* Set up for C function definitions, even when using C++ */
37
+ #ifdef __cplusplus
38
+ extern "C" {
39
+ #endif
40
+
41
+ typedef struct SDL_Cursor SDL_Cursor; /**< Implementation dependent */
42
+
43
+ /**
44
+ * \brief Cursor types for SDL_CreateSystemCursor().
45
+ */
46
+ typedef enum
47
+ {
48
+ SDL_SYSTEM_CURSOR_ARROW, /**< Arrow */
49
+ SDL_SYSTEM_CURSOR_IBEAM, /**< I-beam */
50
+ SDL_SYSTEM_CURSOR_WAIT, /**< Wait */
51
+ SDL_SYSTEM_CURSOR_CROSSHAIR, /**< Crosshair */
52
+ SDL_SYSTEM_CURSOR_WAITARROW, /**< Small wait cursor (or Wait if not available) */
53
+ SDL_SYSTEM_CURSOR_SIZENWSE, /**< Double arrow pointing northwest and southeast */
54
+ SDL_SYSTEM_CURSOR_SIZENESW, /**< Double arrow pointing northeast and southwest */
55
+ SDL_SYSTEM_CURSOR_SIZEWE, /**< Double arrow pointing west and east */
56
+ SDL_SYSTEM_CURSOR_SIZENS, /**< Double arrow pointing north and south */
57
+ SDL_SYSTEM_CURSOR_SIZEALL, /**< Four pointed arrow pointing north, south, east, and west */
58
+ SDL_SYSTEM_CURSOR_NO, /**< Slashed circle or crossbones */
59
+ SDL_SYSTEM_CURSOR_HAND, /**< Hand */
60
+ SDL_NUM_SYSTEM_CURSORS
61
+ } SDL_SystemCursor;
62
+
63
+ /**
64
+ * \brief Scroll direction types for the Scroll event
65
+ */
66
+ typedef enum
67
+ {
68
+ SDL_MOUSEWHEEL_NORMAL, /**< The scroll direction is normal */
69
+ SDL_MOUSEWHEEL_FLIPPED /**< The scroll direction is flipped / natural */
70
+ } SDL_MouseWheelDirection;
71
+
72
+ /* Function prototypes */
73
+
74
+ /**
75
+ * \brief Get the window which currently has mouse focus.
76
+ */
77
+ extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void);
78
+
79
+ /**
80
+ * \brief Retrieve the current state of the mouse.
81
+ *
82
+ * The current button state is returned as a button bitmask, which can
83
+ * be tested using the SDL_BUTTON(X) macros, and x and y are set to the
84
+ * mouse cursor position relative to the focus window for the currently
85
+ * selected mouse. You can pass NULL for either x or y.
86
+ */
87
+ extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y);
88
+
89
+ /**
90
+ * \brief Get the current state of the mouse, in relation to the desktop
91
+ *
92
+ * This works just like SDL_GetMouseState(), but the coordinates will be
93
+ * reported relative to the top-left of the desktop. This can be useful if
94
+ * you need to track the mouse outside of a specific window and
95
+ * SDL_CaptureMouse() doesn't fit your needs. For example, it could be
96
+ * useful if you need to track the mouse while dragging a window, where
97
+ * coordinates relative to a window might not be in sync at all times.
98
+ *
99
+ * \note SDL_GetMouseState() returns the mouse position as SDL understands
100
+ * it from the last pump of the event queue. This function, however,
101
+ * queries the OS for the current mouse position, and as such, might
102
+ * be a slightly less efficient function. Unless you know what you're
103
+ * doing and have a good reason to use this function, you probably want
104
+ * SDL_GetMouseState() instead.
105
+ *
106
+ * \param x Returns the current X coord, relative to the desktop. Can be NULL.
107
+ * \param y Returns the current Y coord, relative to the desktop. Can be NULL.
108
+ * \return The current button state as a bitmask, which can be tested using the SDL_BUTTON(X) macros.
109
+ *
110
+ * \sa SDL_GetMouseState
111
+ */
112
+ extern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y);
113
+
114
+ /**
115
+ * \brief Retrieve the relative state of the mouse.
116
+ *
117
+ * The current button state is returned as a button bitmask, which can
118
+ * be tested using the SDL_BUTTON(X) macros, and x and y are set to the
119
+ * mouse deltas since the last call to SDL_GetRelativeMouseState().
120
+ */
121
+ extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y);
122
+
123
+ /**
124
+ * \brief Moves the mouse to the given position within the window.
125
+ *
126
+ * \param window The window to move the mouse into, or NULL for the current mouse focus
127
+ * \param x The x coordinate within the window
128
+ * \param y The y coordinate within the window
129
+ *
130
+ * \note This function generates a mouse motion event
131
+ */
132
+ extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window,
133
+ int x, int y);
134
+
135
+ /**
136
+ * \brief Moves the mouse to the given position in global screen space.
137
+ *
138
+ * \param x The x coordinate
139
+ * \param y The y coordinate
140
+ * \return 0 on success, -1 on error (usually: unsupported by a platform).
141
+ *
142
+ * \note This function generates a mouse motion event
143
+ */
144
+ extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y);
145
+
146
+ /**
147
+ * \brief Set relative mouse mode.
148
+ *
149
+ * \param enabled Whether or not to enable relative mode
150
+ *
151
+ * \return 0 on success, or -1 if relative mode is not supported.
152
+ *
153
+ * While the mouse is in relative mode, the cursor is hidden, and the
154
+ * driver will try to report continuous motion in the current window.
155
+ * Only relative motion events will be delivered, the mouse position
156
+ * will not change.
157
+ *
158
+ * \note This function will flush any pending mouse motion.
159
+ *
160
+ * \sa SDL_GetRelativeMouseMode()
161
+ */
162
+ extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled);
163
+
164
+ /**
165
+ * \brief Capture the mouse, to track input outside an SDL window.
166
+ *
167
+ * \param enabled Whether or not to enable capturing
168
+ *
169
+ * Capturing enables your app to obtain mouse events globally, instead of
170
+ * just within your window. Not all video targets support this function.
171
+ * When capturing is enabled, the current window will get all mouse events,
172
+ * but unlike relative mode, no change is made to the cursor and it is
173
+ * not restrained to your window.
174
+ *
175
+ * This function may also deny mouse input to other windows--both those in
176
+ * your application and others on the system--so you should use this
177
+ * function sparingly, and in small bursts. For example, you might want to
178
+ * track the mouse while the user is dragging something, until the user
179
+ * releases a mouse button. It is not recommended that you capture the mouse
180
+ * for long periods of time, such as the entire time your app is running.
181
+ *
182
+ * While captured, mouse events still report coordinates relative to the
183
+ * current (foreground) window, but those coordinates may be outside the
184
+ * bounds of the window (including negative values). Capturing is only
185
+ * allowed for the foreground window. If the window loses focus while
186
+ * capturing, the capture will be disabled automatically.
187
+ *
188
+ * While capturing is enabled, the current window will have the
189
+ * SDL_WINDOW_MOUSE_CAPTURE flag set.
190
+ *
191
+ * \return 0 on success, or -1 if not supported.
192
+ */
193
+ extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled);
194
+
195
+ /**
196
+ * \brief Query whether relative mouse mode is enabled.
197
+ *
198
+ * \sa SDL_SetRelativeMouseMode()
199
+ */
200
+ extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void);
201
+
202
+ /**
203
+ * \brief Create a cursor, using the specified bitmap data and
204
+ * mask (in MSB format).
205
+ *
206
+ * The cursor width must be a multiple of 8 bits.
207
+ *
208
+ * The cursor is created in black and white according to the following:
209
+ * <table>
210
+ * <tr><td> data </td><td> mask </td><td> resulting pixel on screen </td></tr>
211
+ * <tr><td> 0 </td><td> 1 </td><td> White </td></tr>
212
+ * <tr><td> 1 </td><td> 1 </td><td> Black </td></tr>
213
+ * <tr><td> 0 </td><td> 0 </td><td> Transparent </td></tr>
214
+ * <tr><td> 1 </td><td> 0 </td><td> Inverted color if possible, black
215
+ * if not. </td></tr>
216
+ * </table>
217
+ *
218
+ * \sa SDL_FreeCursor()
219
+ */
220
+ extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data,
221
+ const Uint8 * mask,
222
+ int w, int h, int hot_x,
223
+ int hot_y);
224
+
225
+ /**
226
+ * \brief Create a color cursor.
227
+ *
228
+ * \sa SDL_FreeCursor()
229
+ */
230
+ extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface,
231
+ int hot_x,
232
+ int hot_y);
233
+
234
+ /**
235
+ * \brief Create a system cursor.
236
+ *
237
+ * \sa SDL_FreeCursor()
238
+ */
239
+ extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id);
240
+
241
+ /**
242
+ * \brief Set the active cursor.
243
+ */
244
+ extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor);
245
+
246
+ /**
247
+ * \brief Return the active cursor.
248
+ */
249
+ extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void);
250
+
251
+ /**
252
+ * \brief Return the default cursor.
253
+ */
254
+ extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void);
255
+
256
+ /**
257
+ * \brief Frees a cursor created with SDL_CreateCursor() or similar functions.
258
+ *
259
+ * \sa SDL_CreateCursor()
260
+ * \sa SDL_CreateColorCursor()
261
+ * \sa SDL_CreateSystemCursor()
262
+ */
263
+ extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor);
264
+
265
+ /**
266
+ * \brief Toggle whether or not the cursor is shown.
267
+ *
268
+ * \param toggle 1 to show the cursor, 0 to hide it, -1 to query the current
269
+ * state.
270
+ *
271
+ * \return 1 if the cursor is shown, or 0 if the cursor is hidden.
272
+ */
273
+ extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle);
274
+
275
+ /**
276
+ * Used as a mask when testing buttons in buttonstate.
277
+ * - Button 1: Left mouse button
278
+ * - Button 2: Middle mouse button
279
+ * - Button 3: Right mouse button
280
+ */
281
+ #define SDL_BUTTON(X) (1 << ((X)-1))
282
+ #define SDL_BUTTON_LEFT 1
283
+ #define SDL_BUTTON_MIDDLE 2
284
+ #define SDL_BUTTON_RIGHT 3
285
+ #define SDL_BUTTON_X1 4
286
+ #define SDL_BUTTON_X2 5
287
+ #define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT)
288
+ #define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE)
289
+ #define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT)
290
+ #define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1)
291
+ #define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2)
292
+
293
+
294
+ /* Ends C function definitions when using C++ */
295
+ #ifdef __cplusplus
296
+ }
297
+ #endif
298
+ #include "close_code.h"
299
+
300
+ #endif /* SDL_mouse_h_ */
301
+
302
+ /* vi: set ts=4 sw=4 expandtab: */