summaryrefslogtreecommitdiff
path: root/vcl/source/outdev
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/source/outdev')
-rw-r--r--vcl/source/outdev/bitmap.cxx12
1 files changed, 8 insertions, 4 deletions
diff --git a/vcl/source/outdev/bitmap.cxx b/vcl/source/outdev/bitmap.cxx
index 58a096a79045..88898d93179d 100644
--- a/vcl/source/outdev/bitmap.cxx
+++ b/vcl/source/outdev/bitmap.cxx
@@ -1050,7 +1050,6 @@ bool OutputDevice::DrawTransformBitmapExDirect(
const basegfx::B2DPoint aTopX(aFullTransform * basegfx::B2DPoint(1.0, 0.0));
const basegfx::B2DPoint aTopY(aFullTransform * basegfx::B2DPoint(0.0, 1.0));
SalBitmap* pSalSrcBmp = rBitmapEx.GetBitmap().ImplGetSalBitmap().get();
- SalBitmap* pSalAlphaBmp = nullptr;
Bitmap aAlphaBitmap;
if(rBitmapEx.IsTransparent())
@@ -1063,8 +1062,6 @@ bool OutputDevice::DrawTransformBitmapExDirect(
{
aAlphaBitmap = rBitmapEx.GetMask();
}
- if (!mpAlphaVDev)
- pSalAlphaBmp = aAlphaBitmap.ImplGetSalBitmap().get();
}
else if (mpAlphaVDev)
{
@@ -1072,6 +1069,8 @@ bool OutputDevice::DrawTransformBitmapExDirect(
aAlphaBitmap.Erase(COL_BLACK);
}
+ SalBitmap* pSalAlphaBmp = aAlphaBitmap.ImplGetSalBitmap().get();
+
bDone = mpGraphics->DrawTransformedBitmap(
aNull,
aTopX,
@@ -1081,7 +1080,12 @@ bool OutputDevice::DrawTransformBitmapExDirect(
this);
if (mpAlphaVDev)
- mpAlphaVDev->DrawTransformBitmapExDirect(aFullTransform, BitmapEx(aAlphaBitmap));
+ {
+ // Merge bitmap alpha to alpha device
+ Bitmap aBlack(rBitmapEx.GetSizePixel(), 1);
+ aBlack.Erase(COL_BLACK);
+ mpAlphaVDev->DrawTransformBitmapExDirect(aFullTransform, BitmapEx(aBlack, aAlphaBitmap));
+ }
return bDone;
};