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 16     16   254459 use v5.12;
  16         61  
6 16     16   370 use warnings;
  16         189  
  16         741  
7 16     16   448 use Graphics::Toolkit::Color::Space qw/spow/;
  16         142  
  16         3873  
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 5 my $lrgb = shift;
18 4 100       6 return [ map {(abs($_) <= $beta) ? ($_ * $lin_factor)
  12         28  
19             : ((spow($_, $gamma) * $alpha) - $alpha + 1)} @$lrgb];
20             }
21             sub to_lrgb {
22 4     4 0 4 my $rgb = shift;
23 4 100       7 return [ map {(abs($_) <= $beta_inv) ? ($_ / $lin_factor)
  12         31  
24             : spow(($_ + $alpha - 1) / $alpha, 1 / $gamma)} @$rgb];
25             }
26            
27             Graphics::Toolkit::Color::Space->new(
28             name => 'Rec.2020',
29             alias_name => 'BT.2020',
30             family => 'RGB',
31             axis => [qw/red green blue/],
32             precision => 6,
33             convert => {LinearRGB => [\&to_lrgb, \&from_lrgb]},
34             );
35              
36             # .001,.1,.999