Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

Moved the cursor handling into the mouse code.

Added support for multiple mice, potentially dynamically added and removed.
  • Loading branch information
slouken committed Jun 9, 2006
1 parent a7e7b31 commit 677a1ffc68cbdc23ced7c1a00b93b89a58183421

File 3 of 9 in 677a1ff

@@ -24,23 +24,81 @@
#ifndef _SDL_mouse_c_h
#define _SDL_mouse_c_h

typedef struct
typedef struct SDL_Mouse SDL_Mouse;

struct SDL_Cursor
{
SDL_Mouse *mouse;

SDL_Cursor *next;

void *driverdata;
};

struct SDL_Mouse
{
/* Create a cursor from a surface */
SDL_Cursor *(*CreateCursor) (SDL_Surface * surface, int hot_x, int hot_y);

/* 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) */
void (*WarpMouse) (SDL_Mouse * mouse, SDL_WindowID windowID, int x,
int y);

/* Free the mouse when it's time */
void (*FreeMouse) (SDL_Mouse * mouse);

/* Data common to all mice */
SDL_WindowID focus;
int x;
int y;
int xdelta;
int ydelta;
Uint8 buttonstate;
} SDL_Mouse;

SDL_Cursor *cursors;
SDL_Cursor *def_cursor;
SDL_Cursor *cur_cursor;
SDL_bool cursor_shown;

void *driverdata;
};


/* Initialize the mouse subsystem */
extern int SDL_MouseInit(void);
extern int SDL_AddMouse(SDL_WindowID focus, int x, int y, Uint8 buttonstate);

/* Get the mouse at an index */
extern SDL_Mouse *SDL_GetMouse(int index);

/* Add a mouse, possibly reattaching at a particular index (or -1),
returning the index of the mouse, or -1 if there was an error.
*/
extern int SDL_AddMouse(const SDL_Mouse * mouse, int index);

/* Remove a mouse at an index, clearing the slot for later */
extern void SDL_DelMouse(int index);

/* Clear the button state of a mouse at an index */
extern void SDL_ResetMouse(int index);

/* Send a mouse motion event for a mouse at an index */
extern int SDL_SendMouseMotion(int index, SDL_WindowID windowID, int relative,
int x, int y);

/* Send a mouse button event for a mouse at an index */
extern int SDL_SendMouseButton(int index, SDL_WindowID windowID, Uint8 state,
Uint8 button);

/* Shutdown the mouse subsystem */
extern void SDL_MouseQuit(void);

#endif /* _SDL_mouse_c_h */

0 comments on commit 677a1ff

Please sign in to comment.