summaryrefslogtreecommitdiff
path: root/nextus/src/vectorPlugin.h
diff options
context:
space:
mode:
authorTim Redfern <redfernt@gmail.com>2023-04-19 09:46:58 +0100
committerTim Redfern <redfernt@gmail.com>2023-04-19 09:46:58 +0100
commitbeaeeb0a47d1e4a0b62264263dd319dc49d6a2f9 (patch)
tree5e85a5e8e8a26690b5a34ed8524ce9fa1c066ae3 /nextus/src/vectorPlugin.h
parentc8e83cad88fb1ac9ababbee5673e910befcd2d95 (diff)
add vectorplugins unit
Diffstat (limited to 'nextus/src/vectorPlugin.h')
-rw-r--r--nextus/src/vectorPlugin.h114
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