/usr/share/perl5/Geometry/Primitive/Rectangle.pm is in libgeometry-primitive-perl 0.24-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | package Geometry::Primitive::Rectangle;
use Moose;
use MooseX::Storage;
use Geometry::Primitive::Point;
with qw(Geometry::Primitive::Shape MooseX::Clone MooseX::Storage::Deferred);
has 'height' => (
is => 'rw',
isa => 'Num',
required => 1
);
has 'origin' => (
is => 'rw',
isa => 'Geometry::Primitive::Point',
coerce => 1
);
has 'width' => (
is => 'rw',
isa => 'Num',
required => 1
);
sub area {
my ($self) = @_;
return $self->height * $self->width;
}
sub get_points {
my ($self) = @_;
my @points;
push(@points, $self->origin);
push(@points, Geometry::Primitive::Point->new(
x => $self->origin->x + $self->width, y => $self->origin->y
));
push(@points, Geometry::Primitive::Point->new(
x => $self->origin->x, y => $self->origin->y + $self->height
));
push(@points, Geometry::Primitive::Point->new(
x => $self->origin->x + $self->width, y => $self->origin->y + $self->height
));
return \@points
}
sub scale {
my ($self, $amount) = @_;
$self->width($self->width * $amount);
$self->height($self->height * $amount);
}
sub point_end {
my ($self) = @_; return $self->origin;
}
sub point_start {
my ($self) = @_; return $self->origin;
}
__PACKAGE__->meta->make_immutable;
no Moose;
1;
__END__
=head1 NAME
Geometry::Primitive::Rectangle - 4 sided polygon
=head1 DESCRIPTION
Geometry::Primitive::Rectangle a space defined by a point, a width and a
height.
=head1 SYNOPSIS
use Geometry::Primitive::Rectangle;
my $poly = Geometry::Primitive::Rectangle->new();
$poly->add_point($point1);
$poly->height(100);
$poly->width(100);
=head1 ATTRIBUTES
=head2 height
Set/Get the height of this Rectangle.
=head2 origin
Set/Get the origin of this rectangle.
=head2 width
Set/Get the width of this Rectangle.
=head1 METHODS
=head2 new
Creates a new Geometry::Primitive::Rectangle
=head2 area
Returns the area of this rectangle.
=head2 get_points
Get the points that make up this Rectangle.
=head2 point_end
Get the end point. Returns the origin. Provided for Shape role.
=head2 point_start
Get the start point. Returns the origin. Provided for Shape role.
=head2 scale ($amount)
Scales the hieght and width of this rectangle by the amount specified.
=head1 AUTHOR
Cory Watson <gphat@cpan.org>
=head1 COPYRIGHT & LICENSE
You can redistribute and/or modify this code under the same terms as Perl
itself.
|