1SDL::Cursor(3)        User Contributed Perl Documentation       SDL::Cursor(3)
2
3
4

NAME

6       SDL::Cursor - Mouse cursor structure
7

CATEGORY

9       Core, Mouse, Structure
10

SYNOPSIS

12        my $cursor = SDL::Cursor->new(
13            \@data,
14            \@mask,
15            $width,
16            $height,
17            $hotspot_left,
18            $hotspot_top
19        );
20
21        SDL::Mouse::set_cursor($cursor);
22

DESCRIPTION

24       The "SDL::Cursor" module handles mouse cursors, and allows the
25       developer to use custom-made cursors.  Note that cursors can only be in
26       black and white.
27

METHODS

29   new
30        my $cursor = SDL::Cursor->new(
31            \@data, \@mask, $width, $height, $hotspot_left, $hotspot_top
32        );
33
34       Create a cursor using the specified data and mask (in MSB format).  The
35       cursor is created in black and white according to the following:
36
37        Data / Mask   Resulting pixel on screen
38           0 / 1      White
39           1 / 1      Black
40           0 / 0      Transparent
41           1 / 0      Inverted color if possible, black if not.
42
43       If you want to have color cursor, then this function is not for you.
44       Instead, you should hide the cursor with
45       "SDL::Mouse::show_cursor(SDL_DISABLE)".  Then in your main loop, when
46       you draw graphics, draw a "SDL::Surface" at the location of the mouse
47       cursor.
48
49       Example:
50
51        use SDL;
52        use SDL::Video;
53        use SDL::Mouse;
54        use SDL::Cursor;
55
56        SDL::init(SDL_INIT_VIDEO);
57        SDL::Video::set_video_mode(640, 480, 16, SDL_SWSURFACE);
58
59        my @data = (
60            0b00000000,
61            0b00111100,
62            0b01111110,
63            0b01111110,
64            0b01111110,
65            0b01111110,
66            0b00111100,
67            0b00000000
68        );
69        my @mask = (
70            0b00111100,
71            0b01111110,
72            0b11100111,
73            0b11000011,
74            0b11000011,
75            0b11100111,
76            0b01111110,
77            0b00111100
78        );
79        my $cursor = SDL::Cursor->new(\@data, \@mask, 8, 8, 0, 0);
80        sleep(1);
81
82        SDL::Mouse::set_cursor($cursor);
83        sleep(5);
84
85       The width of cursors work in groups of 8.  If the width is above 8,
86       twice the amount of elements in @data and @mask are required.  If the
87       width is above 16, three times are required, and so on.  For example,
88       if you wanted a 9 pixel crosshair you might do the following:
89
90        my @data = (
91            0b00001000,0b00000000,
92            0b00001000,0b00000000,
93            0b00001000,0b00000000,
94            0b00001000,0b00000000,
95            0b11111111,0b10000000,
96            0b00001000,0b00000000,
97            0b00001000,0b00000000,
98            0b00001000,0b00000000,
99            0b00001000,0b00000000,
100        );
101        my @mask = @data;
102
103        my $cursor = SDL::Cursor->new(\@data, \@mask, 9, 9, 4, 4);
104
105       The hotspot is offset by 4 pixels because a crosshair clicks from the
106       center instead of the top left.
107

AUTHORS

109       See "AUTHORS" in SDL.
110

SEE ALSO

112       perl SDL::Mouse
113
114
115
116perl v5.34.0                      2022-01-21                    SDL::Cursor(3)
Impressum