11 ostream &operator <<(ostream &out, const SDL_Event &evt) {
13 #if SDL_VERSION_ATLEAST(2, 0, 4)
14 case SDL_AUDIODEVICEADDED:
15 out << "audio device added: " << evt.adevice;
17 case SDL_AUDIODEVICEREMOVED:
18 out << "audio device removed: " << evt.adevice;
21 case SDL_CONTROLLERAXISMOTION:
22 out << "controller axis motion: " << evt.caxis;
24 case SDL_CONTROLLERBUTTONDOWN:
25 out << "controller button down: " << evt.cbutton;
27 case SDL_CONTROLLERBUTTONUP:
28 out << "controller button up: " << evt.cbutton;
30 case SDL_CONTROLLERDEVICEADDED:
31 out << "controller device added: " << evt.cdevice;
33 case SDL_CONTROLLERDEVICEREMOVED:
34 out << "controller device removed: " << evt.cdevice;
36 case SDL_CONTROLLERDEVICEREMAPPED:
37 out << "controller device remapped: " << evt.cdevice;
39 case SDL_DOLLARGESTURE:
40 out << "dollar gesture: " << evt.dgesture;
42 case SDL_DOLLARRECORD:
43 out << "dollar record: " << evt.dgesture;
46 out << "drop file: " << evt.drop;
48 case SDL_FINGERMOTION:
49 out << "finger motion: " << evt.tfinger;
52 out << "finger down: " << evt.tfinger;
55 out << "finger up: " << evt.tfinger;
58 out << "key down: " << evt.key;
61 out << "key up: " << evt.key;
63 case SDL_JOYAXISMOTION:
64 out << "joystick axis motion: " << evt.jaxis;
66 case SDL_JOYBALLMOTION:
67 out << "joystick ball motion: " << evt.jball;
69 case SDL_JOYHATMOTION:
70 out << "joystick hat motion: " << evt.jhat;
72 case SDL_JOYBUTTONDOWN:
73 out << "joystick button down: " << evt.jbutton;
76 out << "joystick button up: " << evt.jbutton;
78 case SDL_JOYDEVICEADDED:
79 out << "joystick device added: " << evt.jdevice;
81 case SDL_JOYDEVICEREMOVED:
82 out << "joystick device removed: " << evt.jdevice;
85 out << "mouse motion: " << evt.motion;
87 case SDL_MOUSEBUTTONDOWN:
88 out << "mouse button down: " << evt.button;
90 case SDL_MOUSEBUTTONUP:
91 out << "mouse button up: " << evt.button;
94 out << "mouse wheel: " << evt.wheel;
96 case SDL_MULTIGESTURE:
97 out << "multi gesture: " << evt.mgesture;
100 out << "quit: " << evt.quit;
103 out << "sys wm: " << evt.syswm;
105 case SDL_TEXTEDITING:
106 out << "text editing: " << evt.edit;
109 out << "text input: " << evt.text;
112 out << "user: " << evt.user;
114 case SDL_WINDOWEVENT:
115 out << "window: " << evt.window;
124 ostream &operator <<(ostream &out, const SDL_WindowEvent &evt) {
126 case SDL_WINDOWEVENT_SHOWN:
127 out << "shown, window ID: " << evt.windowID;
129 case SDL_WINDOWEVENT_HIDDEN:
130 out << "hidden, window ID: " << evt.windowID;
132 case SDL_WINDOWEVENT_EXPOSED:
133 out << "exposed, window ID: " << evt.windowID;
135 case SDL_WINDOWEVENT_MOVED:
136 out << "moved, window ID: " << evt.windowID
137 << ", position: " << evt.data1 << ' ' << evt.data2;
139 case SDL_WINDOWEVENT_RESIZED:
140 out << "resized, window ID: " << evt.windowID
141 << ", size: " << evt.data1 << 'x' << evt.data2;
143 case SDL_WINDOWEVENT_SIZE_CHANGED:
144 out << "size changed, window ID: " << evt.windowID
145 << ", size: " << evt.data1 << 'x' << evt.data2;
147 case SDL_WINDOWEVENT_MINIMIZED:
148 out << "minimized, window ID: " << evt.windowID;
150 case SDL_WINDOWEVENT_MAXIMIZED:
151 out << "maximized, window ID: " << evt.windowID;
153 case SDL_WINDOWEVENT_RESTORED:
154 out << "restored, window ID: " << evt.windowID;
156 case SDL_WINDOWEVENT_ENTER:
157 out << "mouse entered, window ID: " << evt.windowID;
159 case SDL_WINDOWEVENT_LEAVE:
160 out << "mouse left, window ID: " << evt.windowID;
162 case SDL_WINDOWEVENT_FOCUS_GAINED:
163 out << "focus gained, window ID: " << evt.windowID;
165 case SDL_WINDOWEVENT_FOCUS_LOST:
166 out << "focus lost, window ID: " << evt.windowID;
168 case SDL_WINDOWEVENT_CLOSE:
169 out << "closed, window ID: " << evt.windowID;
178 ostream &operator <<(ostream &out, const SDL_KeyboardEvent &evt) {
179 out << "window ID: " << evt.windowID
180 << ", state: " << (evt.state == SDL_PRESSED ? "pressed" : "released")
181 << ", repeat: " << (evt.repeat ? "yes" : "no")
182 << ", keysym: " << evt.keysym;
186 ostream &operator <<(ostream &out, const SDL_Keysym &keysym) {
187 out << "scancode: " << int(keysym.scancode)
188 << ", sym: " << int(keysym.sym)
189 << " (\"" << SDL_GetKeyName(keysym.sym) << "\")";
192 if (keysym.mod & KMOD_LSHIFT) {
195 if (keysym.mod & KMOD_RSHIFT) {
198 if (keysym.mod & KMOD_LCTRL) {
201 if (keysym.mod & KMOD_RCTRL) {
204 if (keysym.mod & KMOD_LALT) {
207 if (keysym.mod & KMOD_RALT) {
210 if (keysym.mod & KMOD_LGUI) {
213 if (keysym.mod & KMOD_RGUI) {
216 if (keysym.mod & KMOD_NUM) {
219 if (keysym.mod & KMOD_CAPS) {
222 if (keysym.mod & KMOD_MODE) {
229 ostream &operator <<(ostream &out, const SDL_TextEditingEvent &evt) {
230 out << "window ID: " << evt.windowID
231 << ", text: \"" << evt.text
232 << "\", start: " << evt.start
233 << ", length: " << evt.length;
237 ostream &operator <<(ostream &out, const SDL_TextInputEvent &evt) {
238 out << "window ID: " << evt.windowID
239 << ", text: \"" << evt.text << '"';
243 ostream &operator <<(ostream &out, const SDL_MouseMotionEvent &evt) {
244 out << "window ID: " << evt.windowID
245 << ", mouse ID: " << evt.which
246 << ", position: " << evt.x << ' ' << evt.y
247 << ", delta: " << evt.xrel << ' ' << evt.yrel;
250 if (evt.state & SDL_BUTTON_LMASK) {
253 if (evt.state & SDL_BUTTON_MMASK) {
256 if (evt.state & SDL_BUTTON_RMASK) {
259 if (evt.state & SDL_BUTTON_X1MASK) {
262 if (evt.state & SDL_BUTTON_X2MASK) {
269 ostream &operator <<(ostream &out, const SDL_MouseButtonEvent &evt) {
270 out << "window ID: " << evt.windowID
271 << ", mouse ID: " << evt.which
273 switch (evt.button) {
274 case SDL_BUTTON_LEFT:
277 case SDL_BUTTON_MIDDLE:
280 case SDL_BUTTON_RIGHT:
290 out << int(evt.button);
293 out << ", state: " << (evt.state == SDL_PRESSED ? "pressed" : "released")
294 << ", clicks: " << int(evt.clicks)
295 << ", position: " << evt.x << ' ' << evt.y;
299 ostream &operator <<(ostream &out, const SDL_MouseWheelEvent &evt) {
300 out << "window ID: " << evt.windowID
301 << ", mouse ID: " << evt.which
302 << ", delta: " << evt.x << ' ' << evt.y
303 #if SDL_VERSION_ATLEAST(2, 0, 4)
304 << ", direction: " << (evt.direction == SDL_MOUSEWHEEL_NORMAL ? "normal" : "flipped")
310 ostream &operator <<(ostream &out, const SDL_JoyAxisEvent &evt) {
311 out << "joystick ID: " << evt.which
312 << ", axis ID: " << int(evt.axis)
313 << ", value: " << (float(evt.value) / 32768.0f);
317 ostream &operator <<(ostream &out, const SDL_JoyBallEvent &evt) {
318 out << "joystick ID: " << evt.which
319 << ", ball ID: " << int(evt.ball)
320 << ", delta: " << evt.xrel << ' ' << evt.yrel;
324 ostream &operator <<(ostream &out, const SDL_JoyHatEvent &evt) {
325 out << "joystick ID: " << evt.which
326 << ", hat ID: " << int(evt.hat)
335 case SDL_HAT_RIGHTUP:
341 case SDL_HAT_CENTERED:
347 case SDL_HAT_LEFTDOWN:
353 case SDL_HAT_RIGHTDOWN:
363 ostream &operator <<(ostream &out, const SDL_JoyButtonEvent &evt) {
364 out << "joystick ID: " << evt.which
365 << ", button ID: " << int(evt.button)
366 << ", state: " << (evt.state == SDL_PRESSED ? "pressed" : "released");
370 ostream &operator <<(ostream &out, const SDL_JoyDeviceEvent &evt) {
371 out << "joystick ID: " << evt.which;
375 ostream &operator <<(ostream &out, const SDL_ControllerAxisEvent &evt) {
376 out << "controller ID: " << evt.which
377 << ", axis ID: " << int(evt.axis)
378 << ", value: " << (float(evt.value) / 32768.0f);
382 ostream &operator <<(ostream &out, const SDL_ControllerButtonEvent &evt) {
383 out << "controller ID: " << evt.which
384 << ", button ID: " << int(evt.button)
385 << ", state: " << (evt.state == SDL_PRESSED ? "pressed" : "released");
389 ostream &operator <<(ostream &out, const SDL_ControllerDeviceEvent &evt) {
390 out << "controller ID: " << evt.which;
394 #if SDL_VERSION_ATLEAST(2, 0, 4)
395 ostream &operator <<(ostream &out, const SDL_AudioDeviceEvent &evt) {
396 out << "device ID: " << evt.which
397 << ", capture: " << (evt.iscapture ? "yes" : "no");
402 ostream &operator <<(ostream &out, const SDL_QuitEvent &) {
407 ostream &operator <<(ostream &out, const SDL_UserEvent &evt) {
408 out << "window ID: " << evt.windowID
409 << ", code: " << evt.code
410 << ", data 1: " << evt.data1
411 << ", data 2: " << evt.data2;
415 ostream &operator <<(ostream &out, const SDL_SysWMEvent &evt) {
417 out << "with message";
419 out << "without message";
424 ostream &operator <<(ostream &out, const SDL_TouchFingerEvent &evt) {
425 out << "device ID: " << evt.touchId
426 << ", finger ID: " << evt.fingerId
427 << ", position: " << evt.x << ' ' << evt.y
428 << ", delta: " << evt.dx << ' ' << evt.dy
429 << ", pressure: " << evt.pressure;
433 ostream &operator <<(ostream &out, const SDL_MultiGestureEvent &evt) {
434 out << "device ID: " << evt.touchId
435 << ", theta: " << evt.dTheta
436 << ", distance: " << evt.dDist
437 << ", position: " << evt.x << ' ' << evt.y
438 << ", fingers: " << evt.numFingers;
442 ostream &operator <<(ostream &out, const SDL_DollarGestureEvent &evt) {
443 out << "device ID: " << evt.touchId
444 << ", gesture ID: " << evt.gestureId
445 << ", fingers: " << evt.numFingers
446 << ", error: " << evt.error
447 << ", position: " << evt.x << ' ' << evt.y;
451 ostream &operator <<(ostream &out, const SDL_DropEvent &evt) {
452 out << "file: " << evt.file;