1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287
|
# Copyright 2011, 2013 Kevin Ryde
# This file is part of X11-Protocol-Other.
#
# X11-Protocol-Other is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as published
# by the Free Software Foundation; either version 3, or (at your option) any
# later version.
#
# X11-Protocol-Other is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with X11-Protocol-Other. If not, see <http://www.gnu.org/licenses/>.
BEGIN { require 5 }
package X11::CursorConstants;
use strict;
use vars '$VERSION';
$VERSION = 10;
# uncomment this to run the ### lines
#use Smart::Comments;
# Generated with:
# (shell-command "perl -n -e '/define XC_([^ ]*).*?([0-9]+)/ and do { printf qq{use constant %-20s => %d;\n}, $1, $2;}' </usr/include/X11/cursorfont.h" 'insert)
use constant num_glyphs => 154;
use constant X_cursor => 0;
use constant arrow => 2;
use constant based_arrow_down => 4;
use constant based_arrow_up => 6;
use constant boat => 8;
use constant bogosity => 10;
use constant bottom_left_corner => 12;
use constant bottom_right_corner => 14;
use constant bottom_side => 16;
use constant bottom_tee => 18;
use constant box_spiral => 20;
use constant center_ptr => 22;
use constant circle => 24;
use constant clock => 26;
use constant coffee_mug => 28;
use constant cross => 30;
use constant cross_reverse => 32;
use constant crosshair => 34;
use constant diamond_cross => 36;
use constant dot => 38;
use constant dotbox => 40;
use constant double_arrow => 42;
use constant draft_large => 44;
use constant draft_small => 46;
use constant draped_box => 48;
use constant exchange => 50;
use constant fleur => 52;
use constant gobbler => 54;
use constant gumby => 56;
use constant hand1 => 58;
use constant hand2 => 60;
use constant heart => 62;
use constant icon => 64;
use constant iron_cross => 66;
use constant left_ptr => 68;
use constant left_side => 70;
use constant left_tee => 72;
use constant leftbutton => 74;
use constant ll_angle => 76;
use constant lr_angle => 78;
use constant man => 80;
use constant middlebutton => 82;
use constant mouse => 84;
use constant pencil => 86;
use constant pirate => 88;
use constant plus => 90;
use constant question_arrow => 92;
use constant right_ptr => 94;
use constant right_side => 96;
use constant right_tee => 98;
use constant rightbutton => 100;
use constant rtl_logo => 102;
use constant sailboat => 104;
use constant sb_down_arrow => 106;
use constant sb_h_double_arrow => 108;
use constant sb_left_arrow => 110;
use constant sb_right_arrow => 112;
use constant sb_up_arrow => 114;
use constant sb_v_double_arrow => 116;
use constant shuttle => 118;
use constant sizing => 120;
use constant spider => 122;
use constant spraycan => 124;
use constant star => 126;
use constant target => 128;
use constant tcross => 130;
use constant top_left_arrow => 132;
use constant top_left_corner => 134;
use constant top_right_corner => 136;
use constant top_side => 138;
use constant top_tee => 140;
use constant trek => 142;
use constant ul_angle => 144;
use constant umbrella => 146;
use constant ur_angle => 148;
use constant watch => 150;
use constant xterm => 152;
1;
__END__
=for stopwords Xlib glyph Ryde
=head1 NAME
X11::CursorConstants - cursor font glyph constants
=head1 SYNOPSIS
use X11::CursorConstants;
my $glyphnum = X11::CursorConstants::crosshair; # is 34
=head1 DESCRIPTION
This is the glyphs of the X11 "cursor" font as Perl constant subrs. The
cursor font is the usual way to create mouse pointer cursors of various
standard shapes.
The subr names are per the Xlib F</usr/include/X11/cursorfont.h>, without
the C<XC_> prefixes. Each glyph is a character for the foreground shape,
and the next character is the background mask.
X11::CursorConstants::fleur, # glyph
X11::CursorConstants::fleur + 1, # and its mask
So for example to create a "crosshair" cursor,
my $cursor_font = $X->new_rsrc;
$X->OpenConstants ($cursor_font, "cursor");
my $cursor = $X->new_rsrc;
$X->CreateGlyphCursor
($cursor,
$cursor_font, # font
$cursor_font, # mask font
X11::CursorConstants::crosshair, # glyph
X11::CursorConstants::crosshair + 1, # and its mask
0,0,0, # foreground, black
0xFFFF,0xFFFF,0xFFFF); # background, white
The images can be viewed with the C<xfd> font display program,
xfd -fn cursor
=head1 CONSTANTS
There's no exporting, since it's unlikely more than a handful will be
needed, and usually only in one or two places each. The full list is
=cut
# List generated by
# (shell-command "perl -n -e '/define XC_([^ ]*).*?([0-9]+)/ and do { printf qq{ %-20s %3d\n}, $1, $2;}' </usr/include/X11/cursorfont.h" 'insert)
=pod
Constant Value
X_cursor 0
arrow 2
based_arrow_down 4
based_arrow_up 6
boat 8
bogosity 10
bottom_left_corner 12
bottom_right_corner 14
bottom_side 16
bottom_tee 18
box_spiral 20 a square spiral
center_ptr 22
circle 24
clock 26
coffee_mug 28
cross 30
cross_reverse 32
crosshair 34
diamond_cross 36
dot 38
dotbox 40
double_arrow 42
draft_large 44
draft_small 46
draped_box 48
exchange 50
fleur 52
gobbler 54
gumby 56
hand1 58
hand2 60
heart 62
icon 64
iron_cross 66
left_ptr 68
left_side 70
left_tee 72
leftbutton 74
ll_angle 76
lr_angle 78
man 80
middlebutton 82
mouse 84
pencil 86
pirate 88 skull and crossbones
plus 90
question_arrow 92
right_ptr 94
right_side 96
right_tee 98
rightbutton 100
rtl_logo 102
sailboat 104
sb_down_arrow 106
sb_h_double_arrow 108
sb_left_arrow 110
sb_right_arrow 112
sb_up_arrow 114
sb_v_double_arrow 116
shuttle 118
sizing 120
spider 122
spraycan 124
star 126
target 128
tcross 130
top_left_arrow 132
top_left_corner 134
top_right_corner 136
top_side 138
top_tee 140
trek 142
ul_angle 144
umbrella 146
ur_angle 148
watch 150 a good "busy" indicator
xterm 152 a vertical insertion bar
num_glyphs 154
C<X11::CursorConstants::num_glyphs()> is how many glyphs plus their masks
are in the font, ie. characters C<0> to C<num_glyphs-1> exist.
=head1 SEE ALSO
L<X11::AtomConstants>,
L<X11::KeySyms>,
L<X11::Protocol>
L<X11::Protocol::Other>,
L<xfd(1)>
F</usr/include/X11/cursorfont.h> and listed in the Xlib manual appendix B
(F</usr/share/doc/libx11-dev/libX11.txt.gz>).
Xlib Xmu C<XmuCursorNameToIndex()>
=head1 HOME PAGE
L<http://user42.tuxfamily.org/x11-protocol-other/index.html>
=head1 LICENSE
Copyright 2011, 2013 Kevin Ryde
X11-Protocol-Other is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3, or (at your option) any later
version.
X11-Protocol-Other is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You should have received a copy of the GNU General Public License along with
X11-Protocol-Other. If not, see <http://www.gnu.org/licenses/>.
=cut
|