Very large refactoring. Ditched Slic3r::Polyline::Closed and reorganized geometric classes.

This commit is contained in:
Alessandro Ranellucci 2011-12-30 19:59:51 +01:00
parent 2def6a9787
commit 8ed91a8ec4
20 changed files with 293 additions and 349 deletions

View file

@ -1,17 +1,10 @@
package Slic3r::Surface;
use Moo;
has 'contour' => (
is => 'ro',
#isa => 'Slic3r::Polyline::Closed',
required => 1,
);
has 'holes' => (
traits => ['Array'],
is => 'rw',
#isa => 'ArrayRef[Slic3r::Polyline::Closed]',
default => sub { [] },
has 'expolygon' => (
is => 'ro',
required => 1,
handles => [qw(encloses_point lines contour holes)],
);
has 'surface_type' => (
@ -24,31 +17,6 @@ has 'depth_layers' => (is => 'ro', default => sub {1});
has 'bridge_angle' => (is => 'ro');
sub cast_from_polygon {
my $class = shift;
my ($polygon, %args) = @_;
return $class->new(
contour => Slic3r::Polyline::Closed->cast($polygon),
%args,
);
}
sub cast_from_expolygon {
my $class = shift;
my ($expolygon, %args) = @_;
if (ref $expolygon eq 'HASH') {
$expolygon = Slic3r::ExPolygon->new($expolygon);
}
return $class->new(
contour => $expolygon->contour->closed_polyline,
holes => [ map $_->closed_polyline, $expolygon->holes ],
%args,
);
}
# static method to group surfaces having same surface_type, bridge_angle and depth_layers
sub group {
my $class = shift;
@ -73,7 +41,7 @@ sub add_hole {
my $self = shift;
my ($hole) = @_;
push @{ $self->holes }, $hole;
push @$self, $hole;
}
sub id {
@ -81,15 +49,6 @@ sub id {
return $self->contour->id;
}
sub encloses_point {
my $self = shift;
my ($point) = @_;
return 0 if !$self->contour->encloses_point($point);
return 0 if grep $_->encloses_point($point), @{ $self->holes };
return 1;
}
sub clipper_polygon {
my $self = shift;
@ -102,18 +61,8 @@ sub clipper_polygon {
}
sub p {
my $self = shift;
return ($self->contour->p, map $_->p, @{$self->holes});
}
sub expolygon {
my $self = shift;
return Slic3r::ExPolygon->new($self->contour->p, map $_->p, @{$self->holes});
}
sub lines {
my $self = shift;
return @{ $self->contour->lines }, map @{ $_->lines }, @{ $self->holes };
my $self = shift;use XXX; ZZZ $self->expolygon if !eval { 1 if @{$self->expolygon}; 1 };
return @{$self->expolygon};
}
1;