SDL::Mouse -- SDL Bindings for the Mouse device
Core, Mouse
my $cursor = SDL::Mouse::create_cursor( \@data, \@mask, $width, $height, $hotspot_left, $hotspot_top );
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.
If you want to have color cursor, then this function is not for you; instead, you must hide normal system cursor with SDL::Mouse::show_cursor
and in your main loop, when you draw graphics, also draw a SDL::Surface
at the location of the mouse cursor.
Example:
use SDL; use SDL::Mouse; use SDL::Video; 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::Mouse::create_cursor( \@data, \@mask, 8, 8, 0, 0 ); sleep(1); SDL::Mouse::set_cursor($cursor); sleep(5);
void warp_mouse( int $x, int $y );
Set the position of the mouse cursor (generates a mouse motion event).
void free_cursor( object );
Frees a cursor that was created using SDL::Cursor-
new()>.
void set_cursor( object );
Sets the currently active cursor to the specified one. If the cursor is currently visible, the change will be immediately represented
on the display. set_cursor()
can be used to force cursor redraw, if this is desired for any reason.
object get_cursor();
Gets the currently active mouse cursor.
int show_cursor( int toggle );
Toggle whether or not the cursor is shown on the screen. Passing SDL_ENABLE
displays the cursor and passing SDL_DISABLE
hides it.
The current state of the mouse cursor can be queried by passing SDL_QUERY
, either SDL_DISABLE
or SDL_ENABLE
will be returned.
use SDL; use SDL::Mouse; use SDL::Video; SDL::init(SDL_INIT_VIDEO); SDL::Video::set_video_mode( 640, 480, 16, SDL_SWSURFACE); printf("Cursor is %s\n", SDL::Mouse::show_cursor(SDL_QUERY) ? 'visible' : 'not visible'); sleep(3); SDL::Mouse::show_cursor(SDL_DISABLE); printf("Cursor is %s\n", SDL::Mouse::show_cursor(SDL_QUERY) ? 'visible' : 'not visible'); sleep(3); SDL::Mouse::show_cursor(SDL_ENABLE); printf("Cursor is %s\n", SDL::Mouse::show_cursor(SDL_QUERY) ? 'visible' : 'not visible'); sleep(3);