diff options
| author | Tim Redfern <redfernt@gmail.com> | 2023-04-19 09:46:58 +0100 |
|---|---|---|
| committer | Tim Redfern <redfernt@gmail.com> | 2023-04-19 09:46:58 +0100 |
| commit | beaeeb0a47d1e4a0b62264263dd319dc49d6a2f9 (patch) | |
| tree | 5e85a5e8e8a26690b5a34ed8524ce9fa1c066ae3 /nextus/src/vectorPlugin.h | |
| parent | c8e83cad88fb1ac9ababbee5673e910befcd2d95 (diff) | |
add vectorplugins unit
Diffstat (limited to 'nextus/src/vectorPlugin.h')
| -rw-r--r-- | nextus/src/vectorPlugin.h | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/nextus/src/vectorPlugin.h b/nextus/src/vectorPlugin.h new file mode 100644 index 0000000..8a3f557 --- /dev/null +++ b/nextus/src/vectorPlugin.h @@ -0,0 +1,114 @@ +#pragma once + +#include "ofMain.h" +#include "ofxGui.h" +#include "ofxSVG.h" +#include "ofxClipper.h" +#include "ofxPONK.h" +#include "lineTransformer.h" +#include "lineSegmenter.h" + +static ofVec2f DISPLAYSIZE(200,200); + +class vectorPanel { + public: + vectorPanel( + string _title="", + ofVec2f _size=DISPLAYSIZE, + ofVec2f _pos=ofPoint(5,5)) + { + size=_size; + position=_pos; + panel.setup(_title,"",0,size.y+5); + } + void draw(){ + ofPushMatrix(); + ofTranslate(position); + ofSetColor(255); + ofNoFill(); + ofDrawRectangle(0,0,size.x,size.y); + panel.draw(); + ofPushMatrix(); + ofTranslate(size/2); + ofScale(DISPLAYSIZE.x/2.0f); + vector<colourPolyline> lines=getLines(); + for (auto& line:lines){ + line.draw(); + } + ofPopMatrix(); + ofPopMatrix(); + } + virtual vector<colourPolyline> getLines() {}; + + protected: + ofVec2f size; + ofPoint position; + ofxPanel panel; +}; + +class defaultPanel: public vectorPanel{ + //the minimum panel that can be instanced + public: + defaultPanel( + string _title="", + ofVec2f _size=DISPLAYSIZE, + ofVec2f _pos=ofPoint(5,5) + ) : vectorPanel(_title,_size,_pos){} + vector<colourPolyline> getLines(){ + vector<colourPolyline> output; + return output; + } +}; + +class svgPanel: public vectorPanel{ + public: + svgPanel( + string _title="", + ofVec2f _size=DISPLAYSIZE, + ofVec2f _pos=ofPoint(5,5) + ) : vectorPanel(_title,_size,_pos){ + //panel.add(ofxLabel().setup("SHAPES","")); + panel.add(shapes_randomise.set("randomise",false)); + panel.add(generate_shapes.set("generate",false)); + panel.add(shapes_amount.set("amount",0.2,0.0,1.0)); + panel.add(shapes_duration.set("duration",5.0,0,10.0)); + panel.add(use_segmenter.set("SEGMENTER",false)); + panel.add(shapes_randomise.set("randomise",false)); + panel.add(segmenter_speed.set("speed",0.2,-1.0,1.0)); + panel.add(segmenter_length.set("length",0.2,0.0,1.0)); + panel.add(segmenter_number.set("number",1,1,8)); + } + void load(string filename); + void select_random_shapes(float duration,bool generate); + vector<colourPolyline> getAllLines(); + vector<colourPolyline> getLines(); + + private: + //ofxFloatSlider contour_simplify; + + //svg gui + ofParameter<bool> shapes_randomise; + ofParameter<bool> generate_shapes; //manual version of audio driven version + ofParameter<float> shapes_amount; + ofParameter<float> shapes_duration; + //ofxToggle use_mask; + //ofxToggle invert_mask; + + //segmenter + ofParameter<bool> use_segmenter; + //ofxToggle colour_segmenter; + ofParameter<float> segmenter_speed; + ofParameter<float> segmenter_length; + ofParameter<int> segmenter_number; + + + vector <colourLineSegmenter> segmenters; + vector <float> shape_selection_durations; + set <int> shape_selection; + int framecounter; + float phase; //,prev_time; //to calculate phase + //float rotate_amt; + //float scale_phase,scale_amt; + + float last_frame_time; +};
\ No newline at end of file |
