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
|
package Imager::Color::Float;
use Imager;
use strict;
use vars qw($VERSION);
$VERSION = "1.004";
# It's just a front end to the XS creation functions.
# Parse color spec into an a set of 4 colors
sub pspec {
return (@_,1) if @_ == 3;
return (@_ ) if @_ == 4;
if ($_[0] =~
/^\#?([\da-f][\da-f])([\da-f][\da-f])([\da-f][\da-f])([\da-f][\da-f])/i) {
return (hex($1)/255.99,hex($2)/255.99,hex($3)/255.99,hex($4)/255.99);
}
if ($_[0] =~ /^\#?([\da-f][\da-f])([\da-f][\da-f])([\da-f][\da-f])/i) {
return (hex($1)/255.99,hex($2)/255.99,hex($3)/255.99,1);
}
return ();
}
sub new {
shift; # get rid of class name.
my @arg = pspec(@_);
return @arg ? new_internal($arg[0],$arg[1],$arg[2],$arg[3]) : ();
}
sub set {
my $self = shift;
my @arg = pspec(@_);
return @arg ? set_internal($self, $arg[0],$arg[1],$arg[2],$arg[3]) : ();
}
1;
__END__
=head1 NAME
Imager::Color::Float - Rough floating point sample colour handling
=head1 SYNOPSIS
$color = Imager::Color->new($red, $green, $blue);
$color = Imager::Color->new($red, $green, $blue, $alpha);
$color = Imager::Color->new("#C0C0FF"); # html color specification
$color->set($red, $green, $blue);
$color->set($red, $green, $blue, $alpha);
$color->set("#C0C0FF"); # html color specification
($red, $green, $blue, $alpha) = $color->rgba();
@hsv = $color->hsv(); # not implemented but proposed
$color->info();
=head1 DESCRIPTION
This module handles creating color objects used by imager. The idea is
that in the future this module will be able to handle colorspace calculations
as well.
=over 4
=item new
This creates a color object to pass to functions that need a color argument.
=item set
This changes an already defined color. Note that this does not affect any places
where the color has been used previously.
=item rgba
This returns the rgba code of the color the object contains.
=item info
Calling info merely dumps the relevant colorcode to the log.
=back
=head1 AUTHOR
Arnar M. Hrafnkelsson, addi@umich.edu
And a great deal of help from others - see the README for a complete
list.
=head1 SEE ALSO
Imager(3)
http://imager.perl.org/
=cut
|