rolmodl
C++ API for the Simple Directmedia Library 2 (SDL2)
Event.hpp
1 #pragma once
2 
3 #include <cstdint>
4 #include <variant>
5 #include <optional>
6 
7 #include <SDL.h>
8 
9 namespace rolmodl {
10  enum class ButtonState;
11  namespace button_state::unsafe {
12  constexpr ButtonState fromSDLEnum(const uint8_t s) noexcept;
13  constexpr uint8_t toSDLEnum(const ButtonState s) noexcept;
14  }
15 
16  struct Keysym;
17 
18  struct HatState;
19  namespace hatState::position {
20  // constexpr const char* toString(const HatState::Position p); // todo?
21  }
22 
23  namespace event {
24  struct Timestamped;
25  struct WindowSpecific;
26 
27  struct Quit;
28  struct User;
29 
30  struct Edit;
31  struct Text;
32 
33  namespace touch {
34  struct Motion;
35  struct Up;
36  struct Down;
37  }
38 
39  namespace key {
40  struct Up;
41  struct Down;
42  }
43 
44  namespace mouse {
45  enum class WheelDirection;
46  namespace wheel_direction::unsafe {
47  constexpr WheelDirection fromSDLEnum(const uint32_t v) noexcept;
48  constexpr uint32_t toSDLEnum(const WheelDirection v) noexcept;
49  }
50 
51  namespace button {
52  struct Up;
53  struct Down;
54  }
55  struct Motion;
56  struct Wheel;
57  }
58 
59  namespace joystick {
60  struct Axis;
61  struct Ball;
62  struct Hat;
63  namespace button {
64  struct Up;
65  struct Down;
66  }
67  namespace device {
68  struct Added;
69  struct Removed;
70  }
71  }
72 
73  namespace controller {
74  struct Axis;
75  namespace button {
76  struct Up;
77  struct Down;
78  }
79  namespace device {
80  struct Added;
81  struct Removed;
82  struct Remapped;
83  }
84  }
85 
86  namespace gesture {
87  struct Builtin;
88  namespace custom {
89  struct Recorded;
90  struct Detected;
91  }
92  }
93 
94  namespace window {
95  struct Close;
96  struct HitTest;
97 
98  struct Shown;
99  struct Hidden;
100  struct Exposed;
101 
102  struct Moved;
103  struct Resized;
104  struct SizeChanged;
105 
106  struct Minimized;
107  struct Maximized;
108  struct Restored;
109 
110  namespace mouse {
111  struct Entered;
112  struct Left;
113  }
114 
115  namespace focus {
116  struct Gained;
117  struct Lost;
118  struct Offered;
119  }
120  }
121  struct SystemWindow;
122 
123  namespace drag_n_drop {
124  struct File;
125  struct Text;
126  struct Begin;
127  struct Complete;
128  }
129 
130  namespace audio_device {
131  struct Added;
132  struct Removed;
133  }
134  }
135 
136  using Event = std::variant<
137  event::Quit,
138  event::User,
139 
140  event::Edit,
141  event::Text,
142 
143  event::touch::Motion,
144  event::touch::Up,
145  event::touch::Down,
146 
147  event::key::Up,
148  event::key::Down,
149 
150  event::mouse::button::Up,
151  event::mouse::button::Down,
152  event::mouse::Motion,
153  event::mouse::Wheel,
154 
155  event::joystick::Axis,
156  event::joystick::Ball,
157  event::joystick::Hat,
158  event::joystick::button::Up,
159  event::joystick::button::Down,
160  event::joystick::device::Added,
161  event::joystick::device::Removed,
162 
163  event::controller::Axis,
164  event::controller::button::Up,
165  event::controller::button::Down,
166  event::controller::device::Added,
167  event::controller::device::Removed,
168  event::controller::device::Remapped,
169 
170  event::gesture::Builtin,
171  event::gesture::custom::Recorded,
172  event::gesture::custom::Detected,
173 
174  // window
175  event::window::Close,
176  event::window::HitTest,
177 
178  event::window::Shown,
179  event::window::Hidden,
180  event::window::Exposed,
181 
182  event::window::Moved,
183  event::window::Resized,
184  event::window::SizeChanged,
185 
186  event::window::Minimized,
187  event::window::Maximized,
188  event::window::Restored,
189 
190  event::window::mouse::Entered,
191  event::window::mouse::Left,
192 
193  event::window::focus::Gained,
194  event::window::focus::Lost,
195  event::window::focus::Offered,
196 
197  event::SystemWindow,
198  //
199 
200  event::drag_n_drop::File,
201  event::drag_n_drop::Text,
202  event::drag_n_drop::Begin,
203  event::drag_n_drop::Complete,
204 
205  event::audio_device::Added,
206  event::audio_device::Removed>;
207  namespace event {
208  std::optional<Event> poll() noexcept;
209  }
210 }
cstdint
rolmodl
Main namespace.
Definition: Base.cpp:7
optional
variant