Files
OrcaSlicer-KX/src/libslic3r/Clipper2Utils.hpp
sentientstardust 2ea7239849 Working on 'replace top perimeters with infill' option
- Add Clipper2 wrapper functions
2026-05-27 13:59:25 +01:00

86 lines
9.0 KiB
C++

#ifndef slic3r_Clipper2Utils_hpp_
#define slic3r_Clipper2Utils_hpp_
#include "ExPolygon.hpp"
#include "Polygon.hpp"
#include "Polyline.hpp"
#include "clipper.hpp"
#include "clipper2/clipper.h"
namespace Slic3r {
enum class ApplySafetyOffset;
Clipper2Lib::Point64 Slic3rPoint_to_Point64(const Slic3r::Point& in);
Clipper2Lib::Path64 Slic3rPolygon_to_Path64(const Slic3r::Polygon& in);
Clipper2Lib::Paths64 Slic3rPolygon_to_Paths64(const Slic3r::Polygon& in);
Clipper2Lib::Paths64 Slic3rPolylines_to_Paths64(const Slic3r::Polylines& in);
Clipper2Lib::Paths64 Slic3rPolygons_to_Paths64(const Slic3r::Polygons& in);
Clipper2Lib::Paths64 Slic3rPolygons_to_Paths64(const Slic3r::Polygons& in, bool filter_degenerate);
Clipper2Lib::Paths64 Slic3rExPolygon_to_Paths64(const Slic3r::ExPolygon& in);
Clipper2Lib::Paths64 Slic3rExPolygon_to_Paths64(const Slic3r::ExPolygon& in, bool filter_degenerate);
Clipper2Lib::Paths64 Slic3rExPolygons_to_Paths64(const Slic3r::ExPolygons& in);
Clipper2Lib::Paths64 Slic3rExPolygons_to_Paths64(const Slic3r::ExPolygons& in, bool filter_degenerate);
Slic3r::Points Path64_to_points(const Clipper2Lib::Path64& in);
Slic3r::Polylines Paths64_to_polylines(const Clipper2Lib::Paths64& in);
Slic3r::Polygons Paths64_to_polygons(const Clipper2Lib::Paths64& in);
Slic3r::ExPolygons PolyTree64_to_expolygons(const Clipper2Lib::PolyTree64& in);
Slic3r::ExPolygons PolyTree64_to_expolygons(Clipper2Lib::PolyTree64&& in);
Clipper2Lib::JoinType clipper2_join_type(ClipperLib::JoinType join_type);
void configure_clipper2_offsetter(Clipper2Lib::ClipperOffset& offsetter, ClipperLib::JoinType join_type, double miter_limit);
Clipper2Lib::Paths64 offset_paths_2(const Clipper2Lib::Paths64& paths, double delta, ClipperLib::JoinType join_type, double miter_limit);
Slic3r::ExPolygons boolean_ex_2(Clipper2Lib::ClipType clip_type, const Clipper2Lib::Paths64& subject, Clipper2Lib::Paths64 clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::Polylines intersection_pl_2(const Slic3r::Polylines& subject, const Slic3r::Polygons& clip);
Slic3r::Polylines diff_pl_2(const Slic3r::Polylines& subject, const Slic3r::Polygons& clip);
Slic3r::Polygons diff_2(const Slic3r::Polygon &subject, const Slic3r::Polygon &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::Polygons diff_2(const Slic3r::Polygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::Polygons diff_2(const Slic3r::Polygons &subject, const Slic3r::ExPolygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::Polygons diff_2(const Slic3r::ExPolygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::Polygons diff_2(const Slic3r::ExPolygons &subject, const Slic3r::ExPolygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons diff_ex_2(const Slic3r::Polygon &subject, const Slic3r::Polygon &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons diff_ex_2(const Slic3r::Polygon &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons diff_ex_2(const Slic3r::Polygon &subject, const Slic3r::ExPolygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons diff_ex_2(const Slic3r::Polygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons diff_ex_2(const Slic3r::Polygons &subject, const Slic3r::ExPolygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons diff_ex_2(const Slic3r::ExPolygon &subject, const Slic3r::Polygon &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons diff_ex_2(const Slic3r::ExPolygon &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons diff_ex_2(const Slic3r::ExPolygon &subject, const Slic3r::ExPolygon &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons diff_ex_2(const Slic3r::ExPolygon &subject, const Slic3r::ExPolygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons diff_ex_2(const Slic3r::ExPolygons &subject, const Slic3r::Polygon &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons diff_ex_2(const Slic3r::ExPolygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons diff_ex_2(const Slic3r::ExPolygons &subject, const Slic3r::ExPolygon &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons diff_ex_2(const Slic3r::ExPolygons &subject, const Slic3r::ExPolygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::Polygons intersection_2(const Slic3r::Polygon &subject, const Slic3r::Polygon &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::Polygons intersection_2(const Slic3r::Polygons &subject, const Slic3r::Polygon &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::Polygons intersection_2(const Slic3r::Polygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::Polygons intersection_2(const Slic3r::Polygons &subject, const Slic3r::ExPolygon &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::Polygons intersection_2(const Slic3r::ExPolygon &subject, const Slic3r::ExPolygon &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::Polygons intersection_2(const Slic3r::ExPolygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::Polygons intersection_2(const Slic3r::ExPolygons &subject, const Slic3r::ExPolygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons intersection_ex_2(const Slic3r::Polygon &subject, const Slic3r::Polygon &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons intersection_ex_2(const Slic3r::Polygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons intersection_ex_2(const Slic3r::Polygons &subject, const Slic3r::ExPolygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons intersection_ex_2(const Slic3r::ExPolygon &subject, const Slic3r::Polygon &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons intersection_ex_2(const Slic3r::ExPolygon &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons intersection_ex_2(const Slic3r::ExPolygon &subject, const Slic3r::ExPolygon &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons intersection_ex_2(const Slic3r::ExPolygon &subject, const Slic3r::ExPolygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons intersection_ex_2(const Slic3r::ExPolygons &subject, const Slic3r::Polygon &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons intersection_ex_2(const Slic3r::ExPolygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons intersection_ex_2(const Slic3r::ExPolygons &subject, const Slic3r::ExPolygon &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons intersection_ex_2(const Slic3r::ExPolygons &subject, const Slic3r::ExPolygons &clip, ApplySafetyOffset do_safety_offset = ApplySafetyOffset{});
Slic3r::ExPolygons union_ex_2(const Slic3r::Polygons &expolygons);
Slic3r::ExPolygons union_ex_2(const Slic3r::Polygons &expolygons, bool filter_degenerate);
Slic3r::ExPolygons union_ex_2(const Slic3r::ExPolygons &expolygons);
Slic3r::ExPolygons union_ex_2(const Slic3r::ExPolygons &expolygons, bool filter_degenerate);
Slic3r::ExPolygons offset_ex_2(const Clipper2Lib::Paths64 &paths, double delta, ClipperLib::JoinType join_type, double miter_limit);
Slic3r::ExPolygons offset_ex_2(const Slic3r::ExPolygon &expolygon, double delta, ClipperLib::JoinType join_type, double miter_limit);
Slic3r::ExPolygons offset_ex_2(const Slic3r::ExPolygons &expolygons, double delta);
Slic3r::ExPolygons offset_ex_2(const Slic3r::ExPolygons &expolygons, double delta, ClipperLib::JoinType join_type, double miter_limit);
Slic3r::ExPolygons offset2_ex_2(const Slic3r::ExPolygons &expolygons, double delta1, double delta2);
Slic3r::ExPolygons offset2_ex_2(const Slic3r::ExPolygons &expolygons, double delta1, double delta2, ClipperLib::JoinType join_type, double miter_limit);
Slic3r::ExPolygons closing_ex_2(const Slic3r::ExPolygons &expolygons, double delta, ClipperLib::JoinType join_type, double miter_limit);
Slic3r::Polygons union_pt_chained_outside_in_2(const Slic3r::Polygons &subject);
}
#endif