#include "widgets.hpp" namespace rack { Vec ZoomWidget::getRelativeOffset(Vec v, Widget *relative) { return Widget::getRelativeOffset(v.mult(zoom), relative); } Rect ZoomWidget::getViewport(Rect r) { r.pos = r.pos.mult(zoom); r.size = r.size.mult(zoom); r = Widget::getViewport(r); r.pos = r.pos.div(zoom); r.size = r.size.div(zoom); return r; } void ZoomWidget::setZoom(float zoom) { if (zoom != this->zoom) { EventZoom e; onZoom(e); } this->zoom = zoom; } void ZoomWidget::draw(NVGcontext *vg) { nvgScale(vg, zoom, zoom); Widget::draw(vg); } void ZoomWidget::onMouseDown(EventMouseDown &e) { Vec pos = e.pos; e.pos = e.pos.div(zoom); Widget::onMouseDown(e); e.pos = pos; } void ZoomWidget::onMouseUp(EventMouseUp &e) { Vec pos = e.pos; e.pos = e.pos.div(zoom); Widget::onMouseUp(e); e.pos = pos; } void ZoomWidget::onMouseMove(EventMouseMove &e) { Vec pos = e.pos; e.pos = e.pos.div(zoom); Widget::onMouseMove(e); e.pos = pos; } void ZoomWidget::onHoverKey(EventHoverKey &e) { Vec pos = e.pos; e.pos = e.pos.div(zoom); Widget::onHoverKey(e); e.pos = pos; } void ZoomWidget::onScroll(EventScroll &e) { Vec pos = e.pos; e.pos = e.pos.div(zoom); Widget::onScroll(e); e.pos = pos; } void ZoomWidget::onPathDrop(EventPathDrop &e) { Vec pos = e.pos; e.pos = e.pos.div(zoom); Widget::onPathDrop(e); e.pos = pos; } } // namespace rack