rnd-20030405-1-src
[rocksndiamonds.git] / src / libgame / sdl.c
index 2406489587d0c74b67a7a1cd7d9d92c661d8e321..f479fd9960b804faa6ae41bc42b1a8040b3971c2 100644 (file)
@@ -1233,6 +1233,36 @@ Bitmap *SDLLoadImage(char *filename)
 }
 
 
+/* ------------------------------------------------------------------------- */
+/* custom cursor fuctions                                                    */
+/* ------------------------------------------------------------------------- */
+
+static SDL_Cursor *create_cursor(struct MouseCursorInfo *cursor_info)
+{
+  return SDL_CreateCursor(cursor_info->data, cursor_info->mask,
+                         cursor_info->width, cursor_info->height,
+                         cursor_info->hot_x, cursor_info->hot_y);
+}
+
+void SDLSetMouseCursor(struct MouseCursorInfo *cursor_info)
+{
+  static struct MouseCursorInfo *last_cursor_info = NULL;
+  static SDL_Cursor *cursor_default = NULL;
+  static SDL_Cursor *cursor_current = NULL;
+
+  if (cursor_default == NULL)
+    cursor_default = SDL_GetCursor();
+
+  if (cursor_info != NULL && cursor_info != last_cursor_info)
+  {
+    cursor_current = create_cursor(cursor_info);
+    last_cursor_info = cursor_info;
+  }
+
+  SDL_SetCursor(cursor_info ? cursor_current : cursor_default);
+}
+
+
 /* ========================================================================= */
 /* audio functions                                                           */
 /* ========================================================================= */