Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Ranellucci <aar@cpan.org>2015-07-23 16:53:02 +0300
committerAlessandro Ranellucci <aar@cpan.org>2015-07-23 16:53:02 +0300
commitb4515cf695e0126191476e3363285af3be2efc11 (patch)
treeb55fcbc51860f2f4ee6efe0556bc2703005568e8 /xs/src/libslic3r/ClipperUtils.cpp
parent0e18b094d1edf32730a7555cf253cd9a90a7c404 (diff)
Finished porting PerimeterGenerator to C++
Diffstat (limited to 'xs/src/libslic3r/ClipperUtils.cpp')
-rw-r--r--xs/src/libslic3r/ClipperUtils.cpp75
1 files changed, 75 insertions, 0 deletions
diff --git a/xs/src/libslic3r/ClipperUtils.cpp b/xs/src/libslic3r/ClipperUtils.cpp
index ba243ee82..baddd8f45 100644
--- a/xs/src/libslic3r/ClipperUtils.cpp
+++ b/xs/src/libslic3r/ClipperUtils.cpp
@@ -136,6 +136,15 @@ offset(const Slic3r::Polygons &polygons, Slic3r::Polygons* retval, const float d
ClipperPaths_to_Slic3rMultiPoints(output, retval);
}
+Slic3r::Polygons
+offset(const Slic3r::Polygons &polygons, const float delta,
+ double scale, ClipperLib::JoinType joinType, double miterLimit)
+{
+ Slic3r::Polygons pp;
+ offset(polygons, &pp, delta, scale, joinType, miterLimit);
+ return pp;
+}
+
void
offset(const Slic3r::Polylines &polylines, ClipperLib::Paths* retval, const float delta,
double scale, ClipperLib::JoinType joinType, double miterLimit)
@@ -248,6 +257,15 @@ offset2(const Slic3r::Polygons &polygons, Slic3r::Polygons* retval, const float
ClipperPaths_to_Slic3rMultiPoints(output, retval);
}
+Slic3r::Polygons
+offset2(const Slic3r::Polygons &polygons, const float delta1,
+ const float delta2, const double scale, const ClipperLib::JoinType joinType, const double miterLimit)
+{
+ Slic3r::Polygons pp;
+ offset2(polygons, &pp, delta1, delta2, scale, joinType, miterLimit);
+ return pp;
+}
+
void
offset2(const Slic3r::Polygons &polygons, Slic3r::ExPolygons* retval, const float delta1,
const float delta2, const double scale, const ClipperLib::JoinType joinType, const double miterLimit)
@@ -260,6 +278,15 @@ offset2(const Slic3r::Polygons &polygons, Slic3r::ExPolygons* retval, const floa
ClipperPaths_to_Slic3rExPolygons(output, retval);
}
+Slic3r::ExPolygons
+offset2_ex(const Slic3r::Polygons &polygons, const float delta1,
+ const float delta2, const double scale, const ClipperLib::JoinType joinType, const double miterLimit)
+{
+ Slic3r::ExPolygons expp;
+ offset2(polygons, &expp, delta1, delta2, scale, joinType, miterLimit);
+ return expp;
+}
+
template <class T>
void _clipper_do(const ClipperLib::ClipType clipType, const Slic3r::Polygons &subject,
const Slic3r::Polygons &clip, T* retval, const ClipperLib::PolyFillType fillType, const bool safety_offset_)
@@ -437,6 +464,22 @@ void diff(const SubjectType &subject, const Slic3r::ExPolygons &clip, ResultType
}
template void diff<Slic3r::Polygons, Slic3r::ExPolygons>(const Slic3r::Polygons &subject, const Slic3r::ExPolygons &clip, Slic3r::ExPolygons* retval, bool safety_offset_);
+Slic3r::Polygons
+diff(const Slic3r::Polygons &subject, const Slic3r::Polygons &clip, bool safety_offset_)
+{
+ Slic3r::Polygons pp;
+ diff(subject, clip, &pp, safety_offset_);
+ return pp;
+}
+
+Slic3r::ExPolygons
+diff_ex(const Slic3r::Polygons &subject, const Slic3r::Polygons &clip, bool safety_offset_)
+{
+ Slic3r::ExPolygons expp;
+ diff(subject, clip, &expp, safety_offset_);
+ return expp;
+}
+
template <class SubjectType, class ResultType>
void intersection(const SubjectType &subject, const Slic3r::Polygons &clip, ResultType* retval, bool safety_offset_)
{
@@ -448,6 +491,22 @@ template void intersection<Slic3r::Polygons, Slic3r::Polylines>(const Slic3r::Po
template void intersection<Slic3r::Polylines, Slic3r::Polylines>(const Slic3r::Polylines &subject, const Slic3r::Polygons &clip, Slic3r::Polylines* retval, bool safety_offset_);
template void intersection<Slic3r::Lines, Slic3r::Lines>(const Slic3r::Lines &subject, const Slic3r::Polygons &clip, Slic3r::Lines* retval, bool safety_offset_);
+Slic3r::Polygons
+intersection(const Slic3r::Polygons &subject, const Slic3r::Polygons &clip, bool safety_offset_)
+{
+ Slic3r::Polygons pp;
+ intersection(subject, clip, &pp, safety_offset_);
+ return pp;
+}
+
+Slic3r::Polylines
+intersection(const Slic3r::Polylines &subject, const Slic3r::Polygons &clip, bool safety_offset_)
+{
+ Slic3r::Polylines pp;
+ intersection(subject, clip, &pp, safety_offset_);
+ return pp;
+}
+
template <class SubjectType>
bool intersects(const SubjectType &subject, const Slic3r::Polygons &clip, bool safety_offset_)
{
@@ -474,6 +533,22 @@ void union_(const Slic3r::Polygons &subject, T* retval, bool safety_offset_)
template void union_<Slic3r::ExPolygons>(const Slic3r::Polygons &subject, Slic3r::ExPolygons* retval, bool safety_offset_);
template void union_<Slic3r::Polygons>(const Slic3r::Polygons &subject, Slic3r::Polygons* retval, bool safety_offset_);
+Slic3r::Polygons
+union_(const Slic3r::Polygons &subject, bool safety_offset)
+{
+ Polygons pp;
+ union_(subject, &pp, safety_offset);
+ return pp;
+}
+
+Slic3r::ExPolygons
+union_ex(const Slic3r::Polygons &subject, bool safety_offset)
+{
+ ExPolygons expp;
+ union_(subject, &expp, safety_offset);
+ return expp;
+}
+
void union_(const Slic3r::Polygons &subject1, const Slic3r::Polygons &subject2, Slic3r::Polygons* retval, bool safety_offset)
{
Polygons pp = subject1;