File: events.hpp

package info (click to toggle)
openmw 0.49.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 33,992 kB
  • sloc: cpp: 372,479; xml: 2,149; sh: 1,403; python: 797; makefile: 26
file content (107 lines) | stat: -rw-r--r-- 2,845 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#ifndef _SFO_EVENTS_H
#define _SFO_EVENTS_H

#include <SDL_events.h>
#include <SDL_types.h>
#include <SDL_version.h>

////////////
// Events //
////////////

namespace SDLUtil
{

    /** Extended mouse event struct where we treat the wheel like an axis, like everyone expects */
    struct MouseMotionEvent : SDL_MouseMotionEvent
    {

        Sint32 zrel;
        Sint32 z;
    };

    struct TouchEvent
    {
        int mDevice;
        int mFinger;
        float mX;
        float mY;
        float mPressure;

#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
    };

    ///////////////
    // Listeners //
    ///////////////

    class MouseListener
    {
    public:
        virtual ~MouseListener() {}
        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;
    };

    class SensorListener
    {
    public:
        virtual ~SensorListener() {}
        virtual void sensorUpdated(const SDL_SensorEvent& arg) = 0;
        virtual void displayOrientationChanged() = 0;
    };

    class KeyListener
    {
    public:
        virtual ~KeyListener() {}
        virtual void textInput(const SDL_TextInputEvent& arg) {}
        virtual void keyPressed(const SDL_KeyboardEvent& arg) = 0;
        virtual void keyReleased(const SDL_KeyboardEvent& arg) = 0;
    };

    class ControllerListener
    {
    public:
        virtual ~ControllerListener() {}

        virtual void buttonPressed(int deviceID, const SDL_ControllerButtonEvent& evt) = 0;
        virtual void buttonReleased(int deviceID, const SDL_ControllerButtonEvent& evt) = 0;

        virtual void axisMoved(int deviceID, const SDL_ControllerAxisEvent& arg) = 0;

        virtual void controllerAdded(int deviceID, const SDL_ControllerDeviceEvent& arg) = 0;
        virtual void controllerRemoved(const SDL_ControllerDeviceEvent& arg) = 0;

        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;
    };

    class WindowListener
    {
    public:
        virtual ~WindowListener() {}

        /** @remarks The window's visibility changed */
        virtual void windowVisibilityChange(bool visible) {}

        virtual void windowClosed() {}

        virtual void windowResized(int x, int y) {}
    };

}

#endif