vcl/source/outdev/bitmapex.cxx | 157 ++++++++++++++++++++--------------------- 1 file changed, 80 insertions(+), 77 deletions(-)
New commits: commit 890c03d39059685735f5ada62e706204eab81f0d Author: Christopher Sherlock <chris.sherloc...@gmail.com> AuthorDate: Wed Nov 13 23:40:10 2024 +1100 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Tue Dec 3 10:36:00 2024 +0100 vcl: flatten functions in bitmapex.cxx Change-Id: I82c470705add539fa425b084805a5da12eefa0ef Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176535 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/vcl/source/outdev/bitmapex.cxx b/vcl/source/outdev/bitmapex.cxx index 45408ac5cba6..3024b7ba86ed 100644 --- a/vcl/source/outdev/bitmapex.cxx +++ b/vcl/source/outdev/bitmapex.cxx @@ -40,13 +40,13 @@ void OutputDevice::DrawBitmapEx( const Point& rDestPt, if( !rBitmapEx.IsAlpha() ) { - DrawBitmap( rDestPt, rBitmapEx.GetBitmap() ); - } - else - { - const Size aSizePix( rBitmapEx.GetSizePixel() ); - DrawBitmapEx( rDestPt, PixelToLogic( aSizePix ), Point(), aSizePix, rBitmapEx, MetaActionType::BMPEX ); + DrawBitmap(rDestPt, rBitmapEx.GetBitmap()); + return; } + + const Size& rSizePx = rBitmapEx.GetSizePixel(); + DrawBitmapEx(rDestPt, PixelToLogic(rSizePx), Point(), rSizePx, rBitmapEx, + MetaActionType::BMPEX); } void OutputDevice::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize, @@ -59,12 +59,12 @@ void OutputDevice::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize, if ( !rBitmapEx.IsAlpha() ) { - DrawBitmap( rDestPt, rDestSize, rBitmapEx.GetBitmap() ); - } - else - { - DrawBitmapEx( rDestPt, rDestSize, Point(), rBitmapEx.GetSizePixel(), rBitmapEx, MetaActionType::BMPEXSCALE ); + DrawBitmap(rDestPt, rDestSize, rBitmapEx.GetBitmap()); + return; } + + DrawBitmapEx(rDestPt, rDestSize, Point(), rBitmapEx.GetSizePixel(), + rBitmapEx, MetaActionType::BMPEXSCALE); } void OutputDevice::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize, @@ -78,12 +78,13 @@ void OutputDevice::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize, if ( !rBitmapEx.IsAlpha() ) { - DrawBitmap( rDestPt, rDestSize, rSrcPtPixel, rSrcSizePixel, rBitmapEx.GetBitmap() ); - } - else - { - DrawBitmapEx( rDestPt, rDestSize, rSrcPtPixel, rSrcSizePixel, rBitmapEx, MetaActionType::BMPEXSCALEPART ); + DrawBitmap(rDestPt, rDestSize, rSrcPtPixel, rSrcSizePixel, + rBitmapEx.GetBitmap()); + return; } + + DrawBitmapEx(rDestPt, rDestSize, rSrcPtPixel, rSrcSizePixel, rBitmapEx, + MetaActionType::BMPEXSCALEPART); } void OutputDevice::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize, @@ -97,71 +98,68 @@ void OutputDevice::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize, if( !rBitmapEx.IsAlpha() ) { - DrawBitmap( rDestPt, rDestSize, rSrcPtPixel, rSrcSizePixel, rBitmapEx.GetBitmap() ); + DrawBitmap(rDestPt, rDestSize, rSrcPtPixel, rSrcSizePixel, + rBitmapEx.GetBitmap()); + return; } - else + + if (RasterOp::Invert == meRasterOp) { - if ( RasterOp::Invert == meRasterOp ) - { - DrawRect( tools::Rectangle( rDestPt, rDestSize ) ); - return; - } + DrawRect(tools::Rectangle(rDestPt, rDestSize)); + return; + } - BitmapEx aBmpEx(vcl::drawmode::GetBitmapEx(rBitmapEx, GetDrawMode())); + BitmapEx aBmpEx(vcl::drawmode::GetBitmapEx(rBitmapEx, GetDrawMode())); - if ( mpMetaFile ) + if (mpMetaFile) + { + switch(nAction) { - switch( nAction ) - { - case MetaActionType::BMPEX: - mpMetaFile->AddAction( new MetaBmpExAction( rDestPt, aBmpEx ) ); + case MetaActionType::BMPEX: + mpMetaFile->AddAction(new MetaBmpExAction(rDestPt, aBmpEx)); break; - case MetaActionType::BMPEXSCALE: - mpMetaFile->AddAction( new MetaBmpExScaleAction( rDestPt, rDestSize, aBmpEx ) ); + case MetaActionType::BMPEXSCALE: + mpMetaFile->AddAction(new MetaBmpExScaleAction(rDestPt, rDestSize, aBmpEx)); break; - case MetaActionType::BMPEXSCALEPART: - mpMetaFile->AddAction( new MetaBmpExScalePartAction( rDestPt, rDestSize, - rSrcPtPixel, rSrcSizePixel, aBmpEx ) ); + case MetaActionType::BMPEXSCALEPART: + mpMetaFile->AddAction(new MetaBmpExScalePartAction(rDestPt, rDestSize, + rSrcPtPixel, rSrcSizePixel, aBmpEx)); break; - default: break; - } + default: + break; } + } - if ( !IsDeviceOutputNecessary() ) - return; + if (!IsDeviceOutputNecessary()) + return; - if ( !mpGraphics && !AcquireGraphics() ) - return; + if (!mpGraphics && !AcquireGraphics()) + return; - if ( mbInitClipRegion ) - InitClipRegion(); + if (mbInitClipRegion) + InitClipRegion(); - if ( mbOutputClipped ) - return; + if (mbOutputClipped) + return; - DrawDeviceBitmapEx( rDestPt, rDestSize, rSrcPtPixel, rSrcSizePixel, aBmpEx ); - } + DrawDeviceBitmapEx(rDestPt, rDestSize, rSrcPtPixel, rSrcSizePixel, aBmpEx); } BitmapEx OutputDevice::GetBitmapEx( const Point& rSrcPt, const Size& rSize ) const { + if (!mpAlphaVDev) + return BitmapEx(GetBitmap(rSrcPt, rSize)); // #110958# Extract alpha value from VDev, if any - if( mpAlphaVDev ) - { - Bitmap aAlphaBitmap( mpAlphaVDev->GetBitmap( rSrcPt, rSize ) ); - - // ensure 8 bit alpha - if (aAlphaBitmap.getPixelFormat() > vcl::PixelFormat::N8_BPP) - aAlphaBitmap.Convert( BmpConversion::N8BitNoConversion ); + Bitmap aAlphaBitmap(mpAlphaVDev->GetBitmap(rSrcPt, rSize)); - return BitmapEx(GetBitmap( rSrcPt, rSize ), AlphaMask( aAlphaBitmap ) ); - } + if (aAlphaBitmap.getPixelFormat() > vcl::PixelFormat::N8_BPP) + aAlphaBitmap.Convert(BmpConversion::N8BitNoConversion); - return BitmapEx(GetBitmap( rSrcPt, rSize )); + return BitmapEx(GetBitmap(rSrcPt, rSize), AlphaMask(aAlphaBitmap)); } void OutputDevice::DrawDeviceBitmapEx( const Point& rDestPt, const Size& rDestSize, @@ -172,34 +170,39 @@ void OutputDevice::DrawDeviceBitmapEx( const Point& rDestPt, const Size& rDestSi if (rBitmapEx.IsAlpha()) { - DrawDeviceAlphaBitmap(rBitmapEx.GetBitmap(), rBitmapEx.GetAlphaMask(), rDestPt, rDestSize, rSrcPtPixel, rSrcSizePixel); + DrawDeviceAlphaBitmap(rBitmapEx.GetBitmap(), rBitmapEx.GetAlphaMask(), + rDestPt, rDestSize, rSrcPtPixel, rSrcSizePixel); + return; } - else if (!rBitmapEx.IsEmpty()) - { - SalTwoRect aPosAry(rSrcPtPixel.X(), rSrcPtPixel.Y(), rSrcSizePixel.Width(), rSrcSizePixel.Height(), - ImplLogicXToDevicePixel(rDestPt.X()), ImplLogicYToDevicePixel(rDestPt.Y()), - ImplLogicWidthToDevicePixel(rDestSize.Width()), - ImplLogicHeightToDevicePixel(rDestSize.Height())); - const BmpMirrorFlags nMirrFlags = AdjustTwoRect(aPosAry, rBitmapEx.GetSizePixel()); + if (rBitmapEx.IsEmpty()) + return; - if (aPosAry.mnSrcWidth && aPosAry.mnSrcHeight && aPosAry.mnDestWidth && aPosAry.mnDestHeight) - { + SalTwoRect aPosAry(rSrcPtPixel.X(), rSrcPtPixel.Y(), rSrcSizePixel.Width(), + rSrcSizePixel.Height(), ImplLogicXToDevicePixel(rDestPt.X()), + ImplLogicYToDevicePixel(rDestPt.Y()), + ImplLogicWidthToDevicePixel(rDestSize.Width()), + ImplLogicHeightToDevicePixel(rDestSize.Height())); - if (nMirrFlags != BmpMirrorFlags::NONE) - rBitmapEx.Mirror(nMirrFlags); + const BmpMirrorFlags nMirrFlags = AdjustTwoRect(aPosAry, rBitmapEx.GetSizePixel()); - const SalBitmap* pSalSrcBmp = rBitmapEx.ImplGetBitmapSalBitmap().get(); - assert(!rBitmapEx.maAlphaMask.GetBitmap().ImplGetSalBitmap() && "I removed some code here that will need to be restored"); + if (!(aPosAry.mnSrcWidth && aPosAry.mnSrcHeight && aPosAry.mnDestWidth && aPosAry.mnDestHeight)) + return; - mpGraphics->DrawBitmap(aPosAry, *pSalSrcBmp, *this); + if (nMirrFlags != BmpMirrorFlags::NONE) + rBitmapEx.Mirror(nMirrFlags); - if (mpAlphaVDev) - { - // #i32109#: Make bitmap area opaque - mpAlphaVDev->ImplFillOpaqueRectangle( tools::Rectangle(rDestPt, rDestSize) ); - } - } + const SalBitmap* pSalSrcBmp = rBitmapEx.ImplGetBitmapSalBitmap().get(); + + assert(!rBitmapEx.maAlphaMask.GetBitmap().ImplGetSalBitmap() + && "I removed some code here that will need to be restored"); + + mpGraphics->DrawBitmap(aPosAry, *pSalSrcBmp, *this); + + if (mpAlphaVDev) + { + // #i32109#: Make bitmap area opaque + mpAlphaVDev->ImplFillOpaqueRectangle(tools::Rectangle(rDestPt, rDestSize)); } }