diff options
author | bubnikv <bubnikv@gmail.com> | 2018-09-19 12:02:24 +0300 |
---|---|---|
committer | bubnikv <bubnikv@gmail.com> | 2018-09-19 12:02:24 +0300 |
commit | 0558b53493a77bae44831cf87bb0f59359828ef5 (patch) | |
tree | c3e8dbdf7d91a051c12d9ebbf7606d41047fea96 /src/libslic3r/Fill/FillRectilinear3.hpp | |
parent | 3ddaccb6410478ad02d8c0e02d6d8e6eb1785b9f (diff) |
WIP: Moved sources int src/, separated most of the source code from Perl.
The XS was left only for the unit / integration tests, and it links
libslic3r only. No wxWidgets are allowed to be used from Perl starting
from now.
Diffstat (limited to 'src/libslic3r/Fill/FillRectilinear3.hpp')
-rw-r--r-- | src/libslic3r/Fill/FillRectilinear3.hpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/libslic3r/Fill/FillRectilinear3.hpp b/src/libslic3r/Fill/FillRectilinear3.hpp new file mode 100644 index 000000000..2023a25b7 --- /dev/null +++ b/src/libslic3r/Fill/FillRectilinear3.hpp @@ -0,0 +1,83 @@ +#ifndef slic3r_FillRectilinear3_hpp_ +#define slic3r_FillRectilinear3_hpp_ + +#include "../libslic3r.h" + +#include "FillBase.hpp" + +namespace Slic3r { + +class Surface; + +class FillRectilinear3 : public Fill +{ +public: + virtual Fill* clone() const { return new FillRectilinear3(*this); }; + virtual ~FillRectilinear3() {} + virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); + + struct FillDirParams + { + FillDirParams(coordf_t spacing, double angle, coordf_t pattern_shift = 0.f) : + spacing(spacing), angle(angle), pattern_shift(pattern_shift) {} + coordf_t spacing; + double angle; + coordf_t pattern_shift; + }; + +protected: + bool fill_surface_by_lines(const Surface *surface, const FillParams ¶ms, std::vector<FillDirParams> &fill_dir_params, Polylines &polylines_out); +}; + +class FillGrid3 : public FillRectilinear3 +{ +public: + virtual Fill* clone() const { return new FillGrid3(*this); }; + virtual ~FillGrid3() {} + virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); + +protected: + // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. + virtual float _layer_angle(size_t /* idx */) const { return 0.f; } +}; + +class FillTriangles3 : public FillRectilinear3 +{ +public: + virtual Fill* clone() const { return new FillTriangles3(*this); }; + virtual ~FillTriangles3() {} + virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); + +protected: + // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. + virtual float _layer_angle(size_t /* idx */) const { return 0.f; } +}; + +class FillStars3 : public FillRectilinear3 +{ +public: + virtual Fill* clone() const { return new FillStars3(*this); }; + virtual ~FillStars3() {} + virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); + +protected: + // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. + virtual float _layer_angle(size_t /* idx */) const { return 0.f; } +}; + +class FillCubic3 : public FillRectilinear3 +{ +public: + virtual Fill* clone() const { return new FillCubic3(*this); }; + virtual ~FillCubic3() {} + virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms); + +protected: + // The grid fill will keep the angle constant between the layers, see the implementation of Slic3r::Fill. + virtual float _layer_angle(size_t /* idx */) const { return 0.f; } +}; + + +}; // namespace Slic3r + +#endif // slic3r_FillRectilinear3_hpp_ |