Index


NAME

Top

SDL::Mouse -- SDL Bindings for the Mouse device

CATEGORY

Top

Core, Mouse

METHODS

Top

create_cursor

 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);

warp_mouse

 void warp_mouse( int $x, int $y );

Set the position of the mouse cursor (generates a mouse motion event).

free_cursor

 void free_cursor( object );

Frees a cursor that was created using SDL::Cursor-new()>.

set_cursor

 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.

get_cursor

 object get_cursor();

Gets the currently active mouse cursor.

show_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);