%module{Slic3r::XS}; %{ #include #include "clipper.hpp" #include "ClipperUtils.hpp" %} %package{Slic3r::Geometry::Clipper}; %{ IV _constant() ALIAS: JT_MITER = jtMiter JT_ROUND = jtRound JT_SQUARE = jtSquare CLIPPER_OFFSET_SCALE = CLIPPER_OFFSET_SCALE CODE: RETVAL = ix; OUTPUT: RETVAL Polygons offset(polygons, delta, scale = CLIPPER_OFFSET_SCALE, joinType = ClipperLib::jtMiter, miterLimit = 3) Polygons polygons const float delta double scale ClipperLib::JoinType joinType double miterLimit CODE: offset(polygons, RETVAL, delta, scale, joinType, miterLimit); OUTPUT: RETVAL ExPolygons offset_ex(polygons, delta, scale = CLIPPER_OFFSET_SCALE, joinType = ClipperLib::jtMiter, miterLimit = 3) Polygons polygons const float delta double scale ClipperLib::JoinType joinType double miterLimit CODE: offset_ex(polygons, RETVAL, delta, scale, joinType, miterLimit); OUTPUT: RETVAL Polygons offset2(polygons, delta1, delta2, scale = CLIPPER_OFFSET_SCALE, joinType = ClipperLib::jtMiter, miterLimit = 3) Polygons polygons const float delta1 const float delta2 double scale ClipperLib::JoinType joinType double miterLimit CODE: offset2(polygons, RETVAL, delta1, delta2, scale, joinType, miterLimit); OUTPUT: RETVAL ExPolygons offset2_ex(polygons, delta1, delta2, scale = CLIPPER_OFFSET_SCALE, joinType = ClipperLib::jtMiter, miterLimit = 3) Polygons polygons const float delta1 const float delta2 double scale ClipperLib::JoinType joinType double miterLimit CODE: offset2_ex(polygons, RETVAL, delta1, delta2, scale, joinType, miterLimit); OUTPUT: RETVAL Polygons diff(subject, clip, safety_offset = false) Polygons subject Polygons clip bool safety_offset CODE: diff(subject, clip, RETVAL, safety_offset); OUTPUT: RETVAL ExPolygons diff_ex(subject, clip, safety_offset = false) Polygons subject Polygons clip bool safety_offset CODE: diff(subject, clip, RETVAL, safety_offset); OUTPUT: RETVAL Polylines diff_pl(subject, clip) Polylines subject Polygons clip CODE: diff(subject, clip, RETVAL); OUTPUT: RETVAL Polylines diff_ppl(subject, clip) Polygons subject Polygons clip CODE: diff(subject, clip, RETVAL); OUTPUT: RETVAL Polygons intersection(subject, clip, safety_offset = false) Polygons subject Polygons clip bool safety_offset CODE: intersection(subject, clip, RETVAL, safety_offset); OUTPUT: RETVAL ExPolygons intersection_ex(subject, clip, safety_offset = false) Polygons subject Polygons clip bool safety_offset CODE: intersection(subject, clip, RETVAL, safety_offset); OUTPUT: RETVAL Polylines intersection_pl(subject, clip) Polylines subject Polygons clip CODE: intersection(subject, clip, RETVAL); OUTPUT: RETVAL Polylines intersection_ppl(subject, clip) Polygons subject Polygons clip CODE: intersection(subject, clip, RETVAL); OUTPUT: RETVAL ExPolygons xor_ex(subject, clip, safety_offset = false) Polygons subject Polygons clip bool safety_offset CODE: xor_ex(subject, clip, RETVAL, safety_offset); OUTPUT: RETVAL Polygons union(subject, safety_offset = false) Polygons subject bool safety_offset CODE: union_(subject, RETVAL, safety_offset); OUTPUT: RETVAL ExPolygons union_ex(subject, safety_offset = false) Polygons subject bool safety_offset CODE: union_(subject, RETVAL, safety_offset); OUTPUT: RETVAL SV* union_pt(subject, safety_offset = false) Polygons subject bool safety_offset CODE: // perform operation ClipperLib::PolyTree polytree; union_pt(subject, polytree, safety_offset); RETVAL = polynode_children_2_perl(polytree); OUTPUT: RETVAL Polygons union_pt_chained(subject, safety_offset = false) Polygons subject bool safety_offset CODE: // perform operation union_pt_chained(subject, RETVAL, safety_offset); OUTPUT: RETVAL Polygons simplify_polygons(subject) Polygons subject CODE: simplify_polygons(subject, RETVAL); OUTPUT: RETVAL %}