/* * keyvar.cpp generalised cushioned keyboard controller */ #include "keyVar.h" #define DEBUG 0 void keyVar::set(char _keyInc,char _keyDec,float _val,float _speed,float _accel,float _accelTime){ keyInc=_keyInc; keyDec=_keyDec; val=_val; //initial value speed=_speed; accel=_accel; accelTime=_accelTime; state=0; timePressed=timeCalc=0; } void keyVar::keyPressed(char _key){ //need to deal with key repeat: OSX anyway if (_key==keyInc&&state!=1) { state=1; timePressed=timeCalc=ofGetElapsedTimef(); if (DEBUG) printf("pressed %i\n",_key); } if (_key==keyDec&&state!=-1) { state=-1; timePressed=timeCalc=ofGetElapsedTimef(); if (DEBUG) printf("pressed %i\n",_key); } } void keyVar::keyReleased(char _key){ if (_key==keyInc&&state==1) { state=0; if (DEBUG) printf("released %i\n",_key); } if (_key==keyDec&&state==-1) { state=0; if (DEBUG) printf("released %i\n",_key); } } float keyVar::getVal(){ float segment = min(1.0f,(ofGetElapsedTimef()-timePressed)/accelTime); if (state) val+=pow(segment,accel)*speed*state; //(ofGetElapsedTimef()-timeCalc)* timeCalc=ofGetElapsedTimef(); return val; } float keyVar::getInc(){ float segment = min(1.0f,(ofGetElapsedTimef()-timePressed)/accelTime); return pow(segment,accel)*speed*state; }