|  line  | 
 stmt  | 
 bran  | 
 cond  | 
 sub  | 
 pod  | 
 time  | 
 code  | 
| 
1
 | 
  
 
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 package Data::Faker::Colour;  | 
| 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
 
 | 
13487
 | 
 use 5.014000;  | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
4
 | 
    | 
| 
4
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
 
 | 
6
 | 
 use strict;  | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
2
 | 
    | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
16
 | 
    | 
| 
5
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
 
 | 
4
 | 
 use warnings;  | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
5
 | 
    | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
28
 | 
    | 
| 
6
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
 
 | 
356
 | 
 use parent qw/Data::Faker/;  | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
221
 | 
    | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
4
 | 
    | 
| 
7
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
 
 | 
1416
 | 
 use Convert::Color::HSLuv;  | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
34194
 | 
    | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
461
 | 
    | 
| 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 our $VERSION = '0.001';  | 
| 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
  
1
  
 | 
148
 | 
 sub new { bless {}, shift } # Don't call superclass constructor  | 
| 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13
 | 
18
 | 
 
 | 
 
 | 
  
18
  
 | 
  
0
  
 | 
90
 | 
 sub ir ($) { int rand $_[0] }  | 
| 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub colour {  | 
| 
16
 | 
2
 | 
 
 | 
 
 | 
  
2
  
 | 
  
1
  
 | 
422
 | 
 	shift; # drop $self  | 
| 
17
 | 
2
 | 
 
 | 
  
100
  
 | 
 
 | 
 
 | 
10
 | 
 	my $cnt = shift // 1;  | 
| 
18
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
5
 | 
 	my %args = @_;  | 
| 
19
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
3
 | 
 	my @ret;  | 
| 
20
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
21
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
7
 | 
 	for (1 .. $cnt) {  | 
| 
22
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
12
 | 
 		push @ret, [ir 256, ir 256, ir 256]  | 
| 
23
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
24
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
25
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
13
 | 
 	wantarray ? @ret : $ret[0]  | 
| 
26
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
27
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub colour_hsluv {  | 
| 
29
 | 
5
 | 
 
 | 
 
 | 
  
5
  
 | 
  
1
  
 | 
5117
 | 
 	shift; # drop $self  | 
| 
30
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
12
 | 
 	my @ret;  | 
| 
31
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
13
 | 
 	my ($cnt, $ch, $cs, $cl) = @_;  | 
| 
32
 | 
5
 | 
 
 | 
  
100
  
 | 
 
 | 
 
 | 
23
 | 
 	$cnt //= 1;  | 
| 
33
 | 
5
 | 
 
 | 
  
100
  
 | 
 
 | 
 
 | 
17
 | 
 	$ch  //= -1;  | 
| 
34
 | 
5
 | 
 
 | 
  
100
  
 | 
 
 | 
 
 | 
25
 | 
 	$cs  //= -1;  | 
| 
35
 | 
5
 | 
 
 | 
  
100
  
 | 
 
 | 
 
 | 
24
 | 
 	$cl  //= -1;  | 
| 
36
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
37
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
15
 | 
 	for (1 .. $cnt) {  | 
| 
38
 | 
2601
 | 
 
 | 
 
 | 
 
 | 
 
 | 
4802
 | 
 		my ($h, $s, $l) = ($ch, $cs, $cl);  | 
| 
39
 | 
2601
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
5794
 | 
 		$h = rand 360 if $h < 0;  | 
| 
40
 | 
2601
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
5234
 | 
 		$s = rand 100 if $s < 0;  | 
| 
41
 | 
2601
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
5217
 | 
 		$l = rand 100 if $l < 0;  | 
| 
42
 | 
2601
 | 
 
 | 
 
 | 
 
 | 
 
 | 
6326
 | 
 		my @colour = Convert::Color::HSLuv->new($h, $s, $l)->rgb;  | 
| 
43
 | 
2601
 | 
 
 | 
 
 | 
 
 | 
 
 | 
539413
 | 
 		for (@colour) {  | 
| 
44
 | 
7803
 | 
 
 | 
 
 | 
 
 | 
 
 | 
46293
 | 
 			$_ = int (256 * $_);  | 
| 
45
 | 
7803
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
15912
 | 
 			$_ = 0 if $_ < 0;  | 
| 
46
 | 
7803
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
15979
 | 
 			$_ = 255 if $_ > 255;  | 
| 
47
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		}  | 
| 
48
 | 
2601
 | 
 
 | 
 
 | 
 
 | 
 
 | 
5620
 | 
 		push @ret, \@colour  | 
| 
49
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
50
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
51
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
258
 | 
 	wantarray ? @ret : $ret[0]  | 
| 
52
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
53
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
54
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub to_hex {  | 
| 
55
 | 
  
0
  
 | 
 
 | 
 
 | 
  
0
  
 | 
  
0
  
 | 
 
 | 
 	my ($rgb) = @_;  | 
| 
56
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	sprintf "#%02x%02x%02x", @$rgb  | 
| 
57
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
58
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
59
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub to_css {  | 
| 
60
 | 
  
0
  
 | 
 
 | 
 
 | 
  
0
  
 | 
  
0
  
 | 
 
 | 
 	my ($rgb) = @_;  | 
| 
61
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	sprintf 'rgb(%d,%d,%d)', @$rgb  | 
| 
62
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
63
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
64
 | 
  
0
  
 | 
 
 | 
 
 | 
  
0
  
 | 
  
1
  
 | 
 
 | 
 sub colour_hex       { map { to_hex $_ } colour @_ }  | 
| 
 
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
65
 | 
  
0
  
 | 
 
 | 
 
 | 
  
0
  
 | 
  
1
  
 | 
 
 | 
 sub colour_css       { map { to_css $_ } colour @_ }  | 
| 
 
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
66
 | 
  
0
  
 | 
 
 | 
 
 | 
  
0
  
 | 
  
1
  
 | 
 
 | 
 sub colour_hsluv_hex { map { to_hex $_ } colour_hsluv @_ }  | 
| 
 
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
67
 | 
  
0
  
 | 
 
 | 
 
 | 
  
0
  
 | 
  
1
  
 | 
 
 | 
 sub colour_hsluv_css { map { to_css $_ } colour_hsluv @_ }  | 
| 
 
 | 
0
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
68
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
69
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 BEGIN {  | 
| 
70
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
 
 | 
5
 | 
 	*color           = *colour;  | 
| 
71
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
2
 | 
 	*color_hsluv     = *colour_hsluv;  | 
| 
72
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
3
 | 
 	*color_hex       = *colour_hex;  | 
| 
73
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
2
 | 
 	*color_hsluv_hex = *colour_hsluv_hex;  | 
| 
74
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
2
 | 
 	*color_css       = *colour_css;  | 
| 
75
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
2
 | 
 	*color_hsluv_css = *colour_hsluv_css;  | 
| 
76
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
77
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
3
 | 
 	for my $c (qw/colour color/) {  | 
| 
78
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
43
 | 
 		__PACKAGE__->register_plugin(  | 
| 
79
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 			"${c}"           => \&colour,  | 
| 
80
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 			"${c}_hsluv"     => \&colour_hsluv,  | 
| 
81
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 			"${c}_hex"       => \&colour_hex,  | 
| 
82
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 			"${c}_hsluv_hex" => \&colour_hsluv_hex,  | 
| 
83
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 			"${c}_css"       => \&colour_css,  | 
| 
84
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 			"${c}_hsluv_css" => \&colour_hsluv_css,  | 
| 
85
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		);  | 
| 
86
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
87
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
88
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
89
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 1;  | 
| 
90
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 __END__  |