SDL  2.0
SDL_mouse_c.h
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
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 #ifndef SDL_mouse_c_h_
24 #define SDL_mouse_c_h_
25 
26 #include "SDL_mouse.h"
27 
29 
30 struct SDL_Cursor
31 {
32  struct SDL_Cursor *next;
33  void *driverdata;
34 };
35 
36 typedef struct
37 {
38  int last_x, last_y;
42 
43 typedef struct
44 {
45  /* Create a cursor from a surface */
46  SDL_Cursor *(*CreateCursor) (SDL_Surface * surface, int hot_x, int hot_y);
47 
48  /* Create a system cursor */
49  SDL_Cursor *(*CreateSystemCursor) (SDL_SystemCursor id);
50 
51  /* Show the specified cursor, or hide if cursor is NULL */
52  int (*ShowCursor) (SDL_Cursor * cursor);
53 
54  /* This is called when a mouse motion event occurs */
55  void (*MoveCursor) (SDL_Cursor * cursor);
56 
57  /* Free a window manager cursor */
58  void (*FreeCursor) (SDL_Cursor * cursor);
59 
60  /* Warp the mouse to (x,y) within a window */
61  void (*WarpMouse) (SDL_Window * window, int x, int y);
62 
63  /* Warp the mouse to (x,y) in screen space */
64  int (*WarpMouseGlobal) (int x, int y);
65 
66  /* Set relative mode */
67  int (*SetRelativeMouseMode) (SDL_bool enabled);
68 
69  /* Set mouse capture */
70  int (*CaptureMouse) (SDL_Window * window);
71 
72  /* Get absolute mouse coordinates. (x) and (y) are never NULL and set to zero before call. */
73  Uint32 (*GetGlobalMouseState) (int *x, int *y);
74 
75  /* Data common to all mice */
78  int x;
79  int y;
80  int xdelta;
81  int ydelta;
82  int last_x, last_y; /* the last reported x and y coordinates */
94 
95  /* Data for double-click tracking */
98 
103 
104  /* Driver-dependent data. */
105  void *driverdata;
106 } SDL_Mouse;
107 
108 
109 /* Initialize the mouse subsystem */
110 extern int SDL_MouseInit(void);
111 
112 /* Get the mouse state structure */
113 SDL_Mouse *SDL_GetMouse(void);
114 
115 /* Set the default double-click interval */
116 extern void SDL_SetDoubleClickTime(Uint32 interval);
117 
118 /* Set the default mouse cursor */
119 extern void SDL_SetDefaultCursor(SDL_Cursor * cursor);
120 
121 /* Set the mouse focus window */
122 extern void SDL_SetMouseFocus(SDL_Window * window);
123 
124 /* Send a mouse motion event */
125 extern int SDL_SendMouseMotion(SDL_Window * window, SDL_MouseID mouseID, int relative, int x, int y);
126 
127 /* Send a mouse button event */
129 
130 /* Send a mouse button event with a click count */
131 extern int SDL_SendMouseButtonClicks(SDL_Window * window, SDL_MouseID mouseID, Uint8 state, Uint8 button, int clicks);
132 
133 /* Send a mouse wheel event */
134 extern int SDL_SendMouseWheel(SDL_Window * window, SDL_MouseID mouseID, float x, float y, SDL_MouseWheelDirection direction);
135 
136 /* Shutdown the mouse subsystem */
137 extern void SDL_MouseQuit(void);
138 
139 #endif /* SDL_mouse_c_h_ */
140 
141 /* vi: set ts=4 sw=4 expandtab: */
int SDL_SendMouseMotion(SDL_Window *window, SDL_MouseID mouseID, int relative, int x, int y)
Definition: SDL_mouse.c:237
void SDL_MouseQuit(void)
Definition: SDL_mouse.c:566
GLuint id
int last_y
Definition: SDL_mouse_c.h:82
void SDL_SetDoubleClickTime(Uint32 interval)
Definition: SDL_mouse.c:118
SDL_Texture * button
SDL_bool has_position
Definition: SDL_mouse_c.h:86
GLint GLint GLint GLint GLint x
Definition: SDL_opengl.h:1574
Uint32 buttonstate
Definition: SDL_mouse_c.h:85
SDL_bool relative_mode_warp
Definition: SDL_mouse_c.h:88
int SDL_SendMouseWheel(SDL_Window *window, SDL_MouseID mouseID, float x, float y, SDL_MouseWheelDirection direction)
Definition: SDL_mouse.c:512
SDL_Window * focus
Definition: SDL_mouse_c.h:77
struct xkb_state * state
float scale_accum_y
Definition: SDL_mouse_c.h:92
EGLSurface surface
Definition: eglext.h:248
SDL_MouseClickState * clickstate
Definition: SDL_mouse_c.h:97
A collection of pixels used in software blitting.
Definition: SDL_surface.h:69
int num_clickstates
Definition: SDL_mouse_c.h:96
int SDL_MouseInit(void)
Definition: SDL_mouse.c:80
int ydelta
Definition: SDL_mouse_c.h:81
uint32_t Uint32
Definition: SDL_stdinc.h:181
int SDL_SendMouseButtonClicks(SDL_Window *window, SDL_MouseID mouseID, Uint8 state, Uint8 button, int clicks)
Definition: SDL_mouse.c:499
SDL_Cursor * cursors
Definition: SDL_mouse_c.h:99
SDL_MouseID mouseID
Definition: SDL_mouse_c.h:76
Uint32 SDL_MouseID
Definition: SDL_mouse_c.h:28
SDL_Mouse * SDL_GetMouse(void)
Definition: SDL_mouse.c:112
SDL_bool touch_mouse_events
Definition: SDL_mouse_c.h:93
uint8_t Uint8
Definition: SDL_stdinc.h:157
float accumulated_wheel_y
Definition: SDL_mouse_c.h:84
void SDL_SetDefaultCursor(SDL_Cursor *cursor)
Definition: SDL_mouse.c:101
SDL_bool cursor_shown
Definition: SDL_mouse_c.h:102
SDL_bool relative_mode
Definition: SDL_mouse_c.h:87
SDL_SystemCursor
Cursor types for SDL_CreateSystemCursor().
Definition: SDL_mouse.h:46
float scale_accum_x
Definition: SDL_mouse_c.h:91
GLint GLint GLint GLint GLint GLint y
Definition: SDL_opengl.h:1574
GLenum GLenum GLsizei const GLuint GLboolean enabled
SDL_Cursor * cursor
float normal_speed_scale
Definition: SDL_mouse_c.h:89
SDL_bool
Definition: SDL_stdinc.h:139
struct SDL_Cursor * next
Definition: SDL_mouse_c.h:32
int xdelta
Definition: SDL_mouse_c.h:80
EGLSurface EGLNativeWindowType * window
Definition: eglext.h:1025
SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char const char SDL_SCANF_FORMAT_STRING const char return SDL_ThreadFunction const char void return Uint32 return Uint32 void
The type used to identify a window.
Definition: SDL_sysvideo.h:73
int SDL_SendMouseButton(SDL_Window *window, SDL_MouseID mouseID, Uint8 state, Uint8 button)
Definition: SDL_mouse.c:506
float accumulated_wheel_x
Definition: SDL_mouse_c.h:83
SDL_Cursor * cur_cursor
Definition: SDL_mouse_c.h:101
void * driverdata
Definition: SDL_mouse_c.h:105
void SDL_SetMouseFocus(SDL_Window *window)
Definition: SDL_mouse.c:151
void * driverdata
Definition: SDL_mouse_c.h:33
float relative_speed_scale
Definition: SDL_mouse_c.h:90
SDL_MouseWheelDirection
Scroll direction types for the Scroll event.
Definition: SDL_mouse.h:66
int uint32_t uint32_t uint32_t uint32_t uint32_t int drmModeModeInfoPtr mode int uint32_t uint32_t uint32_t uint32_t int32_t hot_x
Definition: SDL_kmsdrmsym.h:55
SDL_Cursor * def_cursor
Definition: SDL_mouse_c.h:100