summaryrefslogtreecommitdiff
path: root/nextus/src/lineClipper.cpp
diff options
context:
space:
mode:
authorTim Redfern <tim@getdrop.com>2023-04-20 20:16:54 +0100
committerTim Redfern <tim@getdrop.com>2023-04-20 20:16:54 +0100
commit4c12e758b280388426ca8070b80028031d75d054 (patch)
tree8a071799cec18c0b686d6f065801e241d6828e1e /nextus/src/lineClipper.cpp
parent369946c9964c02d9c702e824292d5dd11a0af102 (diff)
WIP clipping
Diffstat (limited to 'nextus/src/lineClipper.cpp')
-rw-r--r--nextus/src/lineClipper.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/nextus/src/lineClipper.cpp b/nextus/src/lineClipper.cpp
new file mode 100644
index 0000000..bbfa9eb
--- /dev/null
+++ b/nextus/src/lineClipper.cpp
@@ -0,0 +1,33 @@
+#include "lineClipper.h"
+
+vector <colourPolyline> lineClipper::mask(
+ vector <colourPolyline> shapes,
+ vector <ofPolyline> mask,
+ bool invert
+ )
+{
+ vector <colourPolyline> output;
+
+ ofx::Clipper clipper;
+
+ for (auto& shape: shapes)
+ {
+ clipper.Clear();
+ clipper.addPolylines(mask, ClipperLib::ptClip);
+ vector <ofPolyline> polys; //TODO make clipper clip colourpolylines
+ shapes.push_back(shape);
+ clipper.addPolylines(polys,ClipperLib::ptSubject);
+ vector <ofPolyline> clipped;
+ if (invert){
+ clipped = clipper.getClipped(ClipperLib::ctDifference);
+ }else {
+ clipped = clipper.getClipped(ClipperLib::ctIntersection);
+ }
+ for (auto& clip: clipped)
+ {
+ //clip.simplify(contour_simplify);
+ output.push_back(colourPolyline(clip,shape.getColourAt(0)));
+ }
+ }
+ return output;
+} \ No newline at end of file