vcl/opengl/gdiimpl.cxx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
New commits: commit 54e3ea8a86a309990f5edf78948bfe18dd2de96b Author: Tomaž Vajngerl <[email protected]> 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 <[email protected]> Tested-by: Michael Meeks <[email protected]> diff --git a/vcl/opengl/gdiimpl.cxx b/vcl/opengl/gdiimpl.cxx index fc738ca..6676baf 100644 --- a/vcl/opengl/gdiimpl.cxx +++ b/vcl/opengl/gdiimpl.cxx @@ -1068,8 +1068,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;
_______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
