string ofxTLKeyframes::cutRequest(){ if(selectedKeyframes.size() > 0){ string xmlrep = getXMLStringForKeyframes(selectedKeyframes); deleteSelectedKeyframes(); return xmlrep; } return ""; }
void ofxTLKeyframes::keyPressed(ofKeyEventArgs& args){ if(args.key == OF_KEY_DEL || args.key == OF_KEY_BACKSPACE){ deleteSelectedKeyframes(); } if ( args.key == 's') { simplifySelectedKeyframes(); } if ( args.key == 'k') { addKeyframe( getValue() ); } }
void ofxTLKeyframes::simplifySelectedKeyframes( float tolerance ){ if ( selectedKeyframes.size() > 2 ) { vector<ofPoint> pts; float startTime = (float)selectedKeyframes[0]->time; float timeNormalizationFactor = 1.0 / (float)selectedKeyframes.size(); for(int k = 0; k < selectedKeyframes.size(); k++){ pts.push_back(ofPoint(((float)selectedKeyframes[k]->time - startTime)*timeNormalizationFactor,selectedKeyframes[k]->value)); } deleteSelectedKeyframes(); ofPolyline line(pts); line.simplify(tolerance); int i = 0; while ( i < line.size()) { addKeyframeAtMillis(ofMap(line[i].y, 0.0, 1.0, valueRange.min, valueRange.max, false),(unsigned long long)(line[i].x / timeNormalizationFactor+startTime)); i++; } } }
void ofxTLKeyframes::keyPressed(ofKeyEventArgs& args){ if(args.key == OF_KEY_DEL || args.key == OF_KEY_BACKSPACE){ deleteSelectedKeyframes(); } }