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,302 @@
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_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: */
@@ -0,0 +1,251 @@
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
+ #ifndef SDL_mutex_h_
23
+ #define SDL_mutex_h_
24
+
25
+ /**
26
+ * \file SDL_mutex.h
27
+ *
28
+ * Functions to provide thread synchronization primitives.
29
+ */
30
+
31
+ #include "SDL_stdinc.h"
32
+ #include "SDL_error.h"
33
+
34
+ #include "begin_code.h"
35
+ /* Set up for C function definitions, even when using C++ */
36
+ #ifdef __cplusplus
37
+ extern "C" {
38
+ #endif
39
+
40
+ /**
41
+ * Synchronization functions which can time out return this value
42
+ * if they time out.
43
+ */
44
+ #define SDL_MUTEX_TIMEDOUT 1
45
+
46
+ /**
47
+ * This is the timeout value which corresponds to never time out.
48
+ */
49
+ #define SDL_MUTEX_MAXWAIT (~(Uint32)0)
50
+
51
+
52
+ /**
53
+ * \name Mutex functions
54
+ */
55
+ /* @{ */
56
+
57
+ /* The SDL mutex structure, defined in SDL_sysmutex.c */
58
+ struct SDL_mutex;
59
+ typedef struct SDL_mutex SDL_mutex;
60
+
61
+ /**
62
+ * Create a mutex, initialized unlocked.
63
+ */
64
+ extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void);
65
+
66
+ /**
67
+ * Lock the mutex.
68
+ *
69
+ * \return 0, or -1 on error.
70
+ */
71
+ #define SDL_mutexP(m) SDL_LockMutex(m)
72
+ extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex);
73
+
74
+ /**
75
+ * Try to lock the mutex
76
+ *
77
+ * \return 0, SDL_MUTEX_TIMEDOUT, or -1 on error
78
+ */
79
+ extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex);
80
+
81
+ /**
82
+ * Unlock the mutex.
83
+ *
84
+ * \return 0, or -1 on error.
85
+ *
86
+ * \warning It is an error to unlock a mutex that has not been locked by
87
+ * the current thread, and doing so results in undefined behavior.
88
+ */
89
+ #define SDL_mutexV(m) SDL_UnlockMutex(m)
90
+ extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex);
91
+
92
+ /**
93
+ * Destroy a mutex.
94
+ */
95
+ extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex * mutex);
96
+
97
+ /* @} *//* Mutex functions */
98
+
99
+
100
+ /**
101
+ * \name Semaphore functions
102
+ */
103
+ /* @{ */
104
+
105
+ /* The SDL semaphore structure, defined in SDL_syssem.c */
106
+ struct SDL_semaphore;
107
+ typedef struct SDL_semaphore SDL_sem;
108
+
109
+ /**
110
+ * Create a semaphore, initialized with value, returns NULL on failure.
111
+ */
112
+ extern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value);
113
+
114
+ /**
115
+ * Destroy a semaphore.
116
+ */
117
+ extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem);
118
+
119
+ /**
120
+ * This function suspends the calling thread until the semaphore pointed
121
+ * to by \c sem has a positive count. It then atomically decreases the
122
+ * semaphore count.
123
+ */
124
+ extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem);
125
+
126
+ /**
127
+ * Non-blocking variant of SDL_SemWait().
128
+ *
129
+ * \return 0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait would
130
+ * block, and -1 on error.
131
+ */
132
+ extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem);
133
+
134
+ /**
135
+ * Variant of SDL_SemWait() with a timeout in milliseconds.
136
+ *
137
+ * \return 0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait does not
138
+ * succeed in the allotted time, and -1 on error.
139
+ *
140
+ * \warning On some platforms this function is implemented by looping with a
141
+ * delay of 1 ms, and so should be avoided if possible.
142
+ */
143
+ extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem * sem, Uint32 ms);
144
+
145
+ /**
146
+ * Atomically increases the semaphore's count (not blocking).
147
+ *
148
+ * \return 0, or -1 on error.
149
+ */
150
+ extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem);
151
+
152
+ /**
153
+ * Returns the current count of the semaphore.
154
+ */
155
+ extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem * sem);
156
+
157
+ /* @} *//* Semaphore functions */
158
+
159
+
160
+ /**
161
+ * \name Condition variable functions
162
+ */
163
+ /* @{ */
164
+
165
+ /* The SDL condition variable structure, defined in SDL_syscond.c */
166
+ struct SDL_cond;
167
+ typedef struct SDL_cond SDL_cond;
168
+
169
+ /**
170
+ * Create a condition variable.
171
+ *
172
+ * Typical use of condition variables:
173
+ *
174
+ * Thread A:
175
+ * SDL_LockMutex(lock);
176
+ * while ( ! condition ) {
177
+ * SDL_CondWait(cond, lock);
178
+ * }
179
+ * SDL_UnlockMutex(lock);
180
+ *
181
+ * Thread B:
182
+ * SDL_LockMutex(lock);
183
+ * ...
184
+ * condition = true;
185
+ * ...
186
+ * SDL_CondSignal(cond);
187
+ * SDL_UnlockMutex(lock);
188
+ *
189
+ * There is some discussion whether to signal the condition variable
190
+ * with the mutex locked or not. There is some potential performance
191
+ * benefit to unlocking first on some platforms, but there are some
192
+ * potential race conditions depending on how your code is structured.
193
+ *
194
+ * In general it's safer to signal the condition variable while the
195
+ * mutex is locked.
196
+ */
197
+ extern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void);
198
+
199
+ /**
200
+ * Destroy a condition variable.
201
+ */
202
+ extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond);
203
+
204
+ /**
205
+ * Restart one of the threads that are waiting on the condition variable.
206
+ *
207
+ * \return 0 or -1 on error.
208
+ */
209
+ extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond);
210
+
211
+ /**
212
+ * Restart all threads that are waiting on the condition variable.
213
+ *
214
+ * \return 0 or -1 on error.
215
+ */
216
+ extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond);
217
+
218
+ /**
219
+ * Wait on the condition variable, unlocking the provided mutex.
220
+ *
221
+ * \warning The mutex must be locked before entering this function!
222
+ *
223
+ * The mutex is re-locked once the condition variable is signaled.
224
+ *
225
+ * \return 0 when it is signaled, or -1 on error.
226
+ */
227
+ extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex);
228
+
229
+ /**
230
+ * Waits for at most \c ms milliseconds, and returns 0 if the condition
231
+ * variable is signaled, ::SDL_MUTEX_TIMEDOUT if the condition is not
232
+ * signaled in the allotted time, and -1 on error.
233
+ *
234
+ * \warning On some platforms this function is implemented by looping with a
235
+ * delay of 1 ms, and so should be avoided if possible.
236
+ */
237
+ extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond * cond,
238
+ SDL_mutex * mutex, Uint32 ms);
239
+
240
+ /* @} *//* Condition variable functions */
241
+
242
+
243
+ /* Ends C function definitions when using C++ */
244
+ #ifdef __cplusplus
245
+ }
246
+ #endif
247
+ #include "close_code.h"
248
+
249
+ #endif /* SDL_mutex_h_ */
250
+
251
+ /* vi: set ts=4 sw=4 expandtab: */