#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
{
SDL_MouseID mouseID;
Uint32 buttonstate;
} SDL_MouseInputSource;
typedef struct
{
int last_x, last_y;
Uint32 last_timestamp;
Uint8 click_count;
} SDL_MouseClickState;
typedef struct
{
SDL_Cursor *(*CreateCursor) (SDL_Surface * surface, int hot_x, int hot_y);
SDL_Cursor *(*CreateSystemCursor) (SDL_SystemCursor id);
int (*ShowCursor) (SDL_Cursor * cursor);
void (*MoveCursor) (SDL_Cursor * cursor);
void (*FreeCursor) (SDL_Cursor * cursor);
void (*WarpMouse) (SDL_Window * window, int x, int y);
int (*WarpMouseGlobal) (int x, int y);
int (*SetRelativeMouseMode) (SDL_bool enabled);
int (*CaptureMouse) (SDL_Window * window);
Uint32 (*GetGlobalMouseState) (int *x, int *y);
SDL_MouseID mouseID;
SDL_Window *focus;
int x;
int y;
int xdelta;
int ydelta;
int last_x, last_y;
float accumulated_wheel_x;
float accumulated_wheel_y;
SDL_bool has_position;
SDL_bool relative_mode;
SDL_bool relative_mode_warp;
SDL_bool relative_mode_warp_motion;
SDL_bool enable_normal_speed_scale;
float normal_speed_scale;
SDL_bool enable_relative_speed_scale;
float relative_speed_scale;
SDL_bool enable_relative_system_scale;
int num_system_scale_values;
float *system_scale_values;
float scale_accum_x;
float scale_accum_y;
Uint32 double_click_time;
int double_click_radius;
SDL_bool touch_mouse_events;
SDL_bool mouse_touch_events;
SDL_bool was_touch_mouse_events;
#if defined(__vita__)
Uint8 vita_touch_mouse_device;
#endif
SDL_bool auto_capture;
SDL_bool capture_desired;
SDL_Window *capture_window;
int num_sources;
SDL_MouseInputSource *sources;
int num_clickstates;
SDL_MouseClickState *clickstate;
SDL_Cursor *cursors;
SDL_Cursor *def_cursor;
SDL_Cursor *cur_cursor;
SDL_bool cursor_shown;
void *driverdata;
} SDL_Mouse;
extern int SDL_MouseInit(void);
SDL_Mouse *SDL_GetMouse(void);
extern void SDL_SetDefaultCursor(SDL_Cursor * cursor);
extern void SDL_SetMouseFocus(SDL_Window * window);
extern int SDL_UpdateMouseCapture(SDL_bool force_release);
extern int SDL_SetMouseSystemScale(int num_values, const float *values);
extern int SDL_SendMouseMotion(SDL_Window * window, SDL_MouseID mouseID, int relative, int x, int y);
extern int SDL_SendMouseButton(SDL_Window * window, SDL_MouseID mouseID, Uint8 state, Uint8 button);
extern int SDL_SendMouseButtonClicks(SDL_Window * window, SDL_MouseID mouseID, Uint8 state, Uint8 button, int clicks);
extern int SDL_SendMouseWheel(SDL_Window * window, SDL_MouseID mouseID, float x, float y, SDL_MouseWheelDirection direction);
extern void SDL_PerformWarpMouseInWindow(SDL_Window *window, int x, int y, SDL_bool ignore_relative_mode);
#if 0#endif
extern void SDL_MouseQuit(void);
#endif