File Coverage

lib/Graphics/Toolkit/Color/Space/Instance/DCIP3Linear.pm
Criterion Covered Total %
statement 15 15 100.0
branch n/a
condition n/a
subroutine 5 5 100.0
pod 0 2 0.0
total 20 22 90.9


line stmt bran cond sub pod time code
1              
2             # DCI-P3, with original Theater-Whitepoint [0.89459, 1.0, 0.95442]
3              
4             package Graphics::Toolkit::Color::Space::Instance::DCIP3Linear;
5 16     16   274586 use v5.12;
  16         46  
6 16     16   60 use warnings;
  16         29  
  16         694  
7 16     16   424 use Graphics::Toolkit::Color::Space qw/mult_matrix_vector_3/;
  16         21  
  16         4219  
8              
9             my @D65 = (0.95047, 1, 1.08883);
10              
11             sub from_dci {
12 10     10 0 15 my ($lrgb) = shift;
13 10         30 my @xyz = mult_matrix_vector_3([[ 0.4592758400, 0.2958171474, 0.1953770175 ],
14             [ 0.2151608649, 0.7091342514, 0.0757048839 ],
15             [ 0.0002710702, 0.0469362492, 1.0416226857 ], ], @$lrgb);
16 10         45 $xyz[$_] /= $D65[ $_ ] for 0 .. 2;
17 10         23 return \@xyz;
18             }
19             sub to_dci {
20 10     10 0 12 my ($xyz) = shift;
21 10         39 $xyz->[$_] *= $D65[ $_ ] for 0 .. 2;
22 10         32 return [ mult_matrix_vector_3( [[ 2.6901363967, -1.0940624767, -0.4250723022 ],
23             [ -0.8200938994, 1.7505139921, 0.0265979630 ],
24             [ 0.0362539300, -0.0785946720, 0.9589526318 ], ], @$xyz) ];
25             }
26              
27             Graphics::Toolkit::Color::Space->new(
28             name => 'dci-p3-linear',
29             alias_name => 'Linear DCI-P3',
30             family => 'RGB',
31             axis => [qw/red green blue/],
32             precision => 6,
33             convert => {XYZ => [\&from_dci, \&to_dci]},
34             );