summaryrefslogtreecommitdiff
path: root/source/3rd-party/SDL2/src/events/SDL_mouse_c.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-05-11 22:54:56 +0800
committerchai <chaifix@163.com>2019-05-11 22:54:56 +0800
commit9645be0af1b1d5cb0ad5892d5464e1b23c51b550 (patch)
tree129c716bed8e93312421c3adb2f8e7c4f811602d /source/3rd-party/SDL2/src/events/SDL_mouse_c.h
Diffstat (limited to 'source/3rd-party/SDL2/src/events/SDL_mouse_c.h')
-rw-r--r--source/3rd-party/SDL2/src/events/SDL_mouse_c.h140
1 files changed, 140 insertions, 0 deletions
diff --git a/source/3rd-party/SDL2/src/events/SDL_mouse_c.h b/source/3rd-party/SDL2/src/events/SDL_mouse_c.h
new file mode 100644
index 0000000..ad44492
--- /dev/null
+++ b/source/3rd-party/SDL2/src/events/SDL_mouse_c.h
@@ -0,0 +1,140 @@
+/*
+ Simple DirectMedia Layer
+ Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+*/
+#include "../SDL_internal.h"
+
+#ifndef SDL_mouse_c_h_
+#define SDL_mouse_c_h_
+
+#include "SDL_mouse.h"
+
+typedef Uint32 SDL_MouseID;
+
+struct SDL_Cursor
+{
+ struct SDL_Cursor *next;
+ void *driverdata;
+};
+
+typedef struct
+{
+ int last_x, last_y;
+ Uint32 last_timestamp;
+ Uint8 click_count;
+} SDL_MouseClickState;
+
+typedef struct
+{
+ /* Create a cursor from a surface */
+ SDL_Cursor *(*CreateCursor) (SDL_Surface * surface, int hot_x, int hot_y);
+
+ /* Create a system cursor */
+ SDL_Cursor *(*CreateSystemCursor) (SDL_SystemCursor id);
+
+ /* Show the specified cursor, or hide if cursor is NULL */
+ int (*ShowCursor) (SDL_Cursor * cursor);
+
+ /* This is called when a mouse motion event occurs */
+ void (*MoveCursor) (SDL_Cursor * cursor);
+
+ /* Free a window manager cursor */
+ void (*FreeCursor) (SDL_Cursor * cursor);
+
+ /* Warp the mouse to (x,y) within a window */
+ void (*WarpMouse) (SDL_Window * window, int x, int y);
+
+ /* Warp the mouse to (x,y) in screen space */
+ int (*WarpMouseGlobal) (int x, int y);
+
+ /* Set relative mode */
+ int (*SetRelativeMouseMode) (SDL_bool enabled);
+
+ /* Set mouse capture */
+ int (*CaptureMouse) (SDL_Window * window);
+
+ /* Get absolute mouse coordinates. (x) and (y) are never NULL and set to zero before call. */
+ Uint32 (*GetGlobalMouseState) (int *x, int *y);
+
+ /* Data common to all mice */
+ SDL_MouseID mouseID;
+ SDL_Window *focus;
+ int x;
+ int y;
+ int xdelta;
+ int ydelta;
+ int last_x, last_y; /* the last reported x and y coordinates */
+ float accumulated_wheel_x;
+ float accumulated_wheel_y;
+ Uint32 buttonstate;
+ SDL_bool has_position;
+ SDL_bool relative_mode;
+ SDL_bool relative_mode_warp;
+ float normal_speed_scale;
+ float relative_speed_scale;
+ float scale_accum_x;
+ float scale_accum_y;
+ Uint32 double_click_time;
+ int double_click_radius;
+ SDL_bool touch_mouse_events;
+
+ /* Data for double-click tracking */
+ int num_clickstates;
+ SDL_MouseClickState *clickstate;
+
+ SDL_Cursor *cursors;
+ SDL_Cursor *def_cursor;
+ SDL_Cursor *cur_cursor;
+ SDL_bool cursor_shown;
+
+ /* Driver-dependent data. */
+ void *driverdata;
+} SDL_Mouse;
+
+
+/* Initialize the mouse subsystem */
+extern int SDL_MouseInit(void);
+
+/* Get the mouse state structure */
+SDL_Mouse *SDL_GetMouse(void);
+
+/* Set the default mouse cursor */
+extern void SDL_SetDefaultCursor(SDL_Cursor * cursor);
+
+/* Set the mouse focus window */
+extern void SDL_SetMouseFocus(SDL_Window * window);
+
+/* Send a mouse motion event */
+extern int SDL_SendMouseMotion(SDL_Window * window, SDL_MouseID mouseID, int relative, int x, int y);
+
+/* Send a mouse button event */
+extern int SDL_SendMouseButton(SDL_Window * window, SDL_MouseID mouseID, Uint8 state, Uint8 button);
+
+/* Send a mouse button event with a click count */
+extern int SDL_SendMouseButtonClicks(SDL_Window * window, SDL_MouseID mouseID, Uint8 state, Uint8 button, int clicks);
+
+/* Send a mouse wheel event */
+extern int SDL_SendMouseWheel(SDL_Window * window, SDL_MouseID mouseID, float x, float y, SDL_MouseWheelDirection direction);
+
+/* Shutdown the mouse subsystem */
+extern void SDL_MouseQuit(void);
+
+#endif /* SDL_mouse_c_h_ */
+
+/* vi: set ts=4 sw=4 expandtab: */