1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-01-16 18:59:57 +00:00
openmw/components/sdlutil/events.hpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

108 lines
2.8 KiB
C++
Raw Normal View History

#ifndef _SFO_EVENTS_H
#define _SFO_EVENTS_H
2015-01-31 22:27:34 +00:00
#include <SDL_events.h>
#include <SDL_types.h>
#include <SDL_version.h>
////////////
// Events //
////////////
2015-05-13 14:50:47 +00:00
namespace SDLUtil
{
/** Extended mouse event struct where we treat the wheel like an axis, like everyone expects */
struct MouseMotionEvent : SDL_MouseMotionEvent
{
2022-09-22 18:26:05 +00:00
Sint32 zrel;
Sint32 z;
};
2022-09-22 18:26:05 +00:00
struct TouchEvent
{
int mDevice;
int mFinger;
float mX;
float mY;
float mPressure;
2022-09-22 18:26:05 +00:00
#if SDL_VERSION_ATLEAST(2, 0, 14)
explicit TouchEvent(const SDL_ControllerTouchpadEvent& arg)
: mDevice(arg.touchpad)
, mFinger(arg.finger)
, mX(arg.x)
, mY(arg.y)
, mPressure(arg.pressure)
{
}
#endif
};
2022-09-22 18:26:05 +00:00
///////////////
// Listeners //
///////////////
2022-09-22 18:26:05 +00:00
class MouseListener
{
public:
virtual ~MouseListener() {}
2014-02-13 14:08:40 +00:00
virtual void mouseMoved(const MouseMotionEvent& arg) = 0;
virtual void mousePressed(const SDL_MouseButtonEvent& arg, Uint8 id) = 0;
virtual void mouseReleased(const SDL_MouseButtonEvent& arg, Uint8 id) = 0;
virtual void mouseWheelMoved(const SDL_MouseWheelEvent& arg) = 0;
};
2022-09-22 18:26:05 +00:00
class SensorListener
{
public:
virtual ~SensorListener() {}
virtual void sensorUpdated(const SDL_SensorEvent& arg) = 0;
virtual void displayOrientationChanged() = 0;
};
2022-09-22 18:26:05 +00:00
class KeyListener
{
public:
virtual ~KeyListener() {}
2013-06-16 17:43:59 +00:00
virtual void textInput(const SDL_TextInputEvent& arg) {}
2014-02-13 14:08:40 +00:00
virtual void keyPressed(const SDL_KeyboardEvent& arg) = 0;
virtual void keyReleased(const SDL_KeyboardEvent& arg) = 0;
};
2022-09-22 18:26:05 +00:00
2014-12-09 03:57:32 +00:00
class ControllerListener
{
public:
2014-12-09 03:57:32 +00:00
virtual ~ControllerListener() {}
2022-09-22 18:26:05 +00:00
virtual void buttonPressed(int deviceID, const SDL_ControllerButtonEvent& evt) = 0;
virtual void buttonReleased(int deviceID, const SDL_ControllerButtonEvent& evt) = 0;
2022-09-22 18:26:05 +00:00
virtual void axisMoved(int deviceID, const SDL_ControllerAxisEvent& arg) = 0;
2022-09-22 18:26:05 +00:00
virtual void controllerAdded(int deviceID, const SDL_ControllerDeviceEvent& arg) = 0;
virtual void controllerRemoved(const SDL_ControllerDeviceEvent& arg) = 0;
2022-09-22 18:26:05 +00:00
virtual void touchpadMoved(int deviceId, const TouchEvent& arg) = 0;
virtual void touchpadPressed(int deviceId, const TouchEvent& arg) = 0;
virtual void touchpadReleased(int deviceId, const TouchEvent& arg) = 0;
};
2022-09-22 18:26:05 +00:00
class WindowListener
{
public:
virtual ~WindowListener() {}
2022-09-22 18:26:05 +00:00
/** @remarks The window's visibility changed */
2015-01-31 22:27:34 +00:00
virtual void windowVisibilityChange(bool visible) {}
2022-09-22 18:26:05 +00:00
virtual void windowClosed() {}
2022-09-22 18:26:05 +00:00
2013-07-29 00:32:08 +00:00
virtual void windowResized(int x, int y) {}
};
}
#endif