X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pages%2FSDL-Cursor.html-inc;h=ff7314f49b4b7cb7765860945225b1f9c0ffb846;hb=a3de848879a5553418ed11fb193c4bf286ca7120;hp=0a4504dc8df5289ca537b48c0665346bf2e2d5f1;hpb=bb5f3b83c1a4c2ae8ddb6bbc7782105067175b3c;p=sdlgit%2FSDL-Site.git diff --git a/pages/SDL-Cursor.html-inc b/pages/SDL-Cursor.html-inc index 0a4504d..ff7314f 100644 --- a/pages/SDL-Cursor.html-inc +++ b/pages/SDL-Cursor.html-inc @@ -3,13 +3,14 @@
SDL::Cursor - a SDL perl extension
+SDL::Cursor - Mouse cursor structure
+ +Core, Mouse, Structure
$cursor = SDL::Cursor->new( - -data => new SDL::Surface "cursor.png", - -mask => new SDL::Surface "mask.png", - -x => 0, -y => 0 ); - $cusor->use; +my $cursor = SDL::Cursor->new( + \@data, + \@mask, + $width, + $height, + $hotspot_left, + $hotspot_top + ); + + SDL::Mouse::set_cursor($cursor);
the SDL::Cursor module handles mouse cursors, and provide the developer to -use custom made cursors. Note that the cursors can only be in black and -white.
+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.
Creates a new cursor. The <C>-data</C> and <C>-mask</C> parameters should be both black and white pictures. The height and width of these surfaces should be a multiple of 8. The <C>-x</C> and <C>-y</C> are the coordinates of the cursor 'hot spot'.
+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.
David J. Goehrig, Tobias Leich
+See AUTHORS in SDL.
+ + + +perl SDL::Mouse
+