Rename to HSLuv
[convert-color-hsluv.git] / lib / Convert / Color / HPLuv.pm
CommitLineData
d192eff4 1package Convert::Color::HPLuv;
1f72b051 2
4e59696a 3use 5.008009;
1f72b051
MG
4use strict;
5use warnings;
d192eff4 6use parent qw/Convert::Color::HSLuv/;
1f72b051
MG
7
8use Convert::Color::XYZ;
9use Convert::Color::LUV;
10use Convert::Color::LCh;
11use List::Util qw/min/;
12use Math::Trig qw/:pi/;
13
14BEGIN {
d192eff4 15 *_get_bounds = *Convert::Color::HSLuv::_get_bounds; ## no critic (ProtectPrivate)
1f72b051
MG
16}
17
a17d2402 18our $VERSION = '1.000';
1f72b051 19
d192eff4 20__PACKAGE__->register_color_space('hpluv');
1f72b051
MG
21
22sub _intersect_line_line {
23 my ($l1, $l2) = @_;
24 ($l1->[1] - $l2->[1]) / ($l2->[0] - $l1->[0])
25}
26
27sub _distance_from_pole {
28 my ($x, $y) = @_;
29 sqrt $x * $x + $y * $y
30}
31
32sub max_chroma_for_lh {
33 my ($self, $l) = @_;
34 min map {
35 my ($m, $n) = @$_;
36 my $x = _intersect_line_line $_, [-1 / $m, 0];
37 _distance_from_pole $x, $n + $x * $m
38 } _get_bounds $l
39}
40
411;
42__END__
43
44=encoding utf-8
45
46=head1 NAME
47
d192eff4 48Convert::Color::HPLuv - a color value in the HPLuv color space
1f72b051
MG
49
50=head1 SYNOPSIS
51
d192eff4
MG
52 use Convert::Color::HPLuv;
53 my $reddish = Convert::Color::HPLuv->new(12.17705, 100, 53.23712);
54 my $greenish = Convert::Color::HPLuv->new('127.71501,100,87.73552');
1f72b051
MG
55
56 use Convert::Color;
d192eff4 57 my $bluish = Convert::Color->new('hpluv:265.87432,100,32.30087');
1f72b051
MG
58
59 say $reddish->H; # 12.17705
60 say $reddish->S; # 100
61 say $reddish->L; # 53.23712
62 say join ',', $bluish->hsl; # 265.87432,100,32.30087
63
64=head1 DESCRIPTION
65
d192eff4 66Objects of this class represent colors in the HPLuv color space, revision 4.
1f72b051
MG
67
68Methods:
69
70=over
71
d192eff4 72=item Convert::Color::HPLuv->B<new>(I<$h>, I<$s>, I<$l>)
1f72b051
MG
73
74Construct a color from its components.
75
d192eff4 76=item Convert::Color::HPLuv->B<new>(I<"$h,$s,$l">)
1f72b051
MG
77
78Construct a color from a string. The string should contain the three
79components, separated by commas.
80
d192eff4 81=item $hpluv->B<H>
1f72b051 82
d192eff4 83=item $hpluv->B<S>
1f72b051 84
d192eff4 85=item $hpluv->B<L>
1f72b051
MG
86
87Accessors for the three components of the color.
88
d192eff4 89=item $hpluv->B<hsl>
1f72b051
MG
90
91Returns the three components as a list.
92
93=back
94
95=head1 SEE ALSO
96
d192eff4 97L<Convert::Color>, L<http://www.hsluv.org/>
1f72b051
MG
98
99=head1 AUTHOR
100
101Marius Gavrilescu, E<lt>marius@ieval.roE<gt>
102
103=head1 COPYRIGHT AND LICENSE
104
105Copyright (C) 2015 by Marius Gavrilescu
106
107This library is free software; you can redistribute it and/or modify
108it under the same terms as Perl itself, either Perl version 5.20.2 or,
109at your option, any later version of Perl 5 you may have available.
110
111
112=cut
This page took 0.135923 seconds and 4 git commands to generate.