Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

sdl::cursor(3pm) [debian man page]

pods::SDL::Cursor(3pm)					User Contributed Perl Documentation				    pods::SDL::Cursor(3pm)

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.14.2 2012-05-28 pods::SDL::Cursor(3pm)

Check Out this Related Man Page

SDL_CreateCursor(3)						 SDL API Reference					       SDL_CreateCursor(3)

NAME
SDL_CreateCursor - Creates a new mouse cursor. SYNOPSIS
#include "SDL.h" SDL_Cursor *SDL_CreateCursor(Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y); DESCRIPTION
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. EXAMPLE
/* Stolen from the mailing list */ /* Creates a new mouse cursor from an XPM */ /* XPM */ static const char *arrow[] = { /* width height num_colors chars_per_pixel */ " 32 32 3 1", /* colors */ "X c #000000", ". c #ffffff", " c None", /* pixels */ "X ", "XX ", "X.X ", "X..X ", "X...X ", "X....X ", "X.....X ", "X......X ", "X.......X ", "X........X ", "X.....XXXXX ", "X..X..X ", "X.X X..X ", "XX X..X ", "X X..X ", " X..X ", " X..X ", " X..X ", " XX ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "0,0" }; static SDL_Cursor *init_system_cursor(const char *image[]) { int i, row, col; Uint8 data[4*32]; Uint8 mask[4*32]; int hot_x, hot_y; i = -1; for ( row=0; row<32; ++row ) { for ( col=0; col<32; ++col ) { if ( col % 8 ) { data[i] <<= 1; mask[i] <<= 1; } else { ++i; data[i] = mask[i] = 0; } switch (image[4+row][col]) { case 'X': data[i] |= 0x01; k[i] |= 0x01; break; case '.': mask[i] |= 0x01; break; case ' ': break; } } } sscanf(image[4+row], "%d,%d", &hot_x, &hot_y); return SDL_CreateCursor(data, mask, 32, 32, hot_x, hot_y); } SEE ALSO
SDL_FreeCursor, SDL_SetCursor, SDL_ShowCursor SDL
Tue 11 Sep 2001, 23:01 SDL_CreateCursor(3)
Man Page