From c715b069b5b702db1e93a3981ea698bef3ed5cb6 Mon Sep 17 00:00:00 2001 From: ed Date: Mon, 22 Jan 2018 14:46:02 +0000 Subject: [PATCH] OpenGL: Revert commits 515f484 and 0a15be7 and calculate scale factor using relative bounds instead --- .../juce_opengl/opengl/juce_OpenGLContext.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/modules/juce_opengl/opengl/juce_OpenGLContext.cpp b/modules/juce_opengl/opengl/juce_OpenGLContext.cpp index 9d48c3557f..a8e3b70951 100644 --- a/modules/juce_opengl/opengl/juce_OpenGLContext.cpp +++ b/modules/juce_opengl/opengl/juce_OpenGLContext.cpp @@ -157,9 +157,7 @@ public: bool invalidate (const Rectangle& area) override { - auto scaled = area.toFloat() * scale; - - validArea.subtract (scaled.transformedBy (transform).getSmallestIntegerContainer()); + validArea.subtract (area.toFloat().transformedBy (transform).getSmallestIntegerContainer()); triggerRepaint(); return false; } @@ -287,17 +285,18 @@ public: auto newScale = Desktop::getInstance().getDisplays() .getDisplayContaining (lastScreenBounds.getCentre()).scale; - auto newArea = peer->getComponent().getLocalArea (&component, component.getLocalBounds()) + auto localBounds = component.getLocalBounds(); + + auto newArea = peer->getComponent().getLocalArea (&component, localBounds) .withZeroOrigin() * newScale; - auto newTransform = component.getTransform(); - - if (scale != newScale || viewportArea != newArea || transform != newTransform) + if (scale != newScale || viewportArea != newArea) { scale = newScale; viewportArea = newArea; - transform = newTransform; + transform = AffineTransform::scale ((float) newArea.getRight() / (float) localBounds.getRight(), + (float) newArea.getBottom() / (float) localBounds.getBottom()); if (canTriggerUpdate) invalidateAll(); @@ -340,7 +339,7 @@ public: { ScopedPointer g (createOpenGLGraphicsContext (context, cachedImageFrameBuffer)); g->clipToRectangleList (invalid); - g->addTransform (transform.followedBy (AffineTransform::scale ((float) scale))); + g->addTransform (transform); paintOwner (*g); JUCE_CHECK_OPENGL_ERROR