Implement clone() for Fill classes

This commit is contained in:
Alessandro Ranellucci 2016-11-30 19:47:45 +01:00
parent 52fbe10f3d
commit 27d41f89b8
8 changed files with 16 additions and 1 deletions

View File

@ -57,6 +57,7 @@ src/libslic3r/IO.hpp
src/libslic3r/Layer.cpp
src/libslic3r/Layer.hpp
src/libslic3r/LayerRegion.cpp
src/libslic3r/LayerRegionFill.cpp
src/libslic3r/libslic3r.h
src/libslic3r/Line.cpp
src/libslic3r/Line.hpp

View File

@ -62,7 +62,8 @@ public:
static Fill* new_from_type(const InfillPattern type);
static Fill* new_from_type(const std::string &type);
static coord_t adjust_solid_spacing(const coord_t width, const coord_t distance);
virtual Fill* clone() const = 0;
// Implementations can override the following virtual methods:
// Use bridge flow for the fill?
virtual bool use_bridge_flow() const { return false; }
@ -86,6 +87,7 @@ protected:
dont_adjust(false),
complete(false)
{};
virtual ~Fill();
// The expolygon may be modified by the method to avoid a copy.
virtual void _fill_surface_single(

View File

@ -12,6 +12,7 @@ namespace Slic3r {
class Fill3DHoneycomb : public Fill
{
public:
virtual Fill* clone() const { return new Fill3DHoneycomb(*this); };
virtual ~Fill3DHoneycomb() {}
// require bridge flow since most of this pattern hangs in air

View File

@ -11,6 +11,7 @@ public:
virtual ~FillConcentric() {}
protected:
virtual Fill* clone() const { return new FillConcentric(*this); };
virtual void _fill_surface_single(
unsigned int thickness_layers,
const std::pair<float, Point> &direction,

View File

@ -15,6 +15,7 @@ public:
virtual ~FillHoneycomb() {}
protected:
virtual Fill* clone() const { return new FillHoneycomb(*this); };
virtual void _fill_surface_single(
unsigned int thickness_layers,
const std::pair<float, Point> &direction,

View File

@ -33,6 +33,7 @@ protected:
class FillArchimedeanChords : public FillPlanePath
{
public:
virtual Fill* clone() const { return new FillArchimedeanChords(*this); };
virtual ~FillArchimedeanChords() {}
protected:
@ -43,6 +44,7 @@ protected:
class FillHilbertCurve : public FillPlanePath
{
public:
virtual Fill* clone() const { return new FillHilbertCurve(*this); };
virtual ~FillHilbertCurve() {}
protected:
@ -53,6 +55,7 @@ protected:
class FillOctagramSpiral : public FillPlanePath
{
public:
virtual Fill* clone() const { return new FillOctagramSpiral(*this); };
virtual ~FillOctagramSpiral() {}
protected:

View File

@ -10,6 +10,7 @@ namespace Slic3r {
class FillRectilinear : public Fill
{
public:
virtual Fill* clone() const { return new FillRectilinear(*this); };
virtual ~FillRectilinear() {}
protected:

View File

@ -12,6 +12,7 @@ class Surface;
class FillRectilinear2 : public Fill
{
public:
virtual Fill* clone() const { return new FillRectilinear2(*this); };
virtual ~FillRectilinear2() {}
virtual Polylines fill_surface(const Surface &surface);
@ -22,6 +23,7 @@ protected:
class FillGrid2 : public FillRectilinear2
{
public:
virtual Fill* clone() const { return new FillGrid2(*this); };
virtual ~FillGrid2() {}
virtual Polylines fill_surface(const Surface &surface);
@ -33,6 +35,7 @@ protected:
class FillTriangles : public FillRectilinear2
{
public:
virtual Fill* clone() const { return new FillTriangles(*this); };
virtual ~FillTriangles() {}
virtual Polylines fill_surface(const Surface &surface);
@ -44,6 +47,7 @@ protected:
class FillStars : public FillRectilinear2
{
public:
virtual Fill* clone() const { return new FillStars(*this); };
virtual ~FillStars() {}
virtual Polylines fill_surface(const Surface &surface);
@ -55,6 +59,7 @@ protected:
class FillCubic : public FillRectilinear2
{
public:
virtual Fill* clone() const { return new FillCubic(*this); };
virtual ~FillCubic() {}
virtual Polylines fill_surface(const Surface &surface);