X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pages%2FSDL-Cursor.html-inc;h=ff7314f49b4b7cb7765860945225b1f9c0ffb846;hb=d5943b684b1240307fbf0a103abbf18dd93998f4;hp=bb02e7cbaf748a3322432cf339b7c5179006186d;hpb=162a0989f2a1d33d50c8950709319df21973e7b7;p=sdlgit%2FSDL-Site.git diff --git a/pages/SDL-Cursor.html-inc b/pages/SDL-Cursor.html-inc index bb02e7c..ff7314f 100644 --- a/pages/SDL-Cursor.html-inc +++ b/pages/SDL-Cursor.html-inc @@ -3,17 +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 + ); -
Set the position of the SDL::Cursor given as first parameter . -the new postion is set to <C>x</C>, <C>y</C> coordinates in the application window. -SDL::warp trigger a new mouse motion event. -It doesn't returns anything.
+ +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. -
Set the SDL::Cursor given as first parameter to the active cursor.
+ +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; -
When used statically <C>SDL::Cursor::get()</C>, it will return the instance of the current cursor in use. Called as a method, it will return itself.
-This method can be useful if you are dealing with several cursors.
+ SDL::init(SDL_INIT_VIDEO); + SDL::Video::set_video_mode(640, 480, 16, SDL_SWSURFACE); -Set the visibility of the cursor. A false value will make the cursor -invisible in the Application window. A true value will show it back.
+ 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
+See AUTHORS in SDL.
+ + + +perl SDL::Surface
+