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