pods::...:Cursor(3pm)
okay bestie, welcome to pods::...:Cursor(3pm) from the User Contributed Perl Documentation β this is the mouse cursor structure page, and itβs giving custom-cursor main character energy π±οΈπ
π NAME π
SDL::Cursor β Mouse cursor structure π
π CATEGORY π
Core, Mouse, Structure β yes, itβs core, itβs mouse, itβs structure, it contains multitudes π β¨
πΈ SYNOPSIS πΈ
the short version, bestie:
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 lets you use custom-made cursors. Heads up though: cursors can only be in black and white. No cap, thatβs the whole color situation. π€π€
β¨ 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 comes out in black and white according to this iconic little chart:
Data / Mask β resulting pixel on screen:
0/1β White1/1β Black0/0β Transparent1/0β Inverted color if possible, black if not.
If you want to have color cursor, then this function is not for you, bestie. 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 works 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 β the whole crew is there, go say hi π
π SEE ALSO π
perl SDL::Mouseβ your next stop, iykyk
and thatβs the page, bestie! source/version: perl v5.42.3 Β· date: 2026-08-19 Β· page: pods::...:Cursor(3pm) β mwah, bye ππ¦
π¦ where this page comes from
- ubuntu stonking: libsdl-perl 2.548-6build1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms