File Coverage

blib/lib/PDF/Make/Builder/Shape/Ellipse.pm
Criterion Covered Total %
statement 28 28 100.0
branch n/a
condition n/a
subroutine 6 6 100.0
pod 1 1 100.0
total 35 35 100.0


line stmt bran cond sub pod time code
1             package PDF::Make::Builder::Shape::Ellipse;
2 42     42   214 use strict;
  42         76  
  42         1309  
3 42     42   166 use warnings;
  42         70  
  42         1600  
4 42     42   149 use Object::Proto;
  42         56  
  42         2985  
5              
6             BEGIN {
7 42     42   1766 Object::Proto::define('PDF::Make::Builder::Shape::Ellipse',
8             'fill_colour:Str:default(#000)',
9             'x:Num:required',
10             'y:Num:required',
11             'w:Num:required',
12             'h:Num:required',
13             );
14 42         1855 Object::Proto::import_accessors('PDF::Make::Builder::Shape::Ellipse');
15             }
16              
17 42     42   211 use constant K => 0.5522847498;
  42         59  
  42         10250  
18              
19             sub add {
20 1     1 1 3 my ($self, $builder) = @_;
21 1         5 my $page = $builder->page;
22 1         4 my $canvas = $page->canvas;
23 1         4 my $font = $builder->font;
24              
25 1         4 my $cx = $self->x;
26 1         3 my $cy = $self->y;
27 1         4 my $rx = ($self->w) / 2;
28 1         3 my $ry = ($self->h) / 2;
29 1         5 my ($cr, $cg, $cb) = $font->hex_to_rgb(fill_colour $self);
30              
31 1         3 my $kx = $rx * K;
32 1         1 my $ky = $ry * K;
33              
34 1         9 $canvas->q->rg($cr, $cg, $cb);
35              
36 1         37 $canvas->m($cx + $rx, $cy)
37             ->c($cx + $rx, $cy + $ky, $cx + $kx, $cy + $ry, $cx, $cy + $ry)
38             ->c($cx - $kx, $cy + $ry, $cx - $rx, $cy + $ky, $cx - $rx, $cy)
39             ->c($cx - $rx, $cy - $ky, $cx - $kx, $cy - $ry, $cx, $cy - $ry)
40             ->c($cx + $kx, $cy - $ry, $cx + $rx, $cy - $ky, $cx + $rx, $cy)
41             ->f->Q;
42              
43 1         3 return $self;
44             }
45              
46             1;
47              
48             __END__