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

389 lines
5.8 KiB
Perl

package Term::Caca;
require Exporter;
require DynaLoader;
$VERSION = '0.9_1';
@ISA = qw(Exporter DynaLoader);
Term::Caca->bootstrap($VERSION);
use strict;
use Term::Caca::Constants ':all';
# Basic functions
# constructor
sub new {
my ($class) = @_;
_init();
my $self = { };
return bless($self => $class);
}
*init = \*new;
# set delay for establishing constant framerate
sub set_delay {
my ($self, $usec) = @_;
$usec ||= 0;
_set_delay($usec);
}
#
sub get_feature {
my ($self, $feature) = @_;
$feature ||= 0;
return _get_feature($feature);
}
#
sub set_feature {
my ($self, $feature) = @_;
$feature ||= 0;
_get_feature($feature);
}
#
sub get_feature_name {
my ($self, $feature) = @_;
$feature ||= 0;
return _get_feature_name($feature);
}
#
sub get_rendertime {
# my ($self) = @_;
return _get_rendertime();
}
#
sub get_width {
# my ($self) = @_;
return _get_width();
}
#
sub get_height {
# my ($self) = @_;
return _get_height();
}
#
sub set_window_title {
my ($self, $title) = @_;
$title ||= "";
return _set_window_title($title);
}
#
sub get_window_width {
# my ($self) = @_;
return _get_window_width();
}
#
sub get_window_height {
# my ($self) = @_;
return _get_window_height();
}
#
sub refresh {
_refresh();
}
# destructor
sub DESTROY {
my ($self) = @_;
_end();
}
# Event handling
#
sub get_event {
my ($self, $event_mask) = @_;
if (!defined($event_mask)) {
$event_mask = 0xFFFFFFFF;
}
return _get_event($event_mask);
}
#
sub get_mouse_x {
my ($self) = @_;
return _get_mouse_x();
}
#
sub get_mouse_y {
my ($self) = @_;
return _get_mouse_y();
}
#
sub wait_event {
my ($self, $event_mask) = @_;
$event_mask ||= CACA_EVENT_ANY;
return _wait_event($event_mask);
}
1;
# Character printing
#
sub set_color {
my ($self, $fgcolor, $bgcolor) = @_;
$fgcolor ||= CACA_COLOR_LIGHTGRAY;
$bgcolor ||= CACA_COLOR_BLACK;
return _set_color($fgcolor, $bgcolor);
}
#
sub get_fg_color {
my ($self) = @_;
return _get_fg_color();
}
#
sub get_bg_color {
my ($self) = @_;
return _get_bg_color();
}
#
sub get_color_name {
my ($self, $color) = @_;
return undef unless(defined($color));
return _get_color_name($color);
}
#
sub putchar {
my ($self, $x, $y, $c) = @_;
$x ||= 0;
$y ||= 0;
$c ||= "";
_putchar($x, $y, $c);
}
#
sub putstr {
my ($self, $x, $y, $s) = @_;
$x ||= 0;
$y ||= 0;
$s ||= "";
_putstr($x, $y, $s);
}
# faking it by doing printf on the perl side
sub printf {
my ($self, $x, $y, $s, @args) = @_;
$x ||= 0;
$y ||= 0;
my $string = sprintf($s, @args);
_putstr($x, $y, $string);
}
#
sub clear {
_clear();
}
# Primitives drawing
#
sub draw_line {
my ($self, $x1, $y1, $x2, $y2, $c) = @_;
_draw_line($x1, $y1, $x2, $y2, $c);
}
#
sub draw_polyline {
my ($self, $x, $y, $n, $c) = @_;
_draw_polyline($x, $y, $n, $c);
}
#
sub draw_thin_line {
my ($self, $x1, $y1, $x2, $y2) = @_;
_draw_thin_line($x1, $y1, $x2, $y2);
}
#
sub draw_thin_polyline {
my ($self, $x, $y, $n) = @_;
_draw_thin_polyline($x, $y, $n);
}
#
sub draw_circle {
my ($self, $x, $y, $r, $c) = @_;
# TODO : check for sane values
_draw_circle($x, $y, $r, $c);
}
#
sub draw_ellipse {
my ($self, $x0, $y0, $ra, $rb, $c) = @_;
_draw_ellipse($x0, $y0, $ra, $rb, $c);
}
#
sub draw_thin_ellipse {
my ($self, $x0, $y0, $ra, $rb) = @_;
_draw_ellipse($x0, $y0, $ra, $rb);
}
#
sub fill_ellipse {
my ($self, $x0, $y0, $ra, $rb, $c) = @_;
_fill_ellipse($x0, $y0, $ra, $rb, $c);
}
#
sub draw_box {
my ($self, $x0, $y0, $x1, $y1, $c) = @_;
_draw_box($x0, $y0, $x1, $y1, $c);
}
#
sub draw_thin_box {
my ($self, $x0, $y0, $x1, $y1) = @_;
_draw_thin_box($x0, $y0, $x1, $y1);
}
#
sub fill_box {
my ($self, $x0, $y0, $x1, $y1, $c) = @_;
_fill_box($x0, $y0, $x1, $y1, $c);
}
#
sub draw_triangle {
my ($self, $x0, $y0, $x1, $y1, $x2, $y2, $c) = @_;
_draw_triangle($x0, $y0, $x1, $y1, $x2, $y2, $c);
}
#
sub draw_thin_triangle {
my ($self, $x0, $y0, $x1, $y1, $x2, $y2) = @_;
_draw_thin_triangle($x0, $y0, $x1, $y1, $x2, $y2);
}
#
sub fill_triangle {
my ($self, $x0, $y0, $x1, $y1, $x2, $y2, $c) = @_;
_fill_triangle($x0, $y0, $x1, $y1, $x2, $y2, $c);
}
# Mathematical functions
#
sub rand {
my ($self, $min, $max) = @_;
return _rand($min, $max);
}
#
sub sqrt {
my ($self, $n) = @_;
return _sqrt($n);
}
# Sprite handling
#
sub load_sprite {
my ($self, $file) = @_;
my $sprite = _load_sprite($file);
}
#
sub get_sprite_frames {
my ($self, $sprite) = @_;
return _get_sprite_frames($sprite);
}
#
sub get_sprite_width {
my ($self, $sprite) = @_;
return _get_sprite_width($sprite);
}
#
sub get_sprite_height {
my ($self, $sprite) = @_;
return _get_sprite_height($sprite);
}
#
sub get_sprite_dx {
my ($self, $sprite) = @_;
return _get_sprite_dx($sprite);
}
#
sub get_sprite_dy {
my ($self, $sprite) = @_;
return _get_sprite_dy($sprite);
}
#
sub draw_sprite {
my ($self, $x, $y, $sprite, $f) = @_;
_draw_sprite($x, $y, $sprite, $f);
}
#
sub free_sprite {
my ($self, $sprite) = @_;
_free_sprite($sprite);
}
# Bitmap handling
#
sub create_bitmap {
my ($self, $bpp, $w, $h, $pitch, $rmask, $gmask, $bmask, $amask) = @_;
_create_bitmap($bpp, $w, $h, $pitch, $rmask, $gmask, $bmask, $amask);
}
#
sub set_bitmap_palette {
my ($self, $bitmap, $red, $green, $blue, $alpha) = @_;
_set_bitmap_palette($bitmap, $red, $green, $blue, $alpha);
}
#
sub draw_bitmap {
my ($self, $x1, $y1, $x2, $y2, $bitmap, $pixels) = @_;
_draw_bitmap($x1, $y1, $x2, $y2, $bitmap, $pixels);
}
sub free_bitmap {
my ($self, $bitmap) = @_;
_free_bitmap($bitmap);
}
__END__
=head1 NAME
Term::Caca - perl interface for libcaca (Colour AsCii Art library)
=head1 SYNOPSIS
=head1 DESCRIPTION
=head2 Class Methods
=head2 Object Methods
=head1 AUTHOR
=head1 SEE ALSO
=cut
# vim:sw=2 sts=2 expandtab