File Coverage

lib/SVG/Estimate/Path/VerticalLineto.pm
Criterion Covered Total %
statement 17 17 100.0
branch 10 12 83.3
condition n/a
subroutine 2 2 100.0
pod 0 1 0.0
total 29 32 90.6


line stmt bran cond sub pod time code
1             package SVG::Estimate::Path::VerticalLineto;
2             $SVG::Estimate::Path::VerticalLineto::VERSION = '1.0114';
3 10     10   1476 use Moo;
  10         32  
  10         62  
4              
5             extends 'SVG::Estimate::Path::Command';
6             with 'SVG::Estimate::Role::Pythagorean';
7              
8             =head1 NAME
9              
10             SVG::Estimate::Path::VerticalLineto - Handles estimating vertical lines.
11              
12             =head1 VERSION
13              
14             version 1.0114
15              
16             =head1 SYNOPSIS
17              
18             my $line = SVG::Estimate::Path::VerticalLineto->new(
19             transformer => $transform,
20             start_point => [13, 19],
21             y => 45,
22             );
23              
24             my $length = $line->length;
25              
26             =head1 INHERITANCE
27              
28             This class extends L and consumes L.
29              
30             =head1 METHODS
31              
32             =head2 new()
33              
34             Constructor.
35              
36             =over
37              
38             =item y
39              
40             A float representing what to change the y value to.
41              
42             =back
43              
44             =cut
45              
46             has y => (
47             is => 'ro',
48             required => 1,
49             );
50              
51             sub BUILDARGS {
52 8     8 0 9735 my ($class, @args) = @_;
53             ##Upgrade to hashref
54 8 100       38 my $args = @args % 2 ? $args[0] : { @args };
55 8         26 my $end = [$args->{start_point}[0], $args->{y}];
56 8 100       40 if ($args->{transformer}->has_transforms) {
57 1         5 $end = $args->{transformer}->transform($end);
58             }
59 8         307 $args->{end_point} = [$args->{start_point}[0], $end->[1]];
60 8         20 $args->{y} = $args->{end_point}[1];
61 8         34 $args->{shape_length} = $class->pythagorean($args->{start_point}, $args->{end_point});
62 8         19 $args->{travel_length} = 0;
63 8 50       35 $args->{min_x} = $args->{start_point}[0] < $args->{end_point}->[0] ? $args->{start_point}[0] : $args->{end_point}->[0];
64 8 100       35 $args->{min_y} = $args->{start_point}[1] < $args->{end_point}->[1] ? $args->{start_point}[1] : $args->{end_point}->[1];
65 8 50       27 $args->{max_x} = $args->{start_point}[0] > $args->{end_point}->[0] ? $args->{start_point}[0] : $args->{end_point}->[0];
66 8 100       38 $args->{max_y} = $args->{start_point}[1] > $args->{end_point}->[1] ? $args->{start_point}[1] : $args->{end_point}->[1];
67 8         154 return $args;
68             }
69              
70             1;