Current status of SDL.
This commit is contained in:
+131
-333
@@ -3,7 +3,7 @@
|
||||
/// For complete documentation, see src/event.cpp
|
||||
#include <SDL3/SDL_events.h>
|
||||
#include <SDL3/SDL_init.h>
|
||||
#include <hdk/grid/AbstractEventDispatch.hpp>
|
||||
#include <hdk/grid/EPS.hpp>
|
||||
#include <hdk/sdl/video/Window.hpp>
|
||||
#include <cstdio>
|
||||
#include <map>
|
||||
@@ -69,11 +69,11 @@ namespace hdk::sdl::evt {
|
||||
: value_dispatch_map(dispatch_map) { }
|
||||
// The extractor function is a pure virtual function that child classes must implement to extract the value from
|
||||
// the event
|
||||
virtual ValueType extractor(SDL_Event* event) = 0;
|
||||
virtual ValueType extractor(SDL_Event* event) const = 0;
|
||||
// The Trigger function overrides the base Event Trigger function to extract the value from the event and dispatch
|
||||
// to the appropriate callback based on that value, as well as triggering any callbacks in the base Event dispatch
|
||||
// list.
|
||||
virtual void Trigger(SDL_Event* event) override {
|
||||
virtual void Trigger(SDL_Event* event) const override {
|
||||
if (!event)
|
||||
return;
|
||||
ValueType value = this->extractor(event);
|
||||
@@ -94,83 +94,67 @@ namespace hdk::sdl::evt {
|
||||
public:
|
||||
EventTypeRouter(value_dispatch_map_t dispatch_map)
|
||||
: EventValueRouter(std::move(dispatch_map)) { }
|
||||
virtual SDL_EventType extractor(SDL_Event* event) override { return (SDL_EventType)event->type; }
|
||||
virtual SDL_EventType extractor(SDL_Event* event) const override { return (SDL_EventType)event->type; }
|
||||
};
|
||||
|
||||
class DisplayEvents : public EventTypeRouter {
|
||||
public:
|
||||
EventConduit Orientation, Added, Removed, Moved, DesktopModeChanged, CurrentModeChanged, ContentScaleChanged;
|
||||
// clang-format off
|
||||
DisplayEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_DISPLAY_ORIENTATION, &Orientation },
|
||||
{ SDL_EVENT_DISPLAY_ADDED, &Added },
|
||||
{ SDL_EVENT_DISPLAY_REMOVED, &Removed },
|
||||
{ SDL_EVENT_DISPLAY_MOVED, &Moved },
|
||||
{ SDL_EVENT_DISPLAY_DESKTOP_MODE_CHANGED, &DesktopModeChanged },
|
||||
{ SDL_EVENT_DISPLAY_CURRENT_MODE_CHANGED, &CurrentModeChanged },
|
||||
{ SDL_EVENT_DISPLAY_CONTENT_SCALE_CHANGED, &ContentScaleChanged }
|
||||
}) { }
|
||||
// clang-format on
|
||||
: EventTypeRouter({ { SDL_EVENT_DISPLAY_ORIENTATION, &Orientation }, { SDL_EVENT_DISPLAY_ADDED, &Added },
|
||||
{ SDL_EVENT_DISPLAY_REMOVED, &Removed }, { SDL_EVENT_DISPLAY_MOVED, &Moved },
|
||||
{ SDL_EVENT_DISPLAY_DESKTOP_MODE_CHANGED, &DesktopModeChanged },
|
||||
{ SDL_EVENT_DISPLAY_CURRENT_MODE_CHANGED, &CurrentModeChanged },
|
||||
{ SDL_EVENT_DISPLAY_CONTENT_SCALE_CHANGED, &ContentScaleChanged } }) { }
|
||||
};
|
||||
|
||||
class KeyEvents : public EventTypeRouter {
|
||||
public:
|
||||
EventConduit Down, Up;
|
||||
// clang-format off
|
||||
KeyEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_KEY_DOWN, &Down },
|
||||
{ SDL_EVENT_KEY_UP, &Up }
|
||||
}) { };
|
||||
// clang-format on
|
||||
: EventTypeRouter({ { SDL_EVENT_KEY_DOWN, &Down }, { SDL_EVENT_KEY_UP, &Up } }) { };
|
||||
};
|
||||
|
||||
class KeysEvents : public EventValueRouter<SDL_Keycode, KeyEvents> {
|
||||
public:
|
||||
KeysEvents()
|
||||
: EventValueRouter({}) { }
|
||||
virtual SDL_Keycode extractor(SDL_Event* event) override { return event->key.key; }
|
||||
virtual SDL_Keycode extractor(SDL_Event* event) const override { return event->key.key; }
|
||||
};
|
||||
|
||||
class JoystickAxisEvents : public EventValueRouter<Uint8> {
|
||||
public:
|
||||
JoystickAxisEvents()
|
||||
: EventValueRouter({}) { }
|
||||
virtual Uint8 extractor(SDL_Event* event) override { return event->jaxis.axis; }
|
||||
virtual Uint8 extractor(SDL_Event* event) const override { return event->jaxis.axis; }
|
||||
};
|
||||
|
||||
class JoystickBallEvents : public EventValueRouter<Uint8> {
|
||||
public:
|
||||
JoystickBallEvents()
|
||||
: EventValueRouter({}) { }
|
||||
virtual Uint8 extractor(SDL_Event* event) override { return event->jball.ball; }
|
||||
virtual Uint8 extractor(SDL_Event* event) const override { return event->jball.ball; }
|
||||
};
|
||||
|
||||
class JoystickHatEvents : public EventValueRouter<Uint8> {
|
||||
public:
|
||||
JoystickHatEvents()
|
||||
: EventValueRouter({}) { }
|
||||
virtual Uint8 extractor(SDL_Event* event) override { return event->jhat.hat; }
|
||||
virtual Uint8 extractor(SDL_Event* event) const override { return event->jhat.hat; }
|
||||
};
|
||||
|
||||
class JoystickButtonEvents : public EventTypeRouter {
|
||||
public:
|
||||
EventConduit Down, Up;
|
||||
// clang-format off
|
||||
JoystickButtonEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_JOYSTICK_BUTTON_DOWN, &Down },
|
||||
{ SDL_EVENT_JOYSTICK_BUTTON_UP, &Up }
|
||||
}) { }
|
||||
// clang-format on
|
||||
: EventTypeRouter({ { SDL_EVENT_JOYSTICK_BUTTON_DOWN, &Down }, { SDL_EVENT_JOYSTICK_BUTTON_UP, &Up } }) { }
|
||||
};
|
||||
|
||||
class JoystickButtonsEvents : public EventValueRouter<Uint8, JoystickButtonEvents> {
|
||||
public:
|
||||
JoystickButtonsEvents()
|
||||
: EventValueRouter({}) { }
|
||||
virtual Uint8 extractor(SDL_Event* event) override { return event->jbutton.button; }
|
||||
virtual Uint8 extractor(SDL_Event* event) const override { return event->jbutton.button; }
|
||||
};
|
||||
|
||||
class JoystickEvents : public EventTypeRouter {
|
||||
@@ -180,27 +164,20 @@ namespace hdk::sdl::evt {
|
||||
JoystickHatEvents HatMotion;
|
||||
JoystickButtonsEvents Button;
|
||||
EventConduit Added, Removed, BatteryUpdated, UpdateComplete;
|
||||
// clang-format off
|
||||
JoystickEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_JOYSTICK_AXIS_MOTION, &AxisMotion },
|
||||
{ SDL_EVENT_JOYSTICK_BALL_MOTION, &BallMotion },
|
||||
{ SDL_EVENT_JOYSTICK_HAT_MOTION, &HatMotion },
|
||||
{ SDL_EVENT_JOYSTICK_BUTTON_DOWN, &Button },
|
||||
{ SDL_EVENT_JOYSTICK_BUTTON_UP, &Button },
|
||||
{ SDL_EVENT_JOYSTICK_ADDED, &Added },
|
||||
{ SDL_EVENT_JOYSTICK_REMOVED, &Removed },
|
||||
{ SDL_EVENT_JOYSTICK_BATTERY_UPDATED, &BatteryUpdated },
|
||||
{ SDL_EVENT_JOYSTICK_UPDATE_COMPLETE, &UpdateComplete }
|
||||
}) { }
|
||||
// clang-format on
|
||||
: EventTypeRouter({ { SDL_EVENT_JOYSTICK_AXIS_MOTION, &AxisMotion },
|
||||
{ SDL_EVENT_JOYSTICK_BALL_MOTION, &BallMotion }, { SDL_EVENT_JOYSTICK_HAT_MOTION, &HatMotion },
|
||||
{ SDL_EVENT_JOYSTICK_BUTTON_DOWN, &Button }, { SDL_EVENT_JOYSTICK_BUTTON_UP, &Button },
|
||||
{ SDL_EVENT_JOYSTICK_ADDED, &Added }, { SDL_EVENT_JOYSTICK_REMOVED, &Removed },
|
||||
{ SDL_EVENT_JOYSTICK_BATTERY_UPDATED, &BatteryUpdated },
|
||||
{ SDL_EVENT_JOYSTICK_UPDATE_COMPLETE, &UpdateComplete } }) { }
|
||||
};
|
||||
|
||||
class JoysticksEvents : public EventValueRouter<SDL_JoystickID, JoystickEvents> {
|
||||
public:
|
||||
JoysticksEvents()
|
||||
: EventValueRouter({}) { }
|
||||
virtual SDL_JoystickID extractor(SDL_Event* event) override {
|
||||
virtual SDL_JoystickID extractor(SDL_Event* event) const override {
|
||||
switch (event->type) {
|
||||
case SDL_EVENT_JOYSTICK_AXIS_MOTION:
|
||||
return event->jaxis.which;
|
||||
@@ -226,26 +203,21 @@ namespace hdk::sdl::evt {
|
||||
public:
|
||||
GamepadAxisEvents()
|
||||
: EventValueRouter({}) { }
|
||||
virtual SDL_GamepadAxis extractor(SDL_Event* event) override { return (SDL_GamepadAxis)event->gaxis.axis; }
|
||||
virtual SDL_GamepadAxis extractor(SDL_Event* event) const override { return (SDL_GamepadAxis)event->gaxis.axis; }
|
||||
};
|
||||
|
||||
class GamepadButtonEvents : public EventTypeRouter {
|
||||
public:
|
||||
EventConduit Down, Up;
|
||||
// clang-format off
|
||||
GamepadButtonEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_GAMEPAD_BUTTON_DOWN, &Down },
|
||||
{ SDL_EVENT_GAMEPAD_BUTTON_UP, &Up }
|
||||
}) { }
|
||||
// clang-format on
|
||||
: EventTypeRouter({ { SDL_EVENT_GAMEPAD_BUTTON_DOWN, &Down }, { SDL_EVENT_GAMEPAD_BUTTON_UP, &Up } }) { }
|
||||
};
|
||||
|
||||
class GamepadButtonsEvents : public EventValueRouter<SDL_GamepadButton, GamepadButtonEvents> {
|
||||
public:
|
||||
GamepadButtonsEvents()
|
||||
: EventValueRouter({}) { }
|
||||
virtual SDL_GamepadButton extractor(SDL_Event* event) override {
|
||||
virtual SDL_GamepadButton extractor(SDL_Event* event) const override {
|
||||
return (SDL_GamepadButton)event->gbutton.button;
|
||||
}
|
||||
};
|
||||
@@ -253,14 +225,9 @@ namespace hdk::sdl::evt {
|
||||
class GamepadTouchpadEvents : public EventTypeRouter {
|
||||
public:
|
||||
EventConduit Down, Motion, Up;
|
||||
// clang-format off
|
||||
GamepadTouchpadEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN, &Down },
|
||||
{ SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION, &Motion },
|
||||
{ SDL_EVENT_GAMEPAD_TOUCHPAD_UP, &Up }
|
||||
}) { }
|
||||
// clang-format on
|
||||
: EventTypeRouter({ { SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN, &Down },
|
||||
{ SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION, &Motion }, { SDL_EVENT_GAMEPAD_TOUCHPAD_UP, &Up } }) { }
|
||||
};
|
||||
|
||||
class GamepadEvents : public EventTypeRouter {
|
||||
@@ -271,30 +238,21 @@ namespace hdk::sdl::evt {
|
||||
GamepadTouchpadEvents Touchpad;
|
||||
EventConduit SensorUpdate, UpdateComplete, SteamHandleUpdate;
|
||||
|
||||
// clang-format off
|
||||
GamepadEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_GAMEPAD_AXIS_MOTION, &AxisMotion },
|
||||
{ SDL_EVENT_GAMEPAD_BUTTON_DOWN, &Button },
|
||||
{ SDL_EVENT_GAMEPAD_BUTTON_UP, &Button },
|
||||
{ SDL_EVENT_GAMEPAD_ADDED, &Added },
|
||||
{ SDL_EVENT_GAMEPAD_REMOVED, &Removed },
|
||||
{ SDL_EVENT_GAMEPAD_REMAPPED, &Remapped },
|
||||
{ SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN, &Touchpad },
|
||||
{ SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION, &Touchpad },
|
||||
{ SDL_EVENT_GAMEPAD_TOUCHPAD_UP, &Touchpad },
|
||||
{ SDL_EVENT_GAMEPAD_SENSOR_UPDATE, &SensorUpdate },
|
||||
{ SDL_EVENT_GAMEPAD_UPDATE_COMPLETE, &UpdateComplete }
|
||||
}) {
|
||||
: EventTypeRouter({ { SDL_EVENT_GAMEPAD_AXIS_MOTION, &AxisMotion }, { SDL_EVENT_GAMEPAD_BUTTON_DOWN, &Button },
|
||||
{ SDL_EVENT_GAMEPAD_BUTTON_UP, &Button }, { SDL_EVENT_GAMEPAD_ADDED, &Added },
|
||||
{ SDL_EVENT_GAMEPAD_REMOVED, &Removed }, { SDL_EVENT_GAMEPAD_REMAPPED, &Remapped },
|
||||
{ SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN, &Touchpad }, { SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION, &Touchpad },
|
||||
{ SDL_EVENT_GAMEPAD_TOUCHPAD_UP, &Touchpad }, { SDL_EVENT_GAMEPAD_SENSOR_UPDATE, &SensorUpdate },
|
||||
{ SDL_EVENT_GAMEPAD_UPDATE_COMPLETE, &UpdateComplete } }) {
|
||||
}
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
class GamepadsEvents : public EventValueRouter<SDL_JoystickID, GamepadEvents> {
|
||||
public:
|
||||
GamepadsEvents()
|
||||
: EventValueRouter({}) { }
|
||||
virtual SDL_JoystickID extractor(SDL_Event* event) override {
|
||||
virtual SDL_JoystickID extractor(SDL_Event* event) const override {
|
||||
switch (event->type) {
|
||||
case SDL_EVENT_GAMEPAD_AXIS_MOTION:
|
||||
return event->gaxis.which;
|
||||
@@ -322,141 +280,89 @@ namespace hdk::sdl::evt {
|
||||
class FingerEvents : public EventTypeRouter {
|
||||
public:
|
||||
EventConduit Down, Up, Motion, Canceled;
|
||||
// clang-format off
|
||||
FingerEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_FINGER_DOWN, &Down },
|
||||
{ SDL_EVENT_FINGER_UP, &Up },
|
||||
{ SDL_EVENT_FINGER_MOTION, &Motion } ,
|
||||
{ SDL_EVENT_FINGER_CANCELED, &Canceled }
|
||||
}) { }
|
||||
// clang-format on
|
||||
: EventTypeRouter({ { SDL_EVENT_FINGER_DOWN, &Down }, { SDL_EVENT_FINGER_UP, &Up },
|
||||
{ SDL_EVENT_FINGER_MOTION, &Motion }, { SDL_EVENT_FINGER_CANCELED, &Canceled } }) { }
|
||||
};
|
||||
|
||||
class DropEvents : public EventTypeRouter {
|
||||
public:
|
||||
EventConduit File, Text, Begin, Complete;
|
||||
// clang-format off
|
||||
DropEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_DROP_FILE, &File },
|
||||
{ SDL_EVENT_DROP_TEXT, &Text },
|
||||
{ SDL_EVENT_DROP_BEGIN, &Begin },
|
||||
{ SDL_EVENT_DROP_COMPLETE, &Complete }
|
||||
}) { }
|
||||
// clang-format on
|
||||
: EventTypeRouter({ { SDL_EVENT_DROP_FILE, &File }, { SDL_EVENT_DROP_TEXT, &Text },
|
||||
{ SDL_EVENT_DROP_BEGIN, &Begin }, { SDL_EVENT_DROP_COMPLETE, &Complete } }) { }
|
||||
};
|
||||
|
||||
class AudioDeviceEvents : public EventTypeRouter {
|
||||
public:
|
||||
EventConduit Added, Removed, FormatChanged;
|
||||
// clang-format off
|
||||
AudioDeviceEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_AUDIO_DEVICE_ADDED, &Added },
|
||||
{ SDL_EVENT_AUDIO_DEVICE_REMOVED, &Removed },
|
||||
{ SDL_EVENT_AUDIO_DEVICE_FORMAT_CHANGED, &FormatChanged }
|
||||
}) {
|
||||
: EventTypeRouter({ { SDL_EVENT_AUDIO_DEVICE_ADDED, &Added }, { SDL_EVENT_AUDIO_DEVICE_REMOVED, &Removed },
|
||||
{ SDL_EVENT_AUDIO_DEVICE_FORMAT_CHANGED, &FormatChanged } }) {
|
||||
}
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
class PenEvents : public EventTypeRouter {
|
||||
public:
|
||||
EventConduit ProximityIn, ProximityOut, Down, Up, Motion;
|
||||
// clang-format off
|
||||
PenEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_PEN_PROXIMITY_IN, &ProximityIn },
|
||||
{ SDL_EVENT_PEN_PROXIMITY_OUT, &ProximityOut },
|
||||
{ SDL_EVENT_PEN_DOWN, &Down },
|
||||
{ SDL_EVENT_PEN_UP, &Up },
|
||||
{ SDL_EVENT_PEN_MOTION, &Motion }
|
||||
}) { }
|
||||
// clang-format on
|
||||
: EventTypeRouter({ { SDL_EVENT_PEN_PROXIMITY_IN, &ProximityIn }, { SDL_EVENT_PEN_PROXIMITY_OUT, &ProximityOut },
|
||||
{ SDL_EVENT_PEN_DOWN, &Down }, { SDL_EVENT_PEN_UP, &Up }, { SDL_EVENT_PEN_MOTION, &Motion } }) { }
|
||||
};
|
||||
|
||||
class CameraDeviceEvents : public EventTypeRouter {
|
||||
public:
|
||||
EventConduit Added, Removed, Approved, Denied;
|
||||
// clang-format off
|
||||
CameraDeviceEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_CAMERA_DEVICE_ADDED, &Added },
|
||||
{ SDL_EVENT_CAMERA_DEVICE_REMOVED, &Removed },
|
||||
{ SDL_EVENT_CAMERA_DEVICE_APPROVED, &Approved } ,
|
||||
{ SDL_EVENT_CAMERA_DEVICE_DENIED, &Denied}
|
||||
}) {
|
||||
: EventTypeRouter({ { SDL_EVENT_CAMERA_DEVICE_ADDED, &Added }, { SDL_EVENT_CAMERA_DEVICE_REMOVED, &Removed },
|
||||
{ SDL_EVENT_CAMERA_DEVICE_APPROVED, &Approved }, { SDL_EVENT_CAMERA_DEVICE_DENIED, &Denied } }) {
|
||||
}
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
class RenderEvents : public EventTypeRouter {
|
||||
public:
|
||||
EventConduit TargetsReset, DeviceReset, DeviceLost;
|
||||
// clang-format off
|
||||
RenderEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_RENDER_TARGETS_RESET, &TargetsReset },
|
||||
{ SDL_EVENT_RENDER_DEVICE_RESET, &DeviceReset },
|
||||
{ SDL_EVENT_RENDER_DEVICE_LOST, &DeviceLost }
|
||||
}) { }
|
||||
// clang-format on
|
||||
: EventTypeRouter({ { SDL_EVENT_RENDER_TARGETS_RESET, &TargetsReset },
|
||||
{ SDL_EVENT_RENDER_DEVICE_RESET, &DeviceReset }, { SDL_EVENT_RENDER_DEVICE_LOST, &DeviceLost } }) { }
|
||||
};
|
||||
|
||||
class KeyboardEvents : public EventTypeRouter {
|
||||
public:
|
||||
EventConduit Added, Removed;
|
||||
// clang-format off
|
||||
KeyboardEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_KEYBOARD_ADDED, &Added },
|
||||
{ SDL_EVENT_KEYBOARD_REMOVED, &Removed }
|
||||
}) { }
|
||||
// clang-format on
|
||||
: EventTypeRouter({ { SDL_EVENT_KEYBOARD_ADDED, &Added }, { SDL_EVENT_KEYBOARD_REMOVED, &Removed } }) { }
|
||||
};
|
||||
|
||||
class MouseButtonEvents : public EventTypeRouter {
|
||||
public:
|
||||
EventConduit Down, Up;
|
||||
// clang-format off
|
||||
MouseButtonEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_MOUSE_BUTTON_DOWN, &Down },
|
||||
{ SDL_EVENT_MOUSE_BUTTON_UP, &Up }
|
||||
}) { }
|
||||
// clang-format on
|
||||
: EventTypeRouter({ { SDL_EVENT_MOUSE_BUTTON_DOWN, &Down }, { SDL_EVENT_MOUSE_BUTTON_UP, &Up } }) { }
|
||||
};
|
||||
|
||||
class MouseButtonsEvents : public EventValueRouter<Uint8, MouseButtonEvents> {
|
||||
public:
|
||||
MouseButtonsEvents()
|
||||
: EventValueRouter({}) { }
|
||||
virtual Uint8 extractor(SDL_Event* event) override { return event->button.button; }
|
||||
virtual Uint8 extractor(SDL_Event* event) const override { return event->button.button; }
|
||||
};
|
||||
|
||||
class MouseEvents : public EventTypeRouter {
|
||||
public:
|
||||
MouseButtonsEvents Button;
|
||||
EventConduit Motion, Wheel, Added, Removed;
|
||||
// clang-format off
|
||||
MouseEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_MOUSE_MOTION, &Motion },
|
||||
{ SDL_EVENT_MOUSE_BUTTON_DOWN, &Button },
|
||||
{ SDL_EVENT_MOUSE_BUTTON_UP, &Button },
|
||||
{ SDL_EVENT_MOUSE_WHEEL, &Wheel },
|
||||
{ SDL_EVENT_MOUSE_ADDED, &Added },
|
||||
{ SDL_EVENT_MOUSE_REMOVED, &Removed }
|
||||
}) { }
|
||||
// clang-format on
|
||||
: EventTypeRouter({ { SDL_EVENT_MOUSE_MOTION, &Motion }, { SDL_EVENT_MOUSE_BUTTON_DOWN, &Button },
|
||||
{ SDL_EVENT_MOUSE_BUTTON_UP, &Button }, { SDL_EVENT_MOUSE_WHEEL, &Wheel },
|
||||
{ SDL_EVENT_MOUSE_ADDED, &Added }, { SDL_EVENT_MOUSE_REMOVED, &Removed } }) { }
|
||||
};
|
||||
|
||||
class MiceEvents : public EventValueRouter<SDL_MouseID, MouseEvents> {
|
||||
public:
|
||||
MiceEvents()
|
||||
: EventValueRouter({}) { }
|
||||
virtual SDL_MouseID extractor(SDL_Event* event) override {
|
||||
virtual SDL_MouseID extractor(SDL_Event* event) const override {
|
||||
switch (event->type) {
|
||||
case SDL_EVENT_MOUSE_MOTION:
|
||||
return event->motion.which;
|
||||
@@ -477,14 +383,9 @@ namespace hdk::sdl::evt {
|
||||
class TextEvents : public EventTypeRouter {
|
||||
public:
|
||||
EventConduit Input, Editing, EditingCandidates;
|
||||
// clang-format off
|
||||
TextEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_TEXT_INPUT, &Input },
|
||||
{ SDL_EVENT_TEXT_EDITING, &Editing },
|
||||
{ SDL_EVENT_TEXT_EDITING_CANDIDATES, &EditingCandidates }
|
||||
}) { }
|
||||
// clang-format on
|
||||
: EventTypeRouter({ { SDL_EVENT_TEXT_INPUT, &Input }, { SDL_EVENT_TEXT_EDITING, &Editing },
|
||||
{ SDL_EVENT_TEXT_EDITING_CANDIDATES, &EditingCandidates } }) { }
|
||||
};
|
||||
|
||||
class WindowEvents : public EventTypeRouter {
|
||||
@@ -505,79 +406,33 @@ namespace hdk::sdl::evt {
|
||||
TextEvents Text;
|
||||
DropEvents Drop;
|
||||
RenderEvents Render;
|
||||
// clang-format off
|
||||
WindowEvents()
|
||||
: EventTypeRouter({
|
||||
{ SDL_EVENT_WINDOW_SHOWN, &Shown },
|
||||
{ SDL_EVENT_WINDOW_HIDDEN, &Hidden },
|
||||
{ SDL_EVENT_WINDOW_EXPOSED, &Exposed },
|
||||
{ SDL_EVENT_WINDOW_MOVED, &Moved },
|
||||
{ SDL_EVENT_WINDOW_RESIZED, &Resized },
|
||||
{ SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED, &PixelSizeChanged },
|
||||
{ SDL_EVENT_WINDOW_METAL_VIEW_RESIZED, &MetalViewResized },
|
||||
{ SDL_EVENT_WINDOW_MINIMIZED, &Minimized },
|
||||
{ SDL_EVENT_WINDOW_MAXIMIZED, &Maximized },
|
||||
{ SDL_EVENT_WINDOW_RESTORED, &Restored },
|
||||
{ SDL_EVENT_WINDOW_MOUSE_ENTER, &MouseEnter },
|
||||
{ SDL_EVENT_WINDOW_MOUSE_LEAVE, &MouseLeave },
|
||||
{ SDL_EVENT_WINDOW_FOCUS_LOST, &FocusLost },
|
||||
{ SDL_EVENT_WINDOW_CLOSE_REQUESTED, &CloseRequested },
|
||||
{ SDL_EVENT_WINDOW_HIT_TEST, &HitTest },
|
||||
{ SDL_EVENT_WINDOW_ICCPROF_CHANGED, &ICCProfChange },
|
||||
: EventTypeRouter({ { SDL_EVENT_WINDOW_SHOWN, &Shown }, { SDL_EVENT_WINDOW_HIDDEN, &Hidden },
|
||||
{ SDL_EVENT_WINDOW_EXPOSED, &Exposed }, { SDL_EVENT_WINDOW_MOVED, &Moved },
|
||||
{ SDL_EVENT_WINDOW_RESIZED, &Resized }, { SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED, &PixelSizeChanged },
|
||||
{ SDL_EVENT_WINDOW_METAL_VIEW_RESIZED, &MetalViewResized }, { SDL_EVENT_WINDOW_MINIMIZED, &Minimized },
|
||||
{ SDL_EVENT_WINDOW_MAXIMIZED, &Maximized }, { SDL_EVENT_WINDOW_RESTORED, &Restored },
|
||||
{ SDL_EVENT_WINDOW_MOUSE_ENTER, &MouseEnter }, { SDL_EVENT_WINDOW_MOUSE_LEAVE, &MouseLeave },
|
||||
{ SDL_EVENT_WINDOW_FOCUS_LOST, &FocusLost }, { SDL_EVENT_WINDOW_CLOSE_REQUESTED, &CloseRequested },
|
||||
{ SDL_EVENT_WINDOW_HIT_TEST, &HitTest }, { SDL_EVENT_WINDOW_ICCPROF_CHANGED, &ICCProfChange },
|
||||
{ SDL_EVENT_WINDOW_DISPLAY_CHANGED, &DisplayChanged },
|
||||
{ SDL_EVENT_WINDOW_DISPLAY_SCALE_CHANGED, &DisplayScaleChanged },
|
||||
{ SDL_EVENT_WINDOW_SAFE_AREA_CHANGED, &SafeAreaChanged },
|
||||
{ SDL_EVENT_WINDOW_OCCLUDED, &Occluded },
|
||||
{ SDL_EVENT_WINDOW_SAFE_AREA_CHANGED, &SafeAreaChanged }, { SDL_EVENT_WINDOW_OCCLUDED, &Occluded },
|
||||
{ SDL_EVENT_WINDOW_ENTER_FULLSCREEN, &EnterFullscreen },
|
||||
{ SDL_EVENT_WINDOW_LEAVE_FULLSCREEN, &LeaveFullscreen },
|
||||
{ SDL_EVENT_WINDOW_DESTROYED, &Destroyed },
|
||||
{ SDL_EVENT_WINDOW_HDR_STATE_CHANGED, &HdrStateChanged },
|
||||
|
||||
{ SDL_EVENT_FINGER_DOWN, &Finger },
|
||||
{ SDL_EVENT_FINGER_UP, &Finger },
|
||||
{ SDL_EVENT_FINGER_MOTION, &Finger },
|
||||
{ SDL_EVENT_FINGER_CANCELED, &Finger },
|
||||
|
||||
{ SDL_EVENT_PEN_MOTION, &Pen },
|
||||
|
||||
{ SDL_EVENT_PEN_BUTTON_DOWN, &Pen },
|
||||
{ SDL_EVENT_PEN_BUTTON_UP, &Pen },
|
||||
|
||||
{ SDL_EVENT_PEN_AXIS, &Pen },
|
||||
|
||||
{ SDL_EVENT_MOUSE_WHEEL, &Mouse},
|
||||
|
||||
{ SDL_EVENT_MOUSE_MOTION, &Mouse},
|
||||
|
||||
{ SDL_EVENT_MOUSE_BUTTON_DOWN, &Mouse },
|
||||
{ SDL_EVENT_MOUSE_BUTTON_UP, &Mouse },
|
||||
|
||||
{ SDL_EVENT_KEY_DOWN, &Key },
|
||||
{ SDL_EVENT_KEY_UP, &Key },
|
||||
|
||||
{ SDL_EVENT_PEN_PROXIMITY_IN, &Pen },
|
||||
{ SDL_EVENT_PEN_PROXIMITY_OUT, &Pen },
|
||||
|
||||
{ SDL_EVENT_PEN_DOWN, &Pen },
|
||||
{ SDL_EVENT_PEN_UP, &Pen },
|
||||
|
||||
{ SDL_EVENT_TEXT_INPUT, &Text },
|
||||
|
||||
{ SDL_EVENT_TEXT_EDITING, &Text },
|
||||
|
||||
{ SDL_EVENT_TEXT_EDITING_CANDIDATES, &Text },
|
||||
|
||||
{ SDL_EVENT_RENDER_TARGETS_RESET, &Render },
|
||||
{ SDL_EVENT_RENDER_DEVICE_RESET, &Render },
|
||||
{ SDL_EVENT_RENDER_DEVICE_LOST, &Render },
|
||||
|
||||
{ SDL_EVENT_DROP_BEGIN, &Drop },
|
||||
{ SDL_EVENT_DROP_FILE, &Drop },
|
||||
{ SDL_EVENT_DROP_TEXT, &Drop },
|
||||
{ SDL_EVENT_DROP_COMPLETE, &Drop },
|
||||
{ SDL_EVENT_DROP_POSITION, &Drop }
|
||||
}) { }
|
||||
// clang-format on
|
||||
{ SDL_EVENT_WINDOW_LEAVE_FULLSCREEN, &LeaveFullscreen }, { SDL_EVENT_WINDOW_DESTROYED, &Destroyed },
|
||||
{ SDL_EVENT_WINDOW_HDR_STATE_CHANGED, &HdrStateChanged }, { SDL_EVENT_FINGER_DOWN, &Finger },
|
||||
{ SDL_EVENT_FINGER_UP, &Finger }, { SDL_EVENT_FINGER_MOTION, &Finger },
|
||||
{ SDL_EVENT_FINGER_CANCELED, &Finger }, { SDL_EVENT_PEN_MOTION, &Pen },
|
||||
{ SDL_EVENT_PEN_BUTTON_DOWN, &Pen }, { SDL_EVENT_PEN_BUTTON_UP, &Pen }, { SDL_EVENT_PEN_AXIS, &Pen },
|
||||
{ SDL_EVENT_MOUSE_WHEEL, &Mouse }, { SDL_EVENT_MOUSE_MOTION, &Mouse },
|
||||
{ SDL_EVENT_MOUSE_BUTTON_DOWN, &Mouse }, { SDL_EVENT_MOUSE_BUTTON_UP, &Mouse },
|
||||
{ SDL_EVENT_KEY_DOWN, &Key }, { SDL_EVENT_KEY_UP, &Key }, { SDL_EVENT_PEN_PROXIMITY_IN, &Pen },
|
||||
{ SDL_EVENT_PEN_PROXIMITY_OUT, &Pen }, { SDL_EVENT_PEN_DOWN, &Pen }, { SDL_EVENT_PEN_UP, &Pen },
|
||||
{ SDL_EVENT_TEXT_INPUT, &Text }, { SDL_EVENT_TEXT_EDITING, &Text },
|
||||
{ SDL_EVENT_TEXT_EDITING_CANDIDATES, &Text }, { SDL_EVENT_RENDER_TARGETS_RESET, &Render },
|
||||
{ SDL_EVENT_RENDER_DEVICE_RESET, &Render }, { SDL_EVENT_RENDER_DEVICE_LOST, &Render },
|
||||
{ SDL_EVENT_DROP_BEGIN, &Drop }, { SDL_EVENT_DROP_FILE, &Drop }, { SDL_EVENT_DROP_TEXT, &Drop },
|
||||
{ SDL_EVENT_DROP_COMPLETE, &Drop }, { SDL_EVENT_DROP_POSITION, &Drop } }) { }
|
||||
};
|
||||
|
||||
class WindowsEvents : public EventValueRouter<SDL_WindowID, WindowEvents> {
|
||||
@@ -590,7 +445,7 @@ namespace hdk::sdl::evt {
|
||||
value_dispatch_map[window_id] = &window;
|
||||
return window;
|
||||
}
|
||||
virtual SDL_WindowID extractor(SDL_Event* event) override {
|
||||
virtual SDL_WindowID extractor(SDL_Event* event) const override {
|
||||
switch (event->type) {
|
||||
case SDL_EVENT_WINDOW_SHOWN:
|
||||
case SDL_EVENT_WINDOW_HIDDEN:
|
||||
@@ -705,120 +560,63 @@ namespace hdk::sdl::evt {
|
||||
CameraDeviceEvents CameraDevice;
|
||||
/* Render Events */
|
||||
RenderEvents Render;
|
||||
// clang-format off
|
||||
AllTypes()
|
||||
// https://wiki.libsdl.org/SDL3/SDL_EventType
|
||||
: EventTypeRouter({
|
||||
{SDL_EVENT_QUIT, &Quit },
|
||||
{SDL_EVENT_TERMINATING, &Terminating },
|
||||
{SDL_EVENT_LOW_MEMORY, &LowMemory },
|
||||
{SDL_EVENT_WILL_ENTER_BACKGROUND, &WillEnterBackground },
|
||||
{SDL_EVENT_DID_ENTER_BACKGROUND, &DidEnterBackground },
|
||||
{SDL_EVENT_WILL_ENTER_FOREGROUND, &WillEnterForeground },
|
||||
{SDL_EVENT_LOCALE_CHANGED, &LocaleChanged },
|
||||
{SDL_EVENT_SYSTEM_THEME_CHANGED, &SystemThemeChanged },
|
||||
{SDL_EVENT_DISPLAY_ORIENTATION, &Display },
|
||||
{SDL_EVENT_DISPLAY_ADDED, &Display },
|
||||
{SDL_EVENT_DISPLAY_REMOVED, &Display },
|
||||
{SDL_EVENT_DISPLAY_MOVED, &Display },
|
||||
{SDL_EVENT_DISPLAY_DESKTOP_MODE_CHANGED, &Display },
|
||||
{SDL_EVENT_DISPLAY_CURRENT_MODE_CHANGED, &Display },
|
||||
{SDL_EVENT_DISPLAY_CONTENT_SCALE_CHANGED, &Display },
|
||||
{SDL_EVENT_WINDOW_SHOWN, &Window },
|
||||
{SDL_EVENT_WINDOW_HIDDEN, &Window },
|
||||
{SDL_EVENT_WINDOW_EXPOSED, &Window },
|
||||
{SDL_EVENT_WINDOW_MOVED, &Window },
|
||||
{SDL_EVENT_WINDOW_RESIZED, &Window },
|
||||
{SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED, &Window },
|
||||
{SDL_EVENT_WINDOW_METAL_VIEW_RESIZED, &Window },
|
||||
{SDL_EVENT_WINDOW_MINIMIZED, &Window },
|
||||
{SDL_EVENT_WINDOW_MAXIMIZED, &Window },
|
||||
{SDL_EVENT_WINDOW_RESTORED, &Window },
|
||||
{SDL_EVENT_WINDOW_MOUSE_ENTER, &Window },
|
||||
{SDL_EVENT_WINDOW_MOUSE_LEAVE, &Window },
|
||||
{SDL_EVENT_WINDOW_FOCUS_LOST, &Window },
|
||||
{SDL_EVENT_WINDOW_CLOSE_REQUESTED, &Window },
|
||||
{SDL_EVENT_WINDOW_HIT_TEST, &Window },
|
||||
{SDL_EVENT_WINDOW_ICCPROF_CHANGED, &Window },
|
||||
{SDL_EVENT_WINDOW_DISPLAY_CHANGED, &Window },
|
||||
{SDL_EVENT_WINDOW_DISPLAY_SCALE_CHANGED, &Window },
|
||||
{SDL_EVENT_WINDOW_SAFE_AREA_CHANGED, &Window },
|
||||
{SDL_EVENT_WINDOW_OCCLUDED, &Window },
|
||||
{SDL_EVENT_WINDOW_ENTER_FULLSCREEN, &Window },
|
||||
{SDL_EVENT_WINDOW_LEAVE_FULLSCREEN, &Window },
|
||||
{SDL_EVENT_WINDOW_DESTROYED, &Window },
|
||||
{SDL_EVENT_WINDOW_HDR_STATE_CHANGED, &Window },
|
||||
{SDL_EVENT_KEY_DOWN, &Key },
|
||||
{SDL_EVENT_KEY_UP, &Key },
|
||||
{SDL_EVENT_TEXT_EDITING, &Text },
|
||||
{SDL_EVENT_TEXT_INPUT, &Text },
|
||||
{SDL_EVENT_TEXT_EDITING_CANDIDATES, &Text },
|
||||
{SDL_EVENT_KEYMAP_CHANGED, &KeymapChanged },
|
||||
{SDL_EVENT_KEYBOARD_ADDED, &Keyboard },
|
||||
{SDL_EVENT_KEYBOARD_REMOVED, &Keyboard },
|
||||
{SDL_EVENT_MOUSE_MOTION, &Mouse },
|
||||
{SDL_EVENT_MOUSE_BUTTON_DOWN, &Mouse },
|
||||
{SDL_EVENT_MOUSE_BUTTON_UP, &Mouse },
|
||||
{SDL_EVENT_MOUSE_WHEEL, &Mouse },
|
||||
{SDL_EVENT_MOUSE_ADDED, &Mouse},
|
||||
{SDL_EVENT_MOUSE_REMOVED, &Mouse},
|
||||
{SDL_EVENT_JOYSTICK_AXIS_MOTION, &Joystick},
|
||||
{SDL_EVENT_JOYSTICK_BALL_MOTION, &Joystick},
|
||||
{SDL_EVENT_JOYSTICK_HAT_MOTION, &Joystick},
|
||||
{SDL_EVENT_JOYSTICK_BUTTON_DOWN, &Joystick},
|
||||
{SDL_EVENT_JOYSTICK_BUTTON_UP, &Joystick},
|
||||
{SDL_EVENT_JOYSTICK_ADDED, &Joystick},
|
||||
{SDL_EVENT_JOYSTICK_REMOVED, &Joystick},
|
||||
{SDL_EVENT_JOYSTICK_BATTERY_UPDATED, &Joystick},
|
||||
{SDL_EVENT_JOYSTICK_UPDATE_COMPLETE, &Joystick},
|
||||
{SDL_EVENT_GAMEPAD_AXIS_MOTION, &Gamepad},
|
||||
{SDL_EVENT_GAMEPAD_BUTTON_DOWN, &Gamepad},
|
||||
{SDL_EVENT_GAMEPAD_BUTTON_UP, &Gamepad},
|
||||
{SDL_EVENT_GAMEPAD_ADDED, &Gamepad},
|
||||
{SDL_EVENT_GAMEPAD_REMOVED, &Gamepad},
|
||||
{SDL_EVENT_GAMEPAD_REMAPPED, &Gamepad},
|
||||
{SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN, &Gamepad},
|
||||
{SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION, &Gamepad},
|
||||
{SDL_EVENT_GAMEPAD_TOUCHPAD_UP, &Gamepad},
|
||||
{SDL_EVENT_GAMEPAD_SENSOR_UPDATE, &Gamepad},
|
||||
{SDL_EVENT_GAMEPAD_UPDATE_COMPLETE, &Gamepad},
|
||||
{SDL_EVENT_GAMEPAD_STEAM_HANDLE_UPDATED, &Gamepad},
|
||||
{SDL_EVENT_FINGER_DOWN, &Finger},
|
||||
{SDL_EVENT_FINGER_UP, &Finger},
|
||||
{SDL_EVENT_FINGER_MOTION, &Finger},
|
||||
{SDL_EVENT_FINGER_CANCELED, &Finger},
|
||||
{SDL_EVENT_CLIPBOARD_UPDATE, &ClipboardUpdate},
|
||||
{SDL_EVENT_DROP_FILE, &Drop},
|
||||
{SDL_EVENT_DROP_TEXT, &Drop},
|
||||
{SDL_EVENT_DROP_BEGIN, &Drop},
|
||||
{SDL_EVENT_DROP_COMPLETE, &Drop},
|
||||
{SDL_EVENT_DROP_POSITION, &Drop},
|
||||
{SDL_EVENT_AUDIO_DEVICE_ADDED, &AudioDevice},
|
||||
{SDL_EVENT_AUDIO_DEVICE_REMOVED, &AudioDevice},
|
||||
{SDL_EVENT_AUDIO_DEVICE_FORMAT_CHANGED, &AudioDevice},
|
||||
{SDL_EVENT_SENSOR_UPDATE, &SensorUpdate},
|
||||
{SDL_EVENT_PEN_PROXIMITY_IN, &Pen},
|
||||
{SDL_EVENT_PEN_PROXIMITY_OUT, &Pen},
|
||||
{SDL_EVENT_PEN_DOWN, &Pen },
|
||||
{SDL_EVENT_PEN_UP, &Pen},
|
||||
{SDL_EVENT_PEN_BUTTON_DOWN, &Pen},
|
||||
{SDL_EVENT_PEN_BUTTON_UP, &Pen},
|
||||
{SDL_EVENT_PEN_MOTION, &Pen},
|
||||
{SDL_EVENT_PEN_AXIS, &Pen},
|
||||
{SDL_EVENT_CAMERA_DEVICE_ADDED, &CameraDevice},
|
||||
{SDL_EVENT_CAMERA_DEVICE_REMOVED, &CameraDevice},
|
||||
{SDL_EVENT_CAMERA_DEVICE_APPROVED, &CameraDevice },
|
||||
{SDL_EVENT_CAMERA_DEVICE_DENIED, &CameraDevice},
|
||||
{SDL_EVENT_RENDER_TARGETS_RESET , &Render },
|
||||
{SDL_EVENT_RENDER_DEVICE_RESET, &Render},
|
||||
{SDL_EVENT_RENDER_DEVICE_LOST, &Render}
|
||||
}) { };
|
||||
// clang-format on
|
||||
: EventTypeRouter({ { SDL_EVENT_QUIT, &Quit }, { SDL_EVENT_TERMINATING, &Terminating },
|
||||
{ SDL_EVENT_LOW_MEMORY, &LowMemory }, { SDL_EVENT_WILL_ENTER_BACKGROUND, &WillEnterBackground },
|
||||
{ SDL_EVENT_DID_ENTER_BACKGROUND, &DidEnterBackground },
|
||||
{ SDL_EVENT_WILL_ENTER_FOREGROUND, &WillEnterForeground }, { SDL_EVENT_LOCALE_CHANGED, &LocaleChanged },
|
||||
{ SDL_EVENT_SYSTEM_THEME_CHANGED, &SystemThemeChanged }, { SDL_EVENT_DISPLAY_ORIENTATION, &Display },
|
||||
{ SDL_EVENT_DISPLAY_ADDED, &Display }, { SDL_EVENT_DISPLAY_REMOVED, &Display },
|
||||
{ SDL_EVENT_DISPLAY_MOVED, &Display }, { SDL_EVENT_DISPLAY_DESKTOP_MODE_CHANGED, &Display },
|
||||
{ SDL_EVENT_DISPLAY_CURRENT_MODE_CHANGED, &Display }, { SDL_EVENT_DISPLAY_CONTENT_SCALE_CHANGED, &Display },
|
||||
{ SDL_EVENT_WINDOW_SHOWN, &Window }, { SDL_EVENT_WINDOW_HIDDEN, &Window },
|
||||
{ SDL_EVENT_WINDOW_EXPOSED, &Window }, { SDL_EVENT_WINDOW_MOVED, &Window },
|
||||
{ SDL_EVENT_WINDOW_RESIZED, &Window }, { SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED, &Window },
|
||||
{ SDL_EVENT_WINDOW_METAL_VIEW_RESIZED, &Window }, { SDL_EVENT_WINDOW_MINIMIZED, &Window },
|
||||
{ SDL_EVENT_WINDOW_MAXIMIZED, &Window }, { SDL_EVENT_WINDOW_RESTORED, &Window },
|
||||
{ SDL_EVENT_WINDOW_MOUSE_ENTER, &Window }, { SDL_EVENT_WINDOW_MOUSE_LEAVE, &Window },
|
||||
{ SDL_EVENT_WINDOW_FOCUS_LOST, &Window }, { SDL_EVENT_WINDOW_CLOSE_REQUESTED, &Window },
|
||||
{ SDL_EVENT_WINDOW_HIT_TEST, &Window }, { SDL_EVENT_WINDOW_ICCPROF_CHANGED, &Window },
|
||||
{ SDL_EVENT_WINDOW_DISPLAY_CHANGED, &Window }, { SDL_EVENT_WINDOW_DISPLAY_SCALE_CHANGED, &Window },
|
||||
{ SDL_EVENT_WINDOW_SAFE_AREA_CHANGED, &Window }, { SDL_EVENT_WINDOW_OCCLUDED, &Window },
|
||||
{ SDL_EVENT_WINDOW_ENTER_FULLSCREEN, &Window }, { SDL_EVENT_WINDOW_LEAVE_FULLSCREEN, &Window },
|
||||
{ SDL_EVENT_WINDOW_DESTROYED, &Window }, { SDL_EVENT_WINDOW_HDR_STATE_CHANGED, &Window },
|
||||
{ SDL_EVENT_KEY_DOWN, &Key }, { SDL_EVENT_KEY_UP, &Key }, { SDL_EVENT_TEXT_EDITING, &Text },
|
||||
{ SDL_EVENT_TEXT_INPUT, &Text }, { SDL_EVENT_TEXT_EDITING_CANDIDATES, &Text },
|
||||
{ SDL_EVENT_KEYMAP_CHANGED, &KeymapChanged }, { SDL_EVENT_KEYBOARD_ADDED, &Keyboard },
|
||||
{ SDL_EVENT_KEYBOARD_REMOVED, &Keyboard }, { SDL_EVENT_MOUSE_MOTION, &Mouse },
|
||||
{ SDL_EVENT_MOUSE_BUTTON_DOWN, &Mouse }, { SDL_EVENT_MOUSE_BUTTON_UP, &Mouse },
|
||||
{ SDL_EVENT_MOUSE_WHEEL, &Mouse }, { SDL_EVENT_MOUSE_ADDED, &Mouse }, { SDL_EVENT_MOUSE_REMOVED, &Mouse },
|
||||
{ SDL_EVENT_JOYSTICK_AXIS_MOTION, &Joystick }, { SDL_EVENT_JOYSTICK_BALL_MOTION, &Joystick },
|
||||
{ SDL_EVENT_JOYSTICK_HAT_MOTION, &Joystick }, { SDL_EVENT_JOYSTICK_BUTTON_DOWN, &Joystick },
|
||||
{ SDL_EVENT_JOYSTICK_BUTTON_UP, &Joystick }, { SDL_EVENT_JOYSTICK_ADDED, &Joystick },
|
||||
{ SDL_EVENT_JOYSTICK_REMOVED, &Joystick }, { SDL_EVENT_JOYSTICK_BATTERY_UPDATED, &Joystick },
|
||||
{ SDL_EVENT_JOYSTICK_UPDATE_COMPLETE, &Joystick }, { SDL_EVENT_GAMEPAD_AXIS_MOTION, &Gamepad },
|
||||
{ SDL_EVENT_GAMEPAD_BUTTON_DOWN, &Gamepad }, { SDL_EVENT_GAMEPAD_BUTTON_UP, &Gamepad },
|
||||
{ SDL_EVENT_GAMEPAD_ADDED, &Gamepad }, { SDL_EVENT_GAMEPAD_REMOVED, &Gamepad },
|
||||
{ SDL_EVENT_GAMEPAD_REMAPPED, &Gamepad }, { SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN, &Gamepad },
|
||||
{ SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION, &Gamepad }, { SDL_EVENT_GAMEPAD_TOUCHPAD_UP, &Gamepad },
|
||||
{ SDL_EVENT_GAMEPAD_SENSOR_UPDATE, &Gamepad }, { SDL_EVENT_GAMEPAD_UPDATE_COMPLETE, &Gamepad },
|
||||
{ SDL_EVENT_GAMEPAD_STEAM_HANDLE_UPDATED, &Gamepad }, { SDL_EVENT_FINGER_DOWN, &Finger },
|
||||
{ SDL_EVENT_FINGER_UP, &Finger }, { SDL_EVENT_FINGER_MOTION, &Finger },
|
||||
{ SDL_EVENT_FINGER_CANCELED, &Finger }, { SDL_EVENT_CLIPBOARD_UPDATE, &ClipboardUpdate },
|
||||
{ SDL_EVENT_DROP_FILE, &Drop }, { SDL_EVENT_DROP_TEXT, &Drop }, { SDL_EVENT_DROP_BEGIN, &Drop },
|
||||
{ SDL_EVENT_DROP_COMPLETE, &Drop }, { SDL_EVENT_DROP_POSITION, &Drop },
|
||||
{ SDL_EVENT_AUDIO_DEVICE_ADDED, &AudioDevice }, { SDL_EVENT_AUDIO_DEVICE_REMOVED, &AudioDevice },
|
||||
{ SDL_EVENT_AUDIO_DEVICE_FORMAT_CHANGED, &AudioDevice }, { SDL_EVENT_SENSOR_UPDATE, &SensorUpdate },
|
||||
{ SDL_EVENT_PEN_PROXIMITY_IN, &Pen }, { SDL_EVENT_PEN_PROXIMITY_OUT, &Pen }, { SDL_EVENT_PEN_DOWN, &Pen },
|
||||
{ SDL_EVENT_PEN_UP, &Pen }, { SDL_EVENT_PEN_BUTTON_DOWN, &Pen }, { SDL_EVENT_PEN_BUTTON_UP, &Pen },
|
||||
{ SDL_EVENT_PEN_MOTION, &Pen }, { SDL_EVENT_PEN_AXIS, &Pen },
|
||||
{ SDL_EVENT_CAMERA_DEVICE_ADDED, &CameraDevice }, { SDL_EVENT_CAMERA_DEVICE_REMOVED, &CameraDevice },
|
||||
{ SDL_EVENT_CAMERA_DEVICE_APPROVED, &CameraDevice }, { SDL_EVENT_CAMERA_DEVICE_DENIED, &CameraDevice },
|
||||
{ SDL_EVENT_RENDER_TARGETS_RESET, &Render }, { SDL_EVENT_RENDER_DEVICE_RESET, &Render },
|
||||
{ SDL_EVENT_RENDER_DEVICE_LOST, &Render } }) { };
|
||||
|
||||
// In addition to dispatching things to their normal handler we are also going to send all events that have a
|
||||
// WindowID to the CompleteWindowsEvents handler, so that users can listen for all events related to a specific
|
||||
// window in one place if they want to.
|
||||
virtual void Trigger(SDL_Event* event) override {
|
||||
virtual void Trigger(SDL_Event* event) const override {
|
||||
switch (event->type) {
|
||||
// SDL_EVENT_WINDOW_* is already forwarded to Window event handlers
|
||||
// But these following events contain a WindowID, and so we want to forward them too there.
|
||||
|
||||
Reference in New Issue
Block a user