#pragma once #include "ofMain.h" #include "ofxJSON.h" #include "ofxEasing.h" #define min(a,b) ((a) < (b) ? (a) : (b)) #define max(a,b) ((a) > (b) ? (a) : (b)) #define THUMB_BORDER_RATIO 0.8 #define THUMB_SIZE 160 #define DEFAULT_FADEIN 1.0 #define BEZIER_OUT 0.25 #define BEZIER_IN 0.25 #define ROTATION_BEZIER_FRACTION 0.0 #define ROTATION_EASE_POWER 4.0 #define SWITCH_NONE 0 #define SWITCH_FORWARD 1 #define SWITCH_REVERSE 2 //#define GPU_ALGORITHM //so annoying 1: menubar //so annoying 2: dialogue stops screen template int sgn(T val) { return (T(0) < val) - (val < T(0)); } class chainImage : public ofImage{ public: chainImage(){ link=NULL; ofImage(); isLoaded=false; colour=ofColor(255,255,255); } void init(ofPoint _linkPos,float _linkScale,float _linkRot); void start(bool reverse=false); bool tload(std::string _filename){ printf("tload : %s\n",_filename.c_str()); filename=_filename; if (ofImage::load(filename)){ makeThumbnail(); //could there be a way to load without committing the texture //setUseTexture(false); setAnchorPoint(getWidth()/2,getHeight()/2); isLoaded=true; return true; } else printf("could not load : %s\n",_filename.c_str()); return false; } int updateOutput(float decayRatio); ofVec3f getTransform(); float getScale(); float getRotation(); ofPoint getLinkPos(); float getLinkRot(); float getLinkScale(); void updateRotationTimeline(); void drawChain(float fadeIn=DEFAULT_FADEIN,bool additive =false, float intensity=1.0f, float zoomMultiplier=1.0f); void gpu_drawChain(float fadeIn=DEFAULT_FADEIN,bool additive =false, float intensity=1.0f, float zoomMultiplier=1.0f); void gpu_drawImage(); void drawRecursive(float fadeIn,bool additive,float intensity,float zoomMultiplier, float fadeStart, float fadeEnd); ofImage thumbnail; void makeThumbnail(); void setupTextures(); Json::Value toJson(); bool fromJson(Json::Value json); ofPoint getPathPoint(); chainImage *link; chainImage *linked; ofPoint linkPos; ofPoint dragPos; float linkScale; float dragScale; float linkRot; float dragRot; ofColor colour; std::string filename; float transition; float fadeIn; float speed; float time; float scale; ofPolyline path; ofPolyline rotationTimeline; bool isLoaded; ofShader shader; //int totalframes,framecount; };