diff options
Diffstat (limited to 'vcl/source/outdev')
-rw-r--r-- | vcl/source/outdev/bitmap.cxx | 12 |
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; }; |