sdl3-bindings 1.0.0.beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+