diff options
| author | Tim Redfern <tim@getdrop.com> | 2023-04-20 20:16:54 +0100 |
|---|---|---|
| committer | Tim Redfern <tim@getdrop.com> | 2023-04-20 20:16:54 +0100 |
| commit | 4c12e758b280388426ca8070b80028031d75d054 (patch) | |
| tree | 8a071799cec18c0b686d6f065801e241d6828e1e /nextus/src/lineClipper.cpp | |
| parent | 369946c9964c02d9c702e824292d5dd11a0af102 (diff) | |
WIP clipping
Diffstat (limited to 'nextus/src/lineClipper.cpp')
| -rw-r--r-- | nextus/src/lineClipper.cpp | 33 |
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 |
