diff src/events/SDL_mouse_c.h @ 1671:89f7510fe17a SDL-1.3

Moved the cursor handling into the mouse code. Added support for multiple mice, potentially dynamically added and removed.
author Sam Lantinga <slouken@libsdl.org>
date Fri, 09 Jun 2006 06:42:42 +0000
parents eef792d31de8
children 5daa04d862f1
line wrap: on
line diff
--- a/src/events/SDL_mouse_c.h	Wed Jun 07 16:10:28 2006 +0000
+++ b/src/events/SDL_mouse_c.h	Fri Jun 09 06:42:42 2006 +0000
@@ -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 */