Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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

SDL			    Tue	11 Sep 2001, 23:01	   SDL_CreateCursor(3)

NAME | SYNOPSIS | DESCRIPTION | EXAMPLE | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=SDL_CreateCursor&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help