#include "lineClipper.h" /* PONK coords are normalised -1 lineClipper::clip( vector shapes, ofPolyline mask, bool invert ) { //this supports one colour per polyline vector output; if (shapes.size()){ ofx::Clipper clipper; mask.scale(SCALE_FROM_OF,SCALE_FROM_OF); for (auto& shape: shapes) { clipper.Clear(); clipper.addPolyline(mask, ClipperLib::ptClip); shape.scale(SCALE_FROM_OF,SCALE_FROM_OF); clipper.addPolyline(shape,ClipperLib::ptSubject); vector clipped; if (invert){ clipped = clipper.getClippedLines(ClipperLib::ctDifference); }else { clipped = clipper.getClippedLines(ClipperLib::ctIntersection); } for (auto& clip: clipped) { //clip.simplify(contour_simplify); clip.scale(SCALE_TO_OF,SCALE_TO_OF); output.push_back(colourPolyline(clip,shape.getColourAt(0))); } } } return output; }