Gamedev Framework (gf)  0.19.0
A C++17 framework for 2D games
Event.h
1 /*
2  * Gamedev Framework (gf)
3  * Copyright (C) 2016-2021 Julien Bernard
4  *
5  * This software is provided 'as-is', without any express or implied
6  * warranty. In no event will the authors be held liable for any damages
7  * arising from the use of this software.
8  *
9  * Permission is granted to anyone to use this software for any purpose,
10  * including commercial applications, and to alter it and redistribute it
11  * freely, subject to the following restrictions:
12  *
13  * 1. The origin of this software must not be misrepresented; you must not
14  * claim that you wrote the original software. If you use this software
15  * in a product, an acknowledgment in the product documentation would be
16  * appreciated but is not required.
17  * 2. Altered source versions must be plainly marked as such, and must not be
18  * misrepresented as being the original software.
19  * 3. This notice may not be removed or altered from any source distribution.
20  *
21  * Part of this file comes from SFML, with the same license:
22  * Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org)
23  */
24 #ifndef GF_EVENT_H
25 #define GF_EVENT_H
26 
27 #include <cstdint>
28 
29 #include "Gamepad.h"
30 #include "GraphicsApi.h"
31 #include "Keyboard.h"
32 #include "Mouse.h"
33 #include "Rune.h"
34 #include "Vector.h"
35 
36 namespace gf {
37 #ifndef DOXYGEN_SHOULD_SKIP_THIS
38 inline namespace v1 {
39 #endif
40 
45  enum class EventType {
46  // global event
47  Quit,
48 
49  // window events
50  Resized,
51  Closed,
52  FocusGained,
53  FocusLost,
54  Shown,
55  Hidden,
56  Exposed,
57  Minimized,
58  Maximized,
59  Restored,
60 
61  // inputs events
62  KeyPressed,
63  KeyRepeated,
64  KeyReleased,
65 
69  MouseMoved,
70  MouseEntered,
71  MouseLeft,
72 
78 
79  TextEntered,
80 
81  TouchBegan,
82  TouchMoved,
83  TouchEnded,
84  };
85 
90  struct WindowEvent {
91  uint32_t windowId;
92  };
93 
98  struct ResizeEvent {
99  uint32_t windowId;
101  };
102 
107  struct KeyEvent {
108  uint32_t windowId;
112  };
113 
118  struct TextEvent {
119  uint32_t windowId;
121  };
122 
128  uint32_t windowId;
131  uint8_t clicks;
132  };
133 
139  uint32_t windowId;
142  };
143 
149  uint32_t windowId;
151  };
152 
160  };
161 
169  int16_t value;
170  };
171 
178  };
179 
186  };
187 
192  struct TouchEvent {
193  int64_t finger;
196  float pressure;
197  };
198 
224  struct GF_GRAPHICS_API Event {
226  uint32_t timestamp;
227 
228  union {
241  };
242 
243  };
244 
245 #ifndef DOXYGEN_SHOULD_SKIP_THIS
246 }
247 #endif
248 }
249 
250 #endif // GL_EVENT_H
A gamepad was connected (data in event.gamepadConnection)
GamepadButtonEvent gamepadButton
Gamepad button event parameters (EventType::GamepadButtonPressed, EventType::GamepadButtonReleased) ...
Definition: Event.h:236
The window is exposed (data in event.window)
MouseButtonEvent mouseButton
Mouse button event parameters (EventType::MouseButtonPressed, EventType::MouseButtonReleased) ...
Definition: Event.h:233
The window was resized (data in event.resize)
The application is asked to quit.
GamepadButton
The gamepad buttons.
Definition: Gamepad.h:43
MouseButton button
Code of the button that has been pressed.
Definition: Event.h:129
GamepadHwId id
Hardware id of the gamepad.
Definition: Event.h:177
Gamepad button event parameters (EventType::GamepadButtonPressed, EventType::GamepadButtonReleased) ...
Definition: Event.h:157
Gamepad connection event parameters (EventType::GamepadConnected)
Definition: Event.h:176
MouseCursorEvent mouseCursor
Mouse cursor move event parameters (EventType::MouseMoved)
Definition: Event.h:234
Flags< Mod > modifiers
Modifiers that are pressed.
Definition: Event.h:111
Vector2i size
The new size of the window.
Definition: Event.h:100
GamepadAxis
The gamepad axis.
Definition: Gamepad.h:71
GamepadId
A gamepad identifier.
Definition: Gamepad.h:121
The window requested to be closed (data in event.window)
Vector2i coords
Position of the touch.
Definition: Event.h:194
GamepadConnectionEvent gamepadConnection
Gamepad connection event parameters (EventType::GamepadConnected)
Definition: Event.h:238
The mouse cursor entered the window (no data)
GamepadButton button
Button of the gamepad.
Definition: Event.h:159
MouseWheelEvent mouseWheel
Mouse wheel event parameters (EventType::MouseWheelScrolled)
Definition: Event.h:235
uint32_t windowId
The window id of the event.
Definition: Event.h:139
GamepadAxis axis
Axis of the gamepad.
Definition: Event.h:168
The mouse cursor left the window (no data)
MouseButton
Mouse buttons.
Definition: Mouse.h:36
uint32_t windowId
The window id of the event.
Definition: Event.h:149
Keycode keycode
Keycode of the key.
Definition: Event.h:109
Vector2i motion
Relative position of the touch.
Definition: Event.h:195
TextEvent text
Text event parameters (EventType::TextEntered)
Definition: Event.h:232
EventType
Enumeration of the different types of events.
Definition: Event.h:45
GamepadDisconnectionEvent gamepadDisconnection
Gamepad disconnection event parameters (EventType::GamepadDisconnected)
Definition: Event.h:239
A gamepad button was released (data in event.gamepadButton)
GamepadId id
Id of the gamepad.
Definition: Event.h:185
Text event parameters (EventType::TextEntered)
Definition: Event.h:118
uint8_t clicks
Number of clicks.
Definition: Event.h:131
Gamepad axis event parameters (EventType::GamepadAxisMoved)
Definition: Event.h:166
The window is restored (data in event.window)
uint32_t windowId
The window id of the event.
Definition: Event.h:128
A gamepad axis was moved (data in event.gamepadAxis)
TouchEvent touch
Touch event parameters (EventType::TouchBegan, EventType::Moved, EventType::Ended) ...
Definition: Event.h:240
The window is hidden (data in event.window)
A key was repeated (data in event.key)
Gamepad disconnection event parameters (EventType::GamepadDisconnected)
Definition: Event.h:184
The mouse wheel was scrolled (data in event.mouseWheel)
The window is minimized (data in event.window)
ResizeEvent resize
Size event parameters (EventType::Resized)
Definition: Event.h:230
A key was pressed (data in event.key)
GamepadId id
Id of the gamepad.
Definition: Event.h:158
int16_t value
Value of the axis.
Definition: Event.h:169
Vector2i offset
Offset of the mouse wheel.
Definition: Event.h:150
The window lost focus (data in event.window)
Scancode
Scancodes.
Definition: Keyboard.h:51
A gamepad was disconnected (data in event.gamepadDisconnection)
GamepadId id
Id of the gamepad.
Definition: Event.h:167
The namespace for gf classes.
Definition: Action.h:35
The window gained focus (data in event.window)
Mouse button event parameters (EventType::MouseButtonPressed, EventType::MouseButtonReleased) ...
Definition: Event.h:127
A character encoded in UTF-8.
Definition: Rune.h:37
uint32_t windowId
The window id of the event.
Definition: Event.h:108
WindowEvent window
Window event parameters (EventType::Closed, EventType::FocusGained, EventType::FocusLost) ...
Definition: Event.h:229
Resize event parameters (EventType::Resized)
Definition: Event.h:98
uint32_t windowId
The window id of the event.
Definition: Event.h:119
A gamepad button was pressed (data in event.gamepadButton)
Touch event parameters (EventType::TouchBegan, EventType::TouchMoved, EventType::TouchEnded) ...
Definition: Event.h:192
float pressure
The pressure applied (between 0 and 1)
Definition: Event.h:196
Vector2i coords
Position of the mouse cursor.
Definition: Event.h:130
uint32_t windowId
The window id of the event.
Definition: Event.h:91
Vector2i motion
Relative position of the mouse cursor.
Definition: Event.h:141
Mouse wheel event parameters (EventType::MouseWheelScrolled)
Definition: Event.h:148
A mouse button was pressed (data in event.mouseButton)
The window is shown (data in event.window)
The mouse cursor moved (data in event.mouseCursor)
Mouse cursor move event parameters (EventType::MouseMoved)
Definition: Event.h:138
GamepadHwId
A gamepad hardware identifier.
Definition: Gamepad.h:104
uint32_t windowId
The window id of the event.
Definition: Event.h:99
EventType type
Type of the event.
Definition: Event.h:225
A text was entered (data in event.text)
Rune rune
The rune.
Definition: Event.h:120
KeyEvent key
Key event parameters (EventType::KeyPressed, EventType::KeyReleased, EventType::KeyRepeated) ...
Definition: Event.h:231
Keycode
Keycodes.
Definition: Keyboard.h:280
Vector2i coords
Position of the mouse cursor.
Definition: Event.h:140
Defines a system event and its parameters.
Definition: Event.h:224
Keyboard event parameters (EventType::KeyPressed, EventType::KeyReleased, EventType::KeyRepeated) ...
Definition: Event.h:107
Scancode scancode
Scancode of the key.
Definition: Event.h:110
int64_t finger
Finger that touched.
Definition: Event.h:193
Window event parameters (EventType::Closed, EventType::FocusGained, EventType::FocusLost, EventType::Shown, EventType::Hidden, EventType::Exposed, EventType::Minimized, EventType::Maximized, EventType::Restored)
Definition: Event.h:90
The window is maximized (data in event.window)
GamepadAxisEvent gamepadAxis
Gamepad axis event parameters (EventType::GamepadAxisMoved)
Definition: Event.h:237
A key was released (data in event.key)
uint32_t timestamp
A timestamp.
Definition: Event.h:226
A mouse button was released (data in event.mouseButton)