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 cur-
     sor 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)

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

home | help