#pragma once #include "ofMain.h" #include "ofxGui.h" #include "ofxXmlSettings.h" #include "ofxKinectV2.h" #include "ofxOpenCv.h" #include "ofxClipper.h" #include "ofxSVG.h" #include "ofxGist.h" #include "ofxOpenALSoundPlayer.h" #include "PerlinPhasingFilter.h" #include "lasergui.h" #include "audiobuffer.h" #include "linetransformer.h" #include "linesegmenter.h" #include "selectpanel.h" #include "vectortext.h" #define SAMPLERATE 48000 const ofPoint outputWindowSize=ofPoint(1024,768); const float guiScale=560.0f/4096.0f; const ofPoint sourceframesize=ofPoint(320,240); const ofPoint previewframesize=ofPoint(640,480); class textgui : public ofxPanel{ public: ofParameter use_beat; ofParameter beat_duration; ofParameter text_speed; ofParameter text_scale; ofParameter enable_anim; ofParameter anim_rev; ofParameter vert_pos; ofParameter vert_spread; glyphbanner text; int onset_frame; void loadfile(const string & f){ if (!strcmp(strchr(f.c_str(), '\0') - 4, ".plt")){ text.loadPalette(f); } else { text.load(f); } } void setup(int x, int y){ //text.loadFont("fonts/EMSSpaceRocks.svg"); text.loadFont("fonts/EMSOsmotron.svg"); ofxPanel::setup("text","",x,y); ofxPanel::add(use_beat.set("use beat", false)); ofxPanel::add(beat_duration.set("duration factor", 0.5f, 0.0f, 1.0f)); ofxPanel::add(text_speed.set("speed", 5.0f, 0.0f, 25.0f)); ofxPanel::add(text_scale.set("scale", 0.1f, 0.0f, 0.5f)); ofxPanel::add(enable_anim.set("animate", false)); ofxPanel::add(anim_rev.set("reverse", false)); ofxPanel::add(vert_pos.set("vert_pos", 0.0f, -0.3f, 0.3f)); ofxPanel::add(vert_spread.set("vert_spread", 0.0f, -0.3f, 0.3f)); } void update(int oframe=0){ onset_frame=oframe; text.update(text_speed,true); } void drawgui(int oframe=0){ onset_frame=oframe; ofxPanel::draw(); } void createWords(string t){ text.createWords(t); } vector& getOutlines(float x=0, float y=0){ return text.getOutlines(text_scale,STYLE_OVERLAPPING,x,y+(ofGetHeight()*vert_pos),enable_anim,anim_rev,vert_spread,use_beat,beat_duration); } }; class ofApp: public ofBaseApp { public: void setup(); void update(); void draw(); void exit(); void keyPressed(ofKeyEventArgs &keyargs); void keyReleased(ofKeyEventArgs & args); void mouseMoved(int x, int y ); void mouseDragged(int x, int y, int button); void mousePressed(int x, int y, int button); void mouseReleased(int x, int y, int button); void mouseEntered(int x, int y); void mouseExited(int x, int y); void windowResized(int w, int h); void dragEvent(ofDragInfo dragInfo); void updateOutput(ofEventArgs & args); void drawOutput(ofEventArgs & args); void outputKeyPressed(ofKeyEventArgs & args); void outputKeyReleased(ofKeyEventArgs & args); void outputMouseDragged(ofMouseEventArgs & args); void outputMousePressed(ofMouseEventArgs & args); void outputMouseReleased(ofMouseEventArgs & args); void outputWindowResized(ofResizeEventArgs &resizeargs); //--laser interface and settings------------------------------------------------ lasergui laser; ofxXmlSettings XML; void default_settings(); void save_settings(); void setup_lasergui(int x, int y); void select_random_shapes(float duration,bool generate); bool commandPressed; glm::vec2 warpframe[4]; int select_warpframe; bool bDrawFrame; bool bShowPositionInterface; bool bOutputSelected; ofPoint outputSelectionPoint; ofPoint outputPosition; ofPoint outputOffset; float outputScale; float outputOffsetScale; glm::vec3 safety_frame[4]; int select_safetyframe; //--audio------------------------------------------------ ofSoundStream soundStream; int blockSize; void audioIn(float * input, int blockSize, int nChannels); ofxGist gist; void onNoteOn(GistEvent &e); void onNoteOff(GistEvent &e); ofxPanel audiopanel; ofParameter vScale; ofParameter hScale; ofParameter onset_threshold; ofParameter use_onset; ofParameter onset_duration; int onset_frame; int onset_number; Buffer buffer; //--vector drawing------------------------------------- ofxPanel drawingpanel; ofParameter lineWidth; //--perlin filter PerlinPhasingFilter *perlin; ofxPanel perlinpanel; ofParameter perlinEnable; ofParameter perlinScale; ofParameter perlinSpeed; ofParameter perlinPixelWidth; ofParameter perlinPixelWidthSpeed; //--video capture (automatic) bool useKinect; ofxKinectV2 kinect; ofImage texRGB; ofVideoGrabber _video; //--preview and sources ofFbo preview; ofxPanel videoSourcePanel; ofParameter captPreview; ofParameter captEnable; ofParameter videoOscEnable; ofParameter playerEnable; ofParameter contoursVideoDraw; ofParameter SVGVideoDraw; ofParameter textVideoDraw; ofParameter video_speed; //move this ofxPanel vectorSourcePanel; ofParameter edit_safety; ofParameter use_safety; ofParameter vectorOscEnable; ofParameter contoursLaserDraw; ofParameter SVGLaserDraw; ofParameter textLaserDraw; ofxPanel vectorTransforms; ofParameter use_rotate; ofParameter xf_rotate; ofParameter use_scale; ofParameter xf_scale_speed; ofParameter xf_scale_min; ofParameter xf_scale_max; int framecounter; float phase,prev_time; //to calculate phase float rotate_amt; float scale_phase,scale_amt; //--video player ofVideoPlayer _player; float videostart; //--contours ofxCvColorImage colorImg; ofxCvGrayscaleImage grayImage; ofxCvContourFinder contourFinder; ofxPanel contourgui; ofParameter video_outlines; ofParameter contour_adaptive; ofParameter contour_threshold; ofParameter contour_adaptive_window; ofParameter contour_simplify; ofParameter contour_useColour; //get colour somewhere else // ofxIntSlider laser_R; // ofxIntSlider laser_G; // ofxIntSlider laser_B; //==//SVG player=================================== ofxSVG svg; vector segmenters; vector shape_selection_durations; set shape_selection; float last_frame_time; //svg gui ofxPanel svggui; ofParameter shapes_randomise; ofParameter shapes_amount; ofParameter shapes_duration; ofParameter use_mask; ofParameter invert_mask; //segmenter ofParameter use_segmenter; ofParameter colour_segmenter; ofParameter segmenter_speed; ofParameter segmenter_length; ofParameter segmenter_number; //==/Mask clipping=================================== / ofx::Clipper clipper; //==/text=================================== / textgui text; };