diff options
| -rw-r--r-- | nextus/src/lineClipper.cpp | 33 | ||||
| -rw-r--r-- | nextus/src/lineClipper.h | 19 | ||||
| -rw-r--r-- | nextus/src/vectorPlugin.h | 5 |
3 files changed, 57 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 diff --git a/nextus/src/lineClipper.h b/nextus/src/lineClipper.h new file mode 100644 index 0000000..d8b7fdd --- /dev/null +++ b/nextus/src/lineClipper.h @@ -0,0 +1,19 @@ +#pragma once + +#include "ofMain.h" +#include "ofxClipper.h" + +#include "colourPolyline.h" + + +class lineClipper { + public: + lineClipper(){ + } + vector <colourPolyline> static mask( + vector <colourPolyline> shapes, + vector <ofPolyline> mask, + bool invert=false); +}; + +
\ No newline at end of file diff --git a/nextus/src/vectorPlugin.h b/nextus/src/vectorPlugin.h index 047d836..3d01d07 100644 --- a/nextus/src/vectorPlugin.h +++ b/nextus/src/vectorPlugin.h @@ -7,6 +7,7 @@ #include "ofxPONK.h" #include "lineTransformer.h" #include "lineSegmenter.h" +#include "lineClipper.h" #include "vectorText.h" static ofVec2f DISPLAYSIZE(200,200); @@ -39,6 +40,9 @@ class vectorPanel { ofPopMatrix(); ofPopMatrix(); } + vector<colourPolyline> clipOutput() { + return getOut(); + }; vector<colourPolyline> getOutput() {return getLines();}; virtual vector<colourPolyline> getLines() {}; virtual void update() {}; @@ -47,6 +51,7 @@ class vectorPanel { ofVec2f size; ofPoint position; ofxPanel panel; + vector <ofPolyline> frame; }; class defaultPanel: public vectorPanel{ |
