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 15     15   332877 use v5.12;
  15         56  
6 15     15   99 use warnings;
  15         27  
  15         875  
7 15     15   759 use Graphics::Toolkit::Color::Space qw/mult_matrix_vector_3/;
  15         30  
  15         5533  
8              
9             my @D65 = (0.95047, 1, 1.08883);
10              
11             sub from_xyz {
12 4     4 0 6 my ($xyz) = shift;
13 4         15 $xyz->[$_] *= $D65[ $_ ] for 0 .. 2;
14 4         14 return [ mult_matrix_vector_3( [[ 2.6901363967, -1.0940624767, -0.4250723022 ],
15             [ -0.8200938994, 1.7505139921, 0.0265979630 ],
16             [ 0.0362539300, -0.0785946720, 0.9589526318 ], ], @$xyz) ];
17             }
18             sub to_xyz {
19 4     4 0 5 my ($lrgb) = shift;
20 4         12 my @xyz = mult_matrix_vector_3([[ 0.4592758400, 0.2958171474, 0.1953770175 ],
21             [ 0.2151608649, 0.7091342514, 0.0757048839 ],
22             [ 0.0002710702, 0.0469362492, 1.0416226857 ], ], @$lrgb);
23 4         18 $xyz[$_] /= $D65[ $_ ] for 0 .. 2;
24 4         8 return \@xyz;
25             }
26              
27            
28             Graphics::Toolkit::Color::Space->new(
29             name => 'dci-p3-linear',
30             alias => 'Linear DCI-P3',
31             axis => [qw/red green blue/],
32             precision => 6,
33             convert => {XYZ => [\&to_xyz, \&from_xyz]},
34             );