sdl3-bindings 1.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/ChangeLog +159 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +132 -0
  5. data/lib/sdl3.rb +150 -0
  6. data/lib/sdl3_assert.rb +61 -0
  7. data/lib/sdl3_asyncio.rb +68 -0
  8. data/lib/sdl3_atomic.rb +64 -0
  9. data/lib/sdl3_audio.rb +120 -0
  10. data/lib/sdl3_bits.rb +38 -0
  11. data/lib/sdl3_blendmode.rb +63 -0
  12. data/lib/sdl3_camera.rb +67 -0
  13. data/lib/sdl3_clipboard.rb +49 -0
  14. data/lib/sdl3_cpuinfo.rb +55 -0
  15. data/lib/sdl3_dialog.rb +60 -0
  16. data/lib/sdl3_endian.rb +39 -0
  17. data/lib/sdl3_error.rb +41 -0
  18. data/lib/sdl3_events.rb +680 -0
  19. data/lib/sdl3_filesystem.rb +82 -0
  20. data/lib/sdl3_gamepad.rb +216 -0
  21. data/lib/sdl3_gpu.rb +836 -0
  22. data/lib/sdl3_guid.rb +44 -0
  23. data/lib/sdl3_haptic.rb +209 -0
  24. data/lib/sdl3_hidapi.rb +84 -0
  25. data/lib/sdl3_hints.rb +285 -0
  26. data/lib/sdl3_image.rb +108 -0
  27. data/lib/sdl3_init.rb +71 -0
  28. data/lib/sdl3_iostream.rb +115 -0
  29. data/lib/sdl3_joystick.rb +174 -0
  30. data/lib/sdl3_keyboard.rb +81 -0
  31. data/lib/sdl3_keycode.rb +310 -0
  32. data/lib/sdl3_loadso.rb +39 -0
  33. data/lib/sdl3_locale.rb +44 -0
  34. data/lib/sdl3_log.rb +85 -0
  35. data/lib/sdl3_messagebox.rb +88 -0
  36. data/lib/sdl3_misc.rb +37 -0
  37. data/lib/sdl3_mixer.rb +179 -0
  38. data/lib/sdl3_mouse.rb +90 -0
  39. data/lib/sdl3_mutex.rb +77 -0
  40. data/lib/sdl3_pen.rb +56 -0
  41. data/lib/sdl3_pixels.rb +296 -0
  42. data/lib/sdl3_platform.rb +37 -0
  43. data/lib/sdl3_power.rb +44 -0
  44. data/lib/sdl3_process.rb +65 -0
  45. data/lib/sdl3_properties.rb +67 -0
  46. data/lib/sdl3_rect.rb +98 -0
  47. data/lib/sdl3_render.rb +240 -0
  48. data/lib/sdl3_revision.rb +37 -0
  49. data/lib/sdl3_scancode.rb +286 -0
  50. data/lib/sdl3_sensor.rb +61 -0
  51. data/lib/sdl3_sound.rb +98 -0
  52. data/lib/sdl3_stdinc.rb +229 -0
  53. data/lib/sdl3_storage.rb +70 -0
  54. data/lib/sdl3_surface.rb +122 -0
  55. data/lib/sdl3_thread.rb +65 -0
  56. data/lib/sdl3_time.rb +66 -0
  57. data/lib/sdl3_timer.rb +54 -0
  58. data/lib/sdl3_touch.rb +56 -0
  59. data/lib/sdl3_tray.rb +66 -0
  60. data/lib/sdl3_ttf.rb +216 -0
  61. data/lib/sdl3_version.rb +41 -0
  62. data/lib/sdl3_video.rb +341 -0
  63. data/lib/sdl3_vulkan.rb +46 -0
  64. metadata +118 -0
data/lib/sdl3_mixer.rb ADDED
@@ -0,0 +1,179 @@
1
+ # Ruby-SDL3 : SDL3 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl3-bindings
4
+ #
5
+ # [NOTICE] Autogenerated. Do not edit.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
13
+ MIXER_MAJOR_VERSION = 3
14
+ MIXER_MINOR_VERSION = 0
15
+ MIXER_MICRO_VERSION = 0
16
+ MIX_INIT_FLAC = 0x00000001
17
+ MIX_INIT_MOD = 0x00000002
18
+ MIX_INIT_MP3 = 0x00000008
19
+ MIX_INIT_OGG = 0x00000010
20
+ MIX_INIT_OPUS = 0x00000040
21
+ MIX_INIT_WAVPACK = 0x00000080
22
+ MIX_CHANNELS = 8
23
+ MIX_DEFAULT_FREQUENCY = 44100
24
+ MIX_DEFAULT_CHANNELS = 2
25
+ MIX_MAX_VOLUME = 128
26
+ MIX_CHANNEL_POST = -2
27
+ MIX_EFFECTSMAXSPEED = "MIX_EFFECTSMAXSPEED"
28
+
29
+ # Enum
30
+
31
+ MIX_NO_FADING = 0
32
+ MIX_FADING_OUT = 1
33
+ MIX_FADING_IN = 2
34
+ MUS_NONE = 0
35
+ MUS_WAV = 1
36
+ MUS_MOD = 2
37
+ MUS_MID = 3
38
+ MUS_OGG = 4
39
+ MUS_MP3 = 5
40
+ MUS_MP3_MAD_UNUSED = 6
41
+ MUS_FLAC = 7
42
+ MUS_MODPLUG_UNUSED = 8
43
+ MUS_OPUS = 9
44
+ MUS_WAVPACK = 10
45
+ MUS_GME = 11
46
+
47
+ # Typedef
48
+
49
+ typedef :uint, :MIX_InitFlags
50
+ typedef :int, :Mix_Fading
51
+ typedef :int, :Mix_MusicType
52
+ callback :Mix_MixCallback, [:pointer, :pointer, :int], :void
53
+ callback :Mix_MusicFinishedCallback, [], :void
54
+ callback :Mix_ChannelFinishedCallback, [:int], :void
55
+ callback :Mix_EffectFunc_t, [:int, :pointer, :int, :pointer], :void
56
+ callback :Mix_EffectDone_t, [:int, :pointer], :void
57
+ callback :Mix_EachSoundFontCallback, [:pointer, :pointer], :bool
58
+
59
+ # Struct
60
+
61
+ class Mix_Chunk < FFI::Struct
62
+ layout(
63
+ :allocated, :int,
64
+ :abuf, :pointer,
65
+ :alen, :uint,
66
+ :volume, :uchar,
67
+ )
68
+ end
69
+
70
+
71
+ # Function
72
+
73
+ def self.setup_mixer_symbols(output_error = false)
74
+ entries = [
75
+ [:Mix_Version, :Mix_Version, [], :int],
76
+ [:Mix_Init, :Mix_Init, [:uint], :uint],
77
+ [:Mix_Quit, :Mix_Quit, [], :void],
78
+ [:Mix_OpenAudio, :Mix_OpenAudio, [:uint, :pointer], :bool],
79
+ [:Mix_PauseAudio, :Mix_PauseAudio, [:int], :void],
80
+ [:Mix_QuerySpec, :Mix_QuerySpec, [:pointer, :pointer, :pointer], :bool],
81
+ [:Mix_AllocateChannels, :Mix_AllocateChannels, [:int], :int],
82
+ [:Mix_LoadWAV_IO, :Mix_LoadWAV_IO, [:pointer, :bool], :pointer],
83
+ [:Mix_LoadWAV, :Mix_LoadWAV, [:pointer], :pointer],
84
+ [:Mix_LoadMUS, :Mix_LoadMUS, [:pointer], :pointer],
85
+ [:Mix_LoadMUS_IO, :Mix_LoadMUS_IO, [:pointer, :bool], :pointer],
86
+ [:Mix_LoadMUSType_IO, :Mix_LoadMUSType_IO, [:pointer, :int, :bool], :pointer],
87
+ [:Mix_QuickLoad_WAV, :Mix_QuickLoad_WAV, [:pointer], :pointer],
88
+ [:Mix_QuickLoad_RAW, :Mix_QuickLoad_RAW, [:pointer, :uint], :pointer],
89
+ [:Mix_FreeChunk, :Mix_FreeChunk, [:pointer], :void],
90
+ [:Mix_FreeMusic, :Mix_FreeMusic, [:pointer], :void],
91
+ [:Mix_GetNumChunkDecoders, :Mix_GetNumChunkDecoders, [], :int],
92
+ [:Mix_GetChunkDecoder, :Mix_GetChunkDecoder, [:int], :pointer],
93
+ [:Mix_HasChunkDecoder, :Mix_HasChunkDecoder, [:pointer], :bool],
94
+ [:Mix_GetNumMusicDecoders, :Mix_GetNumMusicDecoders, [], :int],
95
+ [:Mix_GetMusicDecoder, :Mix_GetMusicDecoder, [:int], :pointer],
96
+ [:Mix_HasMusicDecoder, :Mix_HasMusicDecoder, [:pointer], :bool],
97
+ [:Mix_GetMusicType, :Mix_GetMusicType, [:pointer], :int],
98
+ [:Mix_GetMusicTitle, :Mix_GetMusicTitle, [:pointer], :pointer],
99
+ [:Mix_GetMusicTitleTag, :Mix_GetMusicTitleTag, [:pointer], :pointer],
100
+ [:Mix_GetMusicArtistTag, :Mix_GetMusicArtistTag, [:pointer], :pointer],
101
+ [:Mix_GetMusicAlbumTag, :Mix_GetMusicAlbumTag, [:pointer], :pointer],
102
+ [:Mix_GetMusicCopyrightTag, :Mix_GetMusicCopyrightTag, [:pointer], :pointer],
103
+ [:Mix_SetPostMix, :Mix_SetPostMix, [:Mix_MixCallback, :pointer], :void],
104
+ [:Mix_HookMusic, :Mix_HookMusic, [:Mix_MixCallback, :pointer], :void],
105
+ [:Mix_HookMusicFinished, :Mix_HookMusicFinished, [:Mix_MusicFinishedCallback], :void],
106
+ [:Mix_GetMusicHookData, :Mix_GetMusicHookData, [], :pointer],
107
+ [:Mix_ChannelFinished, :Mix_ChannelFinished, [:Mix_ChannelFinishedCallback], :void],
108
+ [:Mix_RegisterEffect, :Mix_RegisterEffect, [:int, :Mix_EffectFunc_t, :Mix_EffectDone_t, :pointer], :bool],
109
+ [:Mix_UnregisterEffect, :Mix_UnregisterEffect, [:int, :Mix_EffectFunc_t], :bool],
110
+ [:Mix_UnregisterAllEffects, :Mix_UnregisterAllEffects, [:int], :bool],
111
+ [:Mix_SetPanning, :Mix_SetPanning, [:int, :uchar, :uchar], :bool],
112
+ [:Mix_SetPosition, :Mix_SetPosition, [:int, :short, :uchar], :bool],
113
+ [:Mix_SetDistance, :Mix_SetDistance, [:int, :uchar], :bool],
114
+ [:Mix_SetReverseStereo, :Mix_SetReverseStereo, [:int, :int], :bool],
115
+ [:Mix_ReserveChannels, :Mix_ReserveChannels, [:int], :int],
116
+ [:Mix_GroupChannel, :Mix_GroupChannel, [:int, :int], :bool],
117
+ [:Mix_GroupChannels, :Mix_GroupChannels, [:int, :int, :int], :bool],
118
+ [:Mix_GroupAvailable, :Mix_GroupAvailable, [:int], :int],
119
+ [:Mix_GroupCount, :Mix_GroupCount, [:int], :int],
120
+ [:Mix_GroupOldest, :Mix_GroupOldest, [:int], :int],
121
+ [:Mix_GroupNewer, :Mix_GroupNewer, [:int], :int],
122
+ [:Mix_PlayChannel, :Mix_PlayChannel, [:int, :pointer, :int], :int],
123
+ [:Mix_PlayChannelTimed, :Mix_PlayChannelTimed, [:int, :pointer, :int, :int], :int],
124
+ [:Mix_PlayMusic, :Mix_PlayMusic, [:pointer, :int], :bool],
125
+ [:Mix_FadeInMusic, :Mix_FadeInMusic, [:pointer, :int, :int], :bool],
126
+ [:Mix_FadeInMusicPos, :Mix_FadeInMusicPos, [:pointer, :int, :int, :double], :bool],
127
+ [:Mix_FadeInChannel, :Mix_FadeInChannel, [:int, :pointer, :int, :int], :int],
128
+ [:Mix_FadeInChannelTimed, :Mix_FadeInChannelTimed, [:int, :pointer, :int, :int, :int], :int],
129
+ [:Mix_Volume, :Mix_Volume, [:int, :int], :int],
130
+ [:Mix_VolumeChunk, :Mix_VolumeChunk, [:pointer, :int], :int],
131
+ [:Mix_VolumeMusic, :Mix_VolumeMusic, [:int], :int],
132
+ [:Mix_GetMusicVolume, :Mix_GetMusicVolume, [:pointer], :int],
133
+ [:Mix_MasterVolume, :Mix_MasterVolume, [:int], :int],
134
+ [:Mix_HaltChannel, :Mix_HaltChannel, [:int], :void],
135
+ [:Mix_HaltGroup, :Mix_HaltGroup, [:int], :void],
136
+ [:Mix_HaltMusic, :Mix_HaltMusic, [], :void],
137
+ [:Mix_ExpireChannel, :Mix_ExpireChannel, [:int, :int], :int],
138
+ [:Mix_FadeOutChannel, :Mix_FadeOutChannel, [:int, :int], :int],
139
+ [:Mix_FadeOutGroup, :Mix_FadeOutGroup, [:int, :int], :int],
140
+ [:Mix_FadeOutMusic, :Mix_FadeOutMusic, [:int], :bool],
141
+ [:Mix_FadingMusic, :Mix_FadingMusic, [], :int],
142
+ [:Mix_FadingChannel, :Mix_FadingChannel, [:int], :int],
143
+ [:Mix_Pause, :Mix_Pause, [:int], :void],
144
+ [:Mix_PauseGroup, :Mix_PauseGroup, [:int], :void],
145
+ [:Mix_Resume, :Mix_Resume, [:int], :void],
146
+ [:Mix_ResumeGroup, :Mix_ResumeGroup, [:int], :void],
147
+ [:Mix_Paused, :Mix_Paused, [:int], :int],
148
+ [:Mix_PauseMusic, :Mix_PauseMusic, [], :void],
149
+ [:Mix_ResumeMusic, :Mix_ResumeMusic, [], :void],
150
+ [:Mix_RewindMusic, :Mix_RewindMusic, [], :void],
151
+ [:Mix_PausedMusic, :Mix_PausedMusic, [], :bool],
152
+ [:Mix_ModMusicJumpToOrder, :Mix_ModMusicJumpToOrder, [:int], :bool],
153
+ [:Mix_StartTrack, :Mix_StartTrack, [:pointer, :int], :bool],
154
+ [:Mix_GetNumTracks, :Mix_GetNumTracks, [:pointer], :int],
155
+ [:Mix_SetMusicPosition, :Mix_SetMusicPosition, [:double], :bool],
156
+ [:Mix_GetMusicPosition, :Mix_GetMusicPosition, [:pointer], :double],
157
+ [:Mix_MusicDuration, :Mix_MusicDuration, [:pointer], :double],
158
+ [:Mix_GetMusicLoopStartTime, :Mix_GetMusicLoopStartTime, [:pointer], :double],
159
+ [:Mix_GetMusicLoopEndTime, :Mix_GetMusicLoopEndTime, [:pointer], :double],
160
+ [:Mix_GetMusicLoopLengthTime, :Mix_GetMusicLoopLengthTime, [:pointer], :double],
161
+ [:Mix_Playing, :Mix_Playing, [:int], :int],
162
+ [:Mix_PlayingMusic, :Mix_PlayingMusic, [], :bool],
163
+ [:Mix_SetSoundFonts, :Mix_SetSoundFonts, [:pointer], :bool],
164
+ [:Mix_GetSoundFonts, :Mix_GetSoundFonts, [], :pointer],
165
+ [:Mix_EachSoundFont, :Mix_EachSoundFont, [:Mix_EachSoundFontCallback, :pointer], :bool],
166
+ [:Mix_SetTimidityCfg, :Mix_SetTimidityCfg, [:pointer], :bool],
167
+ [:Mix_GetTimidityCfg, :Mix_GetTimidityCfg, [], :pointer],
168
+ [:Mix_GetChunk, :Mix_GetChunk, [:int], :pointer],
169
+ [:Mix_CloseAudio, :Mix_CloseAudio, [], :void],
170
+ ]
171
+ entries.each do |entry|
172
+ attach_function entry[0], entry[1], entry[2], entry[3]
173
+ rescue FFI::NotFoundError => e
174
+ warn "[Warning] Failed to import #{entry[0]} (#{e})." if output_error
175
+ end
176
+ end
177
+
178
+ end
179
+
data/lib/sdl3_mouse.rb ADDED
@@ -0,0 +1,90 @@
1
+ # Ruby-SDL3 : SDL3 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl3-bindings
4
+ #
5
+ # [NOTICE] Autogenerated. Do not edit.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
13
+ BUTTON_LEFT = 1
14
+ BUTTON_MIDDLE = 2
15
+ BUTTON_RIGHT = 3
16
+ BUTTON_X1 = 4
17
+ BUTTON_X2 = 5
18
+
19
+ # Enum
20
+
21
+ SYSTEM_CURSOR_DEFAULT = 0
22
+ SYSTEM_CURSOR_TEXT = 1
23
+ SYSTEM_CURSOR_WAIT = 2
24
+ SYSTEM_CURSOR_CROSSHAIR = 3
25
+ SYSTEM_CURSOR_PROGRESS = 4
26
+ SYSTEM_CURSOR_NWSE_RESIZE = 5
27
+ SYSTEM_CURSOR_NESW_RESIZE = 6
28
+ SYSTEM_CURSOR_EW_RESIZE = 7
29
+ SYSTEM_CURSOR_NS_RESIZE = 8
30
+ SYSTEM_CURSOR_MOVE = 9
31
+ SYSTEM_CURSOR_NOT_ALLOWED = 10
32
+ SYSTEM_CURSOR_POINTER = 11
33
+ SYSTEM_CURSOR_NW_RESIZE = 12
34
+ SYSTEM_CURSOR_N_RESIZE = 13
35
+ SYSTEM_CURSOR_NE_RESIZE = 14
36
+ SYSTEM_CURSOR_E_RESIZE = 15
37
+ SYSTEM_CURSOR_SE_RESIZE = 16
38
+ SYSTEM_CURSOR_S_RESIZE = 17
39
+ SYSTEM_CURSOR_SW_RESIZE = 18
40
+ SYSTEM_CURSOR_W_RESIZE = 19
41
+ SYSTEM_CURSOR_COUNT = 20
42
+ MOUSEWHEEL_NORMAL = 0
43
+ MOUSEWHEEL_FLIPPED = 1
44
+
45
+ # Typedef
46
+
47
+ typedef :uint, :SDL_MouseID
48
+ typedef :int, :SDL_SystemCursor
49
+ typedef :int, :SDL_MouseWheelDirection
50
+ typedef :uint, :SDL_MouseButtonFlags
51
+
52
+ # Struct
53
+
54
+
55
+ # Function
56
+
57
+ def self.setup_mouse_symbols(output_error = false)
58
+ entries = [
59
+ [:HasMouse, :SDL_HasMouse, [], :bool],
60
+ [:GetMice, :SDL_GetMice, [:pointer], :pointer],
61
+ [:GetMouseNameForID, :SDL_GetMouseNameForID, [:uint], :pointer],
62
+ [:GetMouseFocus, :SDL_GetMouseFocus, [], :pointer],
63
+ [:GetMouseState, :SDL_GetMouseState, [:pointer, :pointer], :uint],
64
+ [:GetGlobalMouseState, :SDL_GetGlobalMouseState, [:pointer, :pointer], :uint],
65
+ [:GetRelativeMouseState, :SDL_GetRelativeMouseState, [:pointer, :pointer], :uint],
66
+ [:WarpMouseInWindow, :SDL_WarpMouseInWindow, [:pointer, :float, :float], :void],
67
+ [:WarpMouseGlobal, :SDL_WarpMouseGlobal, [:float, :float], :bool],
68
+ [:SetWindowRelativeMouseMode, :SDL_SetWindowRelativeMouseMode, [:pointer, :bool], :bool],
69
+ [:GetWindowRelativeMouseMode, :SDL_GetWindowRelativeMouseMode, [:pointer], :bool],
70
+ [:CaptureMouse, :SDL_CaptureMouse, [:bool], :bool],
71
+ [:CreateCursor, :SDL_CreateCursor, [:pointer, :pointer, :int, :int, :int, :int], :pointer],
72
+ [:CreateColorCursor, :SDL_CreateColorCursor, [:pointer, :int, :int], :pointer],
73
+ [:CreateSystemCursor, :SDL_CreateSystemCursor, [:int], :pointer],
74
+ [:SetCursor, :SDL_SetCursor, [:pointer], :bool],
75
+ [:GetCursor, :SDL_GetCursor, [], :pointer],
76
+ [:GetDefaultCursor, :SDL_GetDefaultCursor, [], :pointer],
77
+ [:DestroyCursor, :SDL_DestroyCursor, [:pointer], :void],
78
+ [:ShowCursor, :SDL_ShowCursor, [], :bool],
79
+ [:HideCursor, :SDL_HideCursor, [], :bool],
80
+ [:CursorVisible, :SDL_CursorVisible, [], :bool],
81
+ ]
82
+ entries.each do |entry|
83
+ attach_function entry[0], entry[1], entry[2], entry[3]
84
+ rescue FFI::NotFoundError => e
85
+ warn "[Warning] Failed to import #{entry[0]} (#{e})." if output_error
86
+ end
87
+ end
88
+
89
+ end
90
+
data/lib/sdl3_mutex.rb ADDED
@@ -0,0 +1,77 @@
1
+ # Ruby-SDL3 : SDL3 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl3-bindings
4
+ #
5
+ # [NOTICE] Autogenerated. Do not edit.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
13
+
14
+ # Enum
15
+
16
+ INIT_STATUS_UNINITIALIZED = 0
17
+ INIT_STATUS_INITIALIZING = 1
18
+ INIT_STATUS_INITIALIZED = 2
19
+ INIT_STATUS_UNINITIALIZING = 3
20
+
21
+ # Typedef
22
+
23
+ typedef :int, :SDL_InitStatus
24
+
25
+ # Struct
26
+
27
+ class InitState < FFI::Struct
28
+ layout(
29
+ :status, AtomicInt,
30
+ :thread, :ulong_long,
31
+ :reserved, :pointer,
32
+ )
33
+ end
34
+
35
+
36
+ # Function
37
+
38
+ def self.setup_mutex_symbols(output_error = false)
39
+ entries = [
40
+ [:CreateMutex, :SDL_CreateMutex, [], :pointer],
41
+ [:LockMutex, :SDL_LockMutex, [:pointer], :void],
42
+ [:TryLockMutex, :SDL_TryLockMutex, [:pointer], :bool],
43
+ [:UnlockMutex, :SDL_UnlockMutex, [:pointer], :void],
44
+ [:DestroyMutex, :SDL_DestroyMutex, [:pointer], :void],
45
+ [:CreateRWLock, :SDL_CreateRWLock, [], :pointer],
46
+ [:LockRWLockForReading, :SDL_LockRWLockForReading, [:pointer], :void],
47
+ [:LockRWLockForWriting, :SDL_LockRWLockForWriting, [:pointer], :void],
48
+ [:TryLockRWLockForReading, :SDL_TryLockRWLockForReading, [:pointer], :bool],
49
+ [:TryLockRWLockForWriting, :SDL_TryLockRWLockForWriting, [:pointer], :bool],
50
+ [:UnlockRWLock, :SDL_UnlockRWLock, [:pointer], :void],
51
+ [:DestroyRWLock, :SDL_DestroyRWLock, [:pointer], :void],
52
+ [:CreateSemaphore, :SDL_CreateSemaphore, [:uint], :pointer],
53
+ [:DestroySemaphore, :SDL_DestroySemaphore, [:pointer], :void],
54
+ [:WaitSemaphore, :SDL_WaitSemaphore, [:pointer], :void],
55
+ [:TryWaitSemaphore, :SDL_TryWaitSemaphore, [:pointer], :bool],
56
+ [:WaitSemaphoreTimeout, :SDL_WaitSemaphoreTimeout, [:pointer, :int], :bool],
57
+ [:SignalSemaphore, :SDL_SignalSemaphore, [:pointer], :void],
58
+ [:GetSemaphoreValue, :SDL_GetSemaphoreValue, [:pointer], :uint],
59
+ [:CreateCondition, :SDL_CreateCondition, [], :pointer],
60
+ [:DestroyCondition, :SDL_DestroyCondition, [:pointer], :void],
61
+ [:SignalCondition, :SDL_SignalCondition, [:pointer], :void],
62
+ [:BroadcastCondition, :SDL_BroadcastCondition, [:pointer], :void],
63
+ [:WaitCondition, :SDL_WaitCondition, [:pointer, :pointer], :void],
64
+ [:WaitConditionTimeout, :SDL_WaitConditionTimeout, [:pointer, :pointer, :int], :bool],
65
+ [:ShouldInit, :SDL_ShouldInit, [:pointer], :bool],
66
+ [:ShouldQuit, :SDL_ShouldQuit, [:pointer], :bool],
67
+ [:SetInitialized, :SDL_SetInitialized, [:pointer, :bool], :void],
68
+ ]
69
+ entries.each do |entry|
70
+ attach_function entry[0], entry[1], entry[2], entry[3]
71
+ rescue FFI::NotFoundError => e
72
+ warn "[Warning] Failed to import #{entry[0]} (#{e})." if output_error
73
+ end
74
+ end
75
+
76
+ end
77
+
data/lib/sdl3_pen.rb ADDED
@@ -0,0 +1,56 @@
1
+ # Ruby-SDL3 : SDL3 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl3-bindings
4
+ #
5
+ # [NOTICE] Autogenerated. Do not edit.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
13
+ PEN_MOUSEID = -2
14
+ PEN_TOUCHID = -2
15
+ PEN_INPUT_DOWN = 1 << 0
16
+ PEN_INPUT_BUTTON_1 = 1 << 1
17
+ PEN_INPUT_BUTTON_2 = 1 << 2
18
+ PEN_INPUT_BUTTON_3 = 1 << 3
19
+ PEN_INPUT_BUTTON_4 = 1 << 4
20
+ PEN_INPUT_BUTTON_5 = 1 << 5
21
+ PEN_INPUT_ERASER_TIP = 1 << 30
22
+
23
+ # Enum
24
+
25
+ PEN_AXIS_PRESSURE = 0
26
+ PEN_AXIS_XTILT = 1
27
+ PEN_AXIS_YTILT = 2
28
+ PEN_AXIS_DISTANCE = 3
29
+ PEN_AXIS_ROTATION = 4
30
+ PEN_AXIS_SLIDER = 5
31
+ PEN_AXIS_TANGENTIAL_PRESSURE = 6
32
+ PEN_AXIS_COUNT = 7
33
+
34
+ # Typedef
35
+
36
+ typedef :uint, :SDL_PenID
37
+ typedef :uint, :SDL_PenInputFlags
38
+ typedef :int, :SDL_PenAxis
39
+
40
+ # Struct
41
+
42
+
43
+ # Function
44
+
45
+ def self.setup_pen_symbols(output_error = false)
46
+ entries = [
47
+ ]
48
+ entries.each do |entry|
49
+ attach_function entry[0], entry[1], entry[2], entry[3]
50
+ rescue FFI::NotFoundError => e
51
+ warn "[Warning] Failed to import #{entry[0]} (#{e})." if output_error
52
+ end
53
+ end
54
+
55
+ end
56
+
@@ -0,0 +1,296 @@
1
+ # Ruby-SDL3 : SDL3 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl3-bindings
4
+ #
5
+ # [NOTICE] Autogenerated. Do not edit.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
13
+ ALPHA_OPAQUE = 255
14
+ ALPHA_OPAQUE_FLOAT = 1.0
15
+ ALPHA_TRANSPARENT = 0
16
+ ALPHA_TRANSPARENT_FLOAT = 0.0
17
+
18
+ # Enum
19
+
20
+ PIXELTYPE_UNKNOWN = 0
21
+ PIXELTYPE_INDEX1 = 1
22
+ PIXELTYPE_INDEX4 = 2
23
+ PIXELTYPE_INDEX8 = 3
24
+ PIXELTYPE_PACKED8 = 4
25
+ PIXELTYPE_PACKED16 = 5
26
+ PIXELTYPE_PACKED32 = 6
27
+ PIXELTYPE_ARRAYU8 = 7
28
+ PIXELTYPE_ARRAYU16 = 8
29
+ PIXELTYPE_ARRAYU32 = 9
30
+ PIXELTYPE_ARRAYF16 = 10
31
+ PIXELTYPE_ARRAYF32 = 11
32
+ PIXELTYPE_INDEX2 = 12
33
+ BITMAPORDER_NONE = 0
34
+ BITMAPORDER_4321 = 1
35
+ BITMAPORDER_1234 = 2
36
+ PACKEDORDER_NONE = 0
37
+ PACKEDORDER_XRGB = 1
38
+ PACKEDORDER_RGBX = 2
39
+ PACKEDORDER_ARGB = 3
40
+ PACKEDORDER_RGBA = 4
41
+ PACKEDORDER_XBGR = 5
42
+ PACKEDORDER_BGRX = 6
43
+ PACKEDORDER_ABGR = 7
44
+ PACKEDORDER_BGRA = 8
45
+ ARRAYORDER_NONE = 0
46
+ ARRAYORDER_RGB = 1
47
+ ARRAYORDER_RGBA = 2
48
+ ARRAYORDER_ARGB = 3
49
+ ARRAYORDER_BGR = 4
50
+ ARRAYORDER_BGRA = 5
51
+ ARRAYORDER_ABGR = 6
52
+ PACKEDLAYOUT_NONE = 0
53
+ PACKEDLAYOUT_332 = 1
54
+ PACKEDLAYOUT_4444 = 2
55
+ PACKEDLAYOUT_1555 = 3
56
+ PACKEDLAYOUT_5551 = 4
57
+ PACKEDLAYOUT_565 = 5
58
+ PACKEDLAYOUT_8888 = 6
59
+ PACKEDLAYOUT_2101010 = 7
60
+ PACKEDLAYOUT_1010102 = 8
61
+ PIXELFORMAT_UNKNOWN = 0
62
+ PIXELFORMAT_INDEX1LSB = 286261504
63
+ PIXELFORMAT_INDEX1MSB = 287310080
64
+ PIXELFORMAT_INDEX2LSB = 470811136
65
+ PIXELFORMAT_INDEX2MSB = 471859712
66
+ PIXELFORMAT_INDEX4LSB = 303039488
67
+ PIXELFORMAT_INDEX4MSB = 304088064
68
+ PIXELFORMAT_INDEX8 = 318769153
69
+ PIXELFORMAT_RGB332 = 336660481
70
+ PIXELFORMAT_XRGB4444 = 353504258
71
+ PIXELFORMAT_XBGR4444 = 357698562
72
+ PIXELFORMAT_XRGB1555 = 353570562
73
+ PIXELFORMAT_XBGR1555 = 357764866
74
+ PIXELFORMAT_ARGB4444 = 355602434
75
+ PIXELFORMAT_RGBA4444 = 356651010
76
+ PIXELFORMAT_ABGR4444 = 359796738
77
+ PIXELFORMAT_BGRA4444 = 360845314
78
+ PIXELFORMAT_ARGB1555 = 355667970
79
+ PIXELFORMAT_RGBA5551 = 356782082
80
+ PIXELFORMAT_ABGR1555 = 359862274
81
+ PIXELFORMAT_BGRA5551 = 360976386
82
+ PIXELFORMAT_RGB565 = 353701890
83
+ PIXELFORMAT_BGR565 = 357896194
84
+ PIXELFORMAT_RGB24 = 386930691
85
+ PIXELFORMAT_BGR24 = 390076419
86
+ PIXELFORMAT_XRGB8888 = 370546692
87
+ PIXELFORMAT_RGBX8888 = 371595268
88
+ PIXELFORMAT_XBGR8888 = 374740996
89
+ PIXELFORMAT_BGRX8888 = 375789572
90
+ PIXELFORMAT_ARGB8888 = 372645892
91
+ PIXELFORMAT_RGBA8888 = 373694468
92
+ PIXELFORMAT_ABGR8888 = 376840196
93
+ PIXELFORMAT_BGRA8888 = 377888772
94
+ PIXELFORMAT_XRGB2101010 = 370614276
95
+ PIXELFORMAT_XBGR2101010 = 374808580
96
+ PIXELFORMAT_ARGB2101010 = 372711428
97
+ PIXELFORMAT_ABGR2101010 = 376905732
98
+ PIXELFORMAT_RGB48 = 403714054
99
+ PIXELFORMAT_BGR48 = 406859782
100
+ PIXELFORMAT_RGBA64 = 404766728
101
+ PIXELFORMAT_ARGB64 = 405815304
102
+ PIXELFORMAT_BGRA64 = 407912456
103
+ PIXELFORMAT_ABGR64 = 408961032
104
+ PIXELFORMAT_RGB48_FLOAT = 437268486
105
+ PIXELFORMAT_BGR48_FLOAT = 440414214
106
+ PIXELFORMAT_RGBA64_FLOAT = 438321160
107
+ PIXELFORMAT_ARGB64_FLOAT = 439369736
108
+ PIXELFORMAT_BGRA64_FLOAT = 441466888
109
+ PIXELFORMAT_ABGR64_FLOAT = 442515464
110
+ PIXELFORMAT_RGB96_FLOAT = 454057996
111
+ PIXELFORMAT_BGR96_FLOAT = 457203724
112
+ PIXELFORMAT_RGBA128_FLOAT = 455114768
113
+ PIXELFORMAT_ARGB128_FLOAT = 456163344
114
+ PIXELFORMAT_BGRA128_FLOAT = 458260496
115
+ PIXELFORMAT_ABGR128_FLOAT = 459309072
116
+ PIXELFORMAT_YV12 = 842094169
117
+ PIXELFORMAT_IYUV = 1448433993
118
+ PIXELFORMAT_YUY2 = 844715353
119
+ PIXELFORMAT_UYVY = 1498831189
120
+ PIXELFORMAT_YVYU = 1431918169
121
+ PIXELFORMAT_NV12 = 842094158
122
+ PIXELFORMAT_NV21 = 825382478
123
+ PIXELFORMAT_P010 = 808530000
124
+ PIXELFORMAT_EXTERNAL_OES = 542328143
125
+ PIXELFORMAT_RGBA32 = 376840196
126
+ PIXELFORMAT_ARGB32 = 377888772
127
+ PIXELFORMAT_BGRA32 = 372645892
128
+ PIXELFORMAT_ABGR32 = 373694468
129
+ PIXELFORMAT_RGBX32 = 374740996
130
+ PIXELFORMAT_XRGB32 = 375789572
131
+ PIXELFORMAT_BGRX32 = 370546692
132
+ PIXELFORMAT_XBGR32 = 371595268
133
+ COLOR_TYPE_UNKNOWN = 0
134
+ COLOR_TYPE_RGB = 1
135
+ COLOR_TYPE_YCBCR = 2
136
+ COLOR_RANGE_UNKNOWN = 0
137
+ COLOR_RANGE_LIMITED = 1
138
+ COLOR_RANGE_FULL = 2
139
+ COLOR_PRIMARIES_UNKNOWN = 0
140
+ COLOR_PRIMARIES_BT709 = 1
141
+ COLOR_PRIMARIES_UNSPECIFIED = 2
142
+ COLOR_PRIMARIES_BT470M = 4
143
+ COLOR_PRIMARIES_BT470BG = 5
144
+ COLOR_PRIMARIES_BT601 = 6
145
+ COLOR_PRIMARIES_SMPTE240 = 7
146
+ COLOR_PRIMARIES_GENERIC_FILM = 8
147
+ COLOR_PRIMARIES_BT2020 = 9
148
+ COLOR_PRIMARIES_XYZ = 10
149
+ COLOR_PRIMARIES_SMPTE431 = 11
150
+ COLOR_PRIMARIES_SMPTE432 = 12
151
+ COLOR_PRIMARIES_EBU3213 = 22
152
+ COLOR_PRIMARIES_CUSTOM = 31
153
+ TRANSFER_CHARACTERISTICS_UNKNOWN = 0
154
+ TRANSFER_CHARACTERISTICS_BT709 = 1
155
+ TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2
156
+ TRANSFER_CHARACTERISTICS_GAMMA22 = 4
157
+ TRANSFER_CHARACTERISTICS_GAMMA28 = 5
158
+ TRANSFER_CHARACTERISTICS_BT601 = 6
159
+ TRANSFER_CHARACTERISTICS_SMPTE240 = 7
160
+ TRANSFER_CHARACTERISTICS_LINEAR = 8
161
+ TRANSFER_CHARACTERISTICS_LOG100 = 9
162
+ TRANSFER_CHARACTERISTICS_LOG100_SQRT10 = 10
163
+ TRANSFER_CHARACTERISTICS_IEC61966 = 11
164
+ TRANSFER_CHARACTERISTICS_BT1361 = 12
165
+ TRANSFER_CHARACTERISTICS_SRGB = 13
166
+ TRANSFER_CHARACTERISTICS_BT2020_10BIT = 14
167
+ TRANSFER_CHARACTERISTICS_BT2020_12BIT = 15
168
+ TRANSFER_CHARACTERISTICS_PQ = 16
169
+ TRANSFER_CHARACTERISTICS_SMPTE428 = 17
170
+ TRANSFER_CHARACTERISTICS_HLG = 18
171
+ TRANSFER_CHARACTERISTICS_CUSTOM = 31
172
+ MATRIX_COEFFICIENTS_IDENTITY = 0
173
+ MATRIX_COEFFICIENTS_BT709 = 1
174
+ MATRIX_COEFFICIENTS_UNSPECIFIED = 2
175
+ MATRIX_COEFFICIENTS_FCC = 4
176
+ MATRIX_COEFFICIENTS_BT470BG = 5
177
+ MATRIX_COEFFICIENTS_BT601 = 6
178
+ MATRIX_COEFFICIENTS_SMPTE240 = 7
179
+ MATRIX_COEFFICIENTS_YCGCO = 8
180
+ MATRIX_COEFFICIENTS_BT2020_NCL = 9
181
+ MATRIX_COEFFICIENTS_BT2020_CL = 10
182
+ MATRIX_COEFFICIENTS_SMPTE2085 = 11
183
+ MATRIX_COEFFICIENTS_CHROMA_DERIVED_NCL = 12
184
+ MATRIX_COEFFICIENTS_CHROMA_DERIVED_CL = 13
185
+ MATRIX_COEFFICIENTS_ICTCP = 14
186
+ MATRIX_COEFFICIENTS_CUSTOM = 31
187
+ CHROMA_LOCATION_NONE = 0
188
+ CHROMA_LOCATION_LEFT = 1
189
+ CHROMA_LOCATION_CENTER = 2
190
+ CHROMA_LOCATION_TOPLEFT = 3
191
+ COLORSPACE_UNKNOWN = 0
192
+ COLORSPACE_SRGB = 301991328
193
+ COLORSPACE_SRGB_LINEAR = 301991168
194
+ COLORSPACE_HDR10 = 301999616
195
+ COLORSPACE_JPEG = 570426566
196
+ COLORSPACE_BT601_LIMITED = 554703046
197
+ COLORSPACE_BT601_FULL = 571480262
198
+ COLORSPACE_BT709_LIMITED = 554697761
199
+ COLORSPACE_BT709_FULL = 571474977
200
+ COLORSPACE_BT2020_LIMITED = 554706441
201
+ COLORSPACE_BT2020_FULL = 571483657
202
+ COLORSPACE_RGB_DEFAULT = 301991328
203
+ COLORSPACE_YUV_DEFAULT = 570426566
204
+
205
+ # Typedef
206
+
207
+ typedef :int, :SDL_PixelType
208
+ typedef :int, :SDL_BitmapOrder
209
+ typedef :int, :SDL_PackedOrder
210
+ typedef :int, :SDL_ArrayOrder
211
+ typedef :int, :SDL_PackedLayout
212
+ typedef :int, :SDL_PixelFormat
213
+ typedef :int, :SDL_ColorType
214
+ typedef :int, :SDL_ColorRange
215
+ typedef :int, :SDL_ColorPrimaries
216
+ typedef :int, :SDL_TransferCharacteristics
217
+ typedef :int, :SDL_MatrixCoefficients
218
+ typedef :int, :SDL_ChromaLocation
219
+ typedef :int, :SDL_Colorspace
220
+
221
+ # Struct
222
+
223
+ class Color < FFI::Struct
224
+ layout(
225
+ :r, :uchar,
226
+ :g, :uchar,
227
+ :b, :uchar,
228
+ :a, :uchar,
229
+ )
230
+ end
231
+
232
+ class FColor < FFI::Struct
233
+ layout(
234
+ :r, :float,
235
+ :g, :float,
236
+ :b, :float,
237
+ :a, :float,
238
+ )
239
+ end
240
+
241
+ class Palette < FFI::Struct
242
+ layout(
243
+ :ncolors, :int,
244
+ :colors, :pointer,
245
+ :version, :uint,
246
+ :refcount, :int,
247
+ )
248
+ end
249
+
250
+ class PixelFormatDetails < FFI::Struct
251
+ layout(
252
+ :format, :int,
253
+ :bits_per_pixel, :uchar,
254
+ :bytes_per_pixel, :uchar,
255
+ :padding, [:uchar, 2],
256
+ :Rmask, :uint,
257
+ :Gmask, :uint,
258
+ :Bmask, :uint,
259
+ :Amask, :uint,
260
+ :Rbits, :uchar,
261
+ :Gbits, :uchar,
262
+ :Bbits, :uchar,
263
+ :Abits, :uchar,
264
+ :Rshift, :uchar,
265
+ :Gshift, :uchar,
266
+ :Bshift, :uchar,
267
+ :Ashift, :uchar,
268
+ )
269
+ end
270
+
271
+
272
+ # Function
273
+
274
+ def self.setup_pixels_symbols(output_error = false)
275
+ entries = [
276
+ [:GetPixelFormatName, :SDL_GetPixelFormatName, [:int], :pointer],
277
+ [:GetMasksForPixelFormat, :SDL_GetMasksForPixelFormat, [:int, :pointer, :pointer, :pointer, :pointer, :pointer], :bool],
278
+ [:GetPixelFormatForMasks, :SDL_GetPixelFormatForMasks, [:int, :uint, :uint, :uint, :uint], :int],
279
+ [:GetPixelFormatDetails, :SDL_GetPixelFormatDetails, [:int], :pointer],
280
+ [:CreatePalette, :SDL_CreatePalette, [:int], :pointer],
281
+ [:SetPaletteColors, :SDL_SetPaletteColors, [:pointer, :pointer, :int, :int], :bool],
282
+ [:DestroyPalette, :SDL_DestroyPalette, [:pointer], :void],
283
+ [:MapRGB, :SDL_MapRGB, [:pointer, :pointer, :uchar, :uchar, :uchar], :uint],
284
+ [:MapRGBA, :SDL_MapRGBA, [:pointer, :pointer, :uchar, :uchar, :uchar, :uchar], :uint],
285
+ [:GetRGB, :SDL_GetRGB, [:uint, :pointer, :pointer, :pointer, :pointer, :pointer], :void],
286
+ [:GetRGBA, :SDL_GetRGBA, [:uint, :pointer, :pointer, :pointer, :pointer, :pointer, :pointer], :void],
287
+ ]
288
+ entries.each do |entry|
289
+ attach_function entry[0], entry[1], entry[2], entry[3]
290
+ rescue FFI::NotFoundError => e
291
+ warn "[Warning] Failed to import #{entry[0]} (#{e})." if output_error
292
+ end
293
+ end
294
+
295
+ end
296
+