Atlas - SDL_categories.c

Home / ext / SDL / src / events Lines: 1 | Size: 7679 bytes [Download] [Show on GitHub] [Search similar files] [Raw] [Raw (proxy)]
[FILE BEGIN]
1/* 2 Simple DirectMedia Layer 3 Copyright (C) 1997-2025 Sam Lantinga <[email protected]> 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#include "SDL_internal.h" 22 23// SDL event categories 24 25#include "SDL_events_c.h" 26#include "SDL_categories_c.h" 27 28SDL_EventCategory SDL_GetEventCategory(Uint32 type) 29{ 30 if (type >= SDL_EVENT_USER && type <= SDL_EVENT_LAST) { 31 return SDL_EVENTCATEGORY_USER; 32 } 33 else if (type >= SDL_EVENT_DISPLAY_FIRST && type <= SDL_EVENT_DISPLAY_LAST) { 34 return SDL_EVENTCATEGORY_DISPLAY; 35 } 36 else if (type >= SDL_EVENT_WINDOW_FIRST && type <= SDL_EVENT_WINDOW_LAST) { 37 return SDL_EVENTCATEGORY_WINDOW; 38 } 39 switch (type) { 40 default: 41 SDL_SetError("Unknown event type"); 42 return SDL_EVENTCATEGORY_UNKNOWN; 43 44 case SDL_EVENT_KEYMAP_CHANGED: 45 case SDL_EVENT_TERMINATING: 46 case SDL_EVENT_LOW_MEMORY: 47 case SDL_EVENT_WILL_ENTER_BACKGROUND: 48 case SDL_EVENT_DID_ENTER_BACKGROUND: 49 case SDL_EVENT_WILL_ENTER_FOREGROUND: 50 case SDL_EVENT_DID_ENTER_FOREGROUND: 51 case SDL_EVENT_LOCALE_CHANGED: 52 case SDL_EVENT_SYSTEM_THEME_CHANGED: 53 return SDL_EVENTCATEGORY_SYSTEM; 54 55 case SDL_EVENT_RENDER_TARGETS_RESET: 56 case SDL_EVENT_RENDER_DEVICE_RESET: 57 case SDL_EVENT_RENDER_DEVICE_LOST: 58 return SDL_EVENTCATEGORY_RENDER; 59 60 case SDL_EVENT_QUIT: 61 return SDL_EVENTCATEGORY_QUIT; 62 63 case SDL_EVENT_KEY_DOWN: 64 case SDL_EVENT_KEY_UP: 65 return SDL_EVENTCATEGORY_KEY; 66 67 case SDL_EVENT_TEXT_EDITING: 68 return SDL_EVENTCATEGORY_EDIT; 69 70 case SDL_EVENT_TEXT_INPUT: 71 return SDL_EVENTCATEGORY_TEXT; 72 73 case SDL_EVENT_KEYBOARD_ADDED: 74 case SDL_EVENT_KEYBOARD_REMOVED: 75 return SDL_EVENTCATEGORY_KDEVICE; 76 77 case SDL_EVENT_TEXT_EDITING_CANDIDATES: 78 return SDL_EVENTCATEGORY_EDIT_CANDIDATES; 79 80 case SDL_EVENT_MOUSE_MOTION: 81 return SDL_EVENTCATEGORY_MOTION; 82 83 case SDL_EVENT_MOUSE_BUTTON_DOWN: 84 case SDL_EVENT_MOUSE_BUTTON_UP: 85 return SDL_EVENTCATEGORY_BUTTON; 86 87 case SDL_EVENT_MOUSE_WHEEL: 88 return SDL_EVENTCATEGORY_WHEEL; 89 90 case SDL_EVENT_MOUSE_ADDED: 91 case SDL_EVENT_MOUSE_REMOVED: 92 return SDL_EVENTCATEGORY_MDEVICE; 93 94 case SDL_EVENT_JOYSTICK_AXIS_MOTION: 95 return SDL_EVENTCATEGORY_JAXIS; 96 97 case SDL_EVENT_JOYSTICK_BALL_MOTION: 98 return SDL_EVENTCATEGORY_JBALL; 99 100 case SDL_EVENT_JOYSTICK_HAT_MOTION: 101 return SDL_EVENTCATEGORY_JHAT; 102 103 case SDL_EVENT_JOYSTICK_BUTTON_DOWN: 104 case SDL_EVENT_JOYSTICK_BUTTON_UP: 105 return SDL_EVENTCATEGORY_JBUTTON; 106 107 case SDL_EVENT_JOYSTICK_ADDED: 108 case SDL_EVENT_JOYSTICK_REMOVED: 109 case SDL_EVENT_JOYSTICK_UPDATE_COMPLETE: 110 return SDL_EVENTCATEGORY_JDEVICE; 111 112 case SDL_EVENT_JOYSTICK_BATTERY_UPDATED: 113 return SDL_EVENTCATEGORY_JBATTERY; 114 115 case SDL_EVENT_GAMEPAD_AXIS_MOTION: 116 return SDL_EVENTCATEGORY_GAXIS; 117 118 case SDL_EVENT_GAMEPAD_BUTTON_DOWN: 119 case SDL_EVENT_GAMEPAD_BUTTON_UP: 120 return SDL_EVENTCATEGORY_GBUTTON; 121 122 case SDL_EVENT_GAMEPAD_ADDED: 123 case SDL_EVENT_GAMEPAD_REMOVED: 124 case SDL_EVENT_GAMEPAD_REMAPPED: 125 case SDL_EVENT_GAMEPAD_UPDATE_COMPLETE: 126 case SDL_EVENT_GAMEPAD_STEAM_HANDLE_UPDATED: 127 return SDL_EVENTCATEGORY_GDEVICE; 128 129 case SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN: 130 case SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION: 131 case SDL_EVENT_GAMEPAD_TOUCHPAD_UP: 132 return SDL_EVENTCATEGORY_GTOUCHPAD; 133 134 case SDL_EVENT_GAMEPAD_SENSOR_UPDATE: 135 return SDL_EVENTCATEGORY_GSENSOR; 136 137 case SDL_EVENT_FINGER_DOWN: 138 case SDL_EVENT_FINGER_UP: 139 case SDL_EVENT_FINGER_CANCELED: 140 case SDL_EVENT_FINGER_MOTION: 141 return SDL_EVENTCATEGORY_TFINGER; 142 143 case SDL_EVENT_CLIPBOARD_UPDATE: 144 return SDL_EVENTCATEGORY_CLIPBOARD; 145 146 case SDL_EVENT_DROP_FILE: 147 case SDL_EVENT_DROP_TEXT: 148 case SDL_EVENT_DROP_BEGIN: 149 case SDL_EVENT_DROP_COMPLETE: 150 case SDL_EVENT_DROP_POSITION: 151 return SDL_EVENTCATEGORY_DROP; 152 153 case SDL_EVENT_AUDIO_DEVICE_ADDED: 154 case SDL_EVENT_AUDIO_DEVICE_REMOVED: 155 case SDL_EVENT_AUDIO_DEVICE_FORMAT_CHANGED: 156 return SDL_EVENTCATEGORY_ADEVICE; 157 158 case SDL_EVENT_SENSOR_UPDATE: 159 return SDL_EVENTCATEGORY_SENSOR; 160 161 case SDL_EVENT_PEN_PROXIMITY_IN: 162 case SDL_EVENT_PEN_PROXIMITY_OUT: 163 return SDL_EVENTCATEGORY_PPROXIMITY; 164 165 case SDL_EVENT_PEN_DOWN: 166 case SDL_EVENT_PEN_UP: 167 return SDL_EVENTCATEGORY_PTOUCH; 168 169 case SDL_EVENT_PEN_BUTTON_DOWN: 170 case SDL_EVENT_PEN_BUTTON_UP: 171 return SDL_EVENTCATEGORY_PBUTTON; 172 173 case SDL_EVENT_PEN_MOTION: 174 return SDL_EVENTCATEGORY_PMOTION; 175 176 case SDL_EVENT_PEN_AXIS: 177 return SDL_EVENTCATEGORY_PAXIS; 178 179 case SDL_EVENT_CAMERA_DEVICE_ADDED: 180 case SDL_EVENT_CAMERA_DEVICE_REMOVED: 181 case SDL_EVENT_CAMERA_DEVICE_APPROVED: 182 case SDL_EVENT_CAMERA_DEVICE_DENIED: 183 return SDL_EVENTCATEGORY_CDEVICE; 184 } 185} 186 187SDL_Window *SDL_GetWindowFromEvent(const SDL_Event *event) 188{ 189 SDL_WindowID windowID; 190 191 switch (SDL_GetEventCategory(event->type)) { 192 case SDL_EVENTCATEGORY_USER: 193 windowID = event->user.windowID; 194 break; 195 case SDL_EVENTCATEGORY_WINDOW: 196 windowID = event->window.windowID; 197 break; 198 case SDL_EVENTCATEGORY_KEY: 199 windowID = event->key.windowID; 200 break; 201 case SDL_EVENTCATEGORY_EDIT: 202 windowID = event->edit.windowID; 203 break; 204 case SDL_EVENTCATEGORY_TEXT: 205 windowID = event->text.windowID; 206 break; 207 case SDL_EVENTCATEGORY_EDIT_CANDIDATES: 208 windowID = event->edit_candidates.windowID; 209 break; 210 case SDL_EVENTCATEGORY_MOTION: 211 windowID = event->motion.windowID; 212 break; 213 case SDL_EVENTCATEGORY_BUTTON: 214 windowID = event->button.windowID; 215 break; 216 case SDL_EVENTCATEGORY_WHEEL: 217 windowID = event->wheel.windowID; 218 break; 219 case SDL_EVENTCATEGORY_TFINGER: 220 windowID = event->tfinger.windowID; 221 break; 222 case SDL_EVENTCATEGORY_PPROXIMITY: 223 windowID = event->pproximity.windowID; 224 break; 225 case SDL_EVENTCATEGORY_PTOUCH: 226 windowID = event->ptouch.windowID; 227 break; 228 case SDL_EVENTCATEGORY_PBUTTON: 229 windowID = event->pbutton.windowID; 230 break; 231 case SDL_EVENTCATEGORY_PMOTION: 232 windowID = event->pmotion.windowID; 233 break; 234 case SDL_EVENTCATEGORY_PAXIS: 235 windowID = event->paxis.windowID; 236 break; 237 case SDL_EVENTCATEGORY_DROP: 238 windowID = event->drop.windowID; 239 break; 240 case SDL_EVENTCATEGORY_RENDER: 241 windowID = event->render.windowID; 242 break; 243 default: 244 // < 0 -> invalid event type (error is set by SDL_GetEventCategory) 245 // else -> event has no associated window (not an error) 246 return NULL; 247 } 248 return SDL_GetWindowFromID(windowID); 249} 250
[FILE END]
(C) 2025 0x4248 (C) 2025 4248 Media and 4248 Systems, All part of 0x4248 See LICENCE files for more information. Not all files are by 0x4248 always check Licencing.