File Coverage

blib/lib/Data/Petitcom/Resource/CHR.pm
Criterion Covered Total %
statement 35 35 100.0
branch n/a
condition n/a
subroutine 9 9 100.0
pod 0 2 0.0
total 44 46 95.6


line stmt bran cond sub pod time code
1             package Data::Petitcom::Resource::CHR;
2              
3 3     3   1498 use strict;
  3         7  
  3         131  
4 3     3   18 use warnings;
  3         1609  
  3         130  
5              
6 3     3   18 use parent qw{ Data::Petitcom::Resource::GRP };
  3         5  
  3         24  
7              
8 3     3   167 use constant RESOURCE => 'CHR';
  3         6  
  3         144  
9 3     3   15 use constant BMP_WIDTH => 256;
  3         6  
  3         137  
10 3     3   18 use constant BMP_HEIGHT => 64;
  3         7  
  3         131  
11 3     3   14 use constant PTC_NAME => 'DPTC_CHR';
  3         6  
  3         722  
12              
13             sub save {
14 2     2 0 15 my $self = shift;
15 2         23 my $ptc = $self->SUPER::save(@_);
16 2         11 my @pixels = map { sprintf( "%x", $_ % 16 ) }
  32768         64630  
17             unpack 'C*', bytes::substr( $ptc->data, 0x0C );
18 2         3794 my $deflated = pack 'h*', join( '', @pixels );
19 2         50 $ptc->data($deflated);
20 2         2161 return $ptc;
21             }
22              
23             sub load {
24 1     1 0 2 my $self = shift;
25 1         3 my $ptc = shift;
26 1         5 my @nibbles = split //, unpack( 'h*', bytes::substr( $ptc->data, 0x0C ) );
27 1         4337 my $inflated = pack 'C*', map { hex($_) } @nibbles;
  16384         29142  
28 1         376 $ptc->data($inflated);
29 1         25 $self->SUPER::load( $ptc, @_ );
30             }
31              
32             1;