SDL_CreateCursor

Langue: en

Version: 45508 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

NAME

SDL_CreateCursor- Creates a new mouse cursor.

SYNOPSIS

#include "SDL.h"

SDL_Cursor *SDL_CreateCursor(Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y);

DESCRIPTION

Create a cursor using the specified data and mask (in MSB format). The cursor width must be a multiple of 8 bits.

The cursor is created in black and white according to the following:

Data / Mask
Resulting pixel on screen
0 / 1
White
1 / 1
Black
0 / 0
Transparent
1 / 0
Inverted color if possible, black if not.

Cursors created with this function must be freed with SDL_FreeCursor.

EXAMPLE


/* Stolen from the mailing list */

/* Creates a new mouse cursor from an XPM */





/* XPM */

static const char *arrow[] = {

  /* width height num_colors chars_per_pixel */

  "    32    32        3            1",

  /* colors */

  "X c #000000",

  ". c #ffffff",

  "  c None",

  /* pixels */

  "X                               ",

  "XX                              ",

  "X.X                             ",

  "X..X                            ",

  "X...X                           ",

  "X....X                          ",

  "X.....X                         ",

  "X......X                        ",

  "X.......X                       ",

  "X........X                      ",

  "X.....XXXXX                     ",

  "X..X..X                         ",

  "X.X X..X                        ",

  "XX  X..X                        ",

  "X    X..X                       ",

  "     X..X                       ",

  "      X..X                      ",

  "      X..X                      ",

  "       XX                       ",

  "                                ",

  "                                ",

  "                                ",

  "                                ",

  "                                ",

  "                                ",

  "                                ",

  "                                ",

  "                                ",

  "                                ",

  "                                ",

  "                                ",

  "                                ",

  "0,0"

};



static SDL_Cursor *init_system_cursor(const char *image[])

{

  int i, row, col;

  Uint8 data[4*32];

  Uint8 mask[4*32];

  int hot_x, hot_y;



  i = -1;

  for ( row=0; row<32; ++row ) {

    for ( col=0; col<32; ++col ) {

      if ( col % 8 ) {

        data[i] <<= 1;

        mask[i] <<= 1;

      } else {

        ++i;

        data[i] = mask[i] = 0;

      }

      switch (image[4+row][col]) {

        case 'X':

          data[i] |= 0x01;

          k[i] |= 0x01;

          break;

        case '.':

          mask[i] |= 0x01;

          break;

        case ' ':

          break;

      }

    }

  }

  sscanf(image[4+row], "%d,%d", &hot_x, &hot_y);

  return SDL_CreateCursor(data, mask, 32, 32, hot_x, hot_y);

}

SEE ALSO

SDL_FreeCursor, SDL_SetCursor, SDL_ShowCursor