#include "widgets.hpp" #include "gui.hpp" namespace rack { void ScrollBar::draw(NVGcontext *vg) { float boxSize = (orientation == VERTICAL ? box.size.y : box.size.x); float maxOffset = containerSize - boxSize; float offset = containerOffset / maxOffset; float size = boxSize / containerSize; size = clampf(size, 0.0, 1.0); bndScrollBar(vg, box.pos.x, box.pos.y, box.size.x, box.size.y, state, offset, size); } void ScrollBar::move(float delta) { float boxSize = (orientation == VERTICAL ? box.size.y : box.size.x); float maxOffset = containerSize - boxSize; containerOffset += delta; containerOffset = clampf(containerOffset, 0.0, maxOffset); } void ScrollBar::onDragStart() { state = BND_ACTIVE; guiCursorLock(); } void ScrollBar::onDragMove(Vec mouseRel) { float delta = (orientation == VERTICAL ? mouseRel.y : mouseRel.x); move(delta); } void ScrollBar::onDragEnd() { state = BND_DEFAULT; guiCursorUnlock(); } } // namespace rack