GDK Reference Manual
<<< Previous Page | Home | Up | Next Page >>>

# Cursors

## Name

Cursors -- standard and pixmap cursors.

## Synopsis

    #include <gdk/gdk.h>

    struct      GdkCursor;
    enum        GdkCursorType;
    GdkCursor*  gdk_cursor_new                  (GdkCursorType cursor_type);
    GdkCursor*  gdk_cursor_new_from_pixmap      (GdkPixmap *source,
                                                 GdkPixmap *mask,
                                                 GdkColor *fg,
                                                 GdkColor *bg,
                                                 gint x,
                                                 gint y);
    void        gdk_cursor_destroy              (GdkCursor *cursor);

## Description

## Details

### struct GdkCursor

    struct GdkCursor
    {
      GdkCursorType type;
    };

### enum GdkCursorType

    typedef enum
    {
    #include <gdk/gdkcursors.h>
      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 standard cursor.

`cursor_type` : | the type of the cursor.
Returns : | a new GdkCursor.

### gdk_cursor_new_from_pixmap ()

    GdkCursor*  gdk_cursor_new_from_pixmap      (GdkPixmap *source,
                                                 GdkPixmap *mask,
                                                 GdkColor *fg,
                                                 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.

Example 1. 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);

`source` : | the pixmap specifying the cursor.
`mask` : | the pixmap specifying the mask, which must be the same size as `source`.
`fg` : | the foreground color, used for the bits in the source which are 1. The color does not have to be allocated first.
`bg` : | the background color, used for the bits in the source which are 0. The color does not have to be allocated first.
`x` : | the horizontal offset of the 'hotspot' of the cursor.
`y` : | the vertical offset of the 'hotspot' of the cursor.
Returns : | a new GdkCursor.

### gdk_cursor_destroy ()

    void        gdk_cursor_destroy              (GdkCursor *cursor);

Destroys a cursor, freeing any resources allocated for it.

`cursor` : | a GdkCursor.

<<< Previous Page | Home | Up | Next Page >>>
Fonts | Windows