hackthelobby/libcaca/perl/lib/Term/Caca/Constants.pm

332 lines
7.0 KiB
Perl

package Term::Caca::Constants;
use strict;
use base 'Exporter';
use vars qw(@EXPORT_OK %EXPORT_TAGS $VERSION);
$VERSION = '0.9';
use constant {
## enum caca_color
CACA_COLOR_BLACK => 0,
CACA_COLOR_BLUE => 1,
CACA_COLOR_GREEN => 2,
CACA_COLOR_CYAN => 3,
CACA_COLOR_RED => 4,
CACA_COLOR_MAGENTA => 5,
CACA_COLOR_BROWN => 6,
CACA_COLOR_LIGHTGRAY => 7,
CACA_COLOR_DARKGRAY => 8,
CACA_COLOR_LIGHTBLUE => 9,
CACA_COLOR_LIGHTGREEN => 10,
CACA_COLOR_LIGHTCYAN => 11,
CACA_COLOR_LIGHTRED => 12,
CACA_COLOR_LIGHTMAGENTA => 13,
CACA_COLOR_YELLOW => 14,
CACA_COLOR_WHITE => 15,
## enum caca_feature
CACA_BACKGROUND => 0x10,
CACA_BACKGROUND_BLACK => 0x11,
CACA_BACKGROUND_SOLID => 0x12,
CACA_BACKGROUND_MIN => 0x11,
CACA_BACKGROUND_MAX => 0x12,
CACA_ANTIALIASING => 0x20,
CACA_ANTIALIASING_NONE => 0x21,
CACA_ANTIALIASING_PREFILTER => 0x22,
CACA_ANTIALIASING_MIN => 0x21,
CACA_ANTIALIASING_MAX => 0x22,
CACA_DITHERING => 0x30,
CACA_DITHERING_NONE => 0x31,
CACA_DITHERING_ORDERED2 => 0x32,
CACA_DITHERING_ORDERED4 => 0x33,
CACA_DITHERING_ORDERED8 => 0x34,
CACA_DITHERING_RANDOM => 0x35,
CACA_DITHERING_MIN => 0x31,
CACA_DITHERING_MAX => 0x35,
CACA_FEATURE_UNKNOWN => 0xffff,
## enum caca_event
CACA_EVENT_NONE => 0x00000000,
CACA_EVENT_KEY_PRESS => 0x01000000,
CACA_EVENT_KEY_RELEASE => 0x02000000,
CACA_EVENT_MOUSE_PRESS => 0x04000000,
CACA_EVENT_MOUSE_RELEASE => 0x08000000,
CACA_EVENT_MOUSE_MOTION => 0x10000000,
CACA_EVENT_RESIZE => 0x20000000,
CACA_EVENT_ANY => 0xff000000,
## enum caca_key
CACA_KEY_UNKNOWN => 0,
# /* The following keys have ASCII equivalents */
CACA_KEY_BACKSPACE => 8,
CACA_KEY_TAB => 9,
CACA_KEY_RETURN => 13,
CACA_KEY_PAUSE => 19,
CACA_KEY_ESCAPE => 27,
CACA_KEY_DELETE => 127,
# /* The following keys do not have ASCII equivalents but have been
# * chosen to match the SDL equivalents */
CACA_KEY_UP => 273,
CACA_KEY_DOWN => 274,
CACA_KEY_LEFT => 275,
CACA_KEY_RIGHT => 276,
CACA_KEY_INSERT => 277,
CACA_KEY_HOME => 278,
CACA_KEY_END => 279,
CACA_KEY_PAGEUP => 280,
CACA_KEY_PAGEDOWN => 281,
CACA_KEY_F1 => 282,
CACA_KEY_F2 => 283,
CACA_KEY_F3 => 284,
CACA_KEY_F4 => 285,
CACA_KEY_F5 => 286,
CACA_KEY_F6 => 287,
CACA_KEY_F7 => 288,
CACA_KEY_F8 => 289,
CACA_KEY_F9 => 290,
CACA_KEY_F10 => 291,
CACA_KEY_F11 => 292,
CACA_KEY_F12 => 293,
CACA_KEY_F13 => 294,
CACA_KEY_F14 => 295,
CACA_KEY_F15 => 296,
};
@EXPORT_OK = qw(
CACA_COLOR_BLACK
CACA_COLOR_BLUE
CACA_COLOR_GREEN
CACA_COLOR_CYAN
CACA_COLOR_RED
CACA_COLOR_MAGENTA
CACA_COLOR_BROWN
CACA_COLOR_LIGHTGRAY
CACA_COLOR_DARKGRAY
CACA_COLOR_LIGHTBLUE
CACA_COLOR_LIGHTGREEN
CACA_COLOR_LIGHTCYAN
CACA_COLOR_LIGHTRED
CACA_COLOR_LIGHTMAGENTA
CACA_COLOR_YELLOW
CACA_COLOR_WHITE
CACA_BACKGROUND
CACA_BACKGROUND_BLACK
CACA_BACKGROUND_SOLID
CACA_BACKGROUND_MIN
CACA_BACKGROUND_MAX
CACA_ANTIALIASING
CACA_ANTIALIASING_NONE
CACA_ANTIALIASING_PREFILTER
CACA_ANTIALIASING_MIN
CACA_ANTIALIASING_MAX
CACA_DITHERING
CACA_DITHERING_NONE
CACA_DITHERING_ORDERED2
CACA_DITHERING_ORDERED4
CACA_DITHERING_ORDERED8
CACA_DITHERING_RANDOM
CACA_DITHERING_MIN
CACA_DITHERING_MAX
CACA_FEATURE_UNKNOWN
CACA_EVENT_NONE
CACA_EVENT_KEY_PRESS
CACA_EVENT_KEY_RELEASE
CACA_EVENT_MOUSE_PRESS
CACA_EVENT_MOUSE_RELEASE
CACA_EVENT_MOUSE_MOTION
CACA_EVENT_RESIZE
CACA_EVENT_ANY
CACA_KEY_UNKNOWN
CACA_KEY_BACKSPACE
CACA_KEY_TAB
CACA_KEY_RETURN
CACA_KEY_PAUSE
CACA_KEY_ESCAPE
CACA_KEY_DELETE
CACA_KEY_UP
CACA_KEY_DOWN
CACA_KEY_LEFT
CACA_KEY_RIGHT
CACA_KEY_INSERT
CACA_KEY_HOME
CACA_KEY_END
CACA_KEY_PAGEUP
CACA_KEY_PAGEDOWN
CACA_KEY_F1
CACA_KEY_F2
CACA_KEY_F3
CACA_KEY_F4
CACA_KEY_F5
CACA_KEY_F6
CACA_KEY_F7
CACA_KEY_F8
CACA_KEY_F9
CACA_KEY_F10
CACA_KEY_F11
CACA_KEY_F12
CACA_KEY_F13
CACA_KEY_F14
CACA_KEY_F15
);
%EXPORT_TAGS = (
colors => [ qw(
CACA_COLOR_BLACK
CACA_COLOR_BLUE
CACA_COLOR_GREEN
CACA_COLOR_CYAN
CACA_COLOR_RED
CACA_COLOR_MAGENTA
CACA_COLOR_BROWN
CACA_COLOR_LIGHTGRAY
CACA_COLOR_DARKGRAY
CACA_COLOR_LIGHTBLUE
CACA_COLOR_LIGHTGREEN
CACA_COLOR_LIGHTCYAN
CACA_COLOR_LIGHTRED
CACA_COLOR_LIGHTMAGENTA
CACA_COLOR_YELLOW
CACA_COLOR_WHITE
) ],
features => [ qw(
CACA_BACKGROUND
CACA_BACKGROUND_BLACK
CACA_BACKGROUND_SOLID
CACA_BACKGROUND_MIN
CACA_BACKGROUND_MAX
CACA_ANTIALIASING
CACA_ANTIALIASING_NONE
CACA_ANTIALIASING_PREFILTER
CACA_ANTIALIASING_MIN
CACA_ANTIALIASING_MAX
CACA_DITHERING
CACA_DITHERING_NONE
CACA_DITHERING_ORDERED2
CACA_DITHERING_ORDERED4
CACA_DITHERING_ORDERED8
CACA_DITHERING_RANDOM
CACA_DITHERING_MIN
CACA_DITHERING_MAX
CACA_FEATURE_UNKNOWN
) ],
events => [ qw(
CACA_EVENT_NONE
CACA_EVENT_KEY_PRESS
CACA_EVENT_KEY_RELEASE
CACA_EVENT_MOUSE_PRESS
CACA_EVENT_MOUSE_RELEASE
CACA_EVENT_MOUSE_MOTION
CACA_EVENT_RESIZE
CACA_EVENT_ANY
) ],
'keys' => [ qw(
CACA_KEY_UNKNOWN
CACA_KEY_BACKSPACE
CACA_KEY_TAB
CACA_KEY_RETURN
CACA_KEY_PAUSE
CACA_KEY_ESCAPE
CACA_KEY_DELETE
CACA_KEY_UP
CACA_KEY_DOWN
CACA_KEY_LEFT
CACA_KEY_RIGHT
CACA_KEY_INSERT
CACA_KEY_HOME
CACA_KEY_END
CACA_KEY_PAGEUP
CACA_KEY_PAGEDOWN
CACA_KEY_F1
CACA_KEY_F2
CACA_KEY_F3
CACA_KEY_F4
CACA_KEY_F5
CACA_KEY_F6
CACA_KEY_F7
CACA_KEY_F8
CACA_KEY_F9
CACA_KEY_F10
CACA_KEY_F11
CACA_KEY_F12
CACA_KEY_F13
CACA_KEY_F14
CACA_KEY_F15
) ],
all => [ ],
);
# add all the other ":class" tags to the ":all" class,
# deleting duplicates
{
my %seen;
push @{$EXPORT_TAGS{all}},
grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}} foreach keys %EXPORT_TAGS;
}
1;
__END__
=head1 NAME
Term::Caca::Constants - libcaca constants from caca.h
=head1 SYNOPSIS
Import all constants into current package/namespace:
use Term::Caca::Constants ':all';
Only import the constants pertaining to events and keys:
use Term::Caca qw(:events :keys);
=head1 DESCRIPTION
=cut