SDLRuby 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +5 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +31 -0
  5. data/Rakefile +12 -0
  6. data/lib/SDLRuby/audio.rb +65 -0
  7. data/lib/SDLRuby/cursor.rb +46 -0
  8. data/lib/SDLRuby/display.rb +79 -0
  9. data/lib/SDLRuby/event/accessor.rb +127 -0
  10. data/lib/SDLRuby/event/type.rb +75 -0
  11. data/lib/SDLRuby/event.rb +80 -0
  12. data/lib/SDLRuby/font.rb +227 -0
  13. data/lib/SDLRuby/hint.rb +36 -0
  14. data/lib/SDLRuby/image/image.rb +23 -0
  15. data/lib/SDLRuby/image/include/SDL_image.h.rb +61 -0
  16. data/lib/SDLRuby/image.rb +69 -0
  17. data/lib/SDLRuby/keyboard.rb +58 -0
  18. data/lib/SDLRuby/mixer/channel.rb +43 -0
  19. data/lib/SDLRuby/mixer/chunk.rb +49 -0
  20. data/lib/SDLRuby/mixer/controller.rb +44 -0
  21. data/lib/SDLRuby/mixer/include/SDL_mixer.h.rb +95 -0
  22. data/lib/SDLRuby/mixer/sdl_mixer.rb +60 -0
  23. data/lib/SDLRuby/mixer.rb +87 -0
  24. data/lib/SDLRuby/mouse.rb +52 -0
  25. data/lib/SDLRuby/music.rb +158 -0
  26. data/lib/SDLRuby/palette.rb +49 -0
  27. data/lib/SDLRuby/pixel_formatter.rb +67 -0
  28. data/lib/SDLRuby/rect.rb +11 -0
  29. data/lib/SDLRuby/renderer/accessor.rb +70 -0
  30. data/lib/SDLRuby/renderer/drawer.rb +107 -0
  31. data/lib/SDLRuby/renderer/renderer_info.rb +27 -0
  32. data/lib/SDLRuby/renderer.rb +101 -0
  33. data/lib/SDLRuby/rw_ops/rw_object.rb +128 -0
  34. data/lib/SDLRuby/rw_ops.rb +216 -0
  35. data/lib/SDLRuby/sdl/include/SDL.h.rb +33 -0
  36. data/lib/SDLRuby/sdl/include/SDL_audio.h.rb +49 -0
  37. data/lib/SDLRuby/sdl/include/SDL_blendmode.h.rb +6 -0
  38. data/lib/SDLRuby/sdl/include/SDL_clipboard.h.rb +10 -0
  39. data/lib/SDLRuby/sdl/include/SDL_config.h.rb +13 -0
  40. data/lib/SDLRuby/sdl/include/SDL_cpuinfo.h.rb +27 -0
  41. data/lib/SDLRuby/sdl/include/SDL_endian.h.rb +3 -0
  42. data/lib/SDLRuby/sdl/include/SDL_error.h.rb +9 -0
  43. data/lib/SDLRuby/sdl/include/SDL_events.h.rb +32 -0
  44. data/lib/SDLRuby/sdl/include/SDL_filesystem.h.rb +6 -0
  45. data/lib/SDLRuby/sdl/include/SDL_gamecontroller.h.rb +66 -0
  46. data/lib/SDLRuby/sdl/include/SDL_gesture.h.rb +12 -0
  47. data/lib/SDLRuby/sdl/include/SDL_guid.h.rb +7 -0
  48. data/lib/SDLRuby/sdl/include/SDL_hints.h.rb +14 -0
  49. data/lib/SDLRuby/sdl/include/SDL_joystick.h.rb +69 -0
  50. data/lib/SDLRuby/sdl/include/SDL_keyboard.h.rb +26 -0
  51. data/lib/SDLRuby/sdl/include/SDL_keycode.h.rb +7 -0
  52. data/lib/SDLRuby/sdl/include/SDL_locale.h.rb +6 -0
  53. data/lib/SDLRuby/sdl/include/SDL_main.h.rb +3 -0
  54. data/lib/SDLRuby/sdl/include/SDL_messagebox.h.rb +10 -0
  55. data/lib/SDLRuby/sdl/include/SDL_misc.h.rb +5 -0
  56. data/lib/SDLRuby/sdl/include/SDL_mouse.h.rb +26 -0
  57. data/lib/SDLRuby/sdl/include/SDL_pixels.h.rb +25 -0
  58. data/lib/SDLRuby/sdl/include/SDL_platform.h.rb +3 -0
  59. data/lib/SDLRuby/sdl/include/SDL_power.h.rb +6 -0
  60. data/lib/SDLRuby/sdl/include/SDL_rect.h.rb +17 -0
  61. data/lib/SDLRuby/sdl/include/SDL_render.h.rb +94 -0
  62. data/lib/SDLRuby/sdl/include/SDL_revision.h.rb +2 -0
  63. data/lib/SDLRuby/sdl/include/SDL_rwops.h.rb +34 -0
  64. data/lib/SDLRuby/sdl/include/SDL_scancode.h.rb +5 -0
  65. data/lib/SDLRuby/sdl/include/SDL_sensor.h.rb +25 -0
  66. data/lib/SDLRuby/sdl/include/SDL_shape.h.rb +13 -0
  67. data/lib/SDLRuby/sdl/include/SDL_stdinc.h.rb +24 -0
  68. data/lib/SDLRuby/sdl/include/SDL_surface.h.rb +37 -0
  69. data/lib/SDLRuby/sdl/include/SDL_system.h.rb +6 -0
  70. data/lib/SDLRuby/sdl/include/SDL_syswm.h.rb +16 -0
  71. data/lib/SDLRuby/sdl/include/SDL_timer.h.rb +13 -0
  72. data/lib/SDLRuby/sdl/include/SDL_touch.h.rb +15 -0
  73. data/lib/SDLRuby/sdl/include/SDL_types.h.rb +3 -0
  74. data/lib/SDLRuby/sdl/include/SDL_version.h.rb +6 -0
  75. data/lib/SDLRuby/sdl/include/SDL_video.h.rb +117 -0
  76. data/lib/SDLRuby/sdl/sdl.rb +55 -0
  77. data/lib/SDLRuby/sdl/sdl_audio.rb +75 -0
  78. data/lib/SDLRuby/sdl/sdl_blendmode.rb +10 -0
  79. data/lib/SDLRuby/sdl/sdl_error.rb +5 -0
  80. data/lib/SDLRuby/sdl/sdl_events.rb +470 -0
  81. data/lib/SDLRuby/sdl/sdl_hints.rb +9 -0
  82. data/lib/SDLRuby/sdl/sdl_keyboard.rb +12 -0
  83. data/lib/SDLRuby/sdl/sdl_locale.rb +8 -0
  84. data/lib/SDLRuby/sdl/sdl_message_box.rb +7 -0
  85. data/lib/SDLRuby/sdl/sdl_mouse.rb +32 -0
  86. data/lib/SDLRuby/sdl/sdl_palette.rb +12 -0
  87. data/lib/SDLRuby/sdl/sdl_pixels.rb +138 -0
  88. data/lib/SDLRuby/sdl/sdl_rect.rb +11 -0
  89. data/lib/SDLRuby/sdl/sdl_render.rb +35 -0
  90. data/lib/SDLRuby/sdl/sdl_rw_ops.rb +29 -0
  91. data/lib/SDLRuby/sdl/sdl_scancode.rb +255 -0
  92. data/lib/SDLRuby/sdl/sdl_surface.rb +27 -0
  93. data/lib/SDLRuby/sdl/sdl_version.rb +5 -0
  94. data/lib/SDLRuby/sdl/sdl_video.rb +104 -0
  95. data/lib/SDLRuby/sdl.rb +192 -0
  96. data/lib/SDLRuby/sdl_error.rb +8 -0
  97. data/lib/SDLRuby/surface/pixel_format.rb +51 -0
  98. data/lib/SDLRuby/surface/surface_renderer.rb +26 -0
  99. data/lib/SDLRuby/surface.rb +179 -0
  100. data/lib/SDLRuby/text_input.rb +38 -0
  101. data/lib/SDLRuby/texture.rb +93 -0
  102. data/lib/SDLRuby/ttf/include/SDL_ttf.h.rb +54 -0
  103. data/lib/SDLRuby/ttf/ttf.rb +41 -0
  104. data/lib/SDLRuby/ttf.rb +54 -0
  105. data/lib/SDLRuby/version.rb +5 -0
  106. data/lib/SDLRuby/window/accessor.rb +125 -0
  107. data/lib/SDLRuby/window/controller.rb +53 -0
  108. data/lib/SDLRuby/window/display_info.rb +48 -0
  109. data/lib/SDLRuby/window/flag.rb +42 -0
  110. data/lib/SDLRuby/window/hit_tester.rb +61 -0
  111. data/lib/SDLRuby/window/input.rb +68 -0
  112. data/lib/SDLRuby/window/shaper.rb +68 -0
  113. data/lib/SDLRuby/window/surfacer.rb +37 -0
  114. data/lib/SDLRuby/window/window_renderer.rb +31 -0
  115. data/lib/SDLRuby/window.rb +90 -0
  116. data/lib/SDLRuby.rb +16 -0
  117. data/sig/SDLRuby/event.rbs +104 -0
  118. data/sig/SDLRuby/pixel_formmater.rbs +24 -0
  119. data/sig/SDLRuby/rect.rbs +5 -0
  120. data/sig/SDLRuby/sdl.rbs +606 -0
  121. data/sig/SDLRuby.rbs +4 -0
  122. metadata +168 -0
@@ -0,0 +1,35 @@
1
+ module SDLRuby
2
+ module SDL
3
+ SDL_RENDERER_SOFTWARE = 0x00000001
4
+ SDL_RENDERER_ACCELERATED = 0x00000002
5
+ SDL_RENDERER_PRESENTVSYNC = 0x00000004
6
+ SDL_RENDERER_TARGETTEXTURE = 0x00000008
7
+ typealias "SDL_RendererFlags", "int"
8
+
9
+ SDL_RendererInfo = struct(
10
+ [
11
+ "const char *name",
12
+ "Uint32 flags",
13
+ "Uint32 num_texture_formats",
14
+ "Uint32 texture_formats[16]",
15
+ "int max_texture_width",
16
+ "int max_texture_height"
17
+ ]
18
+ )
19
+
20
+ SDL_FLIP_NONE = 0x00000000
21
+ SDL_FLIP_HORIZONTAL = 0x00000001
22
+ SDL_FLIP_VERTICAL = 0x00000002
23
+ typealias "SDL_RendererFlip", "int"
24
+
25
+ SDL_SCALEMODE_NEAREST = 0
26
+ SDL_SCALEMODE_LINEAR = 1
27
+ SDL_SCALEMODE_BEST = 2
28
+ typealias "SDL_ScaleMode", "int"
29
+
30
+ SDL_TEXTUREACCESS_STATIC = 0
31
+ SDL_TEXTUREACCESS_STREAMING = 1
32
+ SDL_TEXTUREACCESS_TARGET = 2
33
+ typealias "SDL_TextureAccess", "int"
34
+ end
35
+ end
@@ -0,0 +1,29 @@
1
+ module SDLRuby
2
+ module SDL
3
+ SDL_RWOPS_UNKNOWN = 0
4
+ SDL_RWOPS_WINFILE = 1
5
+ SDL_RWOPS_STDFILE = 2
6
+ SDL_RWOPS_JNIFILE = 3
7
+ SDL_RWOPS_MEMORY = 4
8
+ SDL_RWOPS_MEMORY_RO = 5
9
+
10
+ # アクセッサ用の構造体。実際のSDL_RWopsとは違い隠し領域のメンバーを含まない。
11
+ #
12
+ SDL_RWops = struct(
13
+ [
14
+ "void *size",
15
+ "void *seek",
16
+ "void *read",
17
+ "void *write",
18
+ "void *close",
19
+ "Uint32 type"
20
+ ]
21
+ )
22
+
23
+ SDL_RWops.module_eval do
24
+ class << self
25
+ undef malloc
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,255 @@
1
+ module SDLRuby
2
+ module SDL
3
+ SDL_SCANCODE_UNKNOWN = 0
4
+ SDL_SCANCODE_A = 4
5
+ SDL_SCANCODE_B = 5
6
+ SDL_SCANCODE_C = 6
7
+ SDL_SCANCODE_D = 7
8
+ SDL_SCANCODE_E = 8
9
+ SDL_SCANCODE_F = 9
10
+ SDL_SCANCODE_G = 10
11
+ SDL_SCANCODE_H = 11
12
+ SDL_SCANCODE_I = 12
13
+ SDL_SCANCODE_J = 13
14
+ SDL_SCANCODE_K = 14
15
+ SDL_SCANCODE_L = 15
16
+ SDL_SCANCODE_M = 16
17
+ SDL_SCANCODE_N = 17
18
+ SDL_SCANCODE_O = 18
19
+ SDL_SCANCODE_P = 19
20
+ SDL_SCANCODE_Q = 20
21
+ SDL_SCANCODE_R = 21
22
+ SDL_SCANCODE_S = 22
23
+ SDL_SCANCODE_T = 23
24
+ SDL_SCANCODE_U = 24
25
+ SDL_SCANCODE_V = 25
26
+ SDL_SCANCODE_W = 26
27
+ SDL_SCANCODE_X = 27
28
+ SDL_SCANCODE_Y = 28
29
+ SDL_SCANCODE_Z = 29
30
+ SDL_SCANCODE_1 = 30
31
+ SDL_SCANCODE_2 = 31
32
+ SDL_SCANCODE_3 = 32
33
+ SDL_SCANCODE_4 = 33
34
+ SDL_SCANCODE_5 = 34
35
+ SDL_SCANCODE_6 = 35
36
+ SDL_SCANCODE_7 = 36
37
+ SDL_SCANCODE_8 = 37
38
+ SDL_SCANCODE_9 = 38
39
+ SDL_SCANCODE_0 = 39
40
+ SDL_SCANCODE_RETURN = 40
41
+ SDL_SCANCODE_ESCAPE = 41
42
+ SDL_SCANCODE_BACKSPACE = 42
43
+ SDL_SCANCODE_TAB = 43
44
+ SDL_SCANCODE_SPACE = 44
45
+ SDL_SCANCODE_MINUS = 45
46
+ SDL_SCANCODE_EQUALS = 46
47
+ SDL_SCANCODE_LEFTBRACKET = 47
48
+ SDL_SCANCODE_RIGHTBRACKET = 48
49
+ SDL_SCANCODE_BACKSLASH = 49
50
+ SDL_SCANCODE_NONUSHASH = 50
51
+ SDL_SCANCODE_SEMICOLON = 51
52
+ SDL_SCANCODE_APOSTROPHE = 52
53
+ SDL_SCANCODE_GRAVE = 53
54
+ SDL_SCANCODE_COMMA = 54
55
+ SDL_SCANCODE_PERIOD = 55
56
+ SDL_SCANCODE_SLASH = 56
57
+ SDL_SCANCODE_CAPSLOCK = 57
58
+ SDL_SCANCODE_F1 = 58
59
+ SDL_SCANCODE_F2 = 59
60
+ SDL_SCANCODE_F3 = 60
61
+ SDL_SCANCODE_F4 = 61
62
+ SDL_SCANCODE_F5 = 62
63
+ SDL_SCANCODE_F6 = 63
64
+ SDL_SCANCODE_F7 = 64
65
+ SDL_SCANCODE_F8 = 65
66
+ SDL_SCANCODE_F9 = 66
67
+ SDL_SCANCODE_F10 = 67
68
+ SDL_SCANCODE_F11 = 68
69
+ SDL_SCANCODE_F12 = 69
70
+ SDL_SCANCODE_PRINTSCREEN = 70
71
+ SDL_SCANCODE_SCROLLLOCK = 71
72
+ SDL_SCANCODE_PAUSE = 72
73
+ SDL_SCANCODE_INSERT = 73
74
+ SDL_SCANCODE_HOME = 74
75
+ SDL_SCANCODE_PAGEUP = 75
76
+ SDL_SCANCODE_DELETE = 76
77
+ SDL_SCANCODE_END = 77
78
+ SDL_SCANCODE_PAGEDOWN = 78
79
+ SDL_SCANCODE_RIGHT = 79
80
+ SDL_SCANCODE_LEFT = 80
81
+ SDL_SCANCODE_DOWN = 81
82
+ SDL_SCANCODE_UP = 82
83
+ SDL_SCANCODE_NUMLOCKCLEAR = 83
84
+ SDL_SCANCODE_KP_DIVIDE = 84
85
+ SDL_SCANCODE_KP_MULTIPLY = 85
86
+ SDL_SCANCODE_KP_MINUS = 86
87
+ SDL_SCANCODE_KP_PLUS = 87
88
+ SDL_SCANCODE_KP_ENTER = 88
89
+ SDL_SCANCODE_KP_1 = 89
90
+ SDL_SCANCODE_KP_2 = 90
91
+ SDL_SCANCODE_KP_3 = 91
92
+ SDL_SCANCODE_KP_4 = 92
93
+ SDL_SCANCODE_KP_5 = 93
94
+ SDL_SCANCODE_KP_6 = 94
95
+ SDL_SCANCODE_KP_7 = 95
96
+ SDL_SCANCODE_KP_8 = 96
97
+ SDL_SCANCODE_KP_9 = 97
98
+ SDL_SCANCODE_KP_0 = 98
99
+ SDL_SCANCODE_KP_PERIOD = 99
100
+ SDL_SCANCODE_NONUSBACKSLASH = 100
101
+ SDL_SCANCODE_APPLICATION = 101
102
+ SDL_SCANCODE_POWER = 102
103
+ SDL_SCANCODE_KP_EQUALS = 103
104
+ SDL_SCANCODE_F13 = 104
105
+ SDL_SCANCODE_F14 = 105
106
+ SDL_SCANCODE_F15 = 106
107
+ SDL_SCANCODE_F16 = 107
108
+ SDL_SCANCODE_F17 = 108
109
+ SDL_SCANCODE_F18 = 109
110
+ SDL_SCANCODE_F19 = 110
111
+ SDL_SCANCODE_F20 = 111
112
+ SDL_SCANCODE_F21 = 112
113
+ SDL_SCANCODE_F22 = 113
114
+ SDL_SCANCODE_F23 = 114
115
+ SDL_SCANCODE_F24 = 115
116
+ SDL_SCANCODE_EXECUTE = 116
117
+ SDL_SCANCODE_HELP = 117
118
+ SDL_SCANCODE_MENU = 118
119
+ SDL_SCANCODE_SELECT = 119
120
+ SDL_SCANCODE_STOP = 120
121
+ SDL_SCANCODE_AGAIN = 121
122
+ SDL_SCANCODE_UNDO = 122
123
+ SDL_SCANCODE_CUT = 123
124
+ SDL_SCANCODE_COPY = 124
125
+ SDL_SCANCODE_PASTE = 125
126
+ SDL_SCANCODE_FIND = 126
127
+ SDL_SCANCODE_MUTE = 127
128
+ SDL_SCANCODE_VOLUMEUP = 128
129
+ SDL_SCANCODE_VOLUMEDOWN = 129
130
+ SDL_SCANCODE_LOCKINGCAPSLOCK = 130
131
+ SDL_SCANCODE_LOCKINGNUMLOCK = 131
132
+ SDL_SCANCODE_LOCKINGSCROLLLOCK = 132
133
+ SDL_SCANCODE_KP_COMMA = 133
134
+ SDL_SCANCODE_KP_EQUALSAS400 = 134
135
+ SDL_SCANCODE_INTERNATIONAL1 = 135
136
+ SDL_SCANCODE_INTERNATIONAL2 = 136
137
+ SDL_SCANCODE_INTERNATIONAL3 = 137
138
+ SDL_SCANCODE_INTERNATIONAL4 = 138
139
+ SDL_SCANCODE_INTERNATIONAL5 = 139
140
+ SDL_SCANCODE_INTERNATIONAL6 = 140
141
+ SDL_SCANCODE_INTERNATIONAL7 = 141
142
+ SDL_SCANCODE_INTERNATIONAL8 = 142
143
+ SDL_SCANCODE_INTERNATIONAL9 = 143
144
+ SDL_SCANCODE_LANG1 = 144
145
+ SDL_SCANCODE_LANG2 = 145
146
+ SDL_SCANCODE_LANG3 = 146
147
+ SDL_SCANCODE_LANG4 = 147
148
+ SDL_SCANCODE_LANG5 = 148
149
+ SDL_SCANCODE_LANG6 = 149
150
+ SDL_SCANCODE_LANG7 = 150
151
+ SDL_SCANCODE_LANG8 = 151
152
+ SDL_SCANCODE_LANG9 = 152
153
+ SDL_SCANCODE_ALTERASE = 153
154
+ SDL_SCANCODE_SYSREQ = 154
155
+ SDL_SCANCODE_CANCEL = 155
156
+ SDL_SCANCODE_CLEAR = 156
157
+ SDL_SCANCODE_PRIOR = 157
158
+ SDL_SCANCODE_RETURN2 = 158
159
+ SDL_SCANCODE_SEPARATOR = 159
160
+ SDL_SCANCODE_OUT = 160
161
+ SDL_SCANCODE_OPER = 161
162
+ SDL_SCANCODE_CLEARAGAIN = 162
163
+ SDL_SCANCODE_CRSEL = 163
164
+ SDL_SCANCODE_EXSEL = 164
165
+ SDL_SCANCODE_KP_00 = 176
166
+ SDL_SCANCODE_KP_000 = 177
167
+ SDL_SCANCODE_THOUSANDSSEPARATOR = 178
168
+ SDL_SCANCODE_DECIMALSEPARATOR = 179
169
+ SDL_SCANCODE_CURRENCYUNIT = 180
170
+ SDL_SCANCODE_CURRENCYSUBUNIT = 181
171
+ SDL_SCANCODE_KP_LEFTPAREN = 182
172
+ SDL_SCANCODE_KP_RIGHTPAREN = 183
173
+ SDL_SCANCODE_KP_LEFTBRACE = 184
174
+ SDL_SCANCODE_KP_RIGHTBRACE = 185
175
+ SDL_SCANCODE_KP_TAB = 186
176
+ SDL_SCANCODE_KP_BACKSPACE = 187
177
+ SDL_SCANCODE_KP_A = 188
178
+ SDL_SCANCODE_KP_B = 189
179
+ SDL_SCANCODE_KP_C = 190
180
+ SDL_SCANCODE_KP_D = 191
181
+ SDL_SCANCODE_KP_E = 192
182
+ SDL_SCANCODE_KP_F = 193
183
+ SDL_SCANCODE_KP_XOR = 194
184
+ SDL_SCANCODE_KP_POWER = 195
185
+ SDL_SCANCODE_KP_PERCENT = 196
186
+ SDL_SCANCODE_KP_LESS = 197
187
+ SDL_SCANCODE_KP_GREATER = 198
188
+ SDL_SCANCODE_KP_AMPERSAND = 199
189
+ SDL_SCANCODE_KP_DBLAMPERSAND = 200
190
+ SDL_SCANCODE_KP_VERTICALBAR = 201
191
+ SDL_SCANCODE_KP_DBLVERTICALBAR = 202
192
+ SDL_SCANCODE_KP_COLON = 203
193
+ SDL_SCANCODE_KP_HASH = 204
194
+ SDL_SCANCODE_KP_SPACE = 205
195
+ SDL_SCANCODE_KP_AT = 206
196
+ SDL_SCANCODE_KP_EXCLAM = 207
197
+ SDL_SCANCODE_KP_MEMSTORE = 208
198
+ SDL_SCANCODE_KP_MEMRECALL = 209
199
+ SDL_SCANCODE_KP_MEMCLEAR = 210
200
+ SDL_SCANCODE_KP_MEMADD = 211
201
+ SDL_SCANCODE_KP_MEMSUBTRACT = 212
202
+ SDL_SCANCODE_KP_MEMMULTIPLY = 213
203
+ SDL_SCANCODE_KP_MEMDIVIDE = 214
204
+ SDL_SCANCODE_KP_PLUSMINUS = 215
205
+ SDL_SCANCODE_KP_CLEAR = 216
206
+ SDL_SCANCODE_KP_CLEARENTRY = 217
207
+ SDL_SCANCODE_KP_BINARY = 218
208
+ SDL_SCANCODE_KP_OCTAL = 219
209
+ SDL_SCANCODE_KP_DECIMAL = 220
210
+ SDL_SCANCODE_KP_HEXADECIMAL = 221
211
+ SDL_SCANCODE_LCTRL = 224
212
+ SDL_SCANCODE_LSHIFT = 225
213
+ SDL_SCANCODE_LALT = 226
214
+ SDL_SCANCODE_LGUI = 227
215
+ SDL_SCANCODE_RCTRL = 228
216
+ SDL_SCANCODE_RSHIFT = 229
217
+ SDL_SCANCODE_RALT = 230
218
+ SDL_SCANCODE_RGUI = 231
219
+ SDL_SCANCODE_MODE = 257
220
+ SDL_SCANCODE_AUDIONEXT = 258
221
+ SDL_SCANCODE_AUDIOPREV = 259
222
+ SDL_SCANCODE_AUDIOSTOP = 260
223
+ SDL_SCANCODE_AUDIOPLAY = 261
224
+ SDL_SCANCODE_AUDIOMUTE = 262
225
+ SDL_SCANCODE_MEDIASELECT = 263
226
+ SDL_SCANCODE_WWW = 264
227
+ SDL_SCANCODE_MAIL = 265
228
+ SDL_SCANCODE_CALCULATOR = 266
229
+ SDL_SCANCODE_COMPUTER = 267
230
+ SDL_SCANCODE_AC_SEARCH = 268
231
+ SDL_SCANCODE_AC_HOME = 269
232
+ SDL_SCANCODE_AC_BACK = 270
233
+ SDL_SCANCODE_AC_FORWARD = 271
234
+ SDL_SCANCODE_AC_STOP = 272
235
+ SDL_SCANCODE_AC_REFRESH = 273
236
+ SDL_SCANCODE_AC_BOOKMARKS = 274
237
+ SDL_SCANCODE_BRIGHTNESSDOWN = 275
238
+ SDL_SCANCODE_BRIGHTNESSUP = 276
239
+ SDL_SCANCODE_DISPLAYSWITCH = 277
240
+ SDL_SCANCODE_KBDILLUMTOGGLE = 278
241
+ SDL_SCANCODE_KBDILLUMDOWN = 279
242
+ SDL_SCANCODE_KBDILLUMUP = 280
243
+ SDL_SCANCODE_EJECT = 281
244
+ SDL_SCANCODE_SLEEP = 282
245
+ SDL_SCANCODE_APP1 = 283
246
+ SDL_SCANCODE_APP2 = 284
247
+ SDL_SCANCODE_AUDIOREWIND = 285
248
+ SDL_SCANCODE_AUDIOFASTFORWARD = 286
249
+ SDL_SCANCODE_SOFTLEFT = 287
250
+ SDL_SCANCODE_SOFTRIGHT = 288
251
+ SDL_SCANCODE_CALL = 289
252
+ SDL_SCANCODE_ENDCALL = 290
253
+ SDL_NUM_SCANCODES = 512
254
+ end
255
+ end
@@ -0,0 +1,27 @@
1
+ module SDLRuby
2
+ module SDL
3
+ SDL_DONTFREE = 0x00000004
4
+
5
+ SDL_Surface = struct(
6
+ [
7
+ "Uint32 flags",
8
+ "SDL_PixelFormat* format",
9
+ "int w",
10
+ "int h",
11
+ "int pitch",
12
+ "void* pixels",
13
+ "void* userdata",
14
+ "int locked",
15
+ "void* list_blitmap",
16
+ { clip_rect: SDL_Rect },
17
+ "SDL_BlitMap* map",
18
+ "int refcount"
19
+ ]
20
+ )
21
+
22
+ extern "int SDL_UpperBlit(SDL_Surface * src, const SDL_Rect * srcrect,
23
+ SDL_Surface * dst, SDL_Rect * dstrect)"
24
+ extern "int SDL_UpperBlitScaled(SDL_Surface * src, const SDL_Rect * srcrect,
25
+ SDL_Surface * dst, SDL_Rect * dstrect)"
26
+ end
27
+ end
@@ -0,0 +1,5 @@
1
+ module SDLRuby
2
+ module SDL
3
+ SDL_version = struct ["Uint8 major", "Uint8 minor", "Uint8 patch"]
4
+ end
5
+ end
@@ -0,0 +1,104 @@
1
+ module SDLRuby
2
+ module SDL
3
+ # SDL_WindowFlags
4
+ #
5
+ SDL_WINDOW_FULLSCREEN = 0x00000001
6
+ SDL_WINDOW_OPENGL = 0x00000002
7
+ SDL_WINDOW_SHOWN = 0x00000004
8
+ SDL_WINDOW_HIDDEN = 0x00000008
9
+ SDL_WINDOW_BORDERLESS = 0x00000010
10
+ SDL_WINDOW_RESIZABLE = 0x00000020
11
+ SDL_WINDOW_MINIMIZED = 0x00000040
12
+ SDL_WINDOW_MAXIMIZED = 0x00000080
13
+ SDL_WINDOW_MOUSE_GRABBED = 0x00000100
14
+ SDL_WINDOW_INPUT_FOCUS = 0x00000200
15
+ SDL_WINDOW_MOUSE_FOCUS = 0x00000400
16
+ SDL_WINDOW_FULLSCREEN_DESKTOP = SDL_WINDOW_FULLSCREEN | 0x00001000
17
+ SDL_WINDOW_FOREIGN = 0x00000800
18
+ SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000
19
+ SDL_WINDOW_MOUSE_CAPTURE = 0x00004000
20
+ SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000
21
+ SDL_WINDOW_SKIP_TASKBAR = 0x00010000
22
+ SDL_WINDOW_UTILITY = 0x00020000
23
+ SDL_WINDOW_TOOLTIP = 0x00040000
24
+ SDL_WINDOW_POPUP_MENU = 0x00080000
25
+ SDL_WINDOW_KEYBOARD_GRABBED = 0x00100000
26
+ SDL_WINDOW_VULKAN = 0x10000000
27
+ SDL_WINDOW_METAL = 0x20000000
28
+ SDL_WINDOW_INPUT_GRABBED = SDL_WINDOW_MOUSE_GRABBED
29
+
30
+ # Window position
31
+ #
32
+ SDL_WINDOWPOS_UNDEFINED = 0x1FFF0000
33
+ SDL_WINDOWPOS_CENTERED = 0x2FFF0000
34
+
35
+ # SDL_HitTestResult
36
+ #
37
+ SDL_HITTEST_NORMAL = 0
38
+ SDL_HITTEST_DRAGGABLE = 1
39
+ SDL_HITTEST_RESIZE_TOPLEFT = 2
40
+ SDL_HITTEST_RESIZE_TOP = 3
41
+ SDL_HITTEST_RESIZE_TOPRIGHT = 4
42
+ SDL_HITTEST_RESIZE_RIGHT = 5
43
+ SDL_HITTEST_RESIZE_BOTTOMRIGHT = 6
44
+ SDL_HITTEST_RESIZE_BOTTOM = 7
45
+ SDL_HITTEST_RESIZE_BOTTOMLEFT = 8
46
+ SDL_HITTEST_RESIZE_LEFT = 9
47
+
48
+ # Display orientation
49
+ #
50
+ SDL_ORIENTATION_UNKNOWN = 0
51
+ SDL_ORIENTATION_LANDSCAPE = 1
52
+ SDL_ORIENTATION_LANDSCAPE_FLIPPED = 2
53
+ SDL_ORIENTATION_PORTRAIT = 3
54
+ SDL_ORIENTATION_PORTRAIT_FLIPPED = 4
55
+
56
+ # Window flash operation
57
+ #
58
+ SDL_FLASH_CANCEL = 0
59
+ SDL_FLASH_BRIEFLY = 1
60
+ SDL_FLASH_UNTIL_FOCUSED =2
61
+
62
+ SDL_DisplayMode = struct(
63
+ [
64
+ "Uint32 format",
65
+ "int w",
66
+ "int h",
67
+ "int refresh_rate",
68
+ "void *driverdata"
69
+ ]
70
+ )
71
+
72
+ # SDL_shape.h
73
+ #
74
+ SDL_NONSHAPEABLE_WINDOW = -1
75
+ SDL_INVALID_SHAPE_ARGUMENT = -2
76
+ SDL_WINDOW_LACKS_SHAPE = -3
77
+
78
+ # WindowShapeMode
79
+ #
80
+ ShapeModeDefault = 0
81
+ ShapeModeBinarizeAlpha = 1
82
+ ShapeModeReverseBinarizeAlpha = 2
83
+ ShapeModeColorKey = 3
84
+ typealias "WindowShapeMode", "int"
85
+
86
+ SDL_SHAPEMODEALPHA = -> (mode) {
87
+ mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha
88
+ }
89
+
90
+ SDL_WindowShapeParams = union(
91
+ [
92
+ "Uint8 binarizationCutoff",
93
+ { colorKey: SDL_Color }
94
+ ]
95
+ )
96
+
97
+ SDL_WindowShapeMode = struct(
98
+ [
99
+ "WindowShapeMode mode",
100
+ { parameters: SDL_WindowShapeParams }
101
+ ]
102
+ )
103
+ end
104
+ end
@@ -0,0 +1,192 @@
1
+ require "fiddle/import"
2
+
3
+ module SDLRuby
4
+ module SDL
5
+ extend Fiddle::Importer
6
+
7
+ dlload "SDL2"
8
+
9
+ SDL_DESTROY_RENDERER = import_symbol("SDL_DestroyRenderer").to_int
10
+ SDL_DESTROY_TEXTURE = import_symbol("SDL_DestroyTexture").to_int
11
+
12
+ # SDL_freeはSDL_SetMemoryFunctionsで設定された関数を使用する。
13
+ # SDL側のメモリーを開放する場合はFiddle::PointerへSDL_FREEを設定してよい。
14
+ #
15
+ SDL_FREE = SDL.import_symbol("SDL_free").to_int
16
+ SDL_FREE_CURSOR = import_symbol("SDL_FreeCursor").to_int
17
+ SDL_FREE_FORMAT = import_symbol("SDL_FreeFormat").to_int
18
+ SDL_FREE_PALETTE = import_symbol("SDL_FreePalette").to_int
19
+ SDL_FREE_RW = import_symbol("SDL_FreeRW").to_int
20
+ SDL_FREE_SURFACE = import_symbol("SDL_FreeSurface").to_int
21
+
22
+ def self.tmp_value(*a, &)
23
+ raise ArgumentError if a.empty?
24
+
25
+ a.map { |ty|
26
+ st = create_value(ty)
27
+ st.to_ptr.free = Fiddle::RUBY_FREE
28
+ st
29
+ } => vals
30
+
31
+ v = vals.one? ? vals.first : vals
32
+ block_given? ? yield(*v) : v
33
+ end
34
+
35
+ require_relative 'sdl/sdl'
36
+ require_relative 'sdl_error'
37
+
38
+ require_relative 'audio'
39
+ require_relative 'cursor'
40
+ require_relative 'display'
41
+ require_relative 'event'
42
+ require_relative 'hint'
43
+ require_relative 'keyboard'
44
+ require_relative 'mouse'
45
+ require_relative 'palette'
46
+ require_relative 'pixel_formatter'
47
+ require_relative 'rect'
48
+ require_relative 'renderer'
49
+ require_relative 'rw_ops'
50
+ require_relative 'surface'
51
+ require_relative 'text_input'
52
+ require_relative 'texture'
53
+ require_relative 'window'
54
+
55
+ class << self
56
+ # sdl
57
+ #
58
+ def init(flags = nil)
59
+ err = SDL.SDL_Init(flags || SDL_INIT_EVERYTHING)
60
+ raise SDLError if err < 0
61
+ end
62
+
63
+ def init?(flags) = SDL.WasInit(flags).nonzero?
64
+
65
+ def quit = SDL.SDL_Quit
66
+
67
+ # clipboard
68
+ #
69
+ def clipboard_text
70
+ ptr = SDL.SDL_GetClipboardText
71
+ raise SDLError if ptr.null?
72
+
73
+ ptr.free = SDL_FREE
74
+ ptr.to_s.force_encoding("UTF-8")
75
+ end
76
+
77
+ def clipboard_text? = SDL.SDL_HasClipboardText == 1
78
+
79
+ def clipboard_text=(s)
80
+ err = SDL.SDL_SetClipboardText(s.encord("UTF-8"))
81
+ raise SDLError if err < 0
82
+ end
83
+
84
+ # cpu info
85
+ #
86
+ def cpu_cache_line_size = SDL.SDL_GetCPUCacheLineSize
87
+
88
+ def cpu_count = SDL.SDL_GetCPUCount
89
+
90
+ def system_ram = SDL.SDL_GetSystemRAM
91
+
92
+ # error
93
+ #
94
+ def last_error_message = SDL.SDL_GetError.to_s
95
+
96
+ def last_error_message=(s)
97
+ SDL.SDL_SetError(s.gsub(/%/, "%%"), nil)
98
+ end
99
+
100
+ # filesystem
101
+ #
102
+ def base_path
103
+ ptr = SDL.SDL_GetBasePath
104
+ raise SDLError if ptr.null?
105
+
106
+ ptr.free = SDL_FREE
107
+ ptr.to_s
108
+ end
109
+
110
+ # locale
111
+ #
112
+ # 失敗の時 nil を戻す。
113
+ #
114
+ def locales
115
+ ptr = SDL.SDL_GetPreferredLocales
116
+ return if ptr.null?
117
+
118
+ ptr.free = SDL_FREE
119
+ pitch = SDL_Locale.size
120
+ (0..).inject([]) do |memo, i|
121
+ st = SDL_Locale.new(ptr + i * pitch)
122
+ break memo if st.language.null?
123
+ memo << [st.language.to_s, st.country.to_s]
124
+ end
125
+ end
126
+
127
+ # message box
128
+ #
129
+ def alert(message, title = nil, flags: nil, window: nil)
130
+ err = SDL.SDL_ShowSimpleMessageBox(flags,
131
+ title.to_s.encode("UTF-8"),
132
+ message.to_s.encode("UTF-8"),
133
+ window)
134
+ raise SDLError if err < 0
135
+ end
136
+
137
+ def error_alert(message, title = "Error")
138
+ alert(message, title, flags: SDL_MESSAGEBOX_ERROR)
139
+ end
140
+
141
+ def warn_alert(message, title = "Warning")
142
+ alert(message, title, flags: SDL_MESSAGEBOX_WARNING)
143
+ end
144
+
145
+ def info_alert(message, title = "Information")
146
+ alert(message, title, flags: SDL_MESSAGEBOX_INFORMATION)
147
+ end
148
+
149
+ # misc
150
+ #
151
+ def open_url(url)
152
+ raise SDLError if SDL.SDL_OpenURL(url) < 0
153
+ end
154
+
155
+ # platform
156
+ #
157
+ def platform = SDL.SDL_GetPlatform.to_s
158
+
159
+ # timer
160
+ #
161
+ def ticks = SDL.SDL_GetTicks
162
+
163
+ # version
164
+ #
165
+ def revision = SDL.SDL_GetRevision.to_s
166
+
167
+ def version
168
+ st = SDL_version.malloc(Fiddle::RUBY_FREE)
169
+ SDL.SDL_GetVersion(st)
170
+ st.to_a.join(".")
171
+ end
172
+
173
+ # video
174
+ #
175
+ def video_driver
176
+ (ptr = SDL.SDL_GetCurrentVideoDriver).null? ? nil : ptr.to_s
177
+ end
178
+
179
+ def screen_saver=(b)
180
+ b ? SDL.SDL_EnableScreenSaver : SDL.SDL_DisableScreenSaver
181
+ end
182
+
183
+ def screen_saver? = SDL.SDL_IsScreenSaverEnabled != 0
184
+
185
+ def video_drivers
186
+ SDL.SDL_GetNumVideoDrivers.times.map do |i|
187
+ (ptr = SDL.SDL_GetVideoDriver(i)).null? ? nil : ptr.to_s
188
+ end
189
+ end
190
+ end
191
+ end
192
+ end
@@ -0,0 +1,8 @@
1
+ module SDLRuby
2
+ class SDLError < StandardError
3
+ def initialize(msg = nil)
4
+ super(msg || SDL.last_error_message)
5
+ SDL.SDL_ClearError
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,51 @@
1
+ module SDLRuby
2
+ class Surface
3
+ class PixelFormat
4
+ include SDL
5
+ extend Forwardable
6
+
7
+ def initialize(ptr, add_ref: nil)
8
+ @st = SDL_PixelFormat.new(ptr, SDL_FREE_FORMAT)
9
+ @st.refcount += 1 if add_ref
10
+ end
11
+
12
+ def_delegators :@st, :format, :refcount, :to_ptr
13
+
14
+ def map(color)
15
+ if alpha?
16
+ r, g, b, a = *color, SDL_ALPHA_OPAQUE
17
+ SDL.SDL_MapRGBA(self, r, g, b, a)
18
+ else
19
+ r, g, b = *color
20
+ SDL.SDL_MapRGB(self, r, g, b)
21
+ end
22
+ end
23
+
24
+ alias to_pixel map
25
+
26
+ def palette
27
+ ptr = @st.palette
28
+ return if ptr.null?
29
+
30
+ Palette.new(ptr, add_ref: true)
31
+ end
32
+
33
+ def palette=(obj)
34
+ err = SDL.SDL_SetPixelFormatPalette(self, obj)
35
+ raise SDLError if err < 0
36
+ end
37
+
38
+ def to_color(pixel)
39
+ if alpha?
40
+ r, g, b, a = SDL.tmp_value("Uint8", "Uint8", "Uint8", "Uint8")
41
+ SDL.SDL_GetRGBA(pixel, self, r, g, b, a)
42
+ [r.value, g.value, b.value, a.value]
43
+ else
44
+ r, g, b = SDL.tmp_value("Uint8", "Uint8", "Uint8")
45
+ SDL.SDL_GetRGB(pixel, self, r, g, b)
46
+ [r.value, g.value, b.value]
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end