File Coverage

lib/Graphics/Toolkit/Color/Space/Instance/Rec2020.pm
Criterion Covered Total %
statement 14 14 100.0
branch 4 4 100.0
condition n/a
subroutine 5 5 100.0
pod 0 2 0.0
total 23 25 92.0


line stmt bran cond sub pod time code
1              
2             # Rec.2020 slightly improved Rec.709
3              
4             package Graphics::Toolkit::Color::Space::Instance::Rec2020;
5 15     15   361525 use v5.12;
  15         61  
6 15     15   102 use warnings;
  15         93  
  15         978  
7 15     15   717 use Graphics::Toolkit::Color::Space qw/gamma_correct/;
  15         32  
  15         5228  
8              
9              
10             my $alpha = 1.09929682680944;
11             my $beta = 0.018053968510807; # 0.0180 - Rec709
12             my $lin_factor = 4.5;
13             my $beta_inv = $lin_factor * $beta;
14             my $gamma = 0.45;
15              
16             sub from_lrgb {
17 4     4 0 9 my $lrgb = shift;
18 4 100       11 return [ map {(abs($_) <= $beta) ? ($_ * $lin_factor)
  12         48  
19             : ((gamma_correct($_, $gamma) * $alpha) - $alpha + 1)} @$lrgb];
20             }
21             sub to_lrgb {
22 4     4 0 8 my $rgb = shift;
23 4 100       10 return [ map {(abs($_) <= $beta_inv) ? ($_ / $lin_factor)
  12         53  
24             : gamma_correct(($_ + $alpha - 1) / $alpha, 1 / $gamma)} @$rgb];
25             }
26            
27             Graphics::Toolkit::Color::Space->new(
28             name => 'Rec.2020',
29             alias => 'BT.2020',
30             axis => [qw/red green blue/],
31             precision => 6,
32             convert => {LinearRGB => [\&to_lrgb, \&from_lrgb]},
33             );
34              
35             # .001,.1,.999