#include "ofApp.h" #include "glew.h" vector cmdnames={"moveTo","lineTo","curveTo","bezierTo","quadBezierTo","arc","arcNegative","close"}; //-------------------------------------------------------------- void ofApp::setup(){ ofxSVG svg; svg.load("haring.svg"); vector paths= svg.getPaths(); for (int i=0;i outlines= paths[i].getOutline(); for (int j=0;j outlines= path.getOutline(); for (auto& outline:outlines){ mask.push_back(outline); } /* vector cmds=paths[i].getCommands(); std::stringstream strm; strm << "Mask: found " << cmds.size() << " commands ("; for (auto& cmd:cmds){ strm << cmdnames[cmd.type] <<","; } strm << ")" << std::endl; cout << strm.str(); */ } cout << "Mask: found " << paths.size() << " paths with " << mask.size() << " shapes" <getSegments(numsegments,coverage,phase); for (auto segment=segments.begin();segment!=segments.end();segment++){ segment->draw(); segmentsdrawn+=1; pointsdrawn+=segment->size(); } } break; } case 1:{ vector shapes; for (auto shape=segmenters.begin();shape!=segmenters.end();shape++){ auto segments=shape->getSegments(numsegments,coverage,phase); for (auto segment=segments.begin();segment!=segments.end();segment++){ shapes.push_back(*segment); } } clipper.addPolylines(shapes,ClipperLib::ptSubject); vector clipped = clipper.getClippedLines(ClipperLib::ctIntersection); for (auto& clip: clipped) { clip.draw(); segmentsdrawn++; pointsdrawn+=clip.size(); } break; } case 2:{ vector shapes; for (auto shape=segmenters.begin();shape!=segmenters.end();shape++){ auto segments=shape->getSegments(numsegments,coverage,phase); for (auto segment=segments.begin();segment!=segments.end();segment++){ shapes.push_back(*segment); } } clipper.addPolylines(shapes,ClipperLib::ptSubject); vector clipped = clipper.getClippedLines(ClipperLib::ctDifference); for (auto& clip: clipped) { clip.draw(); segmentsdrawn++; pointsdrawn+=clip.size(); } break; } case 3:{ int w=ofRandom(1000); segmenters[w%segmenters.size()].draw(); segmentsdrawn=1; pointsdrawn+=segmenters[w%segmenters.size()].size(); break; } } /* ofxSVG svg; svg.load("lorenzos.svg"); vector paths= svg.getPaths(); for (auto& l:paths) l.draw(); */ std::stringstream strm; strm << "mode: " << mode << " segments: "<