]> Pileus Git - ~andy/gtk/commitdiff
Add support for pixmap cursors -mig
authorArturo Espinosa <unammx@src.gnome.org>
Sat, 6 Dec 1997 20:53:46 +0000 (20:53 +0000)
committerArturo Espinosa <unammx@src.gnome.org>
Sat, 6 Dec 1997 20:53:46 +0000 (20:53 +0000)
gdk/gdk.h
gdk/gdkcursor.c
gdk/gdktypes.h
gdk/x11/gdkcursor-x11.c

index cb15f5ecf66c2a13c1b30011163dc5222dcd0b41..610f81ca9febca32f1646b63b6a34d1abbd60930 100644 (file)
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -268,8 +268,14 @@ void          gdk_window_set_events      (GdkWindow       *window,
 
 /* Cursors
  */
-GdkCursor* gdk_cursor_new     (GdkCursorType   cursor_type);
-void       gdk_cursor_destroy (GdkCursor      *cursor);
+GdkCursor* gdk_cursor_new                (GdkCursorType   cursor_type);
+GdkCursor* gdk_cursor_new_from_pixmap    (GdkPixmap       *source,
+                                         GdkPixmap       *mask,
+                                         GdkColor        *fg,
+                                         GdkColor        *bg,
+                                         int             x,
+                                         int             y);
+void       gdk_cursor_destroy            (GdkCursor      *cursor);
 
 
 /* GCs
index 22bfd250b163fd24adf39b4a3c6f843f11df57c7..b9b33ee519e41e6be33257adddd5588c0da44569 100644 (file)
@@ -38,6 +38,37 @@ gdk_cursor_new (GdkCursorType cursor_type)
   return cursor;
 }
 
+GdkCursor*
+gdk_cursor_new_from_pixmap (GdkPixmap *source, GdkPixmap *mask, GdkColor *fg, GdkColor *bg, int x, int y)
+{
+  GdkCursorPrivate *private;
+  GdkCursor *cursor;
+  Pixmap source_pixmap, mask_pixmap;
+  Cursor xcursor;
+  XColor xfg, xbg;
+  
+  source_pixmap = ((GdkPixmapPrivate *) source)->xwindow;
+  mask_pixmap   = ((GdkPixmapPrivate *) mask)->xwindow;
+
+  xfg.pixel = fg->pixel;
+  xfg.red = fg->red;
+  xfg.blue = fg->blue;
+  xfg.green = fg->green;
+  xbg.pixel = bg->pixel;
+  xbg.red = bg->red;
+  xbg.blue = bg->blue;
+  xbg.green = bg->green;
+  
+  xcursor = XCreatePixmapCursor (gdk_display, source_pixmap, mask_pixmap, &xfg, &xbg, x, y);
+  private = g_new (GdkCursorPrivate, 1);
+  private->xdisplay = gdk_display;
+  private->xcursor = xcursor;
+  cursor = (GdkCursor *) private;
+  cursor->type = GDK_CURSOR_IS_PIXMAP;
+
+  return cursor;
+}
+
 void
 gdk_cursor_destroy (GdkCursor *cursor)
 {
index 024f1b3c483452eff8f1ce8bc3d1c347adb73645..ab7819bc3b832f1c2adf08412aaefc8f6880f141 100644 (file)
@@ -273,7 +273,8 @@ typedef enum
 typedef enum
 {
 #include <gdk/gdkcursors.h>
-  GDK_LAST_CURSOR
+  GDK_LAST_CURSOR,
+  GDK_CURSOR_IS_PIXMAP = -1
 } GdkCursorType;
 
 /* Event types.
index 22bfd250b163fd24adf39b4a3c6f843f11df57c7..b9b33ee519e41e6be33257adddd5588c0da44569 100644 (file)
@@ -38,6 +38,37 @@ gdk_cursor_new (GdkCursorType cursor_type)
   return cursor;
 }
 
+GdkCursor*
+gdk_cursor_new_from_pixmap (GdkPixmap *source, GdkPixmap *mask, GdkColor *fg, GdkColor *bg, int x, int y)
+{
+  GdkCursorPrivate *private;
+  GdkCursor *cursor;
+  Pixmap source_pixmap, mask_pixmap;
+  Cursor xcursor;
+  XColor xfg, xbg;
+  
+  source_pixmap = ((GdkPixmapPrivate *) source)->xwindow;
+  mask_pixmap   = ((GdkPixmapPrivate *) mask)->xwindow;
+
+  xfg.pixel = fg->pixel;
+  xfg.red = fg->red;
+  xfg.blue = fg->blue;
+  xfg.green = fg->green;
+  xbg.pixel = bg->pixel;
+  xbg.red = bg->red;
+  xbg.blue = bg->blue;
+  xbg.green = bg->green;
+  
+  xcursor = XCreatePixmapCursor (gdk_display, source_pixmap, mask_pixmap, &xfg, &xbg, x, y);
+  private = g_new (GdkCursorPrivate, 1);
+  private->xdisplay = gdk_display;
+  private->xcursor = xcursor;
+  cursor = (GdkCursor *) private;
+  cursor->type = GDK_CURSOR_IS_PIXMAP;
+
+  return cursor;
+}
+
 void
 gdk_cursor_destroy (GdkCursor *cursor)
 {