[Libreoffice-commits] core.git: Branch 'libreoffice-5-1' - vcl/opengl

Tomaž Vajngerl tomaz.vajngerl at collabora.com
Thu Feb 11 17:10:13 UTC 2016


 vcl/opengl/gdiimpl.cxx |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

New commits:
commit 6fb42845b82cc3b065dd788278c08cdacda1e5cc
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.com>
Date:   Thu Feb 11 15:57:27 2016 +0100

    tdf#97715 fix inv. scale calculation in DrawTransformedTexture
    
    When image was rotated towards 90 degree the ixscale and iyscale
    went towards infinity. That caused problems in fragment shader
    areaScaleFastFragmentShader. The problem was with calculation
    of destination width and height which didn't take rotation
    into account correctly. This commit takes this calculation
    from WinSalGraphicsImpl::drawTransformedBitmap.
    
    Change-Id: I30f14a1ecda21ef167e58eda8e2fcef00bdfa2b7
    Reviewed-on: https://gerrit.libreoffice.org/22289
    Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
    Tested-by: Michael Meeks <michael.meeks at collabora.com>

diff --git a/vcl/opengl/gdiimpl.cxx b/vcl/opengl/gdiimpl.cxx
index 7bb2ae2..8038d76 100644
--- a/vcl/opengl/gdiimpl.cxx
+++ b/vcl/opengl/gdiimpl.cxx
@@ -1069,8 +1069,13 @@ void OpenGLSalGraphicsImpl::DrawTransformedTexture(
     // If downscaling at a higher scale ratio, use the area scaling algorithm rather
     // than plain OpenGL's scaling, for better results.
     // See OpenGLSalBitmap::ImplScaleArea().
-    double ixscale = rTexture.GetWidth() / fabs( rX.getX() - rNull.getX());
-    double iyscale = rTexture.GetHeight() / fabs( rY.getY() - rNull.getY());
+
+    const long nDestWidth = basegfx::fround(basegfx::B2DVector(rX - rNull).getLength());
+    const long nDestHeight = basegfx::fround(basegfx::B2DVector(rY - rNull).getLength());
+
+    const double ixscale = rTexture.GetWidth()  / nDestWidth;
+    const double iyscale = rTexture.GetHeight() / nDestHeight;
+
     bool areaScaling = false;
     bool fastAreaScaling = false;
     OUString textureFragmentShader;


More information about the Libreoffice-commits mailing list