#include "ui.hpp" #include "window.hpp" namespace rack { #define SLIDER_SENSITIVITY 0.001 void Slider::draw(NVGcontext *vg) { float progress = rescale(value, minValue, maxValue, 0.0, 1.0); bndSlider(vg, 0.0, 0.0, box.size.x, box.size.y, BND_CORNER_NONE, state, progress, getText().c_str(), NULL); } void Slider::onDragStart(EventDragStart &e) { state = BND_ACTIVE; windowCursorLock(); revert_val = value; } void Slider::onDragMove(EventDragMove &e) { setValue(value + SLIDER_SENSITIVITY * (maxValue - minValue) * e.mouseRel.x); } void Slider::onDragEnd(EventDragEnd &e) { state = BND_DEFAULT; windowCursorUnlock(); EventAction eAction; onAction(eAction); } void Slider::onMouseDown(EventMouseDown &e) { if (e.button == 1) { if(INVALID_REVERT_VAL != revert_val) // during mouse drag { setValue(revert_val); revert_val = INVALID_REVERT_VAL; } else { setValue(defaultValue); } EventAction eAction; onAction(eAction); } e.consumed = true; e.target = this; } } // namespace rack