table of contents
SDL_CreateCursor(3) | SDL API Reference | SDL_CreateCursor(3) |
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
Tue 11 Sep 2001, 23:01 | SDL |