Kaydet (Commit) 54e3ea8a authored tarafından Tomaž Vajngerl's avatar Tomaž Vajngerl Kaydeden (comit) Michael Meeks

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/22289Reviewed-by: 's avatarMichael Meeks <michael.meeks@collabora.com>
Tested-by: 's avatarMichael Meeks <michael.meeks@collabora.com>
üst 2f048d89
...@@ -1068,8 +1068,13 @@ void OpenGLSalGraphicsImpl::DrawTransformedTexture( ...@@ -1068,8 +1068,13 @@ void OpenGLSalGraphicsImpl::DrawTransformedTexture(
// If downscaling at a higher scale ratio, use the area scaling algorithm rather // If downscaling at a higher scale ratio, use the area scaling algorithm rather
// than plain OpenGL's scaling, for better results. // than plain OpenGL's scaling, for better results.
// See OpenGLSalBitmap::ImplScaleArea(). // 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 areaScaling = false;
bool fastAreaScaling = false; bool fastAreaScaling = false;
OUString textureFragmentShader; OUString textureFragmentShader;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment