#ifndef SLIC3R_FillFloatingConcentric_HPP #define SLIC3R_FillFloatingConcentric_HPP #include "FillBase.hpp" #include "FillConcentric.hpp" #include "Arachne/WallToolPaths.hpp" namespace Slic3r{ struct FloatingThickline : public ThickLine { FloatingThickline(const Point& a, const Point& b, double wa, double wb, bool a_floating, bool b_floating) :ThickLine(a, b, wa, wb) { is_a_floating = a_floating; is_b_floating = b_floating; } bool is_a_floating; bool is_b_floating; }; using FloatingThicklines = std::vector; struct FloatingPolyline : public Polyline { std::vector is_floating; FloatingPolyline rebase_at(size_t idx); }; using FloatingPolylines = std::vector; struct FloatingThickPolyline :public ThickPolyline { std::vector is_floating; FloatingThickPolyline rebase_at(size_t idx); FloatingThicklines floating_thicklines()const; }; using FloatingThickPolylines = std::vector; class FillFloatingConcentric : public FillConcentric { public: ~FillFloatingConcentric() override = default; ExPolygons lower_layer_unsupport_areas; Polygons lower_sparse_polys; protected: Fill* clone() const override { return new FillFloatingConcentric(*this); } #if 0 void _fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, const std::pair &direction, ExPolygon expolygon, FloatingLines &polylines_out) ; #endif void _fill_surface_single(const FillParams& params, unsigned int thickness_layers, const std::pair& direction, ExPolygon expolygon, FloatingThickPolylines& thick_polylines_out); FloatingThickPolylines fill_surface_arachne_floating(const Surface* surface, const FillParams& params); void fill_surface_extrusion(const Surface* surface, const FillParams& params, ExtrusionEntitiesPtr& out); FloatingThickPolylines resplit_order_loops(Point curr_point, std::vector all_extrusions, const ExPolygons& floating_areas, const Polygons& sparse_polys, const coord_t default_width); #if 0 Polylines resplit_order_loops(Point curr_point, Polygons loops, const ExPolygons& floating_areas); #endif friend class Layer; }; } #endif