SDL_CreateCursor — Creates a new mouse cursor.
#include "SDL.h"
SDL_Cursor *SDL_CreateCursor( |
Uint8 * | data, |
Uint8 * | mask, | |
int | w, | |
int | h, | |
int | hot_x, | |
int | hot_y) ; |
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:
Resulting pixel on screen
White
Black
Transparent
Inverted color if possible, black if not.
Cursors created with this function must be freed with
SDL_FreeCursor
.
/* 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); }
SDL_FreeCursor(3), SDL_SetCursor(3), SDL_ShowCursor(3)
COPYRIGHT |
---|
This manual page is taken from the SDL library, licensed under GNU LGPL. |