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

FreeBSD Manual Pages

  
 
  

home | help
pods::SDL::Cursor(3)  User Contributed Perl Documentation pods::SDL::Cursor(3)

NAME
       SDL::Cursor - Mouse cursor structure

CATEGORY
       Core, Mouse, Structure

SYNOPSIS
	my $cursor = SDL::Cursor->new(
	    \@data,
	    \@mask,
	    $width,
	    $height,
	    $hotspot_left,
	    $hotspot_top
	);

	SDL::Mouse::set_cursor($cursor);

DESCRIPTION
       The "SDL::Cursor" module	handles	mouse cursors, and allows the
       developer to use	custom-made cursors.  Note that	cursors	can only be in
       black and white.

METHODS
   new
	my $cursor = SDL::Cursor->new(
	    \@data, \@mask, $width, $height, $hotspot_left, $hotspot_top
	);

       Create a	cursor using the specified data	and mask (in MSB format).  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.

       If you want to have color cursor, then this function is not for you.
       Instead,	you should hide	the cursor with
       "SDL::Mouse::show_cursor(SDL_DISABLE)".	Then in	your main loop,	when
       you draw	graphics, draw a "SDL::Surface"	at the location	of the mouse
       cursor.

       Example:

	use SDL;
	use SDL::Video;
	use SDL::Mouse;
	use SDL::Cursor;

	SDL::init(SDL_INIT_VIDEO);
	SDL::Video::set_video_mode(640,	480, 16, SDL_SWSURFACE);

	my @data = (
	    0b00000000,
	    0b00111100,
	    0b01111110,
	    0b01111110,
	    0b01111110,
	    0b01111110,
	    0b00111100,
	    0b00000000
	);
	my @mask = (
	    0b00111100,
	    0b01111110,
	    0b11100111,
	    0b11000011,
	    0b11000011,
	    0b11100111,
	    0b01111110,
	    0b00111100
	);
	my $cursor = SDL::Cursor->new(\@data, \@mask, 8, 8, 0, 0);
	sleep(1);

	SDL::Mouse::set_cursor($cursor);
	sleep(5);

       The width of cursors work in groups of 8.  If the width is above	8,
       twice the amount	of elements in @data and @mask are required.  If the
       width is	above 16, three	times are required, and	so on.	For example,
       if you wanted a 9 pixel crosshair you might do the following:

	my @data = (
	    0b00001000,0b00000000,
	    0b00001000,0b00000000,
	    0b00001000,0b00000000,
	    0b00001000,0b00000000,
	    0b11111111,0b10000000,
	    0b00001000,0b00000000,
	    0b00001000,0b00000000,
	    0b00001000,0b00000000,
	    0b00001000,0b00000000,
	);
	my @mask = @data;

	my $cursor = SDL::Cursor->new(\@data, \@mask, 9, 9, 4, 4);

       The hotspot is offset by	4 pixels because a crosshair clicks from the
       center instead of the top left.

AUTHORS
       See "AUTHORS" in	SDL.

SEE ALSO
       perl SDL::Mouse

perl v5.24.1			  2017-07-11		  pods::SDL::Cursor(3)

NAME | CATEGORY | SYNOPSIS | DESCRIPTION | METHODS | AUTHORS | SEE ALSO

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

home | help