From 03ce2d6e2b157ee8e93cad71516103fcf1a33e85 Mon Sep 17 00:00:00 2001 From: Andrew Belt Date: Tue, 31 Oct 2017 04:13:03 -0400 Subject: [PATCH] Fix framebuffer 1 pixel offset bug when position world coordinate is negative --- src/widgets/FramebufferWidget.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/widgets/FramebufferWidget.cpp b/src/widgets/FramebufferWidget.cpp index d3e85016..9d4a633d 100644 --- a/src/widgets/FramebufferWidget.cpp +++ b/src/widgets/FramebufferWidget.cpp @@ -46,6 +46,8 @@ void FramebufferWidget::draw(NVGcontext *vg) { assert(fabsf(xform[2]) < 1e-6); Vec s = Vec(xform[0], xform[3]); Vec b = Vec(xform[4], xform[5]); + Vec bi = b.floor(); + Vec bf = b.minus(bi); // Render to framebuffer if (dirty) { @@ -78,8 +80,7 @@ void FramebufferWidget::draw(NVGcontext *vg) { nvgScale(gFramebufferVg, gPixelRatio * oversample, gPixelRatio * oversample); // Use local scaling - Vec bFrac = Vec(fmodf(b.x, 1.0), fmodf(b.y, 1.0)); - nvgTranslate(gFramebufferVg, bFrac.x, bFrac.y); + nvgTranslate(gFramebufferVg, bf.x, bf.y); nvgScale(gFramebufferVg, s.x, s.y); Widget::draw(gFramebufferVg); @@ -92,10 +93,9 @@ void FramebufferWidget::draw(NVGcontext *vg) { } // Draw framebuffer image, using world coordinates - b = b.floor(); nvgSave(vg); nvgResetTransform(vg); - nvgTranslate(vg, b.x, b.y); + nvgTranslate(vg, bi.x, bi.y); nvgBeginPath(vg); nvgRect(vg, internal->box.pos.x, internal->box.pos.y, internal->box.size.x, internal->box.size.y);