//-------------------------------------------------------------- void ofxClipper::SimplifyPolyline(ofPolyline &in_poly, ofxPolylines &out_polys) { ClipperLib::Polygon in; ClipperLib::Polygons out; in = ofPolyline_to_Polygon(in_poly); ClipperLib::SimplifyPolygon(in,out); polygons_to_ofxPolylines(out,out_polys); }
//-------------------------------------------------------------- void ofxClipper::SimplifyPolyline(ofPolyline &in_poly, ofxPolylines &out_polys, ofPolyWindingMode windingMode) { ClipperLib::Polygon in; ClipperLib::Polygons out; in = ofPolyline_to_Polygon(in_poly); ClipperLib::SimplifyPolygon(in,out, convertWindingMode(windingMode)); polygons_to_ofxPolylines(out,out_polys); }
//-------------------------------------------------------------- bool ofxClipper::addRectangle(ofRectangle& rectangle, ofxClipperPolyType clipperType) { ofPolyline r; r.addVertex(ofPoint(rectangle.x,rectangle.y)); r.addVertex(ofPoint(rectangle.x+rectangle.width,rectangle.y)); r.addVertex(ofPoint(rectangle.x+rectangle.width,rectangle.y+rectangle.height)); r.addVertex(ofPoint(rectangle.x,rectangle.y+rectangle.height)); r.close(); ClipperLib::Polygon out = ofPolyline_to_Polygon(r); AddPolygon(out,(ClipperLib::PolyType)clipperType); }
//-------------------------------------------------------------- bool ofxClipper::addPolyline(ofPolyline& polyline, ofxClipperPolyType clipperType) { ClipperLib::Polygon out = ofPolyline_to_Polygon(polyline); AddPolygon(out,(ClipperLib::PolyType)clipperType); }
//-------------------------------------------------------------- void ofxClipper::ReversePolyline(ofPolyline& poly) { ClipperLib::Polygon in; in = ofPolyline_to_Polygon(poly); ClipperLib::ReversePoints(in); poly = polygon_to_ofPolyline(in); }
//-------------------------------------------------------------- double ofxClipper::Area(ofPolyline &poly) { return ClipperLib::Area(ofPolyline_to_Polygon(poly)); }
// utility functions //-------------------------------------------------------------- bool ofxClipper::Orientation(ofPolyline &poly) { return ClipperLib::Orientation(ofPolyline_to_Polygon(poly)); }
//-------------------------------------------------------------- void ofxClipper::ofxPolylines_to_Polygons(ofxPolylines& polylines,ClipperLib::Polygons& polygons) { vector<ofPolyline>::iterator iter; for(iter = polylines.begin(); iter != polylines.end(); iter++) { polygons.push_back(ofPolyline_to_Polygon((*iter))); } }