#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,"",_pos.x,_pos.y+size.y+5); } void draw(){ panel.draw(); ofPushMatrix(); ofTranslate(position); ofSetColor(255); ofNoFill(); ofDrawRectangle(0,0,size.x,size.y); ofPushMatrix(); ofTranslate(size/2); ofScale(DISPLAYSIZE.x/2.0f); vector lines=getLines(); for (auto& line:lines){ line.draw(); } ofPopMatrix(); ofPopMatrix(); } virtual vector getLines() {}; virtual void update() {}; 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 getLines(){ vector output; return output; } void update(){}; }; class svgPanel: public vectorPanel{ public: svgPanel( string _title="", ofVec2f _size=DISPLAYSIZE, ofVec2f _pos=ofPoint(5,5) ) : vectorPanel(_title,_size,_pos){ panel.add(shapeslabel.setup("SHAPES","")); panel.add(shapes_randomise.set("randomise",false)); //panel.add(shapes_generate.setup("generate")); 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(segmenterlabel.setup("SEGMENTER","")); panel.add(use_segmenter.set("enable",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)); //shapes_generate.addListener(this,&svgPanel::generate_shapes); } void load(string filename); void select_random_shapes(); void update_random_shapes(bool generate); vector getAllLines(); vector getLines(); void update(){ timedelta=ofGetElapsedTimef()-last_frame_time; last_frame_time=ofGetElapsedTimef(); phase=fmod(phase+(timedelta*segmenter_speed),1); while(phase<0) phase+=1.0f; //what's the issue with segmenter in reverse ofLog()<<"phase: "< shapes_randomise; ofxButton shapes_generate; ofParameter shapes_amount; ofParameter shapes_duration; //ofxToggle use_mask; //ofxToggle invert_mask; //segmenter ofxLabel segmenterlabel; ofParameter use_segmenter; //ofxToggle colour_segmenter; ofParameter segmenter_speed; ofParameter segmenter_length; ofParameter segmenter_number; vector segmenters; vector shape_selection_durations; set shape_selection; int framecounter; float phase; //,prev_time; //to calculate phase //float rotate_amt; //float scale_phase,scale_amt; float last_frame_time, timedelta; };