SDL3pp
A slim C++ wrapper for SDL3
Loading...
Searching...
No Matches
SDL3pp_events.h
1#ifndef SDL3PP_EVENTS_H_
2#define SDL3PP_EVENTS_H_
3
4#include <SDL3/SDL_events.h>
5#include "SDL3pp_stdinc.h"
6#include "SDL3pp_video.h"
7
8namespace SDL {
9
54using EventType = SDL_EventType;
55
56constexpr EventType EVENT_FIRST = SDL_EVENT_FIRST;
57
58constexpr EventType EVENT_QUIT = SDL_EVENT_QUIT;
59
65constexpr EventType EVENT_TERMINATING = SDL_EVENT_TERMINATING;
66
72constexpr EventType EVENT_LOW_MEMORY = SDL_EVENT_LOW_MEMORY;
73
80 SDL_EVENT_WILL_ENTER_BACKGROUND;
81
87constexpr EventType EVENT_DID_ENTER_BACKGROUND = SDL_EVENT_DID_ENTER_BACKGROUND;
88
95 SDL_EVENT_WILL_ENTER_FOREGROUND;
96
102constexpr EventType EVENT_DID_ENTER_FOREGROUND = SDL_EVENT_DID_ENTER_FOREGROUND;
103
105 SDL_EVENT_LOCALE_CHANGED;
106
108 SDL_EVENT_SYSTEM_THEME_CHANGED;
109
111 SDL_EVENT_DISPLAY_ORIENTATION;
112
114 SDL_EVENT_DISPLAY_ADDED;
115
117 SDL_EVENT_DISPLAY_REMOVED;
118
120 SDL_EVENT_DISPLAY_MOVED;
121
123 SDL_EVENT_DISPLAY_DESKTOP_MODE_CHANGED;
124
126 SDL_EVENT_DISPLAY_CURRENT_MODE_CHANGED;
127
129 SDL_EVENT_DISPLAY_CONTENT_SCALE_CHANGED;
131
133 SDL_EVENT_DISPLAY_FIRST;
134
136 SDL_EVENT_DISPLAY_LAST;
137
139 SDL_EVENT_WINDOW_SHOWN;
140
142 SDL_EVENT_WINDOW_HIDDEN;
143
148constexpr EventType EVENT_WINDOW_EXPOSED = SDL_EVENT_WINDOW_EXPOSED;
149
151 SDL_EVENT_WINDOW_MOVED;
152
154 SDL_EVENT_WINDOW_RESIZED;
155
158 SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED;
159
162 SDL_EVENT_WINDOW_METAL_VIEW_RESIZED;
163
165 SDL_EVENT_WINDOW_MINIMIZED;
166
168 SDL_EVENT_WINDOW_MAXIMIZED;
169
171constexpr EventType EVENT_WINDOW_RESTORED = SDL_EVENT_WINDOW_RESTORED;
172
174 SDL_EVENT_WINDOW_MOUSE_ENTER;
175
177 SDL_EVENT_WINDOW_MOUSE_LEAVE;
178
180 SDL_EVENT_WINDOW_FOCUS_GAINED;
181
183 SDL_EVENT_WINDOW_FOCUS_LOST;
184
187 SDL_EVENT_WINDOW_CLOSE_REQUESTED;
188
190 SDL_EVENT_WINDOW_HIT_TEST;
192
195 SDL_EVENT_WINDOW_ICCPROF_CHANGED;
196
198 SDL_EVENT_WINDOW_DISPLAY_CHANGED;
199
201 SDL_EVENT_WINDOW_DISPLAY_SCALE_CHANGED;
203
205 SDL_EVENT_WINDOW_SAFE_AREA_CHANGED;
207
209 SDL_EVENT_WINDOW_OCCLUDED;
210
212 SDL_EVENT_WINDOW_ENTER_FULLSCREEN;
214
216 SDL_EVENT_WINDOW_LEAVE_FULLSCREEN;
217
225constexpr EventType EVENT_WINDOW_DESTROYED = SDL_EVENT_WINDOW_DESTROYED;
226
228 SDL_EVENT_WINDOW_HDR_STATE_CHANGED;
229
231 SDL_EVENT_WINDOW_FIRST;
232
233constexpr EventType EVENT_WINDOW_LAST = SDL_EVENT_WINDOW_LAST;
234
235constexpr EventType EVENT_KEY_DOWN = SDL_EVENT_KEY_DOWN;
236
237constexpr EventType EVENT_KEY_UP = SDL_EVENT_KEY_UP;
238
240 SDL_EVENT_TEXT_EDITING;
241
243 SDL_EVENT_TEXT_INPUT;
244
249constexpr EventType EVENT_KEYMAP_CHANGED = SDL_EVENT_KEYMAP_CHANGED;
250
252 SDL_EVENT_KEYBOARD_ADDED;
254
256 SDL_EVENT_KEYBOARD_REMOVED;
257
259 SDL_EVENT_TEXT_EDITING_CANDIDATES;
260
262 SDL_EVENT_MOUSE_MOTION;
263
265 SDL_EVENT_MOUSE_BUTTON_DOWN;
266
268 SDL_EVENT_MOUSE_BUTTON_UP;
269
271 SDL_EVENT_MOUSE_WHEEL;
272
274 SDL_EVENT_MOUSE_ADDED;
275
277 SDL_EVENT_MOUSE_REMOVED;
278
280 SDL_EVENT_JOYSTICK_AXIS_MOTION;
281
283 SDL_EVENT_JOYSTICK_BALL_MOTION;
284
286 SDL_EVENT_JOYSTICK_HAT_MOTION;
287
289 SDL_EVENT_JOYSTICK_BUTTON_DOWN;
290
292 SDL_EVENT_JOYSTICK_BUTTON_UP;
293
295 SDL_EVENT_JOYSTICK_ADDED;
297
299 SDL_EVENT_JOYSTICK_REMOVED;
300
302 SDL_EVENT_JOYSTICK_BATTERY_UPDATED;
303
305 SDL_EVENT_JOYSTICK_UPDATE_COMPLETE;
306
308 SDL_EVENT_GAMEPAD_AXIS_MOTION;
309
311 SDL_EVENT_GAMEPAD_BUTTON_DOWN;
312
314 SDL_EVENT_GAMEPAD_BUTTON_UP;
315
317 SDL_EVENT_GAMEPAD_ADDED;
318
320 SDL_EVENT_GAMEPAD_REMOVED;
321
323 SDL_EVENT_GAMEPAD_REMAPPED;
324
326 SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN;
327
329 SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION;
330
332 SDL_EVENT_GAMEPAD_TOUCHPAD_UP;
333
335 SDL_EVENT_GAMEPAD_SENSOR_UPDATE;
336
338 SDL_EVENT_GAMEPAD_UPDATE_COMPLETE;
339
341 SDL_EVENT_GAMEPAD_STEAM_HANDLE_UPDATED;
342
343constexpr EventType EVENT_FINGER_DOWN = SDL_EVENT_FINGER_DOWN;
344
345constexpr EventType EVENT_FINGER_UP = SDL_EVENT_FINGER_UP;
346
348 SDL_EVENT_FINGER_MOTION;
349
351 SDL_EVENT_FINGER_CANCELED;
352
354 SDL_EVENT_CLIPBOARD_UPDATE;
355
357 SDL_EVENT_DROP_FILE;
358
360 SDL_EVENT_DROP_TEXT;
361
363 SDL_EVENT_DROP_BEGIN;
364
366constexpr EventType EVENT_DROP_COMPLETE = SDL_EVENT_DROP_COMPLETE;
367
369 SDL_EVENT_DROP_POSITION;
370
372 SDL_EVENT_AUDIO_DEVICE_ADDED;
373
375 SDL_EVENT_AUDIO_DEVICE_REMOVED;
376
379 SDL_EVENT_AUDIO_DEVICE_FORMAT_CHANGED;
380
382 SDL_EVENT_SENSOR_UPDATE;
383
385 SDL_EVENT_PEN_PROXIMITY_IN;
386
388 SDL_EVENT_PEN_PROXIMITY_OUT;
390
392 SDL_EVENT_PEN_DOWN;
393
395constexpr EventType EVENT_PEN_UP = SDL_EVENT_PEN_UP;
396
398 SDL_EVENT_PEN_BUTTON_DOWN;
399
401 SDL_EVENT_PEN_BUTTON_UP;
402
404 SDL_EVENT_PEN_MOTION;
405
407 SDL_EVENT_PEN_AXIS;
408
410 SDL_EVENT_CAMERA_DEVICE_ADDED;
411
413 SDL_EVENT_CAMERA_DEVICE_REMOVED;
414
417 SDL_EVENT_CAMERA_DEVICE_APPROVED;
418
420constexpr EventType EVENT_CAMERA_DEVICE_DENIED = SDL_EVENT_CAMERA_DEVICE_DENIED;
421
423constexpr EventType EVENT_RENDER_TARGETS_RESET = SDL_EVENT_RENDER_TARGETS_RESET;
424
426constexpr EventType EVENT_RENDER_DEVICE_RESET = SDL_EVENT_RENDER_DEVICE_RESET;
427
429 SDL_EVENT_RENDER_DEVICE_LOST;
431
432constexpr EventType EVENT_PRIVATE0 = SDL_EVENT_PRIVATE0;
433
434constexpr EventType EVENT_PRIVATE1 = SDL_EVENT_PRIVATE1;
435
436constexpr EventType EVENT_PRIVATE2 = SDL_EVENT_PRIVATE2;
437
438constexpr EventType EVENT_PRIVATE3 = SDL_EVENT_PRIVATE3;
439
441 SDL_EVENT_POLL_SENTINEL;
442
447constexpr EventType EVENT_USER = SDL_EVENT_USER;
448
450constexpr EventType EVENT_LAST = SDL_EVENT_LAST;
451
453 SDL_EVENT_ENUM_PADDING;
454
456
462using CommonEvent = SDL_CommonEvent;
463
469using DisplayEvent = SDL_DisplayEvent;
470
476using WindowEvent = SDL_WindowEvent;
477
483using KeyboardDeviceEvent = SDL_KeyboardDeviceEvent;
484
499using KeyboardEvent = SDL_KeyboardEvent;
500
510using TextEditingEvent = SDL_TextEditingEvent;
511
517using TextEditingCandidatesEvent = SDL_TextEditingCandidatesEvent;
518
530using TextInputEvent = SDL_TextInputEvent;
531
537using MouseDeviceEvent = SDL_MouseDeviceEvent;
538
544using MouseMotionEvent = SDL_MouseMotionEvent;
545
551using MouseButtonEvent = SDL_MouseButtonEvent;
552
558using MouseWheelEvent = SDL_MouseWheelEvent;
559
565using JoyAxisEvent = SDL_JoyAxisEvent;
566
572using JoyBallEvent = SDL_JoyBallEvent;
573
579using JoyHatEvent = SDL_JoyHatEvent;
580
586using JoyButtonEvent = SDL_JoyButtonEvent;
587
598using JoyDeviceEvent = SDL_JoyDeviceEvent;
599
605using JoyBatteryEvent = SDL_JoyBatteryEvent;
606
612using GamepadAxisEvent = SDL_GamepadAxisEvent;
613
619using GamepadButtonEvent = SDL_GamepadButtonEvent;
620
635using GamepadDeviceEvent = SDL_GamepadDeviceEvent;
636
642using GamepadTouchpadEvent = SDL_GamepadTouchpadEvent;
643
649using GamepadSensorEvent = SDL_GamepadSensorEvent;
650
656using AudioDeviceEvent = SDL_AudioDeviceEvent;
657
663using CameraDeviceEvent = SDL_CameraDeviceEvent;
664
670using RenderEvent = SDL_RenderEvent;
671
691using TouchFingerEvent = SDL_TouchFingerEvent;
692
708using PenProximityEvent = SDL_PenProximityEvent;
709
721using PenMotionEvent = SDL_PenMotionEvent;
722
731using PenTouchEvent = SDL_PenTouchEvent;
732
741using PenButtonEvent = SDL_PenButtonEvent;
742
751using PenAxisEvent = SDL_PenAxisEvent;
752
759using DropEvent = SDL_DropEvent;
760
767using ClipboardEvent = SDL_ClipboardEvent;
768
774using SensorEvent = SDL_SensorEvent;
775
781using QuitEvent = SDL_QuitEvent;
782
794using UserEvent = SDL_UserEvent;
795
804using Event = SDL_Event;
805
826inline void PumpEvents() { SDL_PumpEvents(); }
827
839using EventAction = SDL_EventAction;
840
842 SDL_ADDEVENT;
843
845constexpr EventAction PEEKEVENT = SDL_PEEKEVENT;
846
848constexpr EventAction GETEVENT = SDL_GETEVENT;
849
851
896inline int PeepEvents(Event* events,
897 int numevents,
898 EventAction action,
899 Uint32 minType = EVENT_FIRST,
900 Uint32 maxType = EVENT_LAST)
901{
902 return SDL_PeepEvents(events, numevents, action, minType, maxType);
903}
904
921inline bool HasEvent(Uint32 type) { return SDL_HasEvent(type); }
922
941inline bool HasEvents(Uint32 minType = EVENT_FIRST, Uint32 maxType = EVENT_LAST)
942{
943 return SDL_HasEvents(minType, maxType);
944}
945
972inline void FlushEvent(Uint32 type) { SDL_FlushEvent(type); }
973
999inline void FlushEvents(Uint32 minType = EVENT_FIRST,
1000 Uint32 maxType = EVENT_LAST)
1001{
1002 SDL_FlushEvents(minType, maxType);
1003}
1004
1049inline bool PollEvent(Event* event) { return SDL_PollEvent(event); }
1050
1087inline std::optional<Event> PollEvent()
1088{
1089 if (Event event; PollEvent(&event)) return event;
1090 return std::nullopt;
1091}
1092
1114inline void WaitEvent(Event* event) { CheckError(SDL_WaitEvent(event)); }
1115
1136{
1137 Event event;
1138 WaitEvent(&event);
1139 return event;
1140}
1141
1170inline bool WaitEventTimeout(Event* event, Sint32 timeoutMS)
1171{
1172 return SDL_WaitEventTimeout(event, timeoutMS);
1173}
1174
1198inline std::optional<Event> WaitEventTimeout(Sint32 timeoutMS)
1199{
1200 if (Event event; WaitEventTimeout(&event, timeoutMS)) return event;
1201 return std::nullopt;
1202}
1203
1232inline bool WaitEventTimeout(Event* event,
1233 std::chrono::milliseconds timeoutDuration)
1234{
1235 return WaitEventTimeout(event, std::max(timeoutDuration.count(), 1l));
1236}
1237
1261inline std::optional<Event> WaitEventTimeout(
1262 std::chrono::milliseconds timeoutDuration)
1263{
1264 if (Event event; WaitEventTimeout(&event, timeoutDuration)) return event;
1265 return std::nullopt;
1266}
1267
1298inline void PushEvent(Event* event) { CheckError(SDL_PushEvent(event)); }
1299
1330inline void PushEvent(const Event& event)
1331{
1332 PushEvent(const_cast<Event*>(&event));
1333}
1334
1354using EventFilter = SDL_EventFilter;
1355
1377using EventFilterCB = std::function<bool(const Event&)>;
1378
1386{
1387 using CallbackHandle::CallbackHandle;
1388};
1389
1429inline void SetEventFilter(EventFilter filter, void* userdata)
1430{
1432 return SDL_SetEventFilter(filter, userdata);
1433}
1434
1476inline void SetEventFilter(EventFilterCB filter = {})
1477{
1478 using Wrapper = UniqueCallbackWrapper<EventFilterCB>;
1479 SDL_SetEventFilter(
1480 [](void* userdata, SDL_Event* event) {
1481 return Wrapper::Call(userdata, *event);
1482 },
1483 Wrapper::Wrap(std::move(filter)));
1484}
1485
1503inline void GetEventFilter(EventFilter* filter, void** userdata)
1504{
1505 CheckError(SDL_GetEventFilter(filter, userdata));
1506}
1507
1527{
1529
1530 EventFilter filter;
1531 void* userdata;
1532 GetEventFilter(&filter, &userdata);
1533 if (!userdata)
1534 return [filter](const Event& event) {
1535 return filter(nullptr, const_cast<Event*>(&event));
1536 };
1537 if (auto cb = Wrapper::at(userdata)) return cb;
1538 return [filter, userdata](const Event& event) {
1539 return filter(userdata, const_cast<Event*>(&event));
1540 };
1541}
1542
1544inline bool EventWatchAuxCallback(void* userdata, Event* event)
1545{
1546 auto& f = *static_cast<EventFilterCB*>(userdata);
1547 return f(*event);
1548}
1549
1579inline void AddEventWatch(EventFilter filter, void* userdata)
1580{
1581 CheckError(SDL_AddEventWatch(filter, userdata));
1582}
1583
1618{
1619 using Wrapper = CallbackWrapper<EventFilterCB>;
1620 auto cb = Wrapper::Wrap(std::move(filter));
1621 if (!SDL_AddEventWatch(&EventWatchAuxCallback, &cb)) {
1622 Wrapper::release(cb);
1623 throw Error{};
1624 }
1625 return EventWatchHandle{cb};
1626}
1627
1643inline void RemoveEventWatch(EventFilter filter, void* userdata)
1644{
1645 SDL_RemoveEventWatch(filter, userdata);
1646}
1647
1663{
1664 using Wrapper = CallbackWrapper<EventFilterCB>;
1665 Wrapper::release(handle);
1666}
1667
1686inline void FilterEvents(EventFilter filter, void* userdata)
1687{
1688 SDL_FilterEvents(filter, userdata);
1689}
1690
1711inline void FilterEvents(EventFilterCB filter)
1712{
1713 return FilterEvents(
1714 [](void* userdata, SDL_Event* event) {
1715 auto& f = *static_cast<EventFilterCB*>(userdata);
1716 return f(*event);
1717 },
1718 &filter);
1719}
1720
1733inline void SetEventEnabled(Uint32 type, bool enabled)
1734{
1735 SDL_SetEventEnabled(type, enabled);
1736}
1737
1750inline bool EventEnabled(Uint32 type) { return SDL_EventEnabled(type); }
1751
1766inline Uint32 RegisterEvents(int numevents)
1767{
1768 return SDL_RegisterEvents(numevents);
1769}
1770
1787{
1788 return {CheckError(SDL_GetWindowFromEvent(&event))};
1789}
1790
1792
1793} // namespace SDL
1794
1795#endif /* SDL3PP_EVENTS_H_ */
A typesafe handle for callback.
Definition: SDL3pp_callbackWrapper.h:21
An exception that returns GetError()
Definition: SDL3pp_error.h:165
constexpr void CheckError(bool result)
Check and throw if returned value from SDL is an error.
Definition: SDL3pp_error.h:198
void FlushEvent(Uint32 type)
Clear events of a specific type from the event queue.
Definition: SDL3pp_events.h:972
void RemoveEventWatch(EventFilter filter, void *userdata)
Remove an event watch callback added with AddEventWatch().
Definition: SDL3pp_events.h:1643
int PeepEvents(Event *events, int numevents, EventAction action, Uint32 minType=EVENT_FIRST, Uint32 maxType=EVENT_LAST)
Check the event queue for messages and optionally return them.
Definition: SDL3pp_events.h:896
SDL_PenProximityEvent PenProximityEvent
Pressure-sensitive pen proximity event structure (event.pmotion.
Definition: SDL3pp_events.h:708
SDL_GamepadButtonEvent GamepadButtonEvent
Gamepad button event structure (event.gbutton.
Definition: SDL3pp_events.h:619
SDL_WindowEvent WindowEvent
Window state change event data (event.window.
Definition: SDL3pp_events.h:476
bool HasEvents(Uint32 minType=EVENT_FIRST, Uint32 maxType=EVENT_LAST)
Check for the existence of certain event types in the event queue.
Definition: SDL3pp_events.h:941
SDL_RenderEvent RenderEvent
Renderer event structure (event.render.
Definition: SDL3pp_events.h:670
SDL_JoyAxisEvent JoyAxisEvent
Joystick axis motion event structure (event.jaxis.
Definition: SDL3pp_events.h:565
SDL_CameraDeviceEvent CameraDeviceEvent
Camera device event structure (event.cdevice.
Definition: SDL3pp_events.h:663
SDL_GamepadAxisEvent GamepadAxisEvent
Gamepad axis motion event structure (event.gaxis.
Definition: SDL3pp_events.h:612
SDL_EventFilter EventFilter
A function pointer used for callbacks that watch the event queue.
Definition: SDL3pp_events.h:1354
SDL_GamepadDeviceEvent GamepadDeviceEvent
Gamepad device event structure (event.gdevice.
Definition: SDL3pp_events.h:635
SDL_ClipboardEvent ClipboardEvent
An event triggered when the clipboard contents have changed (event.clipboard.
Definition: SDL3pp_events.h:767
SDL_GamepadSensorEvent GamepadSensorEvent
Gamepad sensor event structure (event.gsensor.
Definition: SDL3pp_events.h:649
SDL_MouseDeviceEvent MouseDeviceEvent
Mouse device event structure (event.mdevice.
Definition: SDL3pp_events.h:537
SDL_TouchFingerEvent TouchFingerEvent
Touch finger event structure (event.tfinger.
Definition: SDL3pp_events.h:691
SDL_SensorEvent SensorEvent
Sensor event structure (event.sensor.
Definition: SDL3pp_events.h:774
SDL_GamepadTouchpadEvent GamepadTouchpadEvent
Gamepad touchpad event structure (event.gtouchpad.
Definition: SDL3pp_events.h:642
void FlushEvents(Uint32 minType=EVENT_FIRST, Uint32 maxType=EVENT_LAST)
Clear events of a range of types from the event queue.
Definition: SDL3pp_events.h:999
Uint32 RegisterEvents(int numevents)
Allocate a set of user-defined events, and return the beginning event number for that set of events.
Definition: SDL3pp_events.h:1766
SDL_PenTouchEvent PenTouchEvent
Pressure-sensitive pen touched event structure (event.ptouch.
Definition: SDL3pp_events.h:731
SDL_KeyboardDeviceEvent KeyboardDeviceEvent
Keyboard device event structure (event.kdevice.
Definition: SDL3pp_events.h:483
SDL_AudioDeviceEvent AudioDeviceEvent
Audio device event structure (event.adevice.
Definition: SDL3pp_events.h:656
SDL_DropEvent DropEvent
An event used to drop text or request a file open by the system (event.drop.
Definition: SDL3pp_events.h:759
SDL_MouseButtonEvent MouseButtonEvent
Mouse button event structure (event.button.
Definition: SDL3pp_events.h:551
constexpr EventAction GETEVENT
Retrieve/remove events from the front of the queue.
Definition: SDL3pp_events.h:848
SDL_JoyBatteryEvent JoyBatteryEvent
Joystick battery level change event structure (event.jbattery.
Definition: SDL3pp_events.h:605
SDL_EventAction EventAction
The type of action to request from PeepEvents().
Definition: SDL3pp_events.h:839
SDL_DisplayEvent DisplayEvent
Display state change event data (event.display.
Definition: SDL3pp_events.h:469
bool WaitEventTimeout(Event *event, Sint32 timeoutMS)
Wait until the specified timeout (in milliseconds) for the next available event.
Definition: SDL3pp_events.h:1170
void SetEventEnabled(Uint32 type, bool enabled)
Set the state of processing events by type.
Definition: SDL3pp_events.h:1733
SDL_Event Event
The structure for all events in SDL.
Definition: SDL3pp_events.h:804
SDL_TextEditingEvent TextEditingEvent
Keyboard text editing event structure (event.edit.
Definition: SDL3pp_events.h:510
SDL_UserEvent UserEvent
A user-defined event type (event.user.
Definition: SDL3pp_events.h:794
std::optional< Event > PollEvent()
Poll for currently pending events.
Definition: SDL3pp_events.h:1087
Event WaitEvent()
Wait indefinitely for the next available event.
Definition: SDL3pp_events.h:1135
SDL_TextEditingCandidatesEvent TextEditingCandidatesEvent
Keyboard IME candidates event structure (event.edit_candidates.
Definition: SDL3pp_events.h:517
WindowRef GetWindowFromEvent(const Event &event)
Get window associated with an event.
Definition: SDL3pp_events.h:1786
void PushEvent(Event *event)
Add an event to the event queue.
Definition: SDL3pp_events.h:1298
void SetEventFilter(EventFilter filter, void *userdata)
Set up a filter to process all events before they are added to the internal event queue.
Definition: SDL3pp_events.h:1429
SDL_PenAxisEvent PenAxisEvent
Pressure-sensitive pen pressure / angle event structure (event.paxis.
Definition: SDL3pp_events.h:751
SDL_KeyboardEvent KeyboardEvent
Keyboard button event structure (event.key.
Definition: SDL3pp_events.h:499
constexpr EventAction ADDEVENT
Add events to the back of the queue.
Definition: SDL3pp_events.h:841
bool HasEvent(Uint32 type)
Check for the existence of a certain event type in the event queue.
Definition: SDL3pp_events.h:921
SDL_MouseMotionEvent MouseMotionEvent
Mouse motion event structure (event.motion.
Definition: SDL3pp_events.h:544
SDL_JoyHatEvent JoyHatEvent
Joystick hat position change event structure (event.jhat.
Definition: SDL3pp_events.h:579
void AddEventWatch(EventFilter filter, void *userdata)
Add a callback to be triggered when an event is added to the event queue.
Definition: SDL3pp_events.h:1579
void FilterEvents(EventFilter filter, void *userdata)
Run a specific filter function on the current event queue, removing any events for which the filter r...
Definition: SDL3pp_events.h:1686
SDL_MouseWheelEvent MouseWheelEvent
Mouse wheel event structure (event.wheel.
Definition: SDL3pp_events.h:558
SDL_CommonEvent CommonEvent
Fields shared by every event.
Definition: SDL3pp_events.h:462
SDL_JoyButtonEvent JoyButtonEvent
Joystick button event structure (event.jbutton.
Definition: SDL3pp_events.h:586
SDL_PenButtonEvent PenButtonEvent
Pressure-sensitive pen button event structure (event.pbutton.
Definition: SDL3pp_events.h:741
SDL_TextInputEvent TextInputEvent
Keyboard text input event structure (event.text.
Definition: SDL3pp_events.h:530
constexpr EventAction PEEKEVENT
Check but don't remove events from the queue front.
Definition: SDL3pp_events.h:845
SDL_QuitEvent QuitEvent
The "quit requested" event.
Definition: SDL3pp_events.h:781
bool EventEnabled(Uint32 type)
Query the state of processing events by type.
Definition: SDL3pp_events.h:1750
SDL_JoyDeviceEvent JoyDeviceEvent
Joystick device event structure (event.jdevice.
Definition: SDL3pp_events.h:598
SDL_JoyBallEvent JoyBallEvent
Joystick trackball motion event structure (event.jball.
Definition: SDL3pp_events.h:572
void PumpEvents()
Pump the event loop, gathering events from the input devices.
Definition: SDL3pp_events.h:826
SDL_PenMotionEvent PenMotionEvent
Pressure-sensitive pen motion event structure (event.pmotion.
Definition: SDL3pp_events.h:721
EventFilterCB GetEventFilter()
Query the current event filter.
Definition: SDL3pp_events.h:1526
std::function< bool(const Event &)> EventFilterCB
A std::function used for callbacks that watch the event queue.
Definition: SDL3pp_events.h:1377
Sint32 Sint32
A signed 32-bit integer type.
Definition: SDL3pp_stdinc.h:311
Uint32 Uint32
An unsigned 32-bit integer type.
Definition: SDL3pp_stdinc.h:328
constexpr EventType EVENT_PEN_UP
Pressure-sensitive pen stopped touching drawing surface.
Definition: SDL3pp_events.h:395
constexpr EventType EVENT_WINDOW_SAFE_AREA_CHANGED
The window safe area has been changed.
Definition: SDL3pp_events.h:204
constexpr EventType EVENT_DROP_FILE
The system requests a file open.
Definition: SDL3pp_events.h:356
constexpr EventType EVENT_PEN_MOTION
Pressure-sensitive pen is moving on the tablet.
Definition: SDL3pp_events.h:403
constexpr EventType EVENT_DISPLAY_ORIENTATION
Display orientation has changed to data1.
Definition: SDL3pp_events.h:110
constexpr EventType EVENT_JOYSTICK_BUTTON_UP
Joystick button released.
Definition: SDL3pp_events.h:291
constexpr EventType EVENT_KEYBOARD_REMOVED
A keyboard has been removed.
Definition: SDL3pp_events.h:255
constexpr EventType EVENT_DISPLAY_ADDED
Display has been added to the system.
Definition: SDL3pp_events.h:113
constexpr EventType EVENT_AUDIO_DEVICE_ADDED
A new audio device is available.
Definition: SDL3pp_events.h:371
constexpr EventType EVENT_WINDOW_MOUSE_ENTER
Window has gained mouse focus.
Definition: SDL3pp_events.h:173
constexpr EventType EVENT_GAMEPAD_REMAPPED
The gamepad mapping was updated.
Definition: SDL3pp_events.h:322
constexpr EventType EVENT_PRIVATE0
PRIVATE0.
Definition: SDL3pp_events.h:432
constexpr EventType EVENT_RENDER_DEVICE_LOST
The device has been lost and can't be recovered.
Definition: SDL3pp_events.h:428
constexpr EventType EVENT_WINDOW_OCCLUDED
The window has been occluded.
Definition: SDL3pp_events.h:208
constexpr EventType EVENT_WINDOW_MOVED
Window has been moved to data1, data2.
Definition: SDL3pp_events.h:150
constexpr EventType EVENT_JOYSTICK_HAT_MOTION
Joystick hat position change.
Definition: SDL3pp_events.h:285
constexpr EventType EVENT_WINDOW_LEAVE_FULLSCREEN
The window has left fullscreen mode.
Definition: SDL3pp_events.h:215
constexpr EventType EVENT_PRIVATE2
PRIVATE2.
Definition: SDL3pp_events.h:436
constexpr EventType EVENT_DROP_BEGIN
A new set of drops is beginning (NULL filename)
Definition: SDL3pp_events.h:362
constexpr EventType EVENT_CAMERA_DEVICE_APPROVED
A camera device has been approved for use by the user.
Definition: SDL3pp_events.h:416
constexpr EventType EVENT_WILL_ENTER_BACKGROUND
The application is about to enter the background.
Definition: SDL3pp_events.h:79
constexpr EventType EVENT_WINDOW_EXPOSED
Window has been exposed and should be redrawn, and can be redrawn directly from event watchers for th...
Definition: SDL3pp_events.h:148
constexpr EventType EVENT_WINDOW_ICCPROF_CHANGED
The ICC profile of the window's display has changed.
Definition: SDL3pp_events.h:194
constexpr EventType EVENT_GAMEPAD_REMOVED
A gamepad has been removed.
Definition: SDL3pp_events.h:319
constexpr EventType EVENT_DISPLAY_CURRENT_MODE_CHANGED
Display has changed current mode.
Definition: SDL3pp_events.h:125
constexpr EventType EVENT_DID_ENTER_FOREGROUND
The application is now interactive.
Definition: SDL3pp_events.h:102
constexpr EventType EVENT_MOUSE_BUTTON_UP
Mouse button released.
Definition: SDL3pp_events.h:267
constexpr EventType EVENT_KEYBOARD_ADDED
A new keyboard has been inserted into the system.
Definition: SDL3pp_events.h:251
constexpr EventType EVENT_AUDIO_DEVICE_REMOVED
An audio device has been removed.
Definition: SDL3pp_events.h:374
constexpr EventType EVENT_DISPLAY_CONTENT_SCALE_CHANGED
Display has changed content scale.
Definition: SDL3pp_events.h:128
constexpr EventType EVENT_WINDOW_RESTORED
Window has been restored to normal size and position.
Definition: SDL3pp_events.h:171
constexpr EventType EVENT_WINDOW_HIT_TEST
Window had a hit test that wasn't HITTEST_NORMAL.
Definition: SDL3pp_events.h:189
constexpr EventType EVENT_JOYSTICK_BUTTON_DOWN
Joystick button pressed.
Definition: SDL3pp_events.h:288
constexpr EventType EVENT_DISPLAY_MOVED
Display has changed position.
Definition: SDL3pp_events.h:119
constexpr EventType EVENT_PEN_BUTTON_UP
Pressure-sensitive pen button released.
Definition: SDL3pp_events.h:400
constexpr EventType EVENT_KEY_UP
Key released.
Definition: SDL3pp_events.h:237
constexpr EventType EVENT_MOUSE_ADDED
A new mouse has been inserted into the system.
Definition: SDL3pp_events.h:273
constexpr EventType EVENT_POLL_SENTINEL
Signals the end of an event poll cycle.
Definition: SDL3pp_events.h:440
constexpr EventType EVENT_MOUSE_REMOVED
A mouse has been removed.
Definition: SDL3pp_events.h:276
constexpr EventType EVENT_DROP_POSITION
Position while moving over the window.
Definition: SDL3pp_events.h:368
constexpr EventType EVENT_JOYSTICK_BATTERY_UPDATED
Joystick battery level change.
Definition: SDL3pp_events.h:301
constexpr EventType EVENT_TEXT_INPUT
Keyboard text input.
Definition: SDL3pp_events.h:242
constexpr EventType EVENT_DISPLAY_LAST
DISPLAY_LAST.
Definition: SDL3pp_events.h:135
constexpr EventType EVENT_WINDOW_RESIZED
Window has been resized to data1xdata2.
Definition: SDL3pp_events.h:153
constexpr EventType EVENT_PEN_PROXIMITY_OUT
Pressure-sensitive pen has become unavailable.
Definition: SDL3pp_events.h:387
constexpr EventType EVENT_WINDOW_PIXEL_SIZE_CHANGED
The pixel size of the window has changed to data1xdata2.
Definition: SDL3pp_events.h:157
constexpr EventType EVENT_JOYSTICK_BALL_MOTION
Joystick trackball motion.
Definition: SDL3pp_events.h:282
constexpr EventType EVENT_GAMEPAD_BUTTON_DOWN
Gamepad button pressed.
Definition: SDL3pp_events.h:310
constexpr EventType EVENT_CAMERA_DEVICE_REMOVED
A camera device has been removed.
Definition: SDL3pp_events.h:412
constexpr EventType EVENT_DISPLAY_FIRST
DISPLAY_FIRST.
Definition: SDL3pp_events.h:132
constexpr EventType EVENT_WINDOW_FIRST
WINDOW_FIRST.
Definition: SDL3pp_events.h:230
constexpr EventType EVENT_RENDER_DEVICE_RESET
The device has been reset and all textures need to be recreated.
Definition: SDL3pp_events.h:426
constexpr EventType EVENT_PEN_DOWN
Pressure-sensitive pen touched drawing surface.
Definition: SDL3pp_events.h:391
constexpr EventType EVENT_TEXT_EDITING
Keyboard text editing (composition)
Definition: SDL3pp_events.h:239
constexpr EventType EVENT_WINDOW_CLOSE_REQUESTED
The window manager requests that the window be closed.
Definition: SDL3pp_events.h:186
constexpr EventType EVENT_GAMEPAD_TOUCHPAD_UP
Gamepad touchpad finger was lifted.
Definition: SDL3pp_events.h:331
constexpr EventType EVENT_DID_ENTER_BACKGROUND
The application did enter the background and may not get CPU for some time.
Definition: SDL3pp_events.h:87
constexpr EventType EVENT_DROP_TEXT
text/plain drag-and-drop event
Definition: SDL3pp_events.h:359
constexpr EventType EVENT_WINDOW_HDR_STATE_CHANGED
Window HDR properties have changed.
Definition: SDL3pp_events.h:227
constexpr EventType EVENT_PEN_PROXIMITY_IN
Pressure-sensitive pen has become available.
Definition: SDL3pp_events.h:384
constexpr EventType EVENT_WILL_ENTER_FOREGROUND
The application is about to enter the foreground.
Definition: SDL3pp_events.h:94
constexpr EventType EVENT_SENSOR_UPDATE
A sensor was updated.
Definition: SDL3pp_events.h:381
constexpr EventType EVENT_KEY_DOWN
Key pressed.
Definition: SDL3pp_events.h:235
constexpr EventType EVENT_TEXT_EDITING_CANDIDATES
Keyboard text editing candidates.
Definition: SDL3pp_events.h:258
constexpr EventType EVENT_GAMEPAD_TOUCHPAD_DOWN
Gamepad touchpad was touched.
Definition: SDL3pp_events.h:325
constexpr EventType EVENT_WINDOW_MINIMIZED
Window has been minimized.
Definition: SDL3pp_events.h:164
SDL_EventType EventType
The types of events that can be delivered.
Definition: SDL3pp_events.h:54
constexpr EventType EVENT_PRIVATE1
PRIVATE1.
Definition: SDL3pp_events.h:434
constexpr EventType EVENT_LAST
This last event is only for bounding internal arrays.
Definition: SDL3pp_events.h:450
constexpr EventType EVENT_FINGER_MOTION
FINGER_MOTION.
Definition: SDL3pp_events.h:347
constexpr EventType EVENT_JOYSTICK_UPDATE_COMPLETE
Joystick update is complete.
Definition: SDL3pp_events.h:304
constexpr EventType EVENT_FINGER_CANCELED
FINGER_CANCELED.
Definition: SDL3pp_events.h:350
constexpr EventType EVENT_LOW_MEMORY
The application is low on memory, free memory if possible.
Definition: SDL3pp_events.h:72
constexpr EventType EVENT_DISPLAY_REMOVED
Display has been removed from the system.
Definition: SDL3pp_events.h:116
constexpr EventType EVENT_GAMEPAD_TOUCHPAD_MOTION
Gamepad touchpad finger was moved.
Definition: SDL3pp_events.h:328
constexpr EventType EVENT_FINGER_UP
FINGER_UP.
Definition: SDL3pp_events.h:345
constexpr EventType EVENT_JOYSTICK_AXIS_MOTION
Joystick axis motion.
Definition: SDL3pp_events.h:279
constexpr EventType EVENT_WINDOW_DISPLAY_SCALE_CHANGED
Window display scale has been changed.
Definition: SDL3pp_events.h:200
constexpr EventType EVENT_FINGER_DOWN
FINGER_DOWN.
Definition: SDL3pp_events.h:343
constexpr EventType EVENT_DISPLAY_DESKTOP_MODE_CHANGED
Display has changed desktop mode.
Definition: SDL3pp_events.h:122
constexpr EventType EVENT_WINDOW_DESTROYED
The window with the associated ID is being or has been destroyed.
Definition: SDL3pp_events.h:225
constexpr EventType EVENT_PRIVATE3
PRIVATE3.
Definition: SDL3pp_events.h:438
constexpr EventType EVENT_GAMEPAD_BUTTON_UP
Gamepad button released.
Definition: SDL3pp_events.h:313
constexpr EventType EVENT_CAMERA_DEVICE_DENIED
A camera device has been denied for use by the user.
Definition: SDL3pp_events.h:420
constexpr EventType EVENT_GAMEPAD_STEAM_HANDLE_UPDATED
Gamepad Steam handle has changed.
Definition: SDL3pp_events.h:340
constexpr EventType EVENT_USER
Events EVENT_USER through EVENT_LAST are for your use, and should be allocated with RegisterEvents()
Definition: SDL3pp_events.h:447
constexpr EventType EVENT_KEYMAP_CHANGED
Keymap changed due to a system event such as an input language or keyboard layout change.
Definition: SDL3pp_events.h:249
constexpr EventType EVENT_MOUSE_BUTTON_DOWN
Mouse button pressed.
Definition: SDL3pp_events.h:264
constexpr EventType EVENT_LOCALE_CHANGED
The user's locale preferences have changed.
Definition: SDL3pp_events.h:104
constexpr EventType EVENT_PEN_AXIS
Pressure-sensitive pen angle/pressure/etc changed.
Definition: SDL3pp_events.h:406
constexpr EventType EVENT_WINDOW_MOUSE_LEAVE
Window has lost mouse focus.
Definition: SDL3pp_events.h:176
constexpr EventType EVENT_FIRST
Unused (do not remove)
Definition: SDL3pp_events.h:56
constexpr EventType EVENT_JOYSTICK_REMOVED
An opened joystick has been removed.
Definition: SDL3pp_events.h:298
constexpr EventType EVENT_GAMEPAD_UPDATE_COMPLETE
Gamepad update is complete.
Definition: SDL3pp_events.h:337
constexpr EventType EVENT_CLIPBOARD_UPDATE
The clipboard or primary selection changed.
Definition: SDL3pp_events.h:353
constexpr EventType EVENT_AUDIO_DEVICE_FORMAT_CHANGED
An audio device's format has been changed by the system.
Definition: SDL3pp_events.h:378
constexpr EventType EVENT_MOUSE_WHEEL
Mouse wheel motion.
Definition: SDL3pp_events.h:270
constexpr EventType EVENT_SYSTEM_THEME_CHANGED
The system theme changed.
Definition: SDL3pp_events.h:107
constexpr EventType EVENT_JOYSTICK_ADDED
A new joystick has been inserted into the system.
Definition: SDL3pp_events.h:294
constexpr EventType EVENT_TERMINATING
The application is being terminated by the OS.
Definition: SDL3pp_events.h:65
constexpr EventType EVENT_ENUM_PADDING
ENUM_PADDING.
Definition: SDL3pp_events.h:452
constexpr EventType EVENT_GAMEPAD_SENSOR_UPDATE
Gamepad sensor was updated.
Definition: SDL3pp_events.h:334
constexpr EventType EVENT_WINDOW_SHOWN
Window has been shown.
Definition: SDL3pp_events.h:138
constexpr EventType EVENT_WINDOW_MAXIMIZED
Window has been maximized.
Definition: SDL3pp_events.h:167
constexpr EventType EVENT_GAMEPAD_ADDED
A new gamepad has been inserted into the system.
Definition: SDL3pp_events.h:316
constexpr EventType EVENT_WINDOW_FOCUS_LOST
Window has lost keyboard focus.
Definition: SDL3pp_events.h:182
constexpr EventType EVENT_MOUSE_MOTION
Mouse moved.
Definition: SDL3pp_events.h:261
constexpr EventType EVENT_PEN_BUTTON_DOWN
Pressure-sensitive pen button pressed.
Definition: SDL3pp_events.h:397
constexpr EventType EVENT_WINDOW_METAL_VIEW_RESIZED
The pixel size of a Metal view associated with the window has changed.
Definition: SDL3pp_events.h:161
constexpr EventType EVENT_GAMEPAD_AXIS_MOTION
Gamepad axis motion.
Definition: SDL3pp_events.h:307
constexpr EventType EVENT_RENDER_TARGETS_RESET
The render targets have been reset and their contents need to be updated.
Definition: SDL3pp_events.h:423
constexpr EventType EVENT_WINDOW_FOCUS_GAINED
Window has gained keyboard focus.
Definition: SDL3pp_events.h:179
constexpr EventType EVENT_WINDOW_ENTER_FULLSCREEN
The window has entered fullscreen mode.
Definition: SDL3pp_events.h:211
constexpr EventType EVENT_QUIT
User-requested quit.
Definition: SDL3pp_events.h:58
constexpr EventType EVENT_WINDOW_DISPLAY_CHANGED
Window has been moved to display data1.
Definition: SDL3pp_events.h:197
constexpr EventType EVENT_WINDOW_HIDDEN
Window has been hidden.
Definition: SDL3pp_events.h:141
constexpr EventType EVENT_CAMERA_DEVICE_ADDED
A new camera device is available.
Definition: SDL3pp_events.h:409
constexpr EventType EVENT_WINDOW_LAST
WINDOW_LAST.
Definition: SDL3pp_events.h:233
constexpr EventType EVENT_DROP_COMPLETE
Current set of drops is now complete (NULL filename)
Definition: SDL3pp_events.h:366
Main include header for the SDL3pp library.
Definition: SDL3pp_callbackWrapper.h:66
Handle returned by AddEventWatch(EventFilterCB)
Definition: SDL3pp_events.h:1386
Stored Wrapper unique by type result callbacks.
Definition: SDL3pp_callbackWrapper.h:242
Semi-safe reference for Window.
Definition: SDL3pp_video.h:2967