#include "widgets.hpp" namespace rack { void SpriteWidget::draw(NVGcontext *vg) { int width, height; nvgImageSize(vg, spriteImage->handle, &width, &height); int stride = width / spriteSize.x; if (stride == 0) { warn("Size of SpriteWidget is %d, %d but spriteSize is %f, %f", width, height, spriteSize.x, spriteSize.y); return; } Vec offset = Vec((index % stride) * spriteSize.x, (index / stride) * spriteSize.y); NVGpaint paint = nvgImagePattern(vg, spriteOffset.x - offset.x, spriteOffset.y - offset.y, width, height, 0.0, spriteImage->handle, 1.0); nvgFillPaint(vg, paint); nvgBeginPath(vg); nvgRect(vg, spriteOffset.x, spriteOffset.y, spriteSize.x, spriteSize.y); nvgFill(vg); } } // namespace rack