File Coverage

blib/lib/PDF/Make/Builder/Shape/Box.pm
Criterion Covered Total %
statement 30 30 100.0
branch 4 4 100.0
condition 4 8 50.0
subroutine 5 5 100.0
pod 1 1 100.0
total 44 48 91.6


line stmt bran cond sub pod time code
1             package PDF::Make::Builder::Shape::Box;
2 42     42   242 use strict;
  42         109  
  42         1195  
3 42     42   166 use warnings;
  42         77  
  42         1713  
4 42     42   156 use Object::Proto;
  42         54  
  42         2647  
5              
6             BEGIN {
7 42     42   2820 Object::Proto::define('PDF::Make::Builder::Shape::Box',
8             'fill_colour:Str:default(#000)',
9             'x:Num', 'y:Num',
10             'w:Num', 'h:Num',
11             );
12 42         10254 Object::Proto::import_accessors('PDF::Make::Builder::Shape::Box');
13             }
14              
15             sub add {
16 15     15 1 27 my ($self, $builder) = @_;
17 15         37 my $page = $builder->page;
18 15         32 my $canvas = $page->canvas;
19 15         47 my $font = $builder->font;
20              
21 15   66     55 my $bx = $self->x // $page->content_x;
22 15   33     44 my $bw = $self->w // $page->width;
23 15   50     93 my $bh = $self->h // 50;
24              
25 15         32 my $by = $self->y;
26 15 100       33 if (!defined $by) {
27 10         18 $by = $page->cursor_y - $bh;
28             }
29              
30 15         25 my $colour = fill_colour $self;
31 15         52 my ($r, $g, $b) = $font->hex_to_rgb($colour);
32              
33 15         68 $canvas->q;
34 15 100       31 if ($colour eq 'transparent') {
35 1         14 $canvas->w(1)->RG($r, $g, $b)->re($bx, $by, $bw, $bh)->S;
36             } else {
37 14         162 $canvas->rg($r, $g, $b)->re($bx, $by, $bw, $bh)->f;
38             }
39 15         46 $canvas->Q;
40              
41             # Advance cursor
42 15         61 $page->advance_y($bh + 5);
43              
44 15         33 return $self;
45             }
46              
47             1;
48              
49             __END__