void GuiRangeSliderBase::setValueFromSequence(Sequence &sequence) { float diff = sequence.getValueAtCurrentCursor() - sliderValuePrev; setValueLow(max(0.0f, sliderLow + diff)); setValueHigh(min(1.0f, sliderHigh + diff)); sliderValuePrev = sequence.getValueAtCurrentCursor(); }
void GuiRangeSliderBase::update() { if (lerpFrame < lerpNumFrames) { setValueLow(ofLerp(lerpPrevLow, lerpNextLow, (float) lerpFrame / (lerpNumFrames-1))); setValueHigh(ofLerp(lerpPrevHigh, lerpNextHigh, (float) lerpFrame / (lerpNumFrames-1))); lerpFrame++; } }
void GuiRangeSliderBase::setValue(float sliderValue) { if (selection == MIDDLE) { float diff = ofClamp(sliderValue - sliderValuePrev, -sliderLow, 1.0 - sliderHigh); setValueLow(sliderLow + diff); setValueHigh(sliderHigh + diff); sliderValuePrev = sliderValue; } else { if (sliderLow > sliderHigh) { swap(sliderLow, sliderHigh); selection = selection == LOW ? HIGH : LOW; } selection == LOW ? setValueLow(sliderValue) : setValueHigh(sliderValue); } }
void ofxUIRangeSlider::keyPressed(int key) { if(state == OFX_UI_STATE_OVER) { switch (key) { case OF_KEY_RIGHT: setValueHigh(getScaledValueHigh()+increment); setValueLow(getScaledValueLow()+increment); triggerEvent(this); break; case OF_KEY_LEFT: setValueHigh(getScaledValueHigh()-increment); setValueLow(getScaledValueLow()-increment); triggerEvent(this); break; case OF_KEY_UP: setValueHigh(getScaledValueHigh()+increment); setValueLow(getScaledValueLow()-increment); triggerEvent(this); break; case OF_KEY_DOWN: setValueHigh(getScaledValueHigh()-increment); setValueLow(getScaledValueLow()+increment); triggerEvent(this); break; default: break; } } }
void GuiRangeSliderBase::lerpTo(float nextLow, float nextHigh, int numFrames) { if (numFrames > 1) { this->lerpNextLow = nextLow; this->lerpNextHigh = nextHigh; this->lerpPrevLow = sliderLow; this->lerpPrevHigh = sliderHigh; this->lerpNumFrames = numFrames; this->lerpFrame = 0; } else { setValueLow(nextLow); setValueHigh(nextHigh); } }
void ofxUIRangeSlider::loadState(ofxXmlSettings *XML) { setValueHigh(XML->getValue("HighValue", getValueHigh(), 0)); setValueLow(XML->getValue("LowValue", getValueLow(), 0)); }
void GuiRangeSliderBase::setFromXml(ofXml &xml) { setValueLow(xml.getValue<float>("ValueLow")); setValueHigh(xml.getValue<float>("ValueHigh")); }