Skip to content

Commit 3b3b15b

Browse files
authored
Update SDL2 bindings to 2.0.22 (#226)
* Update bindings and unit tests for 2.0.22 * Update macOS and Windows CI setup * Bump SDL2 version for Linux CI tests * Update news.rst
1 parent f7db143 commit 3b3b15b

File tree

16 files changed

+284
-15
lines changed

16 files changed

+284
-15
lines changed

.ci/getsdl2.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,13 @@
2525
}
2626

2727
libversions = {
28+
'2.0.22': {
29+
'SDL2': '2.0.22',
30+
'SDL2_mixer': '2.0.4',
31+
'SDL2_ttf': '2.0.18',
32+
'SDL2_image': '2.0.5',
33+
'SDL2_gfx': '1.0.4'
34+
},
2835
'2.0.20': {
2936
'SDL2': '2.0.20',
3037
'SDL2_mixer': '2.0.4',

.github/workflows/run_tests.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ jobs:
2323
fail-fast: false
2424
matrix:
2525
python-version: ['2.7', '3.6', '3.7', '3.8', '3.9', '3.10']
26-
sdl2: ['2.0.20']
26+
sdl2: ['2.0.22']
2727
name-prefix: ['Linux (Python ']
2828
include:
2929
- python-version: 'pypy-2.7'
30-
sdl2: '2.0.20'
30+
sdl2: '2.0.22'
3131
name-prefix: 'Experimental / Linux ('
3232
- python-version: 'pypy-3.7'
33-
sdl2: '2.0.20'
33+
sdl2: '2.0.22'
3434
name-prefix: 'Experimental / Linux ('
3535

3636
env:
@@ -71,11 +71,11 @@ jobs:
7171
fail-fast: false
7272
matrix:
7373
python-version: [3.9]
74-
sdl2: ['2.0.20', '2.0.16', '2.0.14']
74+
sdl2: ['2.0.22', '2.0.20', '2.0.16']
7575
name-prefix: ['macOS (Python ']
7676
include:
7777
- python-version: '2.7'
78-
sdl2: '2.0.20'
78+
sdl2: '2.0.22'
7979
name-prefix: 'macOS (Python '
8080
- python-version: '3.9'
8181
sdl2: 'from Homebrew'
@@ -127,21 +127,21 @@ jobs:
127127
matrix:
128128
python-version: [3.9]
129129
architecture: ['x64']
130-
sdl2: ['2.0.20', '2.0.18', '2.0.16', '2.0.14', '2.0.12',
130+
sdl2: ['2.0.22', '2.0.20', '2.0.18', '2.0.16', '2.0.14', '2.0.12',
131131
'2.0.10', '2.0.9', '2.0.8', '2.0.7', '2.0.6', '2.0.5']
132132
name-prefix: ['Windows (Python ']
133133
include:
134134
- python-version: '2.7'
135135
architecture: 'x64'
136-
sdl2: '2.0.20'
136+
sdl2: '2.0.22'
137137
name-prefix: 'Windows (Python '
138138
- python-version: '2.7'
139139
architecture: 'x86'
140-
sdl2: '2.0.20'
140+
sdl2: '2.0.22'
141141
name-prefix: 'Windows 32-bit (Python '
142142
- python-version: '3.9'
143143
architecture: 'x86'
144-
sdl2: '2.0.20'
144+
sdl2: '2.0.22'
145145
name-prefix: 'Windows 32-bit (Python '
146146
- python-version: '2.7'
147147
architecture: 'x86'

doc/news.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ Released on XXXX-XX-XX.
99

1010
New Features:
1111

12+
* Updated to wrap new functions and constants in SDL2 2.0.22 (PR #226)
1213
* Added a new stable API for accessing the raw ctypes function bindings for each
1314
submodule. Each submodule (e.g. ``sdl2.sdlttf``, ``sdl2.video``) now contains
1415
a ``_ctypes`` object through which the raw ctypes function objects can be

sdl2/events.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
__all__ = [
1515
# Structs, Unions, & Opaque Types
1616
"SDL_CommonEvent", "SDL_DisplayEvent", "SDL_WindowEvent",
17-
"SDL_KeyboardEvent", "SDL_TextEditingEvent", "SDL_TextInputEvent",
17+
"SDL_KeyboardEvent", "SDL_TextEditingEvent",
18+
"SDL_TextEditingExtEvent", "SDL_TextInputEvent",
1819
"SDL_MouseMotionEvent", "SDL_MouseButtonEvent", "SDL_MouseWheelEvent",
1920
"SDL_JoyAxisEvent", "SDL_JoyBallEvent", "SDL_JoyHatEvent",
2021
"SDL_JoyButtonEvent", "SDL_JoyDeviceEvent", "SDL_ControllerAxisEvent",
@@ -38,7 +39,8 @@
3839
"SDL_LOCALECHANGED", "SDL_DISPLAYEVENT",
3940
"SDL_WINDOWEVENT", "SDL_SYSWMEVENT",
4041
"SDL_KEYDOWN", "SDL_KEYUP", "SDL_TEXTEDITING", "SDL_TEXTINPUT",
41-
"SDL_KEYMAPCHANGED", "SDL_MOUSEMOTION", "SDL_MOUSEBUTTONDOWN",
42+
"SDL_KEYMAPCHANGED", "SDL_TEXTEDITING_EXT",
43+
"SDL_MOUSEMOTION", "SDL_MOUSEBUTTONDOWN",
4244
"SDL_MOUSEBUTTONUP", "SDL_MOUSEWHEEL",
4345
"SDL_JOYAXISMOTION", "SDL_JOYBALLMOTION",
4446
"SDL_JOYHATMOTION", "SDL_JOYBUTTONDOWN", "SDL_JOYBUTTONUP",
@@ -90,6 +92,7 @@
9092
SDL_TEXTEDITING = 0x302
9193
SDL_TEXTINPUT = 0x303
9294
SDL_KEYMAPCHANGED = 0x304
95+
SDL_TEXTEDITING_EXT = 0x305
9396
SDL_MOUSEMOTION = 0x400
9497
SDL_MOUSEBUTTONDOWN = 0x401
9598
SDL_MOUSEBUTTONUP = 0x402
@@ -200,6 +203,16 @@ class SDL_TextEditingEvent(Structure):
200203
("length", Sint32),
201204
]
202205

206+
class SDL_TextEditingExtEvent(Structure):
207+
_fields_ = [
208+
("type", Uint32),
209+
("timestamp", Uint32),
210+
("windowID", Uint32),
211+
("text", c_char_p),
212+
("start", Sint32),
213+
("length", Sint32),
214+
]
215+
203216
class SDL_TextInputEvent(Structure):
204217
_fields_ = [
205218
("type", Uint32),
@@ -468,6 +481,7 @@ class SDL_Event(Union):
468481
("window", SDL_WindowEvent),
469482
("key", SDL_KeyboardEvent),
470483
("edit", SDL_TextEditingEvent),
484+
("editExt", SDL_TextEditingExtEvent),
471485
("text", SDL_TextInputEvent),
472486
("motion", SDL_MouseMotionEvent),
473487
("button", SDL_MouseButtonEvent),

sdl2/hints.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT",
3030
"SDL_HINT_ENABLE_STEAM_CONTROLLERS",
3131
"SDL_HINT_EVENT_LOGGING",
32+
"SDL_HINT_FORCE_RAISEWINDOW",
3233
"SDL_HINT_FRAMEBUFFER_ACCELERATION",
3334
"SDL_HINT_GAMECONTROLLERCONFIG",
3435
"SDL_HINT_GAMECONTROLLERCONFIG_FILE",
@@ -40,10 +41,12 @@
4041
"SDL_HINT_IDLE_TIMER_DISABLED",
4142
"SDL_HINT_IME_INTERNAL_EDITING",
4243
"SDL_HINT_IME_SHOW_UI",
44+
"SDL_HINT_IME_SUPPORT_EXTENDED_TEXT",
4345
"SDL_HINT_IOS_HIDE_HOME_INDICATOR",
4446
"SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS",
4547
"SDL_HINT_JOYSTICK_HIDAPI",
4648
"SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE",
49+
"SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE",
4750
"SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS",
4851
"SDL_HINT_JOYSTICK_HIDAPI_LUNA",
4952
"SDL_HINT_JOYSTICK_HIDAPI_PS4",
@@ -59,6 +62,7 @@
5962
"SDL_HINT_JOYSTICK_RAWINPUT",
6063
"SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT",
6164
"SDL_HINT_JOYSTICK_HIDAPI_CORRELATE_XINPUT",
65+
"SDL_HINT_JOYSTICK_ROG_CHAKRAM",
6266
"SDL_HINT_JOYSTICK_THREAD",
6367
"SDL_HINT_KMSDRM_REQUIRE_DRM_MASTER",
6468
"SDL_HINT_JOYSTICK_DEVICE",
@@ -70,10 +74,12 @@
7074
"SDL_HINT_MOUSE_DOUBLE_CLICK_TIME",
7175
"SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH",
7276
"SDL_HINT_MOUSE_NORMAL_SPEED_SCALE",
77+
"SDL_HINT_MOUSE_RELATIVE_MODE_CENTER",
7378
"SDL_HINT_MOUSE_RELATIVE_MODE_WARP",
7479
"SDL_HINT_MOUSE_RELATIVE_SCALING",
7580
"SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE",
7681
"SDL_HINT_MOUSE_TOUCH_EVENTS",
82+
"SDL_HINT_MOUSE_AUTO_CAPTURE",
7783
"SDL_HINT_NO_SIGNAL_HANDLERS",
7884
"SDL_HINT_OPENGL_ES_DRIVER",
7985
"SDL_HINT_ORIENTATIONS",
@@ -98,6 +104,7 @@
98104
"SDL_HINT_THREAD_STACK_SIZE",
99105
"SDL_HINT_TIMER_RESOLUTION",
100106
"SDL_HINT_TOUCH_MOUSE_EVENTS",
107+
"SDL_HINT_VITA_TOUCH_MOUSE_DEVICE",
101108
"SDL_HINT_TV_REMOTE_AS_JOYSTICK",
102109
"SDL_HINT_VIDEO_ALLOW_SCREENSAVER",
103110
"SDL_HINT_VIDEO_DOUBLE_BUFFER",
@@ -107,7 +114,10 @@
107114
"SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES",
108115
"SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS",
109116
"SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR",
117+
"SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR",
110118
"SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT",
119+
"SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL",
120+
"SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN",
111121
"SDL_HINT_VIDEO_WIN_D3DCOMPILER",
112122
"SDL_HINT_VIDEO_X11_FORCE_EGL",
113123
"SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR",
@@ -136,6 +146,10 @@
136146
"SDL_HINT_XINPUT_ENABLED",
137147
"SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING",
138148
"SDL_HINT_AUDIO_INCLUDE_MONITORS",
149+
"SDL_HINT_X11_WINDOW_TYPE",
150+
"SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE",
151+
"SDL_HINT_VIDEODRIVER",
152+
"SDL_HINT_AUDIODRIVER",
139153

140154
# Enums
141155
"SDL_HintPriority",
@@ -154,6 +168,7 @@
154168
SDL_HINT_NO_SIGNAL_HANDLERS = b"SDL_NO_SIGNAL_HANDLERS"
155169
SDL_HINT_POLL_SENTINEL = b"SDL_POLL_SENTINEL"
156170
SDL_HINT_PREFERRED_LOCALES = b"SDL_PREFERRED_LOCALES"
171+
SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE = b"SDL_QUIT_ON_LAST_WINDOW_CLOSE"
157172
SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME = b"SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME"
158173
SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL = b"SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL"
159174
SDL_HINT_THREAD_PRIORITY_POLICY = b"SDL_THREAD_PRIORITY_POLICY"
@@ -172,11 +187,15 @@
172187
SDL_HINT_RENDER_OPENGL_SHADERS = b"SDL_RENDER_OPENGL_SHADERS"
173188
SDL_HINT_RENDER_SCALE_QUALITY = b"SDL_RENDER_SCALE_QUALITY"
174189
SDL_HINT_RENDER_VSYNC = b"SDL_RENDER_VSYNC"
190+
SDL_HINT_VIDEODRIVER = b"SDL_VIDEODRIVER"
175191
SDL_HINT_VIDEO_ALLOW_SCREENSAVER = b"SDL_VIDEO_ALLOW_SCREENSAVER"
176192
SDL_HINT_VIDEO_DOUBLE_BUFFER = b"SDL_VIDEO_DOUBLE_BUFFER"
177193
SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY = b"SDL_VIDEO_EGL_ALLOW_TRANSPARENCY"
178194
SDL_HINT_VIDEO_EXTERNAL_CONTEXT = b"SDL_VIDEO_EXTERNAL_CONTEXT"
195+
SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL = b"SDL_VIDEO_FOREIGN_WINDOW_OPENGL"
196+
SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN = b"SDL_VIDEO_FOREIGN_WINDOW_VULKAN"
179197
SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR = b"SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR"
198+
SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR = b"SDL_VIDEO_WAYLAND_PREFER_LIBDECOR"
180199
SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT = b"SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT"
181200
SDL_HINT_VIDEO_X11_FORCE_EGL = b"SDL_VIDEO_X11_FORCE_EGL"
182201
SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR = b"SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR"
@@ -186,10 +205,12 @@
186205
SDL_HINT_VIDEO_X11_XRANDR = b"SDL_VIDEO_X11_XRANDR"
187206
SDL_HINT_VIDEO_X11_XVIDMODE = b"SDL_VIDEO_X11_XVIDMODE"
188207
SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT = b"SDL_X11_FORCE_OVERRIDE_REDIRECT"
208+
SDL_HINT_X11_WINDOW_TYPE = b"SDL_X11_WINDOW_TYPE"
189209

190210

191211
# Audio Hints
192212

213+
SDL_HINT_AUDIODRIVER = b"SDL_AUDIODRIVER"
193214
SDL_HINT_AUDIO_CATEGORY = b"SDL_AUDIO_CATEGORY"
194215
SDL_HINT_AUDIO_DEVICE_APP_NAME = b"SDL_AUDIO_DEVICE_APP_NAME"
195216
SDL_HINT_AUDIO_DEVICE_STREAM_NAME = b"SDL_AUDIO_DEVICE_STREAM_NAME"
@@ -206,6 +227,7 @@
206227
SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED = b"SDL_ALLOW_ALT_TAB_WHILE_GRABBED"
207228
SDL_HINT_ALLOW_TOPMOST = b"SDL_ALLOW_TOPMOST"
208229
SDL_HINT_DISPLAY_USABLE_BOUNDS = b"SDL_DISPLAY_USABLE_BOUNDS"
230+
SDL_HINT_FORCE_RAISEWINDOW = b"SDL_HINT_FORCE_RAISEWINDOW"
209231
SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION = b"SDL_QTWAYLAND_CONTENT_ORIENTATION"
210232
SDL_HINT_QTWAYLAND_WINDOW_FLAGS = b"SDL_QTWAYLAND_WINDOW_FLAGS"
211233
SDL_HINT_VIDEO_HIGHDPI_DISABLED = b"SDL_VIDEO_HIGHDPI_DISABLED"
@@ -219,10 +241,13 @@
219241
SDL_HINT_GRAB_KEYBOARD = b"SDL_GRAB_KEYBOARD"
220242
SDL_HINT_IME_INTERNAL_EDITING = b"SDL_IME_INTERNAL_EDITING"
221243
SDL_HINT_IME_SHOW_UI = b"SDL_IME_SHOW_UI"
244+
SDL_HINT_IME_SUPPORT_EXTENDED_TEXT = b"SDL_IME_SUPPORT_EXTENDED_TEXT"
245+
SDL_HINT_MOUSE_AUTO_CAPTURE = b"SDL_MOUSE_AUTO_CAPTURE"
222246
SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS = b"SDL_MOUSE_DOUBLE_CLICK_RADIUS"
223247
SDL_HINT_MOUSE_DOUBLE_CLICK_TIME = b"SDL_MOUSE_DOUBLE_CLICK_TIME"
224248
SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH = b"SDL_MOUSE_FOCUS_CLICKTHROUGH"
225249
SDL_HINT_MOUSE_NORMAL_SPEED_SCALE = b"SDL_MOUSE_NORMAL_SPEED_SCALE"
250+
SDL_HINT_MOUSE_RELATIVE_MODE_CENTER = b"SDL_MOUSE_RELATIVE_MODE_CENTER"
226251
SDL_HINT_MOUSE_RELATIVE_MODE_WARP = b"SDL_MOUSE_RELATIVE_MODE_WARP"
227252
SDL_HINT_MOUSE_RELATIVE_SCALING = b"SDL_MOUSE_RELATIVE_SCALING"
228253
SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE = b"SDL_MOUSE_RELATIVE_SPEED_SCALE"
@@ -245,6 +270,7 @@
245270
SDL_HINT_JOYSTICK_HIDAPI = b"SDL_JOYSTICK_HIDAPI"
246271
SDL_HINT_JOYSTICK_HIDAPI_CORRELATE_XINPUT = b"SDL_JOYSTICK_HIDAPI_CORRELATE_XINPUT"
247272
SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE = b"SDL_JOYSTICK_HIDAPI_GAMECUBE"
273+
SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE = b"SDL_JOYSTICK_GAMECUBE_RUMBLE_BRAKE"
248274
SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS = b"SDL_JOYSTICK_HIDAPI_JOY_CONS"
249275
SDL_HINT_JOYSTICK_HIDAPI_LUNA = b"SDL_JOYSTICK_HIDAPI_LUNA"
250276
SDL_HINT_JOYSTICK_HIDAPI_PS4 = b"SDL_JOYSTICK_HIDAPI_PS4"
@@ -259,6 +285,7 @@
259285
SDL_HINT_JOYSTICK_HIDAPI_XBOX = b"SDL_JOYSTICK_HIDAPI_XBOX"
260286
SDL_HINT_JOYSTICK_RAWINPUT = b"SDL_JOYSTICK_RAWINPUT"
261287
SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT = b"SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT"
288+
SDL_HINT_JOYSTICK_ROG_CHAKRAM = b"SDL_JOYSTICK_ROG_CHAKRAM"
262289
SDL_HINT_JOYSTICK_THREAD = b"SDL_JOYSTICK_THREAD"
263290
SDL_HINT_JOYSTICK_DEVICE = b"SDL_JOYSTICK_DEVICE"
264291

@@ -305,6 +332,7 @@
305332
SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION = b"SDL_APPLE_TV_REMOTE_ALLOW_ROTATION"
306333
SDL_HINT_IDLE_TIMER_DISABLED = b"SDL_IOS_IDLE_TIMER_DISABLED"
307334
SDL_HINT_IOS_HIDE_HOME_INDICATOR = "SDL_IOS_HIDE_HOME_INDICATOR"
335+
SDL_HINT_VITA_TOUCH_MOUSE_DEVICE = b"SDL_HINT_VITA_TOUCH_MOUSE_DEVICE"
308336
SDL_HINT_WINRT_PRIVACY_POLICY_URL = b"SDL_WINRT_PRIVACY_POLICY_URL"
309337
SDL_HINT_WINRT_PRIVACY_POLICY_LABEL = b"SDL_WINRT_PRIVACY_POLICY_LABEL"
310338
SDL_HINT_WINRT_HANDLE_BACK_BUTTON = b"SDL_WINRT_HANDLE_BACK_BUTTON"

sdl2/keyboard.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ class SDL_Keysym(Structure):
4040
SDLFunc("SDL_StartTextInput"),
4141
SDLFunc("SDL_IsTextInputActive", None, SDL_bool),
4242
SDLFunc("SDL_StopTextInput"),
43+
SDLFunc("SDL_ClearComposition", added='2.0.22'),
44+
SDLFunc("SDL_IsTextInputShown", None, SDL_bool, added='2.0.22'),
4345
SDLFunc("SDL_SetTextInputRect", [_P(SDL_Rect)]),
4446
SDLFunc("SDL_HasScreenKeyboardSupport", None, SDL_bool),
4547
SDLFunc("SDL_IsScreenKeyboardShown", [_P(SDL_Window)], SDL_bool),
@@ -65,6 +67,8 @@ class SDL_Keysym(Structure):
6567
SDL_StartTextInput = _ctypes["SDL_StartTextInput"]
6668
SDL_IsTextInputActive = _ctypes["SDL_IsTextInputActive"]
6769
SDL_StopTextInput = _ctypes["SDL_StopTextInput"]
70+
SDL_ClearComposition = _ctypes["SDL_ClearComposition"]
71+
SDL_IsTextInputShown = _ctypes["SDL_IsTextInputShown"]
6872
SDL_SetTextInputRect = _ctypes["SDL_SetTextInputRect"]
6973
SDL_HasScreenKeyboardSupport = _ctypes["SDL_HasScreenKeyboardSupport"]
7074
SDL_IsScreenKeyboardShown = _ctypes["SDL_IsScreenKeyboardShown"]

sdl2/rect.py

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
from ctypes import Structure, c_int, c_float
22
from ctypes import POINTER as _P
33
from .dll import _bind, SDLFunc, AttributeDict
4-
from .stdinc import SDL_bool
4+
from .stdinc import SDL_bool, SDL_FLT_EPSILON
55

66
__all__ = [
77
# Structs
88
"SDL_Point", "SDL_FPoint", "SDL_Rect", "SDL_FRect",
99

1010
# Macro Functions
1111
"SDL_PointInRect", "SDL_RectEmpty", "SDL_RectEquals",
12+
"SDL_PointInFRect", "SDL_FRectEmpty", "SDL_FRectEqualsEpsilon",
13+
"SDL_FRectEquals"
1214
]
1315

1416

@@ -145,6 +147,20 @@ def SDL_RectEquals(a, b):
145147
def SDL_PointInRect(p, r):
146148
return (p.x >= r.x) and (p.x < (r.x+r.w)) and (p.y >= r.y) and (p.y < (r.y+r.h))
147149

150+
SDL_PointInFRect = SDL_PointInRect
151+
SDL_FRectEmpty = SDL_RectEmpty
152+
153+
def SDL_FRectEqualsEpsilon(a, b, epsilon):
154+
return (a and b and a == b) or (
155+
abs(a.x - b.x) <= epsilon and
156+
abs(a.y - b.y) <= epsilon and
157+
abs(a.w - b.w) <= epsilon and
158+
abs(a.h - b.h) <= epsilon
159+
)
160+
161+
def SDL_FRectEquals(a, b):
162+
return SDL_FRectEqualsEpsilon(a, b, SDL_FLT_EPSILON)
163+
148164

149165
# Raw ctypes function definitions
150166

@@ -157,6 +173,20 @@ def SDL_PointInRect(p, r):
157173
[_P(SDL_Rect), _P(c_int), _P(c_int), _P(c_int), _P(c_int)],
158174
returns = SDL_bool
159175
),
176+
SDLFunc("SDL_HasIntersectionF", [_P(SDL_FRect), _P(SDL_FRect)], SDL_bool, added='2.0.22'),
177+
SDLFunc("SDL_IntersectFRect",
178+
[_P(SDL_FRect), _P(SDL_FRect), _P(SDL_FRect)],
179+
returns = SDL_bool, added = '2.0.22'
180+
),
181+
SDLFunc("SDL_UnionFRect", [_P(SDL_FRect), _P(SDL_FRect), _P(SDL_FRect)], added='2.0.22'),
182+
SDLFunc("SDL_EncloseFPoints",
183+
[_P(SDL_FPoint), c_int, _P(SDL_FRect), _P(SDL_FRect)],
184+
returns = SDL_bool, added = '2.0.22'
185+
),
186+
SDLFunc("SDL_IntersectFRectAndLine",
187+
[_P(SDL_FRect), _P(c_float), _P(c_float), _P(c_float), _P(c_float)],
188+
returns = SDL_bool, added = '2.0.22'
189+
),
160190
]
161191
_ctypes = AttributeDict()
162192
for f in _funcdefs:
@@ -171,3 +201,8 @@ def SDL_PointInRect(p, r):
171201
SDL_UnionRect = _ctypes["SDL_UnionRect"]
172202
SDL_EnclosePoints = _ctypes["SDL_EnclosePoints"]
173203
SDL_IntersectRectAndLine = _ctypes["SDL_IntersectRectAndLine"]
204+
SDL_HasIntersectionF = _ctypes["SDL_HasIntersectionF"]
205+
SDL_IntersectFRect = _ctypes["SDL_IntersectFRect"]
206+
SDL_UnionFRect = _ctypes["SDL_UnionFRect"]
207+
SDL_EncloseFPoints = _ctypes["SDL_EncloseFPoints"]
208+
SDL_IntersectFRectAndLine = _ctypes["SDL_IntersectFRectAndLine"]

sdl2/render.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ class SDL_Texture(c_void_p):
144144
SDLFunc("SDL_CreateRenderer", [_P(SDL_Window), c_int, Uint32], _P(SDL_Renderer)),
145145
SDLFunc("SDL_CreateSoftwareRenderer", [_P(SDL_Surface)], _P(SDL_Renderer)),
146146
SDLFunc("SDL_GetRenderer", [_P(SDL_Window)], _P(SDL_Renderer)),
147+
SDLFunc("SDL_RenderGetWindow", [_P(SDL_Renderer)], _P(SDL_Window), added='2.0.22'),
147148
SDLFunc("SDL_GetRendererInfo", [_P(SDL_Renderer), _P(SDL_RendererInfo)], c_int),
148149
SDLFunc("SDL_GetRendererOutputSize", [_P(SDL_Renderer), _P(c_int), _P(c_int)], c_int),
149150
SDLFunc("SDL_CreateTexture", [_P(SDL_Renderer), Uint32, c_int, c_int, c_int], _P(SDL_Texture)),
@@ -293,6 +294,7 @@ class SDL_Texture(c_void_p):
293294
SDL_CreateRenderer = _ctypes["SDL_CreateRenderer"]
294295
SDL_CreateSoftwareRenderer = _ctypes["SDL_CreateSoftwareRenderer"]
295296
SDL_GetRenderer = _ctypes["SDL_GetRenderer"]
297+
SDL_RenderGetWindow = _ctypes["SDL_RenderGetWindow"]
296298
SDL_GetRendererInfo = _ctypes["SDL_GetRendererInfo"]
297299
SDL_GetRendererOutputSize = _ctypes["SDL_GetRendererOutputSize"]
298300
SDL_CreateTexture = _ctypes["SDL_CreateTexture"]

0 commit comments

Comments
 (0)