summaryrefslogtreecommitdiff
path: root/imgtest/src/ofApp.cpp
diff options
context:
space:
mode:
authorTim Redfern <tim@getdrop.com>2017-08-27 13:19:47 +0100
committerTim Redfern <tim@getdrop.com>2017-08-27 13:19:47 +0100
commitd8a46a6409286b3834bc609e4f34a09d48a8ae58 (patch)
treeba808c1648c908c5363b762541557ea649b12f27 /imgtest/src/ofApp.cpp
initial commit
Diffstat (limited to 'imgtest/src/ofApp.cpp')
-rw-r--r--imgtest/src/ofApp.cpp224
1 files changed, 224 insertions, 0 deletions
diff --git a/imgtest/src/ofApp.cpp b/imgtest/src/ofApp.cpp
new file mode 100644
index 0000000..3f33d8d
--- /dev/null
+++ b/imgtest/src/ofApp.cpp
@@ -0,0 +1,224 @@
+#include "ofApp.h"
+#include "glew.h"
+
+//--------------------------------------------------------------
+void ofApp::setup(){
+
+ std::string filename;
+
+ float speedscale=0.999;
+ float overlapscale=0.3;
+ float transitionscale=0.6;
+
+ if (arguments.size()>1){
+ filename=arguments.at(1);
+ }
+ else filename="jukebox_1.JPG"; //"tile-grid-png-6.png"; // //hubble_Orion_nebula.tif"; //
+
+ float t=ofGetElapsedTimef();
+ if (i1.load(filename)){
+ ofLogNotice() << "Loaded : "<<filename<< " in "<<(ofGetElapsedTimef()-t)<<" seconds.";
+
+ ofLogNotice() << i1.getWidth() << " x " << i1.getHeight();
+
+ //i1 is 2272 x 1704 or +- 1136 x 852
+ //i2 is 454 x 340 scaled
+ //i1.init(ofPoint(30,-20),0.2,0,speedscale,transitionscale);
+ i1.init(ofPoint(0,0),overlapscale,0,speedscale,transitionscale);
+ }
+ else ofLogNotice() << "Could not load : "<<filename;
+
+ i2.load("jukebox_2.JPG"); //"tile-grid-png-6.png"); //
+ i2.init(ofPoint(-400,250),0.2,0,speedscale,transitionscale);
+ i2.init(ofPoint(0,0),overlapscale,0,speedscale,transitionscale);
+ i1.link=&i2;
+
+ i3.load("jukebox_3.JPG"); //"tile-grid-png-6.png"); //
+ i3.init(ofPoint(500,200),0.2,0,speedscale,transitionscale);
+ //i3.init(ofPoint(0,0),overlapscale,0,speedscale,transitionscale);
+ i2.link=&i3;
+
+ i3.link=&i1;
+
+ viewpoint.resetTransform();
+ viewpoint.setFov(60);
+ viewpoint.setFarClip(10000.0f);
+
+ startTime=ofGetElapsedTimef();
+ timescaling=.01;
+
+ currentImage=&i1;
+ currentImage->start();
+
+ currentFrame=0;
+
+}
+
+//--------------------------------------------------------------
+void ofApp::update(){
+
+ std::stringstream strm;
+ strm << "fps: " << ofGetFrameRate();
+ ofSetWindowTitle(strm.str());
+
+
+ if (currentImage->update()){ //if returns true, switch images
+ currentImage=currentImage->link;
+ currentImage->start();
+ ofLogNotice() << "Switched images";
+ currentFrame=0;
+ //viewpoint.resetTransform(); //or we get a glitch for no apparent reason, or not
+ currentImage->update();
+ }
+
+ //viewpoint misbehaves the first frame it is moved.
+
+}
+
+//--------------------------------------------------------------
+void ofApp::draw(){
+
+ //viewpoint.begin();
+
+ float camera_throw= 0.6667; //the ratio of z distance to x width
+
+
+ glMatrixMode ( GL_MODELVIEW );
+ glLoadIdentity ( );
+ gluLookAt( currentImage->getTransform().x,
+ currentImage->getTransform().y, // i1.linkPos.y+(xform.y*intervalpoint),
+ currentImage->getWidth()*camera_throw*currentImage->getScale() ,
+ currentImage->getTransform().x,
+ currentImage->getTransform().y, // i1.linkPos.y+(xform.y*intervalpoint),
+ 0,
+ 0,1,0);
+
+ //if (currentFrame>0) {
+ ofBackground(0,0,0);
+ currentImage->drawChain();
+ //}
+ //else {
+ //ofSetColor(255,255,255);
+ //ofDrawRectangle(-100,-100,200,200);
+ //currentImage->link->drawChain(); //attempted hack
+ //}
+
+/*
+ printf(">>Draw %i %f complete %f,%f at %f from %f,%f,%f\n",
+ currentFrame,
+ currentImage->transition,
+ currentImage->linkPos.x,
+ currentImage->linkPos.y,
+ currentImage->getScale(),
+ currentImage->getTransform().x,
+ currentImage->getTransform().y,
+ currentImage->getWidth()*camera_throw*currentImage->getScale()
+ );
+*/
+
+
+/*
+ viewpoint.setPosition(currentImage->getTransform().x,
+ currentImage->getTransform().y, // i1.linkPos.y+(xform.y*intervalpoint),
+ currentImage->getWidth()*camera_throw*currentImage->getScale());
+*/
+ //ofCamera DOES NOT WORK, it produces spurious coordinates the first frame it is moved
+
+
+ /*
+
+
+ ofLogNotice() << "Camera at: "<<ofToString(viewpoint.getPosition().x)
+ <<","<<ofToString(viewpoint.getPosition().y)
+ <<","<<ofToString(viewpoint.getPosition().z);
+ */
+
+ //viewpoint.end();
+
+/*
+ if (!(i1.transition<1.0)){
+ ofLogNotice() << "Finished ";
+
+ ofBaseApp::exit();
+ std::exit(EXIT_FAILURE);
+ }
+
+
+ so far so good
+
+ now:
+
+ -rotation
+ -moving seamlessly between segments - exponential zoom
+ -blending movment between segments
+ -interface for authoring
+ -things to do with it
+
+
+
+
+ if (currentFrame<2) {
+ grab.grabScreen(0, 0 , ofGetWidth(), ofGetHeight());
+ char buf[50];
+ sprintf(buf,"zeroimg%04i.png",currentFrame);
+ grab.save(buf);
+ }
+ */
+
+ currentFrame++;
+}
+
+//--------------------------------------------------------------
+void ofApp::keyPressed(int key){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::keyReleased(int key){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::mouseMoved(int x, int y ){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::mouseDragged(int x, int y, int button){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::mousePressed(int x, int y, int button){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::mouseReleased(int x, int y, int button){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::mouseEntered(int x, int y){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::mouseExited(int x, int y){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::windowResized(int w, int h){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::gotMessage(ofMessage msg){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::dragEvent(ofDragInfo dragInfo){
+
+}