vcl/source/bitmap/BitmapEx.cxx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
New commits: commit 24bf5dd70e721fd68df0e2bd06adb85ebaf4ea24 Author: Patrick Luby <guibmac...@gmail.com> AuthorDate: Sun Apr 28 14:35:42 2024 -0400 Commit: Patrick Luby <guibomac...@gmail.com> CommitDate: Mon Apr 29 14:13:13 2024 +0200 tdf#160831 only set outside color to black for alpha masks The outside color still needs to be white for the content so only apply the fix for tdf#157795 to the alpha mask. Change-Id: I7486b2c9062ca96bf127f2bce6b1bd5e65d00ff6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166806 Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> Reviewed-by: Patrick Luby <guibomac...@gmail.com> Tested-by: Jenkins (cherry picked from commit 5425103fb5a09c7e5e56d077260523438c593e21) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166728 Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> Tested-by: Patrick Luby <guibomac...@gmail.com> diff --git a/vcl/source/bitmap/BitmapEx.cxx b/vcl/source/bitmap/BitmapEx.cxx index 40feacbf66dd..07e25f177180 100644 --- a/vcl/source/bitmap/BitmapEx.cxx +++ b/vcl/source/bitmap/BitmapEx.cxx @@ -657,7 +657,7 @@ namespace const Bitmap& rSource, const Size& rDestinationSize, const basegfx::B2DHomMatrix& rTransform, - bool bSmooth) + bool bSmooth, bool bAlphaMask) { Bitmap aDestination(rDestinationSize, vcl::PixelFormat::N24_BPP); BitmapScopedWriteAccess xWrite(aDestination); @@ -673,7 +673,10 @@ namespace // tdf#157795 set color to black outside of bitmap bounds // Due to commit 81994cb2b8b32453a92bcb011830fcb884f22ff3, // transparent areas are now black instead of white. - const BitmapColor aOutside(0x0, 0x0, 0x0); + // tdf#160831 only set outside color to black for alpha masks + // The outside color still needs to be white for the content + // so only apply the fix for tdf#157795 to the alpha mask. + const BitmapColor aOutside = bAlphaMask ? BitmapColor(0x0, 0x0, 0x0) : BitmapColor(0xff, 0xff, 0xff); for(tools::Long y(0); y < aDestinationSizePixel.getHeight(); y++) { @@ -759,12 +762,12 @@ BitmapEx BitmapEx::TransformBitmapEx( // force destination to 24 bit, we want to smooth output const Size aDestinationSize(basegfx::fround(fWidth), basegfx::fround(fHeight)); bool bSmooth = implTransformNeedsSmooth(rTransformation); - const Bitmap aDestination(impTransformBitmap(GetBitmap(), aDestinationSize, rTransformation, bSmooth)); + const Bitmap aDestination(impTransformBitmap(GetBitmap(), aDestinationSize, rTransformation, bSmooth, false)); // create mask if(IsAlpha()) { - const Bitmap aAlpha(impTransformBitmap(GetAlphaMask().GetBitmap(), aDestinationSize, rTransformation, bSmooth)); + const Bitmap aAlpha(impTransformBitmap(GetAlphaMask().GetBitmap(), aDestinationSize, rTransformation, bSmooth, true)); return BitmapEx(aDestination, AlphaMask(aAlpha)); }