diff options
Diffstat (limited to 'nextus/src')
| -rw-r--r-- | nextus/src/lineClipper.cpp | 41 | ||||
| -rw-r--r-- | nextus/src/lineClipper.h | 2 | ||||
| -rw-r--r-- | nextus/src/ofApp.cpp | 2 | ||||
| -rw-r--r-- | nextus/src/vectorPlugin.h | 28 |
4 files changed, 50 insertions, 23 deletions
diff --git a/nextus/src/lineClipper.cpp b/nextus/src/lineClipper.cpp index bbfa9eb..eb9c480 100644 --- a/nextus/src/lineClipper.cpp +++ b/nextus/src/lineClipper.cpp @@ -2,32 +2,35 @@ vector <colourPolyline> lineClipper::mask( vector <colourPolyline> shapes, - vector <ofPolyline> mask, + ofRectangle frame, bool invert ) { vector <colourPolyline> output; ofx::Clipper clipper; + + clipper.Clear(); + clipper.addRectangle(frame, ClipperLib::ptClip, true); + vector <ofPolyline> polys; //TODO make clipper clip colourpolylines + + for (auto& shape: shapes) polys.push_back(shape); + + clipper.addPolylines(polys,ClipperLib::ptSubject); - 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))); - } + 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,shapes[0].getColourAt(0))); } + return output; }
\ No newline at end of file diff --git a/nextus/src/lineClipper.h b/nextus/src/lineClipper.h index d8b7fdd..7b098a1 100644 --- a/nextus/src/lineClipper.h +++ b/nextus/src/lineClipper.h @@ -12,7 +12,7 @@ class lineClipper { } vector <colourPolyline> static mask( vector <colourPolyline> shapes, - vector <ofPolyline> mask, + ofRectangle frame, bool invert=false); }; diff --git a/nextus/src/ofApp.cpp b/nextus/src/ofApp.cpp index f3aee1d..22e3d11 100644 --- a/nextus/src/ofApp.cpp +++ b/nextus/src/ofApp.cpp @@ -67,7 +67,7 @@ void ofApp::draw(){ textinput.draw(); //process the pipeline - vector<colourPolyline> output=textinput.getOutput(); + vector<colourPolyline> output=textinput.clipOutput(); int points=0; diff --git a/nextus/src/vectorPlugin.h b/nextus/src/vectorPlugin.h index 3d01d07..78ce06d 100644 --- a/nextus/src/vectorPlugin.h +++ b/nextus/src/vectorPlugin.h @@ -22,6 +22,29 @@ class vectorPanel { size=_size; position=_pos; panel.setup(_title,"",_pos.x,_pos.y+size.y+5); + + /* + float f1=-1.0; + float f2=1.0; + vector<glm::vec3> v1 = {{f1,f1,0},{f2,f1,0}}; + vector<glm::vec3> v2 = {{f2,f1,0},{f2,f2,0}}; + vector<glm::vec3> v3 = {{f2,f2,0},{f1,f2,0}}; + vector<glm::vec3> v4 = {{f1,f2,0},{f1,f1,0}}; + ofPolyline p1,p2,p3,p4; + p1.addVertices(v1); + p2.addVertices(v2); + p3.addVertices(v3); + p4.addVertices(v4); + frame.push_back(p1); + frame.push_back(p2); + frame.push_back(p3); + frame.push_back(p4); + */ + + ofPolyline p=ofPolyline().fromRectangle(ofRectangle(-1.0f,-1.0f,2.0f,2.0f)); + p.close(); + + frame.push_back(p); } void draw(){ panel.draw(); @@ -33,7 +56,7 @@ class vectorPanel { ofPushMatrix(); ofTranslate(size/2); ofScale(DISPLAYSIZE.x/2.0f); - vector<colourPolyline> lines=getOutput(); + vector<colourPolyline> lines=clipOutput(); for (auto& line:lines){ line.draw(); } @@ -41,7 +64,8 @@ class vectorPanel { ofPopMatrix(); } vector<colourPolyline> clipOutput() { - return getOut(); + ofLog()<<"frame has "<<frame.size()<<" paths"; + return lineClipper::mask(getOutput(),ofRectangle(-1.0f,-1.0f,2.0f,2.0f)); }; vector<colourPolyline> getOutput() {return getLines();}; virtual vector<colourPolyline> getLines() {}; |
