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/FillHoneycomb.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/FillHoneycomb.hpp')
-rw-r--r-- | src/libslic3r/Fill/FillHoneycomb.hpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/libslic3r/Fill/FillHoneycomb.hpp b/src/libslic3r/Fill/FillHoneycomb.hpp new file mode 100644 index 000000000..4717602d4 --- /dev/null +++ b/src/libslic3r/Fill/FillHoneycomb.hpp @@ -0,0 +1,57 @@ +#ifndef slic3r_FillHoneycomb_hpp_ +#define slic3r_FillHoneycomb_hpp_ + +#include <map> + +#include "../libslic3r.h" + +#include "FillBase.hpp" + +namespace Slic3r { + +class FillHoneycomb : public Fill +{ +public: + virtual ~FillHoneycomb() {} + +protected: + virtual Fill* clone() const { return new FillHoneycomb(*this); }; + virtual void _fill_surface_single( + const FillParams ¶ms, + unsigned int thickness_layers, + const std::pair<float, Point> &direction, + ExPolygon &expolygon, + Polylines &polylines_out); + + // Caching the + struct CacheID + { + CacheID(float adensity, coordf_t aspacing) : + density(adensity), spacing(aspacing) {} + float density; + coordf_t spacing; + bool operator<(const CacheID &other) const + { return (density < other.density) || (density == other.density && spacing < other.spacing); } + bool operator==(const CacheID &other) const + { return density == other.density && spacing == other.spacing; } + }; + struct CacheData + { + coord_t distance; + coord_t hex_side; + coord_t hex_width; + coord_t pattern_height; + coord_t y_short; + coord_t x_offset; + coord_t y_offset; + Point hex_center; + }; + typedef std::map<CacheID, CacheData> Cache; + Cache cache; + + virtual float _layer_angle(size_t idx) const { return float(M_PI/3.) * (idx % 3); } +}; + +} // namespace Slic3r + +#endif // slic3r_FillHoneycomb_hpp_ |