diff options
Diffstat (limited to 'xbmc/windowing/XBMC_events.h')
-rw-r--r-- | xbmc/windowing/XBMC_events.h | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/xbmc/windowing/XBMC_events.h b/xbmc/windowing/XBMC_events.h new file mode 100644 index 0000000..d9bf3ea --- /dev/null +++ b/xbmc/windowing/XBMC_events.h @@ -0,0 +1,134 @@ +/* + * SDL - Simple DirectMedia Layer + * Copyright (C) 1997-2009 Sam Lantinga + * Sam Lantinga + * slouken@libsdl.org + * + * Copyright (C) 2005-2018 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#pragma once + +/* Include file for SDL event handling */ + +#include "Resolution.h" +#include "input/XBMC_keyboard.h" + +/* Event enumerations */ +typedef enum +{ + XBMC_NOEVENT = 0, /* Unused (do not remove) */ + XBMC_KEYDOWN, /* Keys pressed */ + XBMC_KEYUP, /* Keys released */ + XBMC_MOUSEMOTION, /* Mouse moved */ + XBMC_MOUSEBUTTONDOWN, /* Mouse button pressed */ + XBMC_MOUSEBUTTONUP, /* Mouse button released */ + XBMC_QUIT, /* User-requested quit */ + XBMC_VIDEORESIZE, /* User resized video mode */ + XBMC_FULLSCREEN_UPDATE, /* Triggered by an OS event when Kodi is running in fullscreen, rescale and repositioning is required */ + XBMC_VIDEOMOVE, /* User moved the window */ + XBMC_MODECHANGE, /* Video mode must be changed */ + XBMC_TOUCH, + XBMC_BUTTON, /* Button (remote) pressed */ + XBMC_SETFOCUS, + XBMC_USEREVENT, + + XBMC_MAXEVENT = 256 /* XBMC_EventType is represented as uchar */ +} XBMC_EventType; + +/* Keyboard event structure */ +typedef struct XBMC_KeyboardEvent { + XBMC_keysym keysym; +} XBMC_KeyboardEvent; + +/* Mouse motion event structure */ +typedef struct XBMC_MouseMotionEvent { + uint16_t x, y; /* The X/Y coordinates of the mouse */ +} XBMC_MouseMotionEvent; + +/* Mouse button event structure */ +typedef struct XBMC_MouseButtonEvent { + unsigned char button; /* The mouse button index */ + uint16_t x, y; /* The X/Y coordinates of the mouse at press time */ +} XBMC_MouseButtonEvent; + +/* The "window resized" event + When you get this event, you are responsible for setting a new video + mode with the new width and height. + */ +typedef struct XBMC_ResizeEvent { + int w; /* New width */ + int h; /* New height */ +} XBMC_ResizeEvent; + +typedef struct XBMC_MoveEvent { + int x; /* New x position */ + int y; /* New y position */ +} XBMC_MoveEvent; + +struct XBMC_ModeChangeEvent +{ + RESOLUTION res; +}; + +/* The "quit requested" event */ +typedef struct XBMC_QuitEvent { +} XBMC_QuitEvent; + +/* A user-defined event type */ +typedef struct XBMC_UserEvent { + int code; /* User defined event code */ + void *data1; /* User defined data pointer */ + void *data2; /* User defined data pointer */ +} XBMC_UserEvent; + +/* Multimedia keys on keyboards / remotes are mapped to APPCOMMAND events */ +typedef struct XBMC_AppCommandEvent { + unsigned int action; /* One of ACTION_... */ +} XBMC_AppCommandEvent; + +/* Mouse motion event structure */ +typedef struct XBMC_TouchEvent { + int action; /* action ID */ + float x, y; /* The X/Y coordinates of the mouse */ + float x2, y2; /* Additional X/Y coordinates */ + float x3, y3; /* Additional X/Y coordinates */ + int pointers; /* number of touch pointers */ +} XBMC_TouchEvent; + +typedef struct XBMC_SetFocusEvent { + int x; /* x position */ + int y; /* y position */ +} XBMC_SetFocusEvent; + +/* Button event structure */ +typedef struct XBMC_ButtonEvent +{ + uint32_t button; + uint32_t holdtime; +} XBMC_ButtonEvent; + +/* General event structure */ +typedef struct XBMC_Event { + uint8_t type; + union + { + XBMC_KeyboardEvent key; + XBMC_MouseMotionEvent motion; + XBMC_MouseButtonEvent button; + XBMC_ResizeEvent resize; + XBMC_MoveEvent move; + XBMC_ModeChangeEvent mode; + XBMC_QuitEvent quit; + XBMC_UserEvent user; + XBMC_AppCommandEvent appcommand; + XBMC_TouchEvent touch; + XBMC_ButtonEvent keybutton; + XBMC_SetFocusEvent focus; + }; +} XBMC_Event; + |