summaryrefslogtreecommitdiffstats
path: root/xbmc/windowing/XBMC_events.h
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/windowing/XBMC_events.h')
-rw-r--r--xbmc/windowing/XBMC_events.h134
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;
+