#include "ofApp.h"
void ofApp::setup(){
ofBackground(255,255,255);
ofSetVerticalSync(true);
frameByframe = false;
fingerMovie.load("movies/fingers.mov");
fingerMovie.setLoopState(OF_LOOP_NORMAL);
fingerMovie.play();
}
void ofApp::update(){
fingerMovie.update();
}
void ofApp::draw(){
ofSetHexColor(0xFFFFFF);
fingerMovie.draw(20,20);
ofSetHexColor(0x000000);
ofPixels & pixels = fingerMovie.getPixels();
int vidWidth = pixels.getWidth();
int vidHeight = pixels.getHeight();
int nChannels = pixels.getNumChannels();
for (int i = 4; i < vidWidth; i+=8){
for (int j = 4; j < vidHeight; j+=8){
unsigned char r = pixels[(j * 320 + i)*nChannels];
float val = 1 - ((float)r / 255.0f);
ofDrawCircle(400 + i,20+j,10*val);
}
}
ofSetHexColor(0x000000);
ofDrawBitmapString("press f to change",20,320);
if(frameByframe) ofSetHexColor(0xCCCCCC);
ofDrawBitmapString("mouse speed position",20,340);
if(!frameByframe) ofSetHexColor(0xCCCCCC); else ofSetHexColor(0x000000);
ofDrawBitmapString("keys <- -> frame by frame " ,190,340);
ofSetHexColor(0x000000);
ofDrawBitmapString("frame: " + ofToString(fingerMovie.getCurrentFrame()) + "/"+ofToString(fingerMovie.getTotalNumFrames()),20,380);
ofDrawBitmapString("duration: " + ofToString(fingerMovie.getPosition()*fingerMovie.getDuration(),2) + "/"+ofToString(fingerMovie.getDuration(),2),20,400);
ofDrawBitmapString("speed: " + ofToString(fingerMovie.getSpeed(),2),20,420);
if(fingerMovie.getIsMovieDone()){
ofSetHexColor(0xFF0000);
ofDrawBitmapString("end of movie",20,440);
}
}
void ofApp::keyPressed (int key){
switch(key){
case 'f':
frameByframe=!frameByframe;
fingerMovie.setPaused(frameByframe);
break;
case OF_KEY_LEFT:
fingerMovie.previousFrame();
break;
case OF_KEY_RIGHT:
fingerMovie.nextFrame();
break;
case '0':
fingerMovie.firstFrame();
break;
}
}
void ofApp::keyReleased(int key){
}
void ofApp::mouseMoved(int x, int y ){
if(!frameByframe){
int width = ofGetWidth();
float pct = (float)x / (float)width;
float speed = (2 * pct - 1) * 5.0f;
fingerMovie.setSpeed(speed);
}
}
void ofApp::mouseDragged(int x, int y, int button){
if(!frameByframe){
int width = ofGetWidth();
float pct = (float)x / (float)width;
fingerMovie.setPosition(pct);
}
}
void ofApp::mousePressed(int x, int y, int button){
if(!frameByframe){
fingerMovie.setPaused(true);
}
}
void ofApp::mouseReleased(int x, int y, int button){
if(!frameByframe){
fingerMovie.setPaused(false);
}
}
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){
}
Comments