Home | History | Annotate | Download | only in man3
"SDL_CreateCursor" "3" "Tue 11 Sep 2001, 23:01" "SDL" "SDL API Reference"
"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:

20 Data / Mask Resulting pixel on screen

20 0 / 1 White

20 1 / 1 Black

20 0 / 0 Transparent

20 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 created by instant / docbook-to-man, Tue 11 Sep 2001, 23:01