#ifndef slic3r_ExPolygonCollection_hpp_ #define slic3r_ExPolygonCollection_hpp_ #include "libslic3r.h" #include "ExPolygon.hpp" #include "Line.hpp" #include "Polyline.hpp" namespace Slic3r { class ExPolygonCollection; typedef std::vector ExPolygonCollections; class ExPolygonCollection { public: ExPolygons expolygons; ExPolygonCollection() {}; ExPolygonCollection(const ExPolygon &expolygon); ExPolygonCollection(const ExPolygons &expolygons) : expolygons(expolygons) {}; operator Points() const; operator Polygons() const; operator ExPolygons&(); void scale(double factor); void translate(double x, double y); void translate(const Point offset) { translate(static_cast(offset.x), static_cast(offset.y)); } void translate(const Pointf offset) { translate(offset.x, offset.y); } void rotate(double angle, const Point ¢er); template bool contains(const T &item) const; bool contains_b(const Point &point) const; void simplify(double tolerance); Polygon convex_hull() const; Lines lines() const; Polygons contours() const; Polygons holes() const; void append(const ExPolygons &expolygons); void append(const ExPolygon &expolygons); }; inline ExPolygonCollection& operator <<(ExPolygonCollection &coll, const ExPolygons &expolygons) { coll.append(expolygons); return coll; }; } #endif