Kaydet (Commit) 19baa61e authored tarafından Tomaž Vajngerl's avatar Tomaž Vajngerl

tdf#99795 drawAlphaBitmap should scale the bitmap if necessary

drawAlphaBitmap didn't use a high quality scaler for scaling
the texture but used the default scaling method in OpenGL (either
GL_NEAREST or GL_LINEAR, whichever is defined when texture
is created) which are low quality scalers - especially when
downscaling textures.

Change-Id: I6236b2ee92b9e5044b176a40a444027072b09b58
üst 248c5ea7
......@@ -1826,12 +1826,25 @@ bool OpenGLSalGraphicsImpl::drawAlphaBitmap(
const OpenGLSalBitmap& rBitmap = static_cast<const OpenGLSalBitmap&>(rSalBitmap);
const OpenGLSalBitmap& rAlpha = static_cast<const OpenGLSalBitmap&>(rAlphaBitmap);
OpenGLTexture& rTexture( rBitmap.GetTexture() );
OpenGLTexture& rAlphaTex( rAlpha.GetTexture() );
OpenGLTexture& rTexture(rBitmap.GetTexture());
OpenGLTexture& rAlphaTexture(rAlpha.GetTexture());
VCL_GL_INFO( "::drawAlphaBitmap" );
PreDraw();
DrawTextureWithMask( rTexture, rAlphaTex, rPosAry );
if (rPosAry.mnSrcWidth != rPosAry.mnDestWidth ||
rPosAry.mnSrcHeight != rPosAry.mnDestHeight)
{
basegfx::B2DPoint aNull(rPosAry.mnDestX,rPosAry.mnDestY);
basegfx::B2DPoint aX(rPosAry.mnDestX + rPosAry.mnDestWidth, rPosAry.mnDestY);
basegfx::B2DPoint aY(rPosAry.mnDestX, rPosAry.mnDestY + rPosAry.mnDestHeight);
DrawTransformedTexture(rTexture, rAlphaTexture, aNull, aX, aY);
}
else
{
DrawTextureWithMask( rTexture, rAlphaTexture, rPosAry );
}
PostDraw();
return true;
}
......
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