Synopsis#include <gdk/gdk.h> GdkCursor; enum GdkCursorType; GdkCursor* gdk_cursor_new (GdkCursorType cursor_type); GdkCursor* gdk_cursor_new_from_pixmap (GdkPixmap *source, GdkPixmap *mask, const GdkColor *fg, const GdkColor *bg, gint x, gint y); GdkCursor* gdk_cursor_new_from_pixbuf (GdkDisplay *display, GdkPixbuf *pixbuf, gint x, gint y); GdkCursor* gdk_cursor_new_from_name (GdkDisplay *display, const gchar *name); GdkCursor* gdk_cursor_new_for_display (GdkDisplay *display, GdkCursorType cursor_type); GdkDisplay* gdk_cursor_get_display (GdkCursor *cursor); GdkPixbuf* gdk_cursor_get_image (GdkCursor *cursor); GdkCursor* gdk_cursor_ref (GdkCursor *cursor); void gdk_cursor_unref (GdkCursor *cursor); #define gdk_cursor_destroy Description
These functions are used to create and destroy cursors.
There is a number of standard cursors, but it is also
possible to construct new cursors from pixmaps and
pixbufs. There may be limitations as to what kinds of
cursors can be constructed on a given display, see
Cursors by themselves are not very interesting, they must be be
bound to a window for users to see them. This is done with
DetailsGdkCursortypedef struct { GdkCursorType type; } GdkCursor; A GdkCursor structure represents a cursor.
enum GdkCursorTypetypedef enum { GDK_X_CURSOR = 0, GDK_ARROW = 2, GDK_BASED_ARROW_DOWN = 4, GDK_BASED_ARROW_UP = 6, GDK_BOAT = 8, GDK_BOGOSITY = 10, GDK_BOTTOM_LEFT_CORNER = 12, GDK_BOTTOM_RIGHT_CORNER = 14, GDK_BOTTOM_SIDE = 16, GDK_BOTTOM_TEE = 18, GDK_BOX_SPIRAL = 20, GDK_CENTER_PTR = 22, GDK_CIRCLE = 24, GDK_CLOCK = 26, GDK_COFFEE_MUG = 28, GDK_CROSS = 30, GDK_CROSS_REVERSE = 32, GDK_CROSSHAIR = 34, GDK_DIAMOND_CROSS = 36, GDK_DOT = 38, GDK_DOTBOX = 40, GDK_DOUBLE_ARROW = 42, GDK_DRAFT_LARGE = 44, GDK_DRAFT_SMALL = 46, GDK_DRAPED_BOX = 48, GDK_EXCHANGE = 50, GDK_FLEUR = 52, GDK_GOBBLER = 54, GDK_GUMBY = 56, GDK_HAND1 = 58, GDK_HAND2 = 60, GDK_HEART = 62, GDK_ICON = 64, GDK_IRON_CROSS = 66, GDK_LEFT_PTR = 68, GDK_LEFT_SIDE = 70, GDK_LEFT_TEE = 72, GDK_LEFTBUTTON = 74, GDK_LL_ANGLE = 76, GDK_LR_ANGLE = 78, GDK_MAN = 80, GDK_MIDDLEBUTTON = 82, GDK_MOUSE = 84, GDK_PENCIL = 86, GDK_PIRATE = 88, GDK_PLUS = 90, GDK_QUESTION_ARROW = 92, GDK_RIGHT_PTR = 94, GDK_RIGHT_SIDE = 96, GDK_RIGHT_TEE = 98, GDK_RIGHTBUTTON = 100, GDK_RTL_LOGO = 102, GDK_SAILBOAT = 104, GDK_SB_DOWN_ARROW = 106, GDK_SB_H_DOUBLE_ARROW = 108, GDK_SB_LEFT_ARROW = 110, GDK_SB_RIGHT_ARROW = 112, GDK_SB_UP_ARROW = 114, GDK_SB_V_DOUBLE_ARROW = 116, GDK_SHUTTLE = 118, GDK_SIZING = 120, GDK_SPIDER = 122, GDK_SPRAYCAN = 124, GDK_STAR = 126, GDK_TARGET = 128, GDK_TCROSS = 130, GDK_TOP_LEFT_ARROW = 132, GDK_TOP_LEFT_CORNER = 134, GDK_TOP_RIGHT_CORNER = 136, GDK_TOP_SIDE = 138, GDK_TOP_TEE = 140, GDK_TREK = 142, GDK_UL_ANGLE = 144, GDK_UMBRELLA = 146, GDK_UR_ANGLE = 148, GDK_WATCH = 150, GDK_XTERM = 152, GDK_LAST_CURSOR, GDK_CURSOR_IS_PIXMAP = -1 } GdkCursorType; The standard cursors available.
gdk_cursor_new ()GdkCursor* gdk_cursor_new (GdkCursorType cursor_type);
Creates a new cursor from the set of builtin cursors for the default display.
See
To make the cursor invisible, use
gdk_cursor_new_from_pixmap ()GdkCursor* gdk_cursor_new_from_pixmap (GdkPixmap *source, GdkPixmap *mask, const GdkColor *fg, const GdkColor *bg, gint x, gint y); Creates a new cursor from a given pixmap and mask. Both the pixmap and mask must have a depth of 1 (i.e. each pixel has only 2 values - on or off). The standard cursor size is 16 by 16 pixels. You can create a bitmap from inline data as in the below example.
Example 6. Creating a custom cursor /* This data is in X bitmap format, and can be created with the 'bitmap' utility. */ #define cursor1_width 16 #define cursor1_height 16 static unsigned char cursor1_bits[] = { 0x80, 0x01, 0x40, 0x02, 0x20, 0x04, 0x10, 0x08, 0x08, 0x10, 0x04, 0x20, 0x82, 0x41, 0x41, 0x82, 0x41, 0x82, 0x82, 0x41, 0x04, 0x20, 0x08, 0x10, 0x10, 0x08, 0x20, 0x04, 0x40, 0x02, 0x80, 0x01}; static unsigned char cursor1mask_bits[] = { 0x80, 0x01, 0xc0, 0x03, 0x60, 0x06, 0x30, 0x0c, 0x18, 0x18, 0x8c, 0x31, 0xc6, 0x63, 0x63, 0xc6, 0x63, 0xc6, 0xc6, 0x63, 0x8c, 0x31, 0x18, 0x18, 0x30, 0x0c, 0x60, 0x06, 0xc0, 0x03, 0x80, 0x01}; GdkCursor *cursor; GdkPixmap *source, *mask; GdkColor fg = { 0, 65535, 0, 0 }; /* Red. */ GdkColor bg = { 0, 0, 0, 65535 }; /* Blue. */ source = gdk_bitmap_create_from_data (NULL, cursor1_bits, cursor1_width, cursor1_height); mask = gdk_bitmap_create_from_data (NULL, cursor1mask_bits, cursor1_width, cursor1_height); cursor = gdk_cursor_new_from_pixmap (source, mask, &fg, &bg, 8, 8); gdk_pixmap_unref (source); gdk_pixmap_unref (mask); gdk_window_set_cursor (widget->window, cursor);
gdk_cursor_new_from_pixbuf ()GdkCursor* gdk_cursor_new_from_pixbuf (GdkDisplay *display, GdkPixbuf *pixbuf, gint x, gint y); Creates a new cursor from a pixbuf.
Not all GDK backends support RGBA cursors. If they are not
supported, a monochrome approximation will be displayed.
The functions On the X backend, support for RGBA cursors requires a sufficently new version of the X Render extension.
Since 2.4 gdk_cursor_new_from_name ()GdkCursor* gdk_cursor_new_from_name (GdkDisplay *display, const gchar *name);
Creates a new cursor by looking up
Since 2.8 gdk_cursor_new_for_display ()GdkCursor* gdk_cursor_new_for_display (GdkDisplay *display, GdkCursorType cursor_type); Creates a new cursor from the set of builtin cursors. Some useful ones are:
To make the cursor invisible, use
Since 2.2 gdk_cursor_get_display ()GdkDisplay* gdk_cursor_get_display (GdkCursor *cursor); Returns the display on which the GdkCursor is defined.
Since 2.2 gdk_cursor_get_image ()GdkPixbuf* gdk_cursor_get_image (GdkCursor *cursor); Returns a GdkPixbuf with the image used to display the cursor.
Note that depending on the capabilities of the windowing system and
on the cursor, GDK may not be able to obtain the image data. In this
case,
Since 2.8 gdk_cursor_ref ()GdkCursor* gdk_cursor_ref (GdkCursor *cursor);
Adds a reference to
gdk_cursor_unref ()void gdk_cursor_unref (GdkCursor *cursor);
Removes a reference from
|