eliminate use vars
[imager.git] / lib / Imager / Color / Float.pm
1 package Imager::Color::Float;
2 use 5.006;
3 use Imager;
4 use strict;
5
6 our $VERSION = "1.006";
7
8 # It's just a front end to the XS creation functions.
9
10
11 # Parse color spec into an a set of 4 colors
12
13 sub _pspec {
14   return (@_,1) if @_ == 3;
15   return (@_    ) if @_ == 4;
16   if ($_[0] =~ 
17       /^\#?([\da-f][\da-f])([\da-f][\da-f])([\da-f][\da-f])([\da-f][\da-f])/i) {
18     return (hex($1)/255,hex($2)/255,hex($3)/255,hex($4)/255);
19   }
20   if ($_[0] =~ /^\#?([\da-f][\da-f])([\da-f][\da-f])([\da-f][\da-f])/i) {
21     return (hex($1)/255,hex($2)/255,hex($3)/255,1);
22   }
23   return ();
24 }
25
26 sub new {
27   shift; # get rid of class name.
28   my @arg = _pspec(@_);
29   return @arg ? new_internal($arg[0],$arg[1],$arg[2],$arg[3]) : ();
30 }
31
32 sub set {
33   my $self = shift;
34   my @arg = _pspec(@_);
35   return @arg ? set_internal($self, $arg[0],$arg[1],$arg[2],$arg[3]) : ();
36 }
37
38 sub CLONE_SKIP { 1 }
39
40 1;
41
42 __END__
43
44 =head1 NAME
45
46 Imager::Color::Float - Rough floating point sample color handling
47
48 =head1 SYNOPSIS
49
50   $color = Imager::Color->new($red, $green, $blue);
51   $color = Imager::Color->new($red, $green, $blue, $alpha);
52   $color = Imager::Color->new("#C0C0FF"); # html color specification
53
54   $color->set($red, $green, $blue);
55   $color->set($red, $green, $blue, $alpha);
56   $color->set("#C0C0FF"); # html color specification
57
58   ($red, $green, $blue, $alpha) = $color->rgba();
59   @hsv = $color->hsv(); # not implemented but proposed
60
61   $color->info();
62
63
64 =head1 DESCRIPTION
65
66 This module handles creating color objects used by Imager.  The idea
67 is that in the future this module will be able to handle color space
68 calculations as well.
69
70 A floating point Imager color consists of up to four components, each
71 in the range 0.0 to 1.0. Unfortunately the meaning of the components
72 can change depending on the type of image you're dealing with:
73
74 =over
75
76 =item *
77
78 for 3 or 4 channel images the color components are red, green, blue,
79 alpha.
80
81 =item *
82
83 for 1 or 2 channel images the color components are gray, alpha, with
84 the other two components ignored.
85
86 =back
87
88 An alpha value of zero is fully transparent, an alpha value of 1.0 is
89 fully opaque.
90
91 =head1 METHODS
92
93 =over 4
94
95 =item new
96
97 This creates a color object to pass to functions that need a color argument.
98
99 =item set
100
101 This changes an already defined color.  Note that this does not affect any places
102 where the color has been used previously.
103
104 =item rgba()
105
106 This returns the red, green, blue and alpha channels of the color the
107 object contains.
108
109 =item info
110
111 Calling info merely dumps the relevant color to the log.
112
113 =item red
114
115 =item green
116
117 =item blue
118
119 =item alpha
120
121 Returns the respective component as a floating point value typically
122 from 0 to 1.0.
123
124 =back
125
126 =head1 AUTHOR
127
128 Arnar M. Hrafnkelsson, addi@umich.edu
129 And a great deal of help from others - see the C<README> for a complete
130 list.
131
132 =head1 SEE ALSO
133
134 Imager(3), Imager::Color.
135
136 http://imager.perl.org/
137
138 =cut
139