summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2021-02-27 15:50:37 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2021-04-26 12:51:58 +0200
commitddd2639a482befb4a3bf1f75a88e66c21a691b67 (patch)
tree2d2a2a0695dce2b8b065f107368ef0412807fa73
parent9c4e0c35d70659097b235028047efcb80dcfb10d (diff)
drop mask from BitmapEx
So that we have fewer cases to deal with when we transition to 32-bit bitmaps. (*) rename maMask to maAlphaMask, since now it is only being used for alpha duties. (*) drop mbAlpha and mbTransparent to simplify state management, the only thing we need to check for alpha is if maAlphaMask is non-empty. Change-Id: I06252e38e950e846a94b4c2ba8ea763be17801fe Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111679 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--canvas/source/cairo/cairo_canvashelper.cxx2
-rw-r--r--canvas/source/directx/dx_vcltools.cxx220
-rw-r--r--canvas/source/vcl/bitmapbackbuffer.cxx2
-rw-r--r--canvas/source/vcl/canvasbitmaphelper.cxx2
-rw-r--r--canvas/source/vcl/spritehelper.cxx27
-rw-r--r--drawinglayer/inc/texture/texture3d.hxx1
-rw-r--r--drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx10
-rw-r--r--drawinglayer/source/texture/texture3d.cxx50
-rw-r--r--drawinglayer/source/tools/wmfemfhelper.cxx2
-rw-r--r--emfio/source/reader/mtftools.cxx2
-rw-r--r--forms/source/component/imgprod.cxx2
-rw-r--r--framework/source/fwe/classes/addonsoptions.cxx4
-rw-r--r--include/vcl/bitmapex.hxx17
-rw-r--r--include/vcl/metaact.hxx6
-rw-r--r--include/vcl/pdfwriter.hxx2
-rw-r--r--slideshow/source/engine/shapes/gdimtftools.cxx6
-rw-r--r--svx/source/dialog/_bmpmask.cxx6
-rw-r--r--svx/source/dialog/_contdlg.cxx4
-rw-r--r--svx/source/gallery2/galbrws2.cxx2
-rw-r--r--svx/source/gallery2/galctrl.cxx2
-rw-r--r--svx/source/svdraw/svdfmtf.cxx2
-rw-r--r--svx/source/tbxctrls/itemwin.cxx2
-rw-r--r--svx/source/xoutdev/xtabbtmp.cxx2
-rw-r--r--svx/source/xoutdev/xtabptrn.cxx2
-rw-r--r--vcl/osx/salinst.cxx13
-rw-r--r--vcl/qa/cppunit/canvasbitmaptest.cxx20
-rw-r--r--vcl/source/animate/Animation.cxx2
-rw-r--r--vcl/source/bitmap/BitmapAlphaClampFilter.cxx2
-rw-r--r--vcl/source/bitmap/BitmapBasicMorphologyFilter.cxx2
-rw-r--r--vcl/source/bitmap/BitmapDisabledImageFilter.cxx2
-rw-r--r--vcl/source/bitmap/BitmapEx.cxx314
-rw-r--r--vcl/source/bitmap/BitmapFastScaleFilter.cxx4
-rw-r--r--vcl/source/bitmap/BitmapFilterStackBlur.cxx2
-rw-r--r--vcl/source/bitmap/BitmapTools.cxx121
-rw-r--r--vcl/source/bitmap/bitmapfilter.cxx2
-rw-r--r--vcl/source/bitmap/dibtools.cxx8
-rw-r--r--vcl/source/control/ivctrl.cxx2
-rw-r--r--vcl/source/filter/egif/egif.cxx2
-rw-r--r--vcl/source/filter/eps/eps.cxx10
-rw-r--r--vcl/source/filter/graphicfilter.cxx2
-rw-r--r--vcl/source/filter/png/pngwrite.cxx86
-rw-r--r--vcl/source/filter/wmf/emfwr.cxx6
-rw-r--r--vcl/source/filter/wmf/wmfwr.cxx6
-rw-r--r--vcl/source/gdi/gdimetafiletools.cxx2
-rw-r--r--vcl/source/gdi/gdimtf.cxx2
-rw-r--r--vcl/source/gdi/impgraph.cxx4
-rw-r--r--vcl/source/gdi/mtfxmldump.cxx20
-rw-r--r--vcl/source/gdi/pdfextoutdevdata.cxx7
-rw-r--r--vcl/source/gdi/pdfwriter.cxx4
-rw-r--r--vcl/source/gdi/pdfwriter_impl.cxx52
-rw-r--r--vcl/source/gdi/pdfwriter_impl.hxx4
-rw-r--r--vcl/source/gdi/pdfwriter_impl2.cxx21
-rw-r--r--vcl/source/gdi/print.cxx5
-rw-r--r--vcl/source/gdi/print2.cxx32
-rw-r--r--vcl/source/graphic/GraphicID.cxx4
-rw-r--r--vcl/source/graphic/GraphicObject2.cxx11
-rw-r--r--vcl/source/graphic/UnoGraphic.cxx2
-rw-r--r--vcl/source/graphic/UnoGraphicTransformer.cxx19
-rw-r--r--vcl/source/helper/canvasbitmap.cxx28
-rw-r--r--vcl/source/image/Image.cxx2
-rw-r--r--vcl/source/outdev/bitmap.cxx29
-rw-r--r--vcl/source/outdev/outdevstate.cxx12
-rw-r--r--vcl/source/outdev/wallpaper.cxx4
-rw-r--r--vcl/unx/generic/window/salframe.cxx18
-rw-r--r--vcl/workben/vcldemo.cxx4
65 files changed, 344 insertions, 925 deletions
diff --git a/canvas/source/cairo/cairo_canvashelper.cxx b/canvas/source/cairo/cairo_canvashelper.cxx
index 9d9a8bdf9bb8..8e96fe5f9994 100644
--- a/canvas/source/cairo/cairo_canvashelper.cxx
+++ b/canvas/source/cairo/cairo_canvashelper.cxx
@@ -351,7 +351,7 @@ namespace cairocanvas
// there's no pixmap for alpha bitmap. we might still
// use rgb pixmap and only access alpha pixels the
// slow way. now we just speedup rgb bitmaps
- if( !aBmpEx.IsTransparent() && !aBmpEx.IsAlpha() )
+ if( !aBmpEx.IsAlpha() )
{
pSurface = rSurfaceProvider->createSurface( aBitmap );
data = nullptr;
diff --git a/canvas/source/directx/dx_vcltools.cxx b/canvas/source/directx/dx_vcltools.cxx
index 5ed07159aba8..912adf8b0af2 100644
--- a/canvas/source/directx/dx_vcltools.cxx
+++ b/canvas/source/directx/dx_vcltools.cxx
@@ -131,7 +131,7 @@ namespace dxcanvas::tools
return false;
}
- /** Create a chunk of raw RGBA data GDI+ Bitmap from VCL BbitmapEX
+ /** Create a chunk of raw RGBA data GDI+ Bitmap from VCL BitmapEx
*/
RawRGBABitmap bitmapFromVCLBitmapEx( const ::BitmapEx& rBmpEx )
{
@@ -141,9 +141,9 @@ namespace dxcanvas::tools
// make the local bitmap copy unique, effectively
// duplicating the memory used)
- ENSURE_OR_THROW( rBmpEx.IsTransparent(),
+ ENSURE_OR_THROW( rBmpEx.IsAlpha(),
"::dxcanvas::tools::bitmapFromVCLBitmapEx(): "
- "BmpEx not transparent" );
+ "BmpEx has no alpha" );
// convert transparent bitmap to 32bit RGBA
// ========================================
@@ -166,43 +166,41 @@ namespace dxcanvas::tools
"::dxcanvas::tools::bitmapFromVCLBitmapEx(): "
"Unable to acquire read access to bitmap" );
- if (rBmpEx.IsAlpha() || rBmpEx.GetMask().getPixelFormat() == vcl::PixelFormat::N8_BPP)
- {
- Bitmap aAlpha( rBmpEx.IsAlpha() ? rBmpEx.GetAlpha().GetBitmap() : rBmpEx.GetMask());
+ Bitmap aAlpha( rBmpEx.GetAlpha().GetBitmap() );
- Bitmap::ScopedReadAccess pAlphaReadAccess( aAlpha );
+ Bitmap::ScopedReadAccess pAlphaReadAccess( aAlpha );
- // By convention, the access buffer always has
- // one of the following formats:
+ // By convention, the access buffer always has
+ // one of the following formats:
- // ScanlineFormat::N1BitMsbPal
- // ScanlineFormat::N8BitPal
- // ScanlineFormat::N24BitTcBgr
- // ScanlineFormat::N32BitTcMask
+ // ScanlineFormat::N1BitMsbPal
+ // ScanlineFormat::N8BitPal
+ // ScanlineFormat::N24BitTcBgr
+ // ScanlineFormat::N32BitTcMask
- // and is always ScanlineFormat::BottomUp
+ // and is always ScanlineFormat::BottomUp
- // This is the way
- // WinSalBitmap::AcquireBuffer() sets up the
- // buffer
+ // This is the way
+ // WinSalBitmap::AcquireBuffer() sets up the
+ // buffer
- ENSURE_OR_THROW( pAlphaReadAccess.get() != nullptr,
- "::dxcanvas::tools::bitmapFromVCLBitmapEx(): "
- "Unable to acquire read access to alpha" );
+ ENSURE_OR_THROW( pAlphaReadAccess.get() != nullptr,
+ "::dxcanvas::tools::bitmapFromVCLBitmapEx(): "
+ "Unable to acquire read access to alpha" );
- ENSURE_OR_THROW( pAlphaReadAccess->GetScanlineFormat() == ScanlineFormat::N8BitPal,
- "::dxcanvas::tools::bitmapFromVCLBitmapEx(): "
- "Unsupported alpha scanline format" );
+ ENSURE_OR_THROW( pAlphaReadAccess->GetScanlineFormat() == ScanlineFormat::N8BitPal,
+ "::dxcanvas::tools::bitmapFromVCLBitmapEx(): "
+ "Unsupported alpha scanline format" );
- BitmapColor aCol;
- sal_uInt8* pCurrOutput(aBmpData.maBitmapData.data());
- int x, y;
+ BitmapColor aCol;
+ sal_uInt8* pCurrOutput(aBmpData.maBitmapData.data());
+ int x, y;
- for( y=0; y<nHeight; ++y )
+ for( y=0; y<nHeight; ++y )
+ {
+ switch( pReadAccess->GetScanlineFormat() )
{
- switch( pReadAccess->GetScanlineFormat() )
- {
- case ScanlineFormat::N8BitPal:
+ case ScanlineFormat::N8BitPal:
{
Scanline pScan = pReadAccess->GetScanline( y );
Scanline pAScan = pAlphaReadAccess->GetScanline( y );
@@ -223,7 +221,7 @@ namespace dxcanvas::tools
}
break;
- case ScanlineFormat::N24BitTcBgr:
+ case ScanlineFormat::N24BitTcBgr:
{
Scanline pScan = pReadAccess->GetScanline( y );
Scanline pAScan = pAlphaReadAccess->GetScanline( y );
@@ -246,8 +244,8 @@ namespace dxcanvas::tools
// TODO(P2): Might be advantageous
// to hand-formulate the following
// formats, too.
- case ScanlineFormat::N1BitMsbPal:
- case ScanlineFormat::N32BitTcMask:
+ case ScanlineFormat::N1BitMsbPal:
+ case ScanlineFormat::N32BitTcMask:
{
Scanline pAScan = pAlphaReadAccess->GetScanline( y );
@@ -270,149 +268,17 @@ namespace dxcanvas::tools
}
break;
- case ScanlineFormat::N1BitLsbPal:
- case ScanlineFormat::N24BitTcRgb:
- case ScanlineFormat::N32BitTcAbgr:
- case ScanlineFormat::N32BitTcArgb:
- case ScanlineFormat::N32BitTcBgra:
- case ScanlineFormat::N32BitTcRgba:
- default:
- ENSURE_OR_THROW( false,
- "::dxcanvas::tools::bitmapFromVCLBitmapEx(): "
- "Unexpected scanline format - has "
- "WinSalBitmap::AcquireBuffer() changed?" );
- }
- }
- }
- else
- {
- Bitmap aMask( rBmpEx.GetMask() );
-
- Bitmap::ScopedReadAccess pMaskReadAccess( aMask );
-
- // By convention, the access buffer always has
- // one of the following formats:
-
- // ScanlineFormat::N1BitMsbPal
- // ScanlineFormat::N8BitPal
- // ScanlineFormat::N24BitTcBgr
- // ScanlineFormat::N32BitTcMask
-
- // and is always ScanlineFormat::BottomUp
-
- // This is the way
- // WinSalBitmap::AcquireBuffer() sets up the
- // buffer
-
- ENSURE_OR_THROW( pMaskReadAccess.get() != nullptr,
- "::dxcanvas::tools::bitmapFromVCLBitmapEx(): "
- "Unable to acquire read access to mask" );
-
- ENSURE_OR_THROW( pMaskReadAccess->GetScanlineFormat() == ScanlineFormat::N1BitMsbPal,
- "::dxcanvas::tools::bitmapFromVCLBitmapEx(): "
- "Unsupported mask scanline format" );
-
- BitmapColor aCol;
- int nCurrBit;
- const int nMask( 1 );
- const int nInitialBit(7);
- sal_uInt8* pCurrOutput(aBmpData.maBitmapData.data());
- int x, y;
-
- // mapping table, to get from mask index color to
- // alpha value (which depends on the mask's palette)
- sal_uInt8 aColorMap[2];
-
- const BitmapColor& rCol0( pMaskReadAccess->GetPaletteColor( 0 ) );
- const BitmapColor& rCol1( pMaskReadAccess->GetPaletteColor( 1 ) );
-
- // shortcut for true luminance calculation
- // (assumes that palette is grey-level). Note the
- // swapped the indices here, to account for the
- // fact that VCL's notion of alpha is inverted to
- // the rest of the world's.
- aColorMap[0] = rCol1.GetRed();
- aColorMap[1] = rCol0.GetRed();
-
- for( y=0; y<nHeight; ++y )
- {
- switch( pReadAccess->GetScanlineFormat() )
- {
- case ScanlineFormat::N8BitPal:
- {
- Scanline pScan = pReadAccess->GetScanline( y );
- Scanline pMScan = pMaskReadAccess->GetScanline( y );
-
- for( x=0, nCurrBit=nInitialBit; x<nWidth; ++x )
- {
- aCol = pReadAccess->GetPaletteColor( *pScan++ );
-
- *pCurrOutput++ = aCol.GetBlue();
- *pCurrOutput++ = aCol.GetGreen();
- *pCurrOutput++ = aCol.GetRed();
-
- *pCurrOutput++ = aColorMap[ (pMScan[ (x & ~7) >> 3 ] >> nCurrBit ) & nMask ];
- nCurrBit = ((nCurrBit - 1) % 8) & 7;
- }
- }
- break;
-
- case ScanlineFormat::N24BitTcBgr:
- {
- Scanline pScan = pReadAccess->GetScanline( y );
- Scanline pMScan = pMaskReadAccess->GetScanline( y );
-
- for( x=0, nCurrBit=nInitialBit; x<nWidth; ++x )
- {
- // store as RGBA
- *pCurrOutput++ = *pScan++;
- *pCurrOutput++ = *pScan++;
- *pCurrOutput++ = *pScan++;
-
- *pCurrOutput++ = aColorMap[ (pMScan[ (x & ~7) >> 3 ] >> nCurrBit ) & nMask ];
- nCurrBit = ((nCurrBit - 1) % 8) & 7;
- }
- }
- break;
-
- // TODO(P2): Might be advantageous
- // to hand-formulate the following
- // formats, too.
- case ScanlineFormat::N1BitMsbPal:
- case ScanlineFormat::N32BitTcMask:
- {
- Scanline pMScan = pMaskReadAccess->GetScanline( y );
-
- // using fallback for those
- // seldom formats
- for( x=0, nCurrBit=nInitialBit; x<nWidth; ++x )
- {
- // yes. x and y are swapped on Get/SetPixel
- aCol = pReadAccess->GetColor(y,x);
-
- // store as RGBA
- *pCurrOutput++ = aCol.GetBlue();
- *pCurrOutput++ = aCol.GetGreen();
- *pCurrOutput++ = aCol.GetRed();
-
- *pCurrOutput++ = aColorMap[ (pMScan[ (x & ~7) >> 3 ] >> nCurrBit ) & nMask ];
- nCurrBit = ((nCurrBit - 1) % 8) & 7;
- }
- }
- break;
-
- case ScanlineFormat::N1BitLsbPal:
- case ScanlineFormat::N24BitTcRgb:
- case ScanlineFormat::N32BitTcAbgr:
- case ScanlineFormat::N32BitTcArgb:
- case ScanlineFormat::N32BitTcBgra:
- case ScanlineFormat::N32BitTcRgba:
- default:
- ENSURE_OR_THROW( false,
- "::dxcanvas::tools::bitmapFromVCLBitmapEx(): "
- "Unexpected scanline format - has "
- "WinSalBitmap::AcquireBuffer() changed?" );
- }
+ case ScanlineFormat::N1BitLsbPal:
+ case ScanlineFormat::N24BitTcRgb:
+ case ScanlineFormat::N32BitTcAbgr:
+ case ScanlineFormat::N32BitTcArgb:
+ case ScanlineFormat::N32BitTcBgra:
+ case ScanlineFormat::N32BitTcRgba:
+ default:
+ ENSURE_OR_THROW( false,
+ "::dxcanvas::tools::bitmapFromVCLBitmapEx(): "
+ "Unexpected scanline format - has "
+ "WinSalBitmap::AcquireBuffer() changed?" );
}
}
@@ -422,7 +288,7 @@ namespace dxcanvas::tools
bool drawVCLBitmapEx( const std::shared_ptr< Gdiplus::Graphics >& rGraphics,
const ::BitmapEx& rBmpEx )
{
- if( !rBmpEx.IsTransparent() )
+ if( !rBmpEx.IsAlpha() )
{
Bitmap aBmp( rBmpEx.GetBitmap() );
return drawVCLBitmap( rGraphics, aBmp );
diff --git a/canvas/source/vcl/bitmapbackbuffer.cxx b/canvas/source/vcl/bitmapbackbuffer.cxx
index 337e0bae7c2e..d6f87e3c0e00 100644
--- a/canvas/source/vcl/bitmapbackbuffer.cxx
+++ b/canvas/source/vcl/bitmapbackbuffer.cxx
@@ -111,7 +111,7 @@ namespace vclcanvas
// VDev not yet created, do it now. Create an alpha-VDev,
// if bitmap has transparency.
- mpVDev = maBitmap->IsTransparent() ?
+ mpVDev = maBitmap->IsAlpha() ?
VclPtr<VirtualDevice>::Create( mrRefDevice, DeviceFormat::DEFAULT, DeviceFormat::DEFAULT ) :
VclPtr<VirtualDevice>::Create( mrRefDevice );
diff --git a/canvas/source/vcl/canvasbitmaphelper.cxx b/canvas/source/vcl/canvasbitmaphelper.cxx
index dd1898486e8a..00dc8bf03734 100644
--- a/canvas/source/vcl/canvasbitmaphelper.cxx
+++ b/canvas/source/vcl/canvasbitmaphelper.cxx
@@ -53,7 +53,7 @@ namespace vclcanvas
CanvasHelper::init( rDevice,
mpBackBuffer,
false,
- rBitmap.IsTransparent() );
+ rBitmap.IsAlpha() );
}
void CanvasBitmapHelper::disposing()
diff --git a/canvas/source/vcl/spritehelper.cxx b/canvas/source/vcl/spritehelper.cxx
index 7f7035769db2..57b38a9a2815 100644
--- a/canvas/source/vcl/spritehelper.cxx
+++ b/canvas/source/vcl/spritehelper.cxx
@@ -81,10 +81,8 @@ namespace vclcanvas
void SpriteHelper::redraw( OutputDevice& rTargetSurface,
const ::basegfx::B2DPoint& rPos,
bool& io_bSurfacesDirty,
- bool bBufferedUpdate ) const
+ bool /*bBufferedUpdate*/ ) const
{
- (void)bBufferedUpdate; // not used on every platform
-
if( !mpBackBuffer ||
!mpBackBufferMask )
{
@@ -145,31 +143,10 @@ namespace vclcanvas
BitmapEx aMask( mpBackBufferMask->getOutDev().GetBitmapEx( aEmptyPoint,
aOutputSize ) );
- // bitmasks are much faster than alphamasks on some platforms
- // so convert to bitmask if useful
- bool convertTo1Bpp = aMask.getPixelFormat() != vcl::PixelFormat::N1_BPP;
-#ifdef MACOSX
- convertTo1Bpp = false;
-#endif
- if( SkiaHelper::isVCLSkiaEnabled())
- convertTo1Bpp = false;
-
- if( convertTo1Bpp )
- {
- OSL_FAIL("CanvasCustomSprite::redraw(): Mask bitmap is not "
- "monochrome (performance!)");
- BitmapEx aMaskEx(aMask);
- BitmapFilter::Filter(aMaskEx, BitmapMonochromeFilter(255));
- aMask = aMaskEx.GetBitmap();
- }
-
// Note: since we retrieved aBmp and aMask
// directly from an OutDev, it's already a
// 'display bitmap' on windows.
- if (aMask.getPixelFormat() == vcl::PixelFormat::N1_BPP)
- maContent = BitmapEx( aBmp.GetBitmap(), aMask.GetBitmap() );
- else
- maContent = BitmapEx( aBmp.GetBitmap(), AlphaMask( aMask.GetBitmap()) );
+ maContent = BitmapEx( aBmp.GetBitmap(), AlphaMask( aMask.GetBitmap()) );
}
}
diff --git a/drawinglayer/inc/texture/texture3d.hxx b/drawinglayer/inc/texture/texture3d.hxx
index 935fa09883f2..88d13ed03b7c 100644
--- a/drawinglayer/inc/texture/texture3d.hxx
+++ b/drawinglayer/inc/texture/texture3d.hxx
@@ -62,7 +62,6 @@ namespace drawinglayer::texture
double mfMulY;
bool mbIsAlpha : 1;
- bool mbIsTransparent : 1;
// helpers
bool impIsValid(const basegfx::B2DPoint& rUV, sal_Int32& rX, sal_Int32& rY) const;
diff --git a/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx b/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx
index 9c441dc0d876..ff0b830677a5 100644
--- a/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx
+++ b/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx
@@ -256,9 +256,9 @@ namespace drawinglayer::primitive2d
case Disposal::Not:
{
maVirtualDevice->DrawBitmapEx(rAnimationBitmap.maPositionPixel, rAnimationBitmap.maBitmapEx);
- Bitmap aMask = rAnimationBitmap.maBitmapEx.GetMask();
+ Bitmap aAlphaMask = rAnimationBitmap.maBitmapEx.GetAlpha();
- if (aMask.IsEmpty())
+ if (aAlphaMask.IsEmpty())
{
const Point aEmpty;
const ::tools::Rectangle aRect(aEmpty, maVirtualDeviceMask->GetOutputSizePixel());
@@ -267,7 +267,7 @@ namespace drawinglayer::primitive2d
}
else
{
- BitmapEx aExpandVisibilityMask(aMask, aMask);
+ BitmapEx aExpandVisibilityMask(aAlphaMask, aAlphaMask);
maVirtualDeviceMask->DrawBitmapEx(rAnimationBitmap.maPositionPixel, aExpandVisibilityMask);
}
@@ -276,7 +276,7 @@ namespace drawinglayer::primitive2d
case Disposal::Back:
{
// #i70772# react on no mask, for primitives, too.
- const Bitmap & rMask(rAnimationBitmap.maBitmapEx.GetMask());
+ const Bitmap & rMask(rAnimationBitmap.maBitmapEx.GetAlpha());
const Bitmap & rContent(rAnimationBitmap.maBitmapEx.GetBitmap());
maVirtualDeviceMask->Erase();
@@ -300,7 +300,7 @@ namespace drawinglayer::primitive2d
case Disposal::Previous:
{
maVirtualDevice->DrawBitmapEx(rAnimationBitmap.maPositionPixel, rAnimationBitmap.maBitmapEx);
- BitmapEx aExpandVisibilityMask(rAnimationBitmap.maBitmapEx.GetMask(), rAnimationBitmap.maBitmapEx.GetMask());
+ BitmapEx aExpandVisibilityMask(rAnimationBitmap.maBitmapEx.GetAlpha(), rAnimationBitmap.maBitmapEx.GetAlpha());
maVirtualDeviceMask->DrawBitmapEx(rAnimationBitmap.maPositionPixel, aExpandVisibilityMask);
break;
}
diff --git a/drawinglayer/source/texture/texture3d.cxx b/drawinglayer/source/texture/texture3d.cxx
index 99aa597589f7..589c23f5df16 100644
--- a/drawinglayer/source/texture/texture3d.cxx
+++ b/drawinglayer/source/texture/texture3d.cxx
@@ -66,26 +66,16 @@ namespace drawinglayer::texture
maSize(rRange.getRange()),
mfMulX(0.0),
mfMulY(0.0),
- mbIsAlpha(false),
- mbIsTransparent(maBitmapEx.IsTransparent())
+ mbIsAlpha(maBitmapEx.IsAlpha())
{
if(vcl::bitmap::convertBitmap32To24Plus8(maBitmapEx,maBitmapEx))
- mbIsTransparent = maBitmapEx.IsTransparent();
+ mbIsAlpha = maBitmapEx.IsAlpha();
// #121194# Todo: use alpha channel, too (for 3d)
maBitmap = maBitmapEx.GetBitmap();
- if(mbIsTransparent)
+ if(mbIsAlpha)
{
- if(maBitmapEx.IsAlpha())
- {
- mbIsAlpha = true;
- maTransparence = rBitmapEx.GetAlpha().GetBitmap();
- }
- else
- {
- maTransparence = rBitmapEx.GetMask();
- }
-
+ maTransparence = rBitmapEx.GetAlpha().GetBitmap();
mpReadTransparence = Bitmap::ScopedReadAccess(maTransparence);
}
@@ -115,32 +105,12 @@ namespace drawinglayer::texture
sal_uInt8 GeoTexSvxBitmapEx::impGetTransparence(sal_Int32 rX, sal_Int32 rY) const
{
- switch(maBitmapEx.GetTransparentType())
+ if(mbIsAlpha)
{
- case TransparentType::NONE:
- {
- break;
- }
- case TransparentType::Bitmap:
- {
- OSL_ENSURE(mpReadTransparence, "OOps, transparence type Bitmap, but no read access created in the constructor (?)");
- const BitmapColor aBitmapColor(mpReadTransparence->GetPixel(rY, rX));
-
- if(mbIsAlpha)
- {
- return aBitmapColor.GetIndex();
- }
- else
- {
- if(0x00 != aBitmapColor.GetIndex())
- {
- return 255;
- }
- }
- break;
- }
+ OSL_ENSURE(mpReadTransparence, "OOps, transparence type Bitmap, but no read access created in the constructor (?)");
+ const BitmapColor aBitmapColor(mpReadTransparence->GetPixel(rY, rX));
+ return aBitmapColor.GetIndex();
}
-
return 0;
}
@@ -176,7 +146,7 @@ namespace drawinglayer::texture
rBColor = aBSource;
- if(mbIsTransparent)
+ if(mbIsAlpha)
{
// when we have a transparence, make use of it
const sal_uInt8 aLuminance(impGetTransparence(nX, nY));
@@ -200,7 +170,7 @@ namespace drawinglayer::texture
if(impIsValid(rUV, nX, nY))
{
- if(mbIsTransparent)
+ if(mbIsAlpha)
{
// this texture has an alpha part, use it
const sal_uInt8 aLuminance(impGetTransparence(nX, nY));
diff --git a/drawinglayer/source/tools/wmfemfhelper.cxx b/drawinglayer/source/tools/wmfemfhelper.cxx
index 588dd9ea1cc5..8b3f3562e35b 100644
--- a/drawinglayer/source/tools/wmfemfhelper.cxx
+++ b/drawinglayer/source/tools/wmfemfhelper.cxx
@@ -996,7 +996,7 @@ namespace wmfemfhelper
// if bitmap visualisation is transparent, maybe background
// needs to be filled. Create background
- if(aBitmapEx.IsTransparent()
+ if(aBitmapEx.IsAlpha()
|| (WallpaperStyle::Tile != eWallpaperStyle && WallpaperStyle::Scale != eWallpaperStyle))
{
if(rWallpaper.IsGradient())
diff --git a/emfio/source/reader/mtftools.cxx b/emfio/source/reader/mtftools.cxx
index dfb87611712b..4e325c10622e 100644
--- a/emfio/source/reader/mtftools.cxx
+++ b/emfio/source/reader/mtftools.cxx
@@ -1879,7 +1879,7 @@ namespace emfio
vcl::bitmap::DrawAndClipBitmap(rPos, rSize, rBitmap, aBmpEx, maClipPath.getClipPath());
}
- if ( aBmpEx.IsTransparent() )
+ if ( aBmpEx.IsAlpha() )
mpGDIMetaFile->AddAction( new MetaBmpExScaleAction( rPos, rSize, aBmpEx ) );
else
mpGDIMetaFile->AddAction( new MetaBmpScaleAction( rPos, rSize, aBmpEx.GetBitmap() ) );
diff --git a/forms/source/component/imgprod.cxx b/forms/source/component/imgprod.cxx
index 9bbf54b388ae..5446b2082af7 100644
--- a/forms/source/component/imgprod.cxx
+++ b/forms/source/component/imgprod.cxx
@@ -363,7 +363,7 @@ void ImageProducer::ImplUpdateConsumer( const Graphic& rGraphic )
if( !pBmpAcc )
return;
- Bitmap aMask( aBmpEx.GetMask() );
+ Bitmap aMask( aBmpEx.GetAlpha() );
BitmapReadAccess* pMskAcc = !aMask.IsEmpty() ? aMask.AcquireReadAccess() : nullptr;
const tools::Long nWidth = pBmpAcc->Width();
const tools::Long nHeight = pBmpAcc->Height();
diff --git a/framework/source/fwe/classes/addonsoptions.cxx b/framework/source/fwe/classes/addonsoptions.cxx
index 93076e20d707..fad4fc858fdd 100644
--- a/framework/source/fwe/classes/addonsoptions.cxx
+++ b/framework/source/fwe/classes/addonsoptions.cxx
@@ -1586,7 +1586,7 @@ BitmapEx AddonsOptions_Impl::ReadImageFromURL(const OUString& aImageURL)
if ( !aBmpSize.IsEmpty() )
{
// Support non-transparent bitmaps to be downward compatible with OOo 1.1.x addons
- if( !aBitmapEx.IsTransparent() )
+ if( !aBitmapEx.IsAlpha() )
aBitmapEx = BitmapEx( aBitmapEx.GetBitmap(), COL_LIGHTMAGENTA );
aImage = aBitmapEx;
@@ -1675,7 +1675,7 @@ bool AddonsOptions_Impl::CreateImageFromSequence( BitmapEx& rImage, Sequence< sa
ReadDIBBitmapEx(rImage, aMemStream);
- if( !rImage.IsTransparent() )
+ if( !rImage.IsAlpha() )
{
// Support non-transparent bitmaps to be downward compatible with OOo 1.1.x addons
rImage = BitmapEx( rImage.GetBitmap(), COL_LIGHTMAGENTA );
diff --git a/include/vcl/bitmapex.hxx b/include/vcl/bitmapex.hxx
index 707b9ade9ec2..7225a5fe7385 100644
--- a/include/vcl/bitmapex.hxx
+++ b/include/vcl/bitmapex.hxx
@@ -34,13 +34,6 @@ namespace com::sun::star::rendering {
namespace com::sun::star::uno { template <class interface_type> class Reference; }
namespace basegfx { class BColorModifierStack; }
-enum class TransparentType
-{
- NONE = 0,
- // Color = 1, Never actually used in BitmapEx, only present for backwards compat with existing SVM files
- Bitmap = 2
-};
-
class SAL_WARN_UNUSED VCL_DLLPUBLIC BitmapEx
{
public:
@@ -69,13 +62,9 @@ public:
void Draw( OutputDevice* pOutDev,
const Point& rDestPt, const Size& rDestSize ) const;
- bool IsTransparent() const;
- TransparentType GetTransparentType() const { return meTransparent; }
-
Bitmap GetBitmap( Color aTransparentReplaceColor ) const;
/// Gives direct access to the contained bitmap.
const Bitmap& GetBitmap() const;
- Bitmap GetMask() const;
bool IsAlpha() const;
AlphaMask GetAlpha() const;
@@ -459,7 +448,6 @@ public:
sal_uInt32& rnWidth, sal_uInt32& rnHeight, sal_uInt8& rnBitCount);
SAL_DLLPRIVATE std::shared_ptr<SalBitmap> const & ImplGetBitmapSalBitmap() const { return maBitmap.ImplGetSalBitmap(); }
- SAL_DLLPRIVATE std::shared_ptr<SalBitmap> const & ImplGetMaskSalBitmap() const { return maMask.ImplGetSalBitmap(); }
private:
@@ -474,11 +462,8 @@ private:
void loadFromIconTheme( const OUString& rIconName );
Bitmap maBitmap;
- Bitmap maMask;
+ Bitmap maAlphaMask;
Size maBitmapSize;
- TransparentType meTransparent;
- bool mbAlpha;
-
};
diff --git a/include/vcl/metaact.hxx b/include/vcl/metaact.hxx
index 69552a2bbf95..ef99f7f82ae1 100644
--- a/include/vcl/metaact.hxx
+++ b/include/vcl/metaact.hxx
@@ -775,7 +775,7 @@ public:
const BitmapEx& GetBitmapEx() const { return maBmpEx; }
const Point& GetPoint() const { return maPt; }
- bool IsTransparent() const override { return GetBitmapEx().IsTransparent(); }
+ bool IsTransparent() const override { return GetBitmapEx().IsAlpha(); }
};
class VCL_DLLPUBLIC MetaBmpExScaleAction final : public MetaAction
@@ -809,7 +809,7 @@ public:
const BitmapEx& GetBitmapEx() const { return maBmpEx; }
const Point& GetPoint() const { return maPt; }
const Size& GetSize() const { return maSz; }
- bool IsTransparent() const override { return GetBitmapEx().IsTransparent(); }
+ bool IsTransparent() const override { return GetBitmapEx().IsAlpha(); }
};
class UNLESS_MERGELIBS(VCL_DLLPUBLIC) MetaBmpExScalePartAction final : public MetaAction
@@ -848,7 +848,7 @@ public:
const Size& GetDestSize() const { return maDstSz; }
const Point& GetSrcPoint() const { return maSrcPt; }
const Size& GetSrcSize() const { return maSrcSz; }
- bool IsTransparent() const override { return GetBitmapEx().IsTransparent(); }
+ bool IsTransparent() const override { return GetBitmapEx().IsAlpha(); }
};
class SAL_DLLPUBLIC_RTTI MetaMaskAction final : public MetaAction
diff --git a/include/vcl/pdfwriter.hxx b/include/vcl/pdfwriter.hxx
index f7010910299a..fc28a009dd54 100644
--- a/include/vcl/pdfwriter.hxx
+++ b/include/vcl/pdfwriter.hxx
@@ -847,7 +847,7 @@ The following structure describes the permissions used in PDF security
the same pixel size as the image and
be either 1 bit black&white or 8 bit grey
*/
- void DrawJPGBitmap( SvStream& rJPGData, bool bIsTrueColor, const Size& rSrcSizePixel, const tools::Rectangle& rTargetArea, const Bitmap& rMask, const Graphic& rGraphic );
+ void DrawJPGBitmap( SvStream& rJPGData, bool bIsTrueColor, const Size& rSrcSizePixel, const tools::Rectangle& rTargetArea, const AlphaMask& rAlphaMask, const Graphic& rGraphic );
/** Create a new named destination to be used in a link from another PDF document
diff --git a/slideshow/source/engine/shapes/gdimtftools.cxx b/slideshow/source/engine/shapes/gdimtftools.cxx
index e3d22e5033f2..dfb33d95f38c 100644
--- a/slideshow/source/engine/shapes/gdimtftools.cxx
+++ b/slideshow/source/engine/shapes/gdimtftools.cxx
@@ -289,7 +289,7 @@ bool getAnimationFromGraphic( VectorOfMtfAnimationFrames& o_rFrames,
{
pVDev->DrawBitmapEx(rAnimationBitmap.maPositionPixel,
rAnimationBitmap.maBitmapEx);
- Bitmap aMask = rAnimationBitmap.maBitmapEx.GetMask();
+ Bitmap aMask = rAnimationBitmap.maBitmapEx.GetAlpha();
if( aMask.IsEmpty() )
{
@@ -311,7 +311,7 @@ bool getAnimationFromGraphic( VectorOfMtfAnimationFrames& o_rFrames,
case Disposal::Back:
{
// #i70772# react on no mask
- const Bitmap aMask(rAnimationBitmap.maBitmapEx.GetMask());
+ const Bitmap aMask(rAnimationBitmap.maBitmapEx.GetAlpha());
const Bitmap & rContent(rAnimationBitmap.maBitmapEx.GetBitmap());
pVDevMask->Erase();
@@ -336,7 +336,7 @@ bool getAnimationFromGraphic( VectorOfMtfAnimationFrames& o_rFrames,
pVDev->DrawBitmapEx(rAnimationBitmap.maPositionPixel,
rAnimationBitmap.maBitmapEx);
pVDevMask->DrawBitmap(rAnimationBitmap.maPositionPixel,
- rAnimationBitmap.maBitmapEx.GetMask());
+ rAnimationBitmap.maBitmapEx.GetAlpha());
break;
}
}
diff --git a/svx/source/dialog/_bmpmask.cxx b/svx/source/dialog/_bmpmask.cxx
index 2515a8850408..a74e6273d4e2 100644
--- a/svx/source/dialog/_bmpmask.cxx
+++ b/svx/source/dialog/_bmpmask.cxx
@@ -614,8 +614,8 @@ BitmapEx SvxBmpMask::ImpMaskTransparent( const BitmapEx& rBitmapEx, const Color&
BitmapEx aBmpEx;
Bitmap aMask( rBitmapEx.GetBitmap().CreateMask( rColor, nTol ) );
- if( rBitmapEx.IsTransparent() )
- aMask.CombineSimple( rBitmapEx.GetMask(), BmpCombine::Or );
+ if( rBitmapEx.IsAlpha() )
+ aMask.CombineSimple( rBitmapEx.GetAlpha(), BmpCombine::Or );
aBmpEx = BitmapEx( rBitmapEx.GetBitmap(), aMask );
LeaveWait();
@@ -995,7 +995,7 @@ Graphic SvxBmpMask::Mask( const Graphic& rGraphic )
{
ImpMask( aBitmapEx );
if ( aGraphic.IsTransparent() )
- aGraphic = Graphic( BitmapEx( aBitmapEx.GetBitmap(), aBitmapEx.GetMask() ) );
+ aGraphic = Graphic( BitmapEx( aBitmapEx.GetBitmap(), aBitmapEx.GetAlpha() ) );
else
aGraphic = aBitmapEx;
}
diff --git a/svx/source/dialog/_contdlg.cxx b/svx/source/dialog/_contdlg.cxx
index bba90c16a1a0..616f8774050d 100644
--- a/svx/source/dialog/_contdlg.cxx
+++ b/svx/source/dialog/_contdlg.cxx
@@ -115,7 +115,7 @@ tools::PolyPolygon SvxContourDlg::CreateAutoContour( const Graphic& rGraphic,
}
}
else if( rGraphic.IsTransparent() )
- aBmp = rGraphic.GetBitmapEx().GetMask();
+ aBmp = rGraphic.GetBitmapEx().GetAlpha();
else
{
aBmp = rGraphic.GetBitmapEx().GetBitmap();
@@ -634,7 +634,7 @@ IMPL_LINK( SvxSuperContourDlg, PipetteClickHdl, ContourWindow&, rWnd, void )
Bitmap aMask = aGraphic.GetBitmapEx().GetBitmap().CreateMask( rColor, nTol );
if( aGraphic.IsTransparent() )
- aMask.CombineSimple( aGraphic.GetBitmapEx().GetMask(), BmpCombine::Or );
+ aMask.CombineSimple( aGraphic.GetBitmapEx().GetAlpha(), BmpCombine::Or );
if( !aMask.IsEmpty() )
{
diff --git a/svx/source/gallery2/galbrws2.cxx b/svx/source/gallery2/galbrws2.cxx
index 1d388203a2a9..cd3d943ec5e4 100644
--- a/svx/source/gallery2/galbrws2.cxx
+++ b/svx/source/gallery2/galbrws2.cxx
@@ -869,7 +869,7 @@ void GalleryBrowser2::UpdateRows(bool bVisibleOnly)
mxDev->Erase();
- if (aBitmapEx.IsTransparent())
+ if (aBitmapEx.IsAlpha())
{
// draw checkered background
GalleryIconView::drawTransparenceBackground(*mxDev, aPos, aBitmapExSizePixel);
diff --git a/svx/source/gallery2/galctrl.cxx b/svx/source/gallery2/galctrl.cxx
index 78da9c640cf1..819f115cf3f4 100644
--- a/svx/source/gallery2/galctrl.cxx
+++ b/svx/source/gallery2/galctrl.cxx
@@ -357,7 +357,7 @@ void GalleryIconView::UserDraw(const UserDrawEvent& rUDEvt)
((aSize.Height() - aBitmapExSizePixel.Height()) >> 1) + rRect.Top());
OutputDevice* pDev = rUDEvt.GetRenderContext();
- if(aBitmapEx.IsTransparent())
+ if(aBitmapEx.IsAlpha())
{
// draw checkered background for full rectangle.
GalleryIconView::drawTransparenceBackground(*pDev, rRect.TopLeft(), rRect.GetSize());
diff --git a/svx/source/svdraw/svdfmtf.cxx b/svx/source/svdraw/svdfmtf.cxx
index 5f8185f93325..eb60ff92fa56 100644
--- a/svx/source/svdraw/svdfmtf.cxx
+++ b/svx/source/svdraw/svdfmtf.cxx
@@ -1609,7 +1609,7 @@ void ImpSdrGDIMetaFileImport::DoAction(MetaFloatTransparentAction const & rAct)
if(bHasNewMask || bFixedTransparence)
{
- if(!aBitmapEx.IsAlpha() && !aBitmapEx.IsTransparent())
+ if(!aBitmapEx.IsAlpha())
{
// no transparence yet, apply new one
if(bFixedTransparence)
diff --git a/svx/source/tbxctrls/itemwin.cxx b/svx/source/tbxctrls/itemwin.cxx
index 89a428986efd..f9612fe008d7 100644
--- a/svx/source/tbxctrls/itemwin.cxx
+++ b/svx/source/tbxctrls/itemwin.cxx
@@ -197,7 +197,7 @@ namespace
ScopedVclPtrInstance< VirtualDevice > pVirtualDevice;
pVirtualDevice->SetOutputSizePixel(rSize);
- if(rBitmapEx.IsTransparent())
+ if(rBitmapEx.IsAlpha())
{
const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
diff --git a/svx/source/xoutdev/xtabbtmp.cxx b/svx/source/xoutdev/xtabbtmp.cxx
index 2d3adb4c067e..fd1b7dfdadb7 100644
--- a/svx/source/xoutdev/xtabbtmp.cxx
+++ b/svx/source/xoutdev/xtabbtmp.cxx
@@ -54,7 +54,7 @@ BitmapEx XBitmapList::CreateBitmap( tools::Long nIndex, const Size& rSize ) cons
ScopedVclPtrInstance< VirtualDevice > pVirtualDevice;
pVirtualDevice->SetOutputSizePixel(rSize);
- if(rBitmapEx.IsTransparent())
+ if(rBitmapEx.IsAlpha())
{
const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
diff --git a/svx/source/xoutdev/xtabptrn.cxx b/svx/source/xoutdev/xtabptrn.cxx
index 96e1d4b919c3..8d461167a87a 100644
--- a/svx/source/xoutdev/xtabptrn.cxx
+++ b/svx/source/xoutdev/xtabptrn.cxx
@@ -89,7 +89,7 @@ BitmapEx XPatternList::CreateBitmap( tools::Long nIndex, const Size& rSize ) con
ScopedVclPtrInstance< VirtualDevice > pVirtualDevice;
pVirtualDevice->SetOutputSizePixel(rSize);
- if(rBitmapEx.IsTransparent())
+ if(rBitmapEx.IsAlpha())
{
const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
diff --git a/vcl/osx/salinst.cxx b/vcl/osx/salinst.cxx
index 85651e2079e9..75aea4d5415a 100644
--- a/vcl/osx/salinst.cxx
+++ b/vcl/osx/salinst.cxx
@@ -911,9 +911,9 @@ CGImageRef CreateCGImage( const Image& rImage )
return nullptr;
CGImageRef xImage = nullptr;
- if( ! (aBmpEx.IsAlpha() || aBmpEx.IsTransparent() ) )
+ if( !aBmpEx.IsAlpha() )
xImage = pSalBmp->CreateCroppedImage( 0, 0, pSalBmp->mnWidth, pSalBmp->mnHeight );
- else if( aBmpEx.IsAlpha() )
+ else
{
AlphaMask aAlphaMask( aBmpEx.GetAlpha() );
Bitmap aMask( aAlphaMask.GetBitmap() );
@@ -923,15 +923,6 @@ CGImageRef CreateCGImage( const Image& rImage )
else
xImage = pSalBmp->CreateCroppedImage( 0, 0, pSalBmp->mnWidth, pSalBmp->mnHeight );
}
- else if( aBmpEx.GetTransparentType() == TransparentType::Bitmap )
- {
- Bitmap aMask( aBmpEx.GetMask() );
- QuartzSalBitmap* pMaskBmp = static_cast<QuartzSalBitmap*>(aMask.ImplGetSalBitmap().get());
- if( pMaskBmp )
- xImage = pSalBmp->CreateWithMask( *pMaskBmp, 0, 0, pSalBmp->mnWidth, pSalBmp->mnHeight );
- else
- xImage = pSalBmp->CreateCroppedImage( 0, 0, pSalBmp->mnWidth, pSalBmp->mnHeight );
- }
return xImage;
}
diff --git a/vcl/qa/cppunit/canvasbitmaptest.cxx b/vcl/qa/cppunit/canvasbitmaptest.cxx
index a1185ab1f7ad..d77599e7b8a4 100644
--- a/vcl/qa/cppunit/canvasbitmaptest.cxx
+++ b/vcl/qa/cppunit/canvasbitmaptest.cxx
@@ -102,7 +102,7 @@ void checkCanvasBitmap( const rtl::Reference<VclCanvasBitmap>& xBmp,
sal_Int32(200), xBmp->getSize().Height);
CPPUNIT_ASSERT_EQUAL_MESSAGE( "alpha state mismatch",
- aContainedBmpEx.IsTransparent(), bool(xBmp->hasAlpha()));
+ aContainedBmpEx.IsAlpha(), bool(xBmp->hasAlpha()));
CPPUNIT_ASSERT_MESSAGE( "getScaledBitmap() failed",
xBmp->getScaledBitmap( geometry::RealSize2D(500,500), false ).is());
@@ -111,7 +111,7 @@ void checkCanvasBitmap( const rtl::Reference<VclCanvasBitmap>& xBmp,
uno::Sequence<sal_Int8> aPixelData = xBmp->getData(aLayout, geometry::IntegerRectangle2D(0,0,1,1));
const sal_Int32 nExpectedBitsPerPixel(
- (aContainedBmpEx.IsTransparent() ? std::max(8,nDepth)+8 : nDepth) + extraBpp);
+ (aContainedBmpEx.IsAlpha() ? std::max(8,nDepth)+8 : nDepth) + extraBpp);
CPPUNIT_ASSERT_EQUAL_MESSAGE( "# scanlines not 1",
static_cast<sal_Int32>(1), aLayout.ScanLines);
CPPUNIT_ASSERT_EQUAL_MESSAGE( "# scanline bytes mismatch",
@@ -164,7 +164,7 @@ void checkCanvasBitmap( const rtl::Reference<VclCanvasBitmap>& xBmp,
"First pixel is not white", 1.0, pRGBStart[0].Blue, 1E-12);
CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Second pixel is not opaque", 1.0, pARGBStart[1].Alpha, 1E-12);
- if( aContainedBmpEx.IsTransparent() )
+ if( aContainedBmpEx.IsAlpha() )
{
CPPUNIT_ASSERT_EQUAL_MESSAGE( "First pixel is not fully transparent",
0.0, pARGBStart[0].Alpha);
@@ -235,7 +235,7 @@ void checkCanvasBitmap( const rtl::Reference<VclCanvasBitmap>& xBmp,
CPPUNIT_ASSERT_MESSAGE( "Green pixel from bitmap mismatch with manually converted green pixel",
bool(aPixel3 == aPixel4));
- if( !aContainedBmpEx.IsTransparent() )
+ if( !aContainedBmpEx.IsAlpha() )
{
aPixel3 = xBmp->convertIntegerFromRGB( aRGBColor );
CPPUNIT_ASSERT_MESSAGE( "Green pixel from bitmap mismatch with manually RGB-converted green pixel",
@@ -675,7 +675,7 @@ void CanvasBitmapTest::runTest()
checkCanvasBitmap( xBmp, "single bitmap", nDepth );
- Bitmap aMask(Size(200,200), vcl::PixelFormat::N1_BPP);
+ Bitmap aMask(Size(200,200), vcl::PixelFormat::N8_BPP, &Bitmap::GetGreyPalette(256));
aMask.Erase(COL_WHITE);
{
BitmapScopedWriteAccess pAcc(aMask);
@@ -683,9 +683,9 @@ void CanvasBitmapTest::runTest()
{
pAcc->SetFillColor(COL_BLACK);
pAcc->FillRect(tools::Rectangle(0,0,100,100));
- pAcc->SetPixel(0,0,BitmapColor(1));
+ pAcc->SetPixel(0,0,BitmapColor(255));
pAcc->SetPixel(0,1,BitmapColor(0));
- pAcc->SetPixel(0,2,BitmapColor(1));
+ pAcc->SetPixel(0,2,BitmapColor(255));
}
}
@@ -719,8 +719,8 @@ void CanvasBitmapTest::runTest()
new TestBitmap( geometry::IntegerSize2D(10,10), true ));
BitmapEx aBmp = vcl::unotools::bitmapExFromXBitmap(xTestBmp);
- CPPUNIT_ASSERT_MESSAGE( "Palette bitmap is transparent",
- !aBmp.IsTransparent());
+ CPPUNIT_ASSERT_MESSAGE( "Palette bitmap is alpha",
+ !aBmp.IsAlpha());
CPPUNIT_ASSERT_EQUAL_MESSAGE( "Bitmap does not have size (10,10)",
Size(10,10), aBmp.GetSizePixel());
CPPUNIT_ASSERT_EQUAL_MESSAGE( "Bitmap does not have the expected pixel format",
@@ -745,8 +745,6 @@ void CanvasBitmapTest::runTest()
xTestBmp.set( new TestBitmap( geometry::IntegerSize2D(10,10), false ));
aBmp = vcl::unotools::bitmapExFromXBitmap(xTestBmp);
- CPPUNIT_ASSERT_MESSAGE( "Palette bitmap is not transparent",
- aBmp.IsTransparent());
CPPUNIT_ASSERT_MESSAGE( "Palette bitmap has no alpha",
aBmp.IsAlpha());
CPPUNIT_ASSERT_EQUAL_MESSAGE( "Bitmap does not have size (10,10)",
diff --git a/vcl/source/animate/Animation.cxx b/vcl/source/animate/Animation.cxx
index 37c9f16afa26..e17592696195 100644
--- a/vcl/source/animate/Animation.cxx
+++ b/vcl/source/animate/Animation.cxx
@@ -113,7 +113,7 @@ bool Animation::IsTransparent() const
// as the application (?) does not invalidate on non-transparent
// graphics due to performance reasons.
- return maBitmapEx.IsTransparent()
+ return maBitmapEx.IsAlpha()
|| std::any_of(maList.begin(), maList.end(),
[&aRect](const std::unique_ptr<AnimationBitmap>& pAnim) -> bool {
return pAnim->meDisposal == Disposal::Back
diff --git a/vcl/source/bitmap/BitmapAlphaClampFilter.cxx b/vcl/source/bitmap/BitmapAlphaClampFilter.cxx
index d9bc79ad92b6..245d925a9766 100644
--- a/vcl/source/bitmap/BitmapAlphaClampFilter.cxx
+++ b/vcl/source/bitmap/BitmapAlphaClampFilter.cxx
@@ -15,7 +15,7 @@
BitmapEx BitmapAlphaClampFilter::execute(BitmapEx const& rBitmapEx) const
{
- if (!rBitmapEx.IsTransparent())
+ if (!rBitmapEx.IsAlpha())
return rBitmapEx;
AlphaMask aBitmapAlpha(rBitmapEx.GetAlpha());
diff --git a/vcl/source/bitmap/BitmapBasicMorphologyFilter.cxx b/vcl/source/bitmap/BitmapBasicMorphologyFilter.cxx
index 8bc038b486f9..3cd0bb87e4eb 100644
--- a/vcl/source/bitmap/BitmapBasicMorphologyFilter.cxx
+++ b/vcl/source/bitmap/BitmapBasicMorphologyFilter.cxx
@@ -333,7 +333,7 @@ BitmapBasicMorphologyFilter::~BitmapBasicMorphologyFilter() = default;
BitmapEx BitmapBasicMorphologyFilter::execute(BitmapEx const& rBitmapEx) const
{
Bitmap result = filter(rBitmapEx.GetBitmap());
- return BitmapEx(result, rBitmapEx.GetMask());
+ return BitmapEx(result, rBitmapEx.GetAlpha());
}
Bitmap BitmapBasicMorphologyFilter::filter(Bitmap const& rBitmap) const
diff --git a/vcl/source/bitmap/BitmapDisabledImageFilter.cxx b/vcl/source/bitmap/BitmapDisabledImageFilter.cxx
index e258d897ab1f..7a702effa0c3 100644
--- a/vcl/source/bitmap/BitmapDisabledImageFilter.cxx
+++ b/vcl/source/bitmap/BitmapDisabledImageFilter.cxx
@@ -47,7 +47,7 @@ BitmapEx BitmapDisabledImageFilter::execute(BitmapEx const& rBitmapEx) const
}
}
- if (rBitmapEx.IsTransparent())
+ if (rBitmapEx.IsAlpha())
{
aReturnBitmap = BitmapEx(aGrey, rBitmapEx.GetAlpha());
}
diff --git a/vcl/source/bitmap/BitmapEx.cxx b/vcl/source/bitmap/BitmapEx.cxx
index bcf8480163cc..8d931d324b08 100644
--- a/vcl/source/bitmap/BitmapEx.cxx
+++ b/vcl/source/bitmap/BitmapEx.cxx
@@ -49,16 +49,12 @@
using namespace ::com::sun::star;
BitmapEx::BitmapEx()
- : meTransparent(TransparentType::NONE)
- , mbAlpha(false)
{
}
BitmapEx::BitmapEx( const BitmapEx& ) = default;
BitmapEx::BitmapEx( const BitmapEx& rBitmapEx, Point aSrc, Size aSize )
- : meTransparent(TransparentType::NONE)
- , mbAlpha(false)
{
if( rBitmapEx.IsEmpty() || aSize.IsEmpty() )
return;
@@ -66,12 +62,7 @@ BitmapEx::BitmapEx( const BitmapEx& rBitmapEx, Point aSrc, Size aSize )
maBitmap = Bitmap(aSize, rBitmapEx.maBitmap.getPixelFormat());
SetSizePixel(aSize);
if( rBitmapEx.IsAlpha() )
- {
- mbAlpha = true;
- maMask = AlphaMask( aSize ).ImplGetBitmap();
- }
- else if( rBitmapEx.IsTransparent() )
- maMask = Bitmap(aSize, rBitmapEx.maMask.getPixelFormat());
+ maAlphaMask = AlphaMask( aSize ).ImplGetBitmap();
tools::Rectangle aDestRect( Point( 0, 0 ), aSize );
tools::Rectangle aSrcRect( aSrc, aSize );
@@ -79,16 +70,12 @@ BitmapEx::BitmapEx( const BitmapEx& rBitmapEx, Point aSrc, Size aSize )
}
BitmapEx::BitmapEx(Size aSize, vcl::PixelFormat ePixelFormat)
- : meTransparent(TransparentType::NONE)
- , mbAlpha(false)
{
maBitmap = Bitmap(aSize, ePixelFormat);
SetSizePixel(aSize);
}
BitmapEx::BitmapEx( const OUString& rIconName )
- : meTransparent(TransparentType::NONE)
- , mbAlpha(false)
{
loadFromIconTheme( rIconName );
}
@@ -113,30 +100,25 @@ void BitmapEx::loadFromIconTheme( const OUString& rIconName )
BitmapEx::BitmapEx( const Bitmap& rBmp ) :
maBitmap ( rBmp ),
- maBitmapSize ( maBitmap.GetSizePixel() ),
- meTransparent( TransparentType::NONE ),
- mbAlpha ( false )
+ maBitmapSize ( maBitmap.GetSizePixel() )
{
}
BitmapEx::BitmapEx( const Bitmap& rBmp, const Bitmap& rMask ) :
maBitmap ( rBmp ),
- maMask ( rMask ),
- maBitmapSize ( maBitmap.GetSizePixel() ),
- meTransparent ( rMask.IsEmpty() ? TransparentType::NONE : TransparentType::Bitmap ),
- mbAlpha ( !rMask.IsEmpty() )
+ maBitmapSize ( maBitmap.GetSizePixel() )
{
if (rMask.IsEmpty())
return;
- if( maMask.getPixelFormat() == vcl::PixelFormat::N8_BPP && maMask.HasGreyPalette8Bit() )
- maMask = rMask;
- else if (maMask.getPixelFormat() == vcl::PixelFormat::N1_BPP)
+ if( rMask.getPixelFormat() == vcl::PixelFormat::N8_BPP && rMask.HasGreyPalette8Bit() )
+ maAlphaMask = rMask;
+ else if (rMask.getPixelFormat() == vcl::PixelFormat::N1_BPP)
{
// convert 1-bit mask to alpha bitmap
BitmapEx aBmpEx(rMask);
BitmapFilter::Filter(aBmpEx, BitmapMaskToAlphaFilter());
- maMask = aBmpEx.GetBitmap();
+ maAlphaMask = aBmpEx.GetBitmap();
}
else
{
@@ -145,40 +127,36 @@ BitmapEx::BitmapEx( const Bitmap& rBmp, const Bitmap& rMask ) :
BitmapEx aMaskEx(rMask);
BitmapFilter::Filter(aMaskEx, BitmapMonochromeFilter(255));
BitmapFilter::Filter(aMaskEx, BitmapMaskToAlphaFilter());
- maMask = aMaskEx.GetBitmap();
+ maAlphaMask = aMaskEx.GetBitmap();
}
- if (!maBitmap.IsEmpty() && maBitmap.GetSizePixel() != maMask.GetSizePixel())
+ if (!maBitmap.IsEmpty() && maBitmap.GetSizePixel() != maAlphaMask.GetSizePixel())
{
OSL_ENSURE(false, "Mask size differs from Bitmap size, corrected Mask (!)");
- maMask.Scale(maBitmap.GetSizePixel());
+ maAlphaMask.Scale(maBitmap.GetSizePixel());
}
}
BitmapEx::BitmapEx( const Bitmap& rBmp, const AlphaMask& rAlphaMask ) :
maBitmap ( rBmp ),
- maMask ( rAlphaMask.ImplGetBitmap() ),
- maBitmapSize ( maBitmap.GetSizePixel() ),
- meTransparent ( rAlphaMask.IsEmpty() ? TransparentType::NONE : TransparentType::Bitmap ),
- mbAlpha ( !rAlphaMask.IsEmpty() )
+ maAlphaMask ( rAlphaMask.ImplGetBitmap() ),
+ maBitmapSize ( maBitmap.GetSizePixel() )
{
- if (!maBitmap.IsEmpty() && !maMask.IsEmpty() && maBitmap.GetSizePixel() != maMask.GetSizePixel())
+ if (!maBitmap.IsEmpty() && !maAlphaMask.IsEmpty() && maBitmap.GetSizePixel() != maAlphaMask.GetSizePixel())
{
OSL_ENSURE(false, "Alpha size differs from Bitmap size, corrected Mask (!)");
- maMask.Scale(rBmp.GetSizePixel());
+ maAlphaMask.Scale(rBmp.GetSizePixel());
}
}
BitmapEx::BitmapEx( const Bitmap& rBmp, const Color& rTransparentColor ) :
maBitmap ( rBmp ),
- maBitmapSize ( maBitmap.GetSizePixel() ),
- meTransparent ( TransparentType::Bitmap ),
- mbAlpha ( false )
+ maBitmapSize ( maBitmap.GetSizePixel() )
{
- maMask = maBitmap.CreateMask( rTransparentColor );
+ maAlphaMask = maBitmap.CreateMask( rTransparentColor );
- SAL_WARN_IF(rBmp.GetSizePixel() != maMask.GetSizePixel(), "vcl",
+ SAL_WARN_IF(rBmp.GetSizePixel() != maAlphaMask.GetSizePixel(), "vcl",
"BitmapEx::BitmapEx(): size mismatch for bitmap and alpha mask.");
}
@@ -187,35 +165,24 @@ BitmapEx& BitmapEx::operator=( const BitmapEx& ) = default;
bool BitmapEx::operator==( const BitmapEx& rBitmapEx ) const
{
- if (meTransparent != rBitmapEx.meTransparent)
- return false;
-
if (GetSizePixel() != rBitmapEx.GetSizePixel())
return false;
- if (meTransparent != rBitmapEx.meTransparent)
- return false;
-
- if (mbAlpha != rBitmapEx.mbAlpha)
- return false;
-
if (maBitmap != rBitmapEx.maBitmap)
return false;
- return maMask == rBitmapEx.maMask;
+ return maAlphaMask == rBitmapEx.maAlphaMask;
}
bool BitmapEx::IsEmpty() const
{
- return( maBitmap.IsEmpty() && maMask.IsEmpty() );
+ return( maBitmap.IsEmpty() && maAlphaMask.IsEmpty() );
}
void BitmapEx::SetEmpty()
{
maBitmap.SetEmpty();
- maMask.SetEmpty();
- meTransparent = TransparentType::NONE;
- mbAlpha = false;
+ maAlphaMask.SetEmpty();
}
void BitmapEx::Clear()
@@ -223,14 +190,9 @@ void BitmapEx::Clear()
SetEmpty();
}
-bool BitmapEx::IsTransparent() const
-{
- return( meTransparent != TransparentType::NONE );
-}
-
bool BitmapEx::IsAlpha() const
{
- return( IsTransparent() && mbAlpha );
+ return !maAlphaMask.IsEmpty();
}
const Bitmap& BitmapEx::GetBitmap() const
@@ -242,49 +204,25 @@ Bitmap BitmapEx::GetBitmap( Color aTransparentReplaceColor ) const
{
Bitmap aRetBmp( maBitmap );
- if( meTransparent != TransparentType::NONE )
+ if( !maAlphaMask.IsEmpty() )
{
- Bitmap aTempMask = maMask;
-
- if( !IsAlpha() )
- aRetBmp.Replace( aTempMask, aTransparentReplaceColor );
- else
- aRetBmp.Replace( GetAlpha(), aTransparentReplaceColor );
+ aRetBmp.Replace( maAlphaMask, aTransparentReplaceColor );
}
return aRetBmp;
}
-Bitmap BitmapEx::GetMask() const
-{
- if (!IsAlpha())
- return maMask;
-
- BitmapEx aMaskEx(maMask);
- BitmapFilter::Filter(aMaskEx, BitmapMonochromeFilter(255));
- return aMaskEx.GetBitmap();
-}
-
AlphaMask BitmapEx::GetAlpha() const
{
- if( IsAlpha() )
- {
- AlphaMask aAlpha;
- aAlpha.ImplSetBitmap( maMask );
- return aAlpha;
- }
- else
- {
- return AlphaMask(maMask);
- }
+ return AlphaMask(maAlphaMask);
}
sal_uLong BitmapEx::GetSizeBytes() const
{
sal_uLong nSizeBytes = maBitmap.GetSizeBytes();
- if( meTransparent == TransparentType::Bitmap )
- nSizeBytes += maMask.GetSizeBytes();
+ if( !maAlphaMask.IsEmpty() )
+ nSizeBytes += maAlphaMask.GetSizeBytes();
return nSizeBytes;
}
@@ -292,18 +230,11 @@ sal_uLong BitmapEx::GetSizeBytes() const
BitmapChecksum BitmapEx::GetChecksum() const
{
BitmapChecksum nCrc = maBitmap.GetChecksum();
- SVBT32 aBT32;
-
- UInt32ToSVBT32( o3tl::underlyingEnumValue(meTransparent), aBT32 );
- nCrc = vcl_get_checksum( nCrc, aBT32, 4 );
- UInt32ToSVBT32( sal_uInt32(mbAlpha), aBT32 );
- nCrc = vcl_get_checksum( nCrc, aBT32, 4 );
-
- if( ( TransparentType::Bitmap == meTransparent ) && !maMask.IsEmpty() )
+ if( !maAlphaMask.IsEmpty() )
{
BitmapChecksumOctetArray aBCOA;
- BCToBCOA( maMask.GetChecksum(), aBCOA );
+ BCToBCOA( maAlphaMask.GetChecksum(), aBCOA );
nCrc = vcl_get_checksum( nCrc, aBCOA, BITMAP_CHECKSUM_SIZE );
}
@@ -333,8 +264,8 @@ bool BitmapEx::Mirror( BmpMirrorFlags nMirrorFlags )
{
bRet = maBitmap.Mirror( nMirrorFlags );
- if( bRet && ( meTransparent == TransparentType::Bitmap ) && !maMask.IsEmpty() )
- maMask.Mirror( nMirrorFlags );
+ if( bRet && !maAlphaMask.IsEmpty() )
+ maAlphaMask.Mirror( nMirrorFlags );
}
return bRet;
@@ -348,14 +279,14 @@ bool BitmapEx::Scale( const double& rScaleX, const double& rScaleY, BmpScaleFlag
{
bRet = maBitmap.Scale( rScaleX, rScaleY, nScaleFlag );
- if( bRet && ( meTransparent == TransparentType::Bitmap ) && !maMask.IsEmpty() )
+ if( bRet && !maAlphaMask.IsEmpty() )
{
- maMask.Scale( rScaleX, rScaleY, nScaleFlag );
+ maAlphaMask.Scale( rScaleX, rScaleY, nScaleFlag );
}
SetSizePixel(maBitmap.GetSizePixel());
- SAL_WARN_IF( !maMask.IsEmpty() && maBitmap.GetSizePixel() != maMask.GetSizePixel(), "vcl",
+ SAL_WARN_IF( !maAlphaMask.IsEmpty() && maBitmap.GetSizePixel() != maAlphaMask.GetSizePixel(), "vcl",
"BitmapEx::Scale(): size mismatch for bitmap and alpha mask." );
}
@@ -394,27 +325,26 @@ bool BitmapEx::Rotate( Degree10 nAngle10, const Color& rFillColor )
{
bRet = maBitmap.Rotate( nAngle10, COL_BLACK );
- if( meTransparent == TransparentType::NONE )
+ if( maAlphaMask.IsEmpty() )
{
- maMask = Bitmap(GetSizePixel(), vcl::PixelFormat::N1_BPP);
- maMask.Erase( COL_BLACK );
- meTransparent = TransparentType::Bitmap;
+ maAlphaMask = Bitmap(GetSizePixel(), vcl::PixelFormat::N8_BPP, &Bitmap::GetGreyPalette(256));
+ maAlphaMask.Erase( COL_BLACK );
}
- if( bRet && !maMask.IsEmpty() )
- maMask.Rotate( nAngle10, COL_WHITE );
+ if( bRet && !maAlphaMask.IsEmpty() )
+ maAlphaMask.Rotate( nAngle10, COL_WHITE );
}
else
{
bRet = maBitmap.Rotate( nAngle10, rFillColor );
- if( bRet && ( meTransparent == TransparentType::Bitmap ) && !maMask.IsEmpty() )
- maMask.Rotate( nAngle10, COL_WHITE );
+ if( bRet && !maAlphaMask.IsEmpty() )
+ maAlphaMask.Rotate( nAngle10, COL_WHITE );
}
SetSizePixel(maBitmap.GetSizePixel());
- SAL_WARN_IF(!maMask.IsEmpty() && maBitmap.GetSizePixel() != maMask.GetSizePixel(), "vcl",
+ SAL_WARN_IF(!maAlphaMask.IsEmpty() && maBitmap.GetSizePixel() != maAlphaMask.GetSizePixel(), "vcl",
"BitmapEx::Rotate(): size mismatch for bitmap and alpha mask.");
}
@@ -429,12 +359,12 @@ bool BitmapEx::Crop( const tools::Rectangle& rRectPixel )
{
bRet = maBitmap.Crop( rRectPixel );
- if( bRet && ( meTransparent == TransparentType::Bitmap ) && !maMask.IsEmpty() )
- maMask.Crop( rRectPixel );
+ if( bRet && !maAlphaMask.IsEmpty() )
+ maAlphaMask.Crop( rRectPixel );
SetSizePixel(maBitmap.GetSizePixel());
- SAL_WARN_IF(!maMask.IsEmpty() && maBitmap.GetSizePixel() != maMask.GetSizePixel(), "vcl",
+ SAL_WARN_IF(!maAlphaMask.IsEmpty() && maBitmap.GetSizePixel() != maAlphaMask.GetSizePixel(), "vcl",
"BitmapEx::Crop(): size mismatch for bitmap and alpha mask.");
}
@@ -455,15 +385,15 @@ void BitmapEx::Expand( sal_uLong nDX, sal_uLong nDY, bool bExpandTransparent )
bRet = maBitmap.Expand( nDX, nDY );
- if( bRet && ( meTransparent == TransparentType::Bitmap ) && !maMask.IsEmpty() )
+ if( bRet && !maAlphaMask.IsEmpty() )
{
Color aColor( bExpandTransparent ? COL_WHITE : COL_BLACK );
- maMask.Expand( nDX, nDY, &aColor );
+ maAlphaMask.Expand( nDX, nDY, &aColor );
}
SetSizePixel(maBitmap.GetSizePixel());
- SAL_WARN_IF(!maMask.IsEmpty() && maBitmap.GetSizePixel() != maMask.GetSizePixel(), "vcl",
+ SAL_WARN_IF(!maAlphaMask.IsEmpty() && maBitmap.GetSizePixel() != maAlphaMask.GetSizePixel(), "vcl",
"BitmapEx::Expand(): size mismatch for bitmap and alpha mask.");
}
@@ -478,8 +408,8 @@ bool BitmapEx::CopyPixel( const tools::Rectangle& rRectDst, const tools::Rectang
{
bRet = maBitmap.CopyPixel( rRectDst, rRectSrc );
- if( bRet && ( meTransparent == TransparentType::Bitmap ) && !maMask.IsEmpty() )
- maMask.CopyPixel( rRectDst, rRectSrc );
+ if( bRet && !maAlphaMask.IsEmpty() )
+ maAlphaMask.CopyPixel( rRectDst, rRectSrc );
}
}
else
@@ -494,45 +424,15 @@ bool BitmapEx::CopyPixel( const tools::Rectangle& rRectDst, const tools::Rectang
{
if( IsAlpha() )
// cast to use the optimized AlphaMask::CopyPixel
- maMask.CopyPixel_AlphaOptimized( rRectDst, rRectSrc, &pBmpExSrc->maMask );
- else if( IsTransparent() )
- {
- std::unique_ptr<AlphaMask> pAlpha(new AlphaMask( maMask ));
-
- maMask = pAlpha->ImplGetBitmap();
- pAlpha.reset();
- mbAlpha = true;
- maMask.CopyPixel( rRectDst, rRectSrc, &pBmpExSrc->maMask );
- }
+ maAlphaMask.CopyPixel_AlphaOptimized( rRectDst, rRectSrc, &pBmpExSrc->maAlphaMask );
else
{
sal_uInt8 cBlack = 0;
std::unique_ptr<AlphaMask> pAlpha(new AlphaMask(GetSizePixel(), &cBlack));
- maMask = pAlpha->ImplGetBitmap();
+ maAlphaMask = pAlpha->ImplGetBitmap();
pAlpha.reset();
- meTransparent = TransparentType::Bitmap;
- mbAlpha = true;
- maMask.CopyPixel( rRectDst, rRectSrc, &pBmpExSrc->maMask );
- }
- }
- else if( pBmpExSrc->IsTransparent() )
- {
- if (IsAlpha())
- {
- AlphaMask aAlpha( pBmpExSrc->maMask );
- maMask.CopyPixel( rRectDst, rRectSrc, &aAlpha.ImplGetBitmap() );
- }
- else if (IsTransparent())
- {
- maMask.CopyPixel( rRectDst, rRectSrc, &pBmpExSrc->maMask );
- }
- else
- {
- maMask = Bitmap(GetSizePixel(), vcl::PixelFormat::N1_BPP);
- maMask.Erase(COL_BLACK);
- meTransparent = TransparentType::Bitmap;
- maMask.CopyPixel( rRectDst, rRectSrc, &pBmpExSrc->maMask );
+ maAlphaMask.CopyPixel( rRectDst, rRectSrc, &pBmpExSrc->maAlphaMask );
}
}
else if (IsAlpha())
@@ -540,14 +440,7 @@ bool BitmapEx::CopyPixel( const tools::Rectangle& rRectDst, const tools::Rectang
sal_uInt8 cBlack = 0;
const AlphaMask aAlphaSrc(pBmpExSrc->GetSizePixel(), &cBlack);
- maMask.CopyPixel( rRectDst, rRectSrc, &aAlphaSrc.ImplGetBitmap() );
- }
- else if (IsTransparent())
- {
- Bitmap aMaskSrc(pBmpExSrc->GetSizePixel(), vcl::PixelFormat::N1_BPP);
-
- aMaskSrc.Erase( COL_BLACK );
- maMask.CopyPixel( rRectDst, rRectSrc, &aMaskSrc );
+ maAlphaMask.CopyPixel( rRectDst, rRectSrc, &aAlphaSrc.ImplGetBitmap() );
}
}
}
@@ -564,18 +457,18 @@ bool BitmapEx::Erase( const Color& rFillColor )
{
bRet = maBitmap.Erase( rFillColor );
- if( bRet && ( meTransparent == TransparentType::Bitmap ) && !maMask.IsEmpty() )
+ if( bRet && !maAlphaMask.IsEmpty() )
{
// Respect transparency on fill color
if( rFillColor.IsTransparent() )
{
const Color aFill( 255 - rFillColor.GetAlpha(), 255 - rFillColor.GetAlpha(), 255 - rFillColor.GetAlpha() );
- maMask.Erase( aFill );
+ maAlphaMask.Erase( aFill );
}
else
{
const Color aBlack( COL_BLACK );
- maMask.Erase( aBlack );
+ maAlphaMask.Erase( aBlack );
}
}
}
@@ -682,42 +575,22 @@ sal_uInt8 BitmapEx::GetAlpha(sal_Int32 nX, sal_Int32 nY) const
return GetPixelColor(nX, nY).GetAlpha();
sal_uInt8 nAlpha(0);
- switch(meTransparent)
+ if (maAlphaMask.IsEmpty())
{
- case TransparentType::NONE:
- {
- // Not transparent, ergo all covered
- nAlpha = 255;
- break;
- }
- case TransparentType::Bitmap:
- {
- if(!maMask.IsEmpty())
- {
- Bitmap aTestBitmap(maMask);
- Bitmap::ScopedReadAccess pRead(aTestBitmap);
-
- if(pRead)
- {
- const BitmapColor aBitmapColor(pRead->GetPixel(nY, nX));
+ // Not transparent, ergo all covered
+ nAlpha = 255;
+ }
+ else
+ {
+ Bitmap aTestBitmap(maAlphaMask);
+ Bitmap::ScopedReadAccess pRead(aTestBitmap);
- if(mbAlpha)
- {
- nAlpha = 255 - aBitmapColor.GetIndex();
- }
- else
- {
- if(0x00 == aBitmapColor.GetIndex())
- {
- nAlpha = 255;
- }
- }
- }
- }
- break;
+ if(pRead)
+ {
+ const BitmapColor aBitmapColor(pRead->GetPixel(nY, nX));
+ nAlpha = 255 - aBitmapColor.GetIndex();
}
}
-
return nAlpha;
}
@@ -891,18 +764,10 @@ BitmapEx BitmapEx::TransformBitmapEx(
const Bitmap aDestination(impTransformBitmap(GetBitmap(), aDestinationSize, rTransformation, bSmooth));
// create mask
- if(IsTransparent())
+ if(IsAlpha())
{
- if(IsAlpha())
- {
- const Bitmap aAlpha(impTransformBitmap(GetAlpha().GetBitmap(), aDestinationSize, rTransformation, bSmooth));
- return BitmapEx(aDestination, AlphaMask(aAlpha));
- }
- else
- {
- const Bitmap aLclMask(impTransformBitmap(GetMask(), aDestinationSize, rTransformation, false));
- return BitmapEx(aDestination, aLclMask);
- }
+ const Bitmap aAlpha(impTransformBitmap(GetAlpha().GetBitmap(), aDestinationSize, rTransformation, bSmooth));
+ return BitmapEx(aDestination, AlphaMask(aAlpha));
}
return BitmapEx(aDestination);
@@ -1002,7 +867,7 @@ BitmapEx BitmapEx::ModifyBitmapEx(const basegfx::BColorModifierStack& rBColorMod
if(pReplace)
{
// complete replace
- if(IsTransparent())
+ if(IsAlpha())
{
// clear bitmap with dest color
if (vcl::isPalettePixelFormat(aChangedBitmap.getPixelFormat()))
@@ -1122,16 +987,9 @@ BitmapEx BitmapEx::ModifyBitmapEx(const basegfx::BColorModifierStack& rBColorMod
}
else
{
- if(IsTransparent())
+ if(IsAlpha())
{
- if(IsAlpha())
- {
- return BitmapEx(aChangedBitmap, GetAlpha());
- }
- else
- {
- return BitmapEx(aChangedBitmap, GetMask());
- }
+ return BitmapEx(aChangedBitmap, GetAlpha());
}
else
{
@@ -1310,13 +1168,11 @@ void BitmapEx::Replace( const Color* pSearchColors,
void BitmapEx::ReplaceTransparency(const Color& rColor)
{
- if( IsTransparent() )
+ if( IsAlpha() )
{
- maBitmap.Replace( GetMask(), rColor );
- maMask = Bitmap();
+ maBitmap.Replace( GetAlpha(), rColor );
+ maAlphaMask = Bitmap();
maBitmapSize = maBitmap.GetSizePixel();
- meTransparent = TransparentType::NONE;
- mbAlpha = false;
}
}
@@ -1536,15 +1392,10 @@ void BitmapEx::AdjustTransparency(sal_uInt8 cTrans)
{
AlphaMask aAlpha;
- if (!IsTransparent())
+ if (!IsAlpha())
{
aAlpha = AlphaMask(GetSizePixel(), &cTrans);
}
- else if( !IsAlpha() )
- {
- aAlpha = GetMask();
- aAlpha.Replace( 0, cTrans );
- }
else
{
aAlpha = GetAlpha();
@@ -1592,10 +1443,9 @@ void BitmapEx::AdjustTransparency(sal_uInt8 cTrans)
void BitmapEx::CombineMaskOr(Color maskColor, sal_uInt8 nTol)
{
Bitmap aNewMask = maBitmap.CreateMask( maskColor, nTol );
- if ( IsTransparent() )
- aNewMask.CombineSimple( maMask, BmpCombine::Or );
- maMask = aNewMask;
- meTransparent = TransparentType::Bitmap;
+ if ( IsAlpha() )
+ aNewMask.CombineSimple( maAlphaMask, BmpCombine::Or );
+ maAlphaMask = aNewMask;
}
/**
@@ -1628,7 +1478,7 @@ void BitmapEx::GetColorModel(css::uno::Sequence< sal_Int32 >& rRGBPalette,
*pTmp |= sal_Int32(0x000000ffL);
}
- if( IsTransparent() )
+ if( IsAlpha() )
{
// append transparent entry
*pTmp = sal_Int32(0xffffff00L);
diff --git a/vcl/source/bitmap/BitmapFastScaleFilter.cxx b/vcl/source/bitmap/BitmapFastScaleFilter.cxx
index feeee6c79931..0a1143d28e04 100644
--- a/vcl/source/bitmap/BitmapFastScaleFilter.cxx
+++ b/vcl/source/bitmap/BitmapFastScaleFilter.cxx
@@ -112,9 +112,9 @@ BitmapEx BitmapFastScaleFilter::execute(BitmapEx const& rBitmapEx) const
}
}
- Bitmap aMask(rBitmapEx.GetMask());
+ AlphaMask aMask(rBitmapEx.GetAlpha());
- if (bRet && (rBitmapEx.GetTransparentType() == TransparentType::Bitmap) && !aMask.IsEmpty())
+ if (bRet && !aMask.IsEmpty())
bRet = aMask.Scale(maSize, BmpScaleFlag::Fast);
SAL_WARN_IF(!aMask.IsEmpty() && aBitmap.GetSizePixel() != aMask.GetSizePixel(), "vcl",
diff --git a/vcl/source/bitmap/BitmapFilterStackBlur.cxx b/vcl/source/bitmap/BitmapFilterStackBlur.cxx
index 027b84c5958d..c23adad0176f 100644
--- a/vcl/source/bitmap/BitmapFilterStackBlur.cxx
+++ b/vcl/source/bitmap/BitmapFilterStackBlur.cxx
@@ -624,7 +624,7 @@ BitmapEx BitmapFilterStackBlur::execute(BitmapEx const& rBitmapEx) const
{
Bitmap aBitmap = rBitmapEx.GetBitmap();
Bitmap result = filter(aBitmap);
- return BitmapEx(result, rBitmapEx.GetMask());
+ return BitmapEx(result, rBitmapEx.GetAlpha());
}
Bitmap BitmapFilterStackBlur::filter(Bitmap const& rBitmap) const
diff --git a/vcl/source/bitmap/BitmapTools.cxx b/vcl/source/bitmap/BitmapTools.cxx
index 168cf95fb9e0..32204a4a2bb1 100644
--- a/vcl/source/bitmap/BitmapTools.cxx
+++ b/vcl/source/bitmap/BitmapTools.cxx
@@ -341,22 +341,19 @@ BitmapEx CanvasTransformBitmap( const BitmapEx& rBitmap,
// differentiate mask and alpha channel (on-off
// vs. multi-level transparency)
- if( rBitmap.IsTransparent() )
+ if( rBitmap.IsAlpha() )
{
- if( rBitmap.IsAlpha() )
- aSrcAlpha = rBitmap.GetAlpha().GetBitmap();
- else
- aSrcAlpha = rBitmap.GetMask();
+ aSrcAlpha = rBitmap.GetAlpha().GetBitmap();
}
Bitmap::ScopedReadAccess pReadAccess( aSrcBitmap );
- Bitmap::ScopedReadAccess pAlphaReadAccess( rBitmap.IsTransparent() ?
+ Bitmap::ScopedReadAccess pAlphaReadAccess( rBitmap.IsAlpha() ?
aSrcAlpha.AcquireReadAccess() :
nullptr,
aSrcAlpha );
if( pReadAccess.get() == nullptr ||
- (pAlphaReadAccess.get() == nullptr && rBitmap.IsTransparent()) )
+ (pAlphaReadAccess.get() == nullptr && rBitmap.IsAlpha()) )
{
// TODO(E2): Error handling!
ENSURE_OR_THROW( false,
@@ -368,29 +365,15 @@ BitmapEx CanvasTransformBitmap( const BitmapEx& rBitmap,
// paletted 1-bit masks).
sal_uInt8 aAlphaMap[256];
- if( rBitmap.IsTransparent() )
+ if( rBitmap.IsAlpha() )
{
- if( rBitmap.IsAlpha() )
- {
- // source already has alpha channel - 1:1 mapping,
- // i.e. aAlphaMap[0]=0,...,aAlphaMap[255]=255.
- sal_uInt8 val=0;
- sal_uInt8* pCur=aAlphaMap;
- sal_uInt8* const pEnd=&aAlphaMap[256];
- while(pCur != pEnd)
- *pCur++ = val++;
- }
- else
- {
- // mask transparency - determine used palette colors
- const BitmapColor& rCol0( pAlphaReadAccess->GetPaletteColor( 0 ) );
- const BitmapColor& rCol1( pAlphaReadAccess->GetPaletteColor( 1 ) );
-
- // shortcut for true luminance calculation
- // (assumes that palette is grey-level)
- aAlphaMap[0] = rCol0.GetRed();
- aAlphaMap[1] = rCol1.GetRed();
- }
+ // source already has alpha channel - 1:1 mapping,
+ // i.e. aAlphaMap[0]=0,...,aAlphaMap[255]=255.
+ sal_uInt8 val=0;
+ sal_uInt8* pCur=aAlphaMap;
+ sal_uInt8* const pEnd=&aAlphaMap[256];
+ while(pCur != pEnd)
+ *pCur++ = val++;
}
// else: mapping table is not used
@@ -428,7 +411,7 @@ BitmapEx CanvasTransformBitmap( const BitmapEx& rBitmap,
{
// differentiate mask and alpha channel (on-off
// vs. multi-level transparency)
- if( rBitmap.IsTransparent() )
+ if( rBitmap.IsAlpha() )
{
Scanline pScan = pWriteAccess->GetScanline( y );
Scanline pScanAlpha = pAlphaWriteAccess->GetScanline( y );
@@ -500,10 +483,6 @@ void DrawAlphaBitmapAndAlphaGradient(BitmapEx & rBitmapEx, bool bFixedTransparen
{
aOldMask = rBitmapEx.GetAlpha();
}
- else if(TransparentType::Bitmap == rBitmapEx.GetTransparentType())
- {
- aOldMask = rBitmapEx.GetMask();
- }
{
AlphaScopedWriteAccess pOld(aOldMask);
@@ -580,55 +559,43 @@ void DrawAndClipBitmap(const Point& rPos, const Size& rSize, const BitmapEx& rBi
pVDev->EnableMapMode( false );
const Bitmap aVDevMask(pVDev->GetBitmap(Point(), aSizePixel));
- if(aBmpEx.IsTransparent())
+ if(aBmpEx.IsAlpha())
{
// bitmap already uses a Mask or Alpha, we need to blend that with
- // the new masking in pVDev
- if(aBmpEx.IsAlpha())
+ // the new masking in pVDev.
+ // need to blend in AlphaMask quality (8Bit)
+ AlphaMask fromVDev(aVDevMask);
+ AlphaMask fromBmpEx(aBmpEx.GetAlpha());
+ AlphaMask::ScopedReadAccess pR(fromVDev);
+ AlphaScopedWriteAccess pW(fromBmpEx);
+
+ if(pR && pW)
{
- // need to blend in AlphaMask quality (8Bit)
- AlphaMask fromVDev(aVDevMask);
- AlphaMask fromBmpEx(aBmpEx.GetAlpha());
- AlphaMask::ScopedReadAccess pR(fromVDev);
- AlphaScopedWriteAccess pW(fromBmpEx);
+ const tools::Long nWidth(std::min(pR->Width(), pW->Width()));
+ const tools::Long nHeight(std::min(pR->Height(), pW->Height()));
- if(pR && pW)
+ for(tools::Long nY(0); nY < nHeight; nY++)
{
- const tools::Long nWidth(std::min(pR->Width(), pW->Width()));
- const tools::Long nHeight(std::min(pR->Height(), pW->Height()));
-
- for(tools::Long nY(0); nY < nHeight; nY++)
+ Scanline pScanlineR = pR->GetScanline( nY );
+ Scanline pScanlineW = pW->GetScanline( nY );
+ for(tools::Long nX(0); nX < nWidth; nX++)
{
- Scanline pScanlineR = pR->GetScanline( nY );
- Scanline pScanlineW = pW->GetScanline( nY );
- for(tools::Long nX(0); nX < nWidth; nX++)
- {
- const sal_uInt8 nIndR(pR->GetIndexFromData(pScanlineR, nX));
- const sal_uInt8 nIndW(pW->GetIndexFromData(pScanlineW, nX));
+ const sal_uInt8 nIndR(pR->GetIndexFromData(pScanlineR, nX));
+ const sal_uInt8 nIndW(pW->GetIndexFromData(pScanlineW, nX));
- // these values represent transparency (0 == no, 255 == fully transparent),
- // so to blend these we have to multiply the inverse (opacity)
- // and re-invert the result to transparence
- const sal_uInt8 nCombined(0x00ff - (((0x00ff - nIndR) * (0x00ff - nIndW)) >> 8));
+ // these values represent transparency (0 == no, 255 == fully transparent),
+ // so to blend these we have to multiply the inverse (opacity)
+ // and re-invert the result to transparence
+ const sal_uInt8 nCombined(0x00ff - (((0x00ff - nIndR) * (0x00ff - nIndW)) >> 8));
- pW->SetPixelOnData(pScanlineW, nX, BitmapColor(nCombined));
- }
+ pW->SetPixelOnData(pScanlineW, nX, BitmapColor(nCombined));
}
}
-
- pR.reset();
- pW.reset();
- aBmpEx = BitmapEx(aBmpEx.GetBitmap(), fromBmpEx);
}
- else
- {
- // need to blend in Mask quality (1Bit)
- Bitmap aMask(aVDevMask.CreateMask(COL_WHITE));
-
- aMask.CombineSimple( rBitmap.GetMask(), BmpCombine::And );
- aBmpEx = BitmapEx( rBitmap.GetBitmap(), aMask );
- }
+ pR.reset();
+ pW.reset();
+ aBmpEx = BitmapEx(aBmpEx.GetBitmap(), fromBmpEx);
}
else
{
@@ -647,12 +614,6 @@ css::uno::Sequence< sal_Int8 > GetMaskDIB(BitmapEx const & aBmpEx)
WriteDIB(aBmpEx.GetAlpha().GetBitmap(), aMem, false, true);
return css::uno::Sequence< sal_Int8 >( static_cast<sal_Int8 const *>(aMem.GetData()), aMem.Tell() );
}
- else if ( aBmpEx.IsTransparent() )
- {
- SvMemoryStream aMem;
- WriteDIB(aBmpEx.GetMask(), aMem, false, true);
- return css::uno::Sequence< sal_Int8 >( static_cast<sal_Int8 const *>(aMem.GetData()), aMem.Tell() );
- }
return css::uno::Sequence< sal_Int8 >();
}
@@ -712,7 +673,7 @@ void CanvasCairoExtractBitmapData( BitmapEx const & aBmpEx, Bitmap & aBitmap, un
tools::Long nX, nY;
bool bIsAlpha = false;
- if( aBmpEx.IsTransparent() || aBmpEx.IsAlpha() )
+ if( aBmpEx.IsAlpha() )
pAlphaReadAcc = aAlpha.AcquireReadAccess();
data = static_cast<unsigned char*>(malloc( nWidth*nHeight*4 ));
@@ -1007,7 +968,7 @@ void CanvasCairoExtractBitmapData( BitmapEx const & aBmpEx, Bitmap & aBitmap, un
{
bool bRet(false);
- if(!rBitmapEx.IsTransparent())
+ if(!rBitmapEx.IsAlpha())
{
Bitmap aBitmap(rBitmapEx.GetBitmap());
@@ -1162,7 +1123,7 @@ bool convertBitmap32To24Plus8(BitmapEx const & rInput, BitmapEx & rResult)
}
}
}
- if (rInput.IsTransparent())
+ if (rInput.IsAlpha())
rResult = BitmapEx(aResultBitmap, rInput.GetAlpha());
else
rResult = BitmapEx(aResultBitmap, aResultAlpha);
diff --git a/vcl/source/bitmap/bitmapfilter.cxx b/vcl/source/bitmap/bitmapfilter.cxx
index 70d9cdd62dc1..f2020539e04d 100644
--- a/vcl/source/bitmap/bitmapfilter.cxx
+++ b/vcl/source/bitmap/bitmapfilter.cxx
@@ -23,7 +23,7 @@ bool BitmapFilter::Filter(BitmapEx& rBmpEx, BitmapFilter const& rFilter)
if (aTmpBmpEx.IsEmpty())
{
- SAL_WARN("vcl.gdi", "Bitmap filter failed");
+ SAL_WARN("vcl.gdi", "Bitmap filter failed " << typeid(rFilter).name());
return false;
}
diff --git a/vcl/source/bitmap/dibtools.cxx b/vcl/source/bitmap/dibtools.cxx
index f583ca0b332e..407deaeb4f9f 100644
--- a/vcl/source/bitmap/dibtools.cxx
+++ b/vcl/source/bitmap/dibtools.cxx
@@ -1737,7 +1737,7 @@ bool ReadDIBBitmapEx(
{
switch (tmp)
{
- case static_cast<int>(TransparentType::Bitmap):
+ case 2: // TransparentType::Bitmap
{
Bitmap aMask;
@@ -1845,11 +1845,11 @@ bool WriteDIBBitmapEx(
{
rOStm.WriteUInt32( 0x25091962 );
rOStm.WriteUInt32( 0xACB20201 );
- rOStm.WriteUChar( static_cast<unsigned char>(rSource.meTransparent) );
+ rOStm.WriteUChar( rSource.IsAlpha() ? 2 : 0 ); // Used to be TransparentType enum
- if(TransparentType::Bitmap == rSource.meTransparent)
+ if(rSource.IsAlpha())
{
- return ImplWriteDIB(rSource.maMask, rOStm, true, true);
+ return ImplWriteDIB(rSource.maAlphaMask, rOStm, true, true);
}
}
diff --git a/vcl/source/control/ivctrl.cxx b/vcl/source/control/ivctrl.cxx
index 998a44888aee..c96e133a506f 100644
--- a/vcl/source/control/ivctrl.cxx
+++ b/vcl/source/control/ivctrl.cxx
@@ -343,7 +343,7 @@ void SvtIconChoiceCtrl::SetBackground( const Wallpaper& rPaper )
Color aBack( aBackground.GetColor());
if( aBack == COL_TRANSPARENT &&
(!aBackground.IsBitmap() ||
- aBackground.GetBitmap().IsTransparent() ||
+ aBackground.GetBitmap().IsAlpha() ||
(eStyle != WallpaperStyle::Tile && eStyle != WallpaperStyle::Scale)) )
{
aBackground.SetColor( rStyleSettings.GetFieldColor() );
diff --git a/vcl/source/filter/egif/egif.cxx b/vcl/source/filter/egif/egif.cxx
index 79caa7db584b..660ebf95333c 100644
--- a/vcl/source/filter/egif/egif.cxx
+++ b/vcl/source/filter/egif/egif.cxx
@@ -242,7 +242,7 @@ bool GIFWriter::CreateAccess( const BitmapEx& rBmpEx )
{
if( bStatus )
{
- Bitmap aMask( rBmpEx.GetMask() );
+ Bitmap aMask( rBmpEx.GetAlpha() );
aAccBmp = rBmpEx.GetBitmap();
bTransparent = false;
diff --git a/vcl/source/filter/eps/eps.cxx b/vcl/source/filter/eps/eps.cxx
index 567512554c90..fbea39008af9 100644
--- a/vcl/source/filter/eps/eps.cxx
+++ b/vcl/source/filter/eps/eps.cxx
@@ -824,7 +824,7 @@ void PSWriter::ImplWriteActions( const GDIMetaFile& rMtf, VirtualDevice& rVDev )
Bitmap aBitmap( aBitmapEx.GetBitmap() );
if ( mbGrayScale )
aBitmap.Convert( BmpConversion::N8BitGreys );
- Bitmap aMask( aBitmapEx.GetMask() );
+ Bitmap aMask( aBitmapEx.GetAlpha() );
Point aPoint( static_cast<const MetaBmpExAction*>(pMA)->GetPoint() );
Size aSize( rVDev.PixelToLogic( aBitmap.GetSizePixel() ) );
ImplBmp( &aBitmap, &aMask, aPoint, aSize.Width(), aSize.Height() );
@@ -837,7 +837,7 @@ void PSWriter::ImplWriteActions( const GDIMetaFile& rMtf, VirtualDevice& rVDev )
Bitmap aBitmap( aBitmapEx.GetBitmap() );
if ( mbGrayScale )
aBitmap.Convert( BmpConversion::N8BitGreys );
- Bitmap aMask( aBitmapEx.GetMask() );
+ Bitmap aMask( aBitmapEx.GetAlpha() );
Point aPoint = static_cast<const MetaBmpExScaleAction*>(pMA)->GetPoint();
Size aSize( static_cast<const MetaBmpExScaleAction*>(pMA)->GetSize() );
ImplBmp( &aBitmap, &aMask, aPoint, aSize.Width(), aSize.Height() );
@@ -852,7 +852,7 @@ void PSWriter::ImplWriteActions( const GDIMetaFile& rMtf, VirtualDevice& rVDev )
Bitmap aBitmap( aBitmapEx.GetBitmap() );
if ( mbGrayScale )
aBitmap.Convert( BmpConversion::N8BitGreys );
- Bitmap aMask( aBitmapEx.GetMask() );
+ Bitmap aMask( aBitmapEx.GetAlpha() );
Point aPoint = static_cast<const MetaBmpExScalePartAction*>(pMA)->GetDestPoint();
Size aSize = static_cast<const MetaBmpExScalePartAction*>(pMA)->GetDestSize();
ImplBmp( &aBitmap, &aMask, aPoint, aSize.Width(), aSize.Height() );
@@ -904,7 +904,7 @@ void PSWriter::ImplWriteActions( const GDIMetaFile& rMtf, VirtualDevice& rVDev )
{
BitmapEx aBitmapEx = aWallpaper.GetBitmap();
Bitmap aBitmap( aBitmapEx.GetBitmap() );
- if ( aBitmapEx.IsTransparent() )
+ if ( aBitmapEx.IsAlpha() )
{
if ( aWallpaper.IsGradient() )
{
@@ -912,7 +912,7 @@ void PSWriter::ImplWriteActions( const GDIMetaFile& rMtf, VirtualDevice& rVDev )
// gradient action
}
- Bitmap aMask( aBitmapEx.GetMask() );
+ Bitmap aMask( aBitmapEx.GetAlpha() );
ImplBmp( &aBitmap, &aMask, Point( aRect.Left(), aRect.Top() ), aRect.GetWidth(), aRect.GetHeight() );
}
else
diff --git a/vcl/source/filter/graphicfilter.cxx b/vcl/source/filter/graphicfilter.cxx
index 9de2f801c790..b6ebf1d4aace 100644
--- a/vcl/source/filter/graphicfilter.cxx
+++ b/vcl/source/filter/graphicfilter.cxx
@@ -659,8 +659,6 @@ void GraphicFilter::ImportGraphics(std::vector< std::shared_ptr<Graphic> >& rGra
const BitmapEx& rBitmapEx = rContext.m_pGraphic->GetBitmapExRef();
Bitmap& rBitmap = const_cast<Bitmap&>(rBitmapEx.GetBitmap());
rContext.m_pAccess = std::make_unique<BitmapScopedWriteAccess>(rBitmap);
- // The png reader either uses only Bitmap or Bitmap+AlphaMask.
- assert(rBitmapEx.IsAlpha() || !rBitmapEx.IsTransparent());
if(rBitmapEx.IsAlpha())
{
// The separate alpha bitmap causes a number of complications. Not only
diff --git a/vcl/source/filter/png/pngwrite.cxx b/vcl/source/filter/png/pngwrite.cxx
index 379c805f313b..0554a314e83c 100644
--- a/vcl/source/filter/png/pngwrite.cxx
+++ b/vcl/source/filter/png/pngwrite.cxx
@@ -40,7 +40,6 @@
#define PNGCHUNK_IDAT 0x49444154
#define PNGCHUNK_IEND 0x49454e44
#define PNGCHUNK_pHYs 0x70485973
-#define PNGCHUNK_tRNS 0x74524e53
namespace vcl
{
@@ -83,7 +82,6 @@ private:
void ImplWriteIDAT();
sal_uLong ImplGetFilter(sal_uLong nY, sal_uLong nXStart = 0, sal_uLong nXAdd = 1);
void ImplClearFirstScanline();
- void ImplWriteTransparent();
bool ImplWriteHeader();
void ImplWritePalette();
void ImplOpenChunk(sal_uLong nChunkType);
@@ -144,86 +142,39 @@ PNGWriterImpl::PNGWriterImpl(const BitmapEx& rBitmapEx,
}
mnBitsPerPixel = sal_uInt8(vcl::pixelFormatBitCount(aBmp.getPixelFormat()));
- if (aBitmapEx.IsTransparent())
+ if (aBitmapEx.IsAlpha())
{
- if (mnBitsPerPixel <= 8 && aBitmapEx.IsAlpha())
+ if (mnBitsPerPixel <= 8)
{
aBmp.Convert(BmpConversion::N24Bit);
mnBitsPerPixel = 24;
}
- if (mnBitsPerPixel <= 8) // transparent palette
+ mpAccess = Bitmap::ScopedReadAccess(aBmp); // true RGB with alphachannel
+ if (mpAccess)
{
- aBmp.Convert(BmpConversion::N8BitTrans);
- aBmp.Replace(aBitmapEx.GetMask(), BMP_COL_TRANS);
- mnBitsPerPixel = 8;
- mpAccess = Bitmap::ScopedReadAccess(aBmp);
- if (mpAccess)
+ mbTrueAlpha = true;
+ AlphaMask aMask(aBitmapEx.GetAlpha());
+ mpMaskAccess = aMask.AcquireReadAccess();
+ if (mpMaskAccess)
{
if (ImplWriteHeader())
{
ImplWritepHYs(aBitmapEx);
- ImplWritePalette();
- ImplWriteTransparent();
ImplWriteIDAT();
}
- mpAccess.reset();
+ aMask.ReleaseAccess(mpMaskAccess);
+ mpMaskAccess = nullptr;
}
else
{
mbStatus = false;
}
+ mpAccess.reset();
}
else
{
- mpAccess = Bitmap::ScopedReadAccess(aBmp); // true RGB with alphachannel
- if (mpAccess)
- {
- mbTrueAlpha = aBitmapEx.IsAlpha();
- if (mbTrueAlpha)
- {
- AlphaMask aMask(aBitmapEx.GetAlpha());
- mpMaskAccess = aMask.AcquireReadAccess();
- if (mpMaskAccess)
- {
- if (ImplWriteHeader())
- {
- ImplWritepHYs(aBitmapEx);
- ImplWriteIDAT();
- }
- aMask.ReleaseAccess(mpMaskAccess);
- mpMaskAccess = nullptr;
- }
- else
- {
- mbStatus = false;
- }
- }
- else
- {
- Bitmap aMask(aBitmapEx.GetMask());
- mpMaskAccess = aMask.AcquireReadAccess();
- if (mpMaskAccess)
- {
- if (ImplWriteHeader())
- {
- ImplWritepHYs(aBitmapEx);
- ImplWriteIDAT();
- }
- Bitmap::ReleaseAccess(mpMaskAccess);
- mpMaskAccess = nullptr;
- }
- else
- {
- mbStatus = false;
- }
- }
- mpAccess.reset();
- }
- else
- {
- mbStatus = false;
- }
+ mbStatus = false;
}
}
else
@@ -339,19 +290,6 @@ void PNGWriterImpl::ImplWritePalette()
ImplWriteChunk(pTempBuf.get(), nCount * 3);
}
-void PNGWriterImpl::ImplWriteTransparent()
-{
- const sal_uLong nTransIndex = mpAccess->GetBestPaletteIndex(BMP_COL_TRANS);
-
- ImplOpenChunk(PNGCHUNK_tRNS);
-
- for (sal_uLong n = 0; n <= nTransIndex; n++)
- {
- ImplWriteChunk((nTransIndex == n) ? static_cast<sal_uInt8>(0x0)
- : static_cast<sal_uInt8>(0xff));
- }
-}
-
void PNGWriterImpl::ImplWritepHYs(const BitmapEx& rBmpEx)
{
if (rBmpEx.GetPrefMapMode().GetMapUnit() != MapUnit::Map100thMM)
diff --git a/vcl/source/filter/wmf/emfwr.cxx b/vcl/source/filter/wmf/emfwr.cxx
index 432af89ee774..9776de87e182 100644
--- a/vcl/source/filter/wmf/emfwr.cxx
+++ b/vcl/source/filter/wmf/emfwr.cxx
@@ -1289,7 +1289,7 @@ void EMFWriter::ImplWrite( const GDIMetaFile& rMtf )
{
const MetaBmpExAction* pA = static_cast<const MetaBmpExAction *>(pAction);
Bitmap aBmp( pA->GetBitmapEx().GetBitmap() );
- Bitmap aMsk( pA->GetBitmapEx().GetMask() );
+ Bitmap aMsk( pA->GetBitmapEx().GetAlpha() );
if( !aMsk.IsEmpty() )
{
@@ -1307,7 +1307,7 @@ void EMFWriter::ImplWrite( const GDIMetaFile& rMtf )
{
const MetaBmpExScaleAction* pA = static_cast<const MetaBmpExScaleAction*>(pAction);
Bitmap aBmp( pA->GetBitmapEx().GetBitmap() );
- Bitmap aMsk( pA->GetBitmapEx().GetMask() );
+ Bitmap aMsk( pA->GetBitmapEx().GetAlpha() );
if( !aMsk.IsEmpty() )
{
@@ -1327,7 +1327,7 @@ void EMFWriter::ImplWrite( const GDIMetaFile& rMtf )
BitmapEx aBmpEx( pA->GetBitmapEx() );
aBmpEx.Crop( tools::Rectangle( pA->GetSrcPoint(), pA->GetSrcSize() ) );
Bitmap aBmp( aBmpEx.GetBitmap() );
- Bitmap aMsk( aBmpEx.GetMask() );
+ Bitmap aMsk( aBmpEx.GetAlpha() );
if( !aMsk.IsEmpty() )
{
diff --git a/vcl/source/filter/wmf/wmfwr.cxx b/vcl/source/filter/wmf/wmfwr.cxx
index efb1c56403ac..2fa1a0839d38 100644
--- a/vcl/source/filter/wmf/wmfwr.cxx
+++ b/vcl/source/filter/wmf/wmfwr.cxx
@@ -1245,7 +1245,7 @@ void WMFWriter::WriteRecords( const GDIMetaFile & rMTF )
{
const MetaBmpExAction* pA = static_cast<const MetaBmpExAction *>(pMA);
Bitmap aBmp( pA->GetBitmapEx().GetBitmap() );
- Bitmap aMsk( pA->GetBitmapEx().GetMask() );
+ Bitmap aMsk( pA->GetBitmapEx().GetAlpha() );
if( !aMsk.IsEmpty() )
{
@@ -1263,7 +1263,7 @@ void WMFWriter::WriteRecords( const GDIMetaFile & rMTF )
{
const MetaBmpExScaleAction* pA = static_cast<const MetaBmpExScaleAction*>(pMA);
Bitmap aBmp( pA->GetBitmapEx().GetBitmap() );
- Bitmap aMsk( pA->GetBitmapEx().GetMask() );
+ Bitmap aMsk( pA->GetBitmapEx().GetAlpha() );
if( !aMsk.IsEmpty() )
{
@@ -1283,7 +1283,7 @@ void WMFWriter::WriteRecords( const GDIMetaFile & rMTF )
BitmapEx aBmpEx( pA->GetBitmapEx() );
aBmpEx.Crop( tools::Rectangle( pA->GetSrcPoint(), pA->GetSrcSize() ) );
Bitmap aBmp( aBmpEx.GetBitmap() );
- Bitmap aMsk( aBmpEx.GetMask() );
+ Bitmap aMsk( aBmpEx.GetAlpha() );
if( !aMsk.IsEmpty() )
{
diff --git a/vcl/source/gdi/gdimetafiletools.cxx b/vcl/source/gdi/gdimetafiletools.cxx
index e0b96a6ba5ce..9b3e26afb331 100644
--- a/vcl/source/gdi/gdimetafiletools.cxx
+++ b/vcl/source/gdi/gdimetafiletools.cxx
@@ -171,7 +171,7 @@ namespace
aVDev->SetFillColor( COL_WHITE);
aVDev->SetLineColor();
- if(rBitmapEx.IsTransparent())
+ if(rBitmapEx.IsAlpha())
{
// use given alpha channel
aVDev->DrawBitmap(Point(0, 0), rBitmapEx.GetAlpha().GetBitmap());
diff --git a/vcl/source/gdi/gdimtf.cxx b/vcl/source/gdi/gdimtf.cxx
index 2856ecaed18e..a31f8e768ece 100644
--- a/vcl/source/gdi/gdimtf.cxx
+++ b/vcl/source/gdi/gdimtf.cxx
@@ -1780,8 +1780,6 @@ BitmapEx GDIMetaFile::ImplBmpMonoFnc( const BitmapEx& rBmpEx, const void* pBmpPa
if( rBmpEx.IsAlpha() )
return BitmapEx( aBmp, rBmpEx.GetAlpha() );
- else if( rBmpEx.IsTransparent() )
- return BitmapEx( aBmp, rBmpEx.GetMask() );
else
return BitmapEx( aBmp );
}
diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx
index b06423adbe3e..91f2bca31189 100644
--- a/vcl/source/gdi/impgraph.cxx
+++ b/vcl/source/gdi/impgraph.cxx
@@ -466,7 +466,7 @@ bool ImpGraphic::isTransparent() const
}
else if (meType == GraphicType::Bitmap && !maVectorGraphicData)
{
- bRet = mpAnimation ? mpAnimation->IsTransparent() : maBitmapEx.IsTransparent();
+ bRet = mpAnimation ? mpAnimation->IsTransparent() : maBitmapEx.IsAlpha();
}
return bRet;
@@ -741,7 +741,7 @@ const GDIMetaFile& ImpGraphic::getGDIMetaFile() const
// #123983# directly create a metafile with the same PrefSize and PrefMapMode
// the bitmap has, this will be an always correct metafile
- if(maBitmapEx.IsTransparent())
+ if(maBitmapEx.IsAlpha())
{
pThat->maMetaFile.AddAction(new MetaBmpExScaleAction(Point(), maBitmapEx.GetPrefSize(), maBitmapEx));
}
diff --git a/vcl/source/gdi/mtfxmldump.cxx b/vcl/source/gdi/mtfxmldump.cxx
index 373eb2b20a69..d612898e6c8c 100644
--- a/vcl/source/gdi/mtfxmldump.cxx
+++ b/vcl/source/gdi/mtfxmldump.cxx
@@ -331,14 +331,12 @@ OString convertLineStyleToString(const MetaActionType nActionType)
return "";
}
-OUString convertBitmapExTransparentType(TransparentType eType)
+OUString convertBitmapExTransparentType(BitmapEx const & rBitmapEx)
{
- switch (eType)
- {
- default:
- case TransparentType::NONE: return "none";
- case TransparentType::Bitmap: return "bitmap";
- }
+ if (rBitmapEx.IsAlpha())
+ return "bitmap";
+ else
+ return "none";
}
OUString convertMapUnitToString(MapUnit eUnit)
@@ -856,7 +854,7 @@ void MetafileXmlDump::writeXml(const GDIMetaFile& rMetaFile, tools::XmlWriter& r
rWriter.startElement(sCurrentElementTag);
writePoint(rWriter, pMeta->GetPoint());
rWriter.attribute("crc", hex32(pMeta->GetBitmapEx().GetBitmap().GetChecksum()));
- rWriter.attribute("transparenttype", convertBitmapExTransparentType(pMeta->GetBitmapEx().GetTransparentType()));
+ rWriter.attribute("transparenttype", convertBitmapExTransparentType(pMeta->GetBitmapEx()));
rWriter.endElement();
}
break;
@@ -868,7 +866,7 @@ void MetafileXmlDump::writeXml(const GDIMetaFile& rMetaFile, tools::XmlWriter& r
writePoint(rWriter, pMeta->GetPoint());
writeSize(rWriter, pMeta->GetSize());
rWriter.attribute("crc", hex32(pMeta->GetBitmapEx().GetBitmap().GetChecksum()));
- rWriter.attribute("transparenttype", convertBitmapExTransparentType(pMeta->GetBitmapEx().GetTransparentType()));
+ rWriter.attribute("transparenttype", convertBitmapExTransparentType(pMeta->GetBitmapEx()));
rWriter.endElement();
}
break;
@@ -886,7 +884,7 @@ void MetafileXmlDump::writeXml(const GDIMetaFile& rMetaFile, tools::XmlWriter& r
rWriter.attribute("srcwidth", pMeta->GetSrcSize().Width());
rWriter.attribute("srcheight", pMeta->GetSrcSize().Height());
rWriter.attribute("crc", hex32(pMeta->GetBitmapEx().GetBitmap().GetChecksum()));
- rWriter.attribute("transparenttype", convertBitmapExTransparentType(pMeta->GetBitmapEx().GetTransparentType()));
+ rWriter.attribute("transparenttype", convertBitmapExTransparentType(pMeta->GetBitmapEx()));
rWriter.endElement();
}
break;
@@ -1002,7 +1000,7 @@ void MetafileXmlDump::writeXml(const GDIMetaFile& rMetaFile, tools::XmlWriter& r
rWriter.startElement("bitmap");
BitmapEx const & rBitmapEx = rWallpaper.GetBitmap();
rWriter.attribute("crc", hex32(rBitmapEx.GetChecksum()));
- rWriter.attribute("transparenttype", convertBitmapExTransparentType(rBitmapEx.GetTransparentType()));
+ rWriter.attribute("transparenttype", convertBitmapExTransparentType(rBitmapEx));
rWriter.attribute("pixelformat", convertPixelFormatToString(rBitmapEx.GetBitmap().getPixelFormat()));
rWriter.attribute("width", hex32(rBitmapEx.GetSizePixel().Width()));
rWriter.attribute("height", hex32(rBitmapEx.GetSizePixel().Height()));
diff --git a/vcl/source/gdi/pdfextoutdevdata.cxx b/vcl/source/gdi/pdfextoutdevdata.cxx
index fc431c7e65a2..96a77a15d94d 100644
--- a/vcl/source/gdi/pdfextoutdevdata.cxx
+++ b/vcl/source/gdi/pdfextoutdevdata.cxx
@@ -451,12 +451,11 @@ bool PageSyncData::PlaySyncPageAct( PDFWriter& rWriter, sal_uInt32& rCurGDIMtfAc
rWriter.SetClipRegion( aRect);
}
- Bitmap aMask;
+ AlphaMask aAlphaMask;
if (nTransparency)
{
- AlphaMask aAlphaMask(aGraphic.GetSizePixel());
+ aAlphaMask = AlphaMask(aGraphic.GetSizePixel());
aAlphaMask.Erase(nTransparency);
- aMask = aAlphaMask.GetBitmap();
}
SvMemoryStream aTmp;
@@ -483,7 +482,7 @@ bool PageSyncData::PlaySyncPageAct( PDFWriter& rWriter, sal_uInt32& rCurGDIMtfAc
}
}
auto ePixelFormat = aGraphic.GetBitmapEx().getPixelFormat();
- rWriter.DrawJPGBitmap(aTmp, ePixelFormat > vcl::PixelFormat::N8_BPP, aGraphic.GetSizePixel(), aOutputRect, aMask, aGraphic);
+ rWriter.DrawJPGBitmap(aTmp, ePixelFormat > vcl::PixelFormat::N8_BPP, aGraphic.GetSizePixel(), aOutputRect, aAlphaMask, aGraphic);
}
if ( bClippingNeeded )
diff --git a/vcl/source/gdi/pdfwriter.cxx b/vcl/source/gdi/pdfwriter.cxx
index ab7a03cb205c..53609379bca8 100644
--- a/vcl/source/gdi/pdfwriter.cxx
+++ b/vcl/source/gdi/pdfwriter.cxx
@@ -323,9 +323,9 @@ void PDFWriter::SetTextAlign( ::TextAlign eAlign )
xImplementation->setTextAlign( eAlign );
}
-void PDFWriter::DrawJPGBitmap( SvStream& rStreamData, bool bIsTrueColor, const Size& rSrcSizePixel, const tools::Rectangle& rTargetArea, const Bitmap& rMask, const Graphic& rGraphic )
+void PDFWriter::DrawJPGBitmap( SvStream& rStreamData, bool bIsTrueColor, const Size& rSrcSizePixel, const tools::Rectangle& rTargetArea, const AlphaMask& rAlphaMask, const Graphic& rGraphic )
{
- xImplementation->drawJPGBitmap( rStreamData, bIsTrueColor, rSrcSizePixel, rTargetArea, rMask, rGraphic );
+ xImplementation->drawJPGBitmap( rStreamData, bIsTrueColor, rSrcSizePixel, rTargetArea, rAlphaMask, rGraphic );
}
sal_Int32 PDFWriter::CreateLink( const tools::Rectangle& rRect, sal_Int32 nPageNr )
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx
index ad9c1e0935e4..99918b8df1b1 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -1735,7 +1735,7 @@ void PDFWriterImpl::endPage()
{
writeJPG( jpeg );
jpeg.m_pStream.reset();
- jpeg.m_aMask = Bitmap();
+ jpeg.m_aAlphaMask = AlphaMask();
}
}
for (auto & item : m_aTransparentObjects)
@@ -8368,12 +8368,10 @@ void PDFWriterImpl::writeJPG( JPGEmit& rObject )
rObject.m_pStream->Seek( STREAM_SEEK_TO_BEGIN );
sal_Int32 nMaskObject = 0;
- if( !rObject.m_aMask.IsEmpty() )
+ if( !rObject.m_aAlphaMask.IsEmpty() )
{
- if (rObject.m_aMask.getPixelFormat() == vcl::PixelFormat::N1_BPP
- || (rObject.m_aMask.getPixelFormat() == vcl::PixelFormat::N8_BPP
- && m_aContext.Version >= PDFWriter::PDFVersion::PDF_1_4
- && !m_bIsPDF_A1))
+ if (m_aContext.Version >= PDFWriter::PDFVersion::PDF_1_4
+ && !m_bIsPDF_A1)
{
nMaskObject = createObject();
}
@@ -8404,7 +8402,7 @@ void PDFWriterImpl::writeJPG( JPGEmit& rObject )
aLine.append( nLength );
if( nMaskObject )
{
- aLine.append(rObject.m_aMask.getPixelFormat() == vcl::PixelFormat::N1_BPP ? " /Mask " : " /SMask ");
+ aLine.append(" /SMask ");
aLine.append( nMaskObject );
aLine.append( " 0 R " );
}
@@ -8423,10 +8421,7 @@ void PDFWriterImpl::writeJPG( JPGEmit& rObject )
{
BitmapEmit aEmit;
aEmit.m_nObject = nMaskObject;
- if (rObject.m_aMask.getPixelFormat() == vcl::PixelFormat::N1_BPP)
- aEmit.m_aBitmap = BitmapEx( rObject.m_aMask, rObject.m_aMask );
- else if(rObject.m_aMask.getPixelFormat() == vcl::PixelFormat::N8_BPP)
- aEmit.m_aBitmap = BitmapEx( rObject.m_aMask, AlphaMask( rObject.m_aMask ) );
+ aEmit.m_aBitmap = BitmapEx( rObject.m_aAlphaMask, rObject.m_aAlphaMask );
writeBitmapObject( aEmit, true );
}
@@ -8708,23 +8703,12 @@ bool PDFWriterImpl::writeBitmapObject( BitmapEmit& rObject, bool bMask )
bWriteMask = true;
// else draw without alpha channel
}
- else
- {
- switch( rObject.m_aBitmap.GetTransparentType() )
- {
- case TransparentType::NONE:
- break;
- case TransparentType::Bitmap:
- bWriteMask = true;
- break;
- }
- }
}
else
{
if( m_aContext.Version < PDFWriter::PDFVersion::PDF_1_4 || ! rObject.m_aBitmap.IsAlpha() )
{
- aBitmap = getExportBitmap(rObject.m_aBitmap.GetMask());
+ aBitmap = getExportBitmap(rObject.m_aBitmap.GetAlpha());
aBitmap.Convert( BmpConversion::N1BitThreshold );
SAL_WARN_IF(aBitmap.getPixelFormat() != vcl::PixelFormat::N1_BPP, "vcl.pdfwriter", "mask conversion failed" );
}
@@ -9003,7 +8987,7 @@ void PDFWriterImpl::createEmbeddedFile(const Graphic& rGraphic, ReferenceXObject
rEmit.m_aPixelSize = rGraphic.GetPrefSize();
}
-void PDFWriterImpl::drawJPGBitmap( SvStream& rDCTData, bool bIsTrueColor, const Size& rSizePixel, const tools::Rectangle& rTargetArea, const Bitmap& rMask, const Graphic& rGraphic )
+void PDFWriterImpl::drawJPGBitmap( SvStream& rDCTData, bool bIsTrueColor, const Size& rSizePixel, const tools::Rectangle& rTargetArea, const AlphaMask& rAlphaMask, const Graphic& rGraphic )
{
MARK( "drawJPGBitmap" );
@@ -9023,10 +9007,10 @@ void PDFWriterImpl::drawJPGBitmap( SvStream& rDCTData, bool bIsTrueColor, const
// load stream to bitmap and draw the bitmap instead
Graphic aGraphic;
GraphicConverter::Import( rDCTData, aGraphic, ConvertDataFormat::JPG );
- if( !rMask.IsEmpty() && rMask.GetSizePixel() == aGraphic.GetSizePixel() )
+ if( !rAlphaMask.IsEmpty() && rAlphaMask.GetSizePixel() == aGraphic.GetSizePixel() )
{
Bitmap aBmp( aGraphic.GetBitmapEx().GetBitmap() );
- BitmapEx aBmpEx( aBmp, rMask );
+ BitmapEx aBmpEx( aBmp, rAlphaMask );
drawBitmap( rTargetArea.TopLeft(), rTargetArea.GetSize(), aBmpEx );
}
else
@@ -9043,8 +9027,8 @@ void PDFWriterImpl::drawJPGBitmap( SvStream& rDCTData, bool bIsTrueColor, const
aID.m_nSize = pStream->Tell();
pStream->Seek( STREAM_SEEK_TO_BEGIN );
aID.m_nChecksum = vcl_get_checksum( 0, pStream->GetData(), aID.m_nSize );
- if( ! rMask.IsEmpty() )
- aID.m_nMaskChecksum = rMask.GetChecksum();
+ if( ! rAlphaMask.IsEmpty() )
+ aID.m_nMaskChecksum = rAlphaMask.GetChecksum();
std::vector< JPGEmit >::const_iterator it = std::find_if(m_aJPGs.begin(), m_aJPGs.end(),
[&](const JPGEmit& arg) { return aID == arg.m_aID; });
@@ -9057,8 +9041,8 @@ void PDFWriterImpl::drawJPGBitmap( SvStream& rDCTData, bool bIsTrueColor, const
rEmit.m_aID = aID;
rEmit.m_pStream = std::move( pStream );
rEmit.m_bTrueColor = bIsTrueColor;
- if( !rMask.IsEmpty() && rMask.GetSizePixel() == rSizePixel )
- rEmit.m_aMask = rMask;
+ if( !rAlphaMask.IsEmpty() && rAlphaMask.GetSizePixel() == rSizePixel )
+ rEmit.m_aAlphaMask = rAlphaMask;
createEmbeddedFile(rGraphic, rEmit.m_aReferenceXObject, rEmit.m_nObject);
it = m_aJPGs.begin();
@@ -9140,12 +9124,6 @@ const BitmapEmit& PDFWriterImpl::createBitmapEmit( const BitmapEx& i_rBitmap, co
aID.m_nMaskChecksum = 0;
if( aBitmap.IsAlpha() )
aID.m_nMaskChecksum = aBitmap.GetAlpha().GetChecksum();
- else
- {
- Bitmap aMask = aBitmap.GetMask();
- if( ! aMask.IsEmpty() )
- aID.m_nMaskChecksum = aMask.GetChecksum();
- }
std::list< BitmapEmit >::const_iterator it = std::find_if(m_aBitmaps.begin(), m_aBitmaps.end(),
[&](const BitmapEmit& arg) { return aID == arg.m_aID; });
if( it == m_aBitmaps.end() )
@@ -9412,7 +9390,7 @@ void PDFWriterImpl::drawWallpaper( const tools::Rectangle& rRect, const Wallpape
bDrawBitmap = true;
}
- if( aBitmap.IsTransparent() )
+ if( aBitmap.IsAlpha() )
{
if( rWall.IsGradient() )
bDrawGradient = true;
diff --git a/vcl/source/gdi/pdfwriter_impl.hxx b/vcl/source/gdi/pdfwriter_impl.hxx
index 6280fc5ec11f..d49add8e8f71 100644
--- a/vcl/source/gdi/pdfwriter_impl.hxx
+++ b/vcl/source/gdi/pdfwriter_impl.hxx
@@ -230,7 +230,7 @@ struct JPGEmit
BitmapID m_aID;
std::unique_ptr<SvMemoryStream>
m_pStream;
- Bitmap m_aMask;
+ AlphaMask m_aAlphaMask;
sal_Int32 m_nObject;
bool m_bTrueColor;
ReferenceXObjectEmit m_aReferenceXObject;
@@ -1204,7 +1204,7 @@ public:
void drawBitmap( const Point& rDestPoint, const Size& rDestSize, const Bitmap& rBitmap, const Graphic& rGraphic );
void drawBitmap( const Point& rDestPoint, const Size& rDestSize, const BitmapEx& rBitmap );
- void drawJPGBitmap( SvStream& rDCTData, bool bIsTrueColor, const Size& rSizePixel, const tools::Rectangle& rTargetArea, const Bitmap& rMask, const Graphic& rGraphic );
+ void drawJPGBitmap( SvStream& rDCTData, bool bIsTrueColor, const Size& rSizePixel, const tools::Rectangle& rTargetArea, const AlphaMask& rAlphaMask, const Graphic& rGraphic );
/// Stores the original PDF data from rGraphic as an embedded file.
void createEmbeddedFile(const Graphic& rGraphic, ReferenceXObjectEmit& rEmit, sal_Int32 nBitmapObject);
diff --git a/vcl/source/gdi/pdfwriter_impl2.cxx b/vcl/source/gdi/pdfwriter_impl2.cxx
index a0a4fb828995..878915e650c7 100644
--- a/vcl/source/gdi/pdfwriter_impl2.cxx
+++ b/vcl/source/gdi/pdfwriter_impl2.cxx
@@ -172,21 +172,21 @@ void PDFWriterImpl::implWriteBitmapEx( const Point& i_rPoint, const Size& i_rSiz
bUseJPGCompression = false;
auto pStrm=std::make_shared<SvMemoryStream>();
- Bitmap aMask;
+ AlphaMask aAlphaMask;
bool bTrueColorJPG = true;
if ( bUseJPGCompression )
{
// TODO this checks could be done much earlier, saving us
// from trying conversion & stores before...
- if ( !aBitmapEx.IsTransparent() )
+ if ( !aBitmapEx.IsAlpha() )
{
const auto& rCacheEntry=m_aPDFBmpCache.find(
aBitmapEx.GetChecksum());
if ( rCacheEntry != m_aPDFBmpCache.end() )
{
m_rOuterFace.DrawJPGBitmap( *rCacheEntry->second, true, aSizePixel,
- tools::Rectangle( aPoint, aSize ), aMask, i_Graphic );
+ tools::Rectangle( aPoint, aSize ), aAlphaMask, i_Graphic );
return;
}
}
@@ -199,13 +199,8 @@ void PDFWriterImpl::implWriteBitmapEx( const Point& i_rPoint, const Size& i_rSiz
WriteDIBBitmapEx(aBitmapEx, aTemp); // is capable of zlib stream compression
nZippedFileSize = aTemp.TellEnd();
}
- if ( aBitmapEx.IsTransparent() )
- {
- if ( aBitmapEx.IsAlpha() )
- aMask = aBitmapEx.GetAlpha().GetBitmap();
- else
- aMask = aBitmapEx.GetMask();
- }
+ if ( aBitmapEx.IsAlpha() )
+ aAlphaMask = aBitmapEx.GetAlpha();
Graphic aGraphic(BitmapEx(aBitmapEx.GetBitmap()));
Sequence< PropertyValue > aFilterData( 2 );
@@ -261,15 +256,15 @@ void PDFWriterImpl::implWriteBitmapEx( const Point& i_rPoint, const Size& i_rSiz
}
if ( bUseJPGCompression )
{
- m_rOuterFace.DrawJPGBitmap( *pStrm, bTrueColorJPG, aSizePixel, tools::Rectangle( aPoint, aSize ), aMask, i_Graphic );
- if (!aBitmapEx.IsTransparent() && bTrueColorJPG)
+ m_rOuterFace.DrawJPGBitmap( *pStrm, bTrueColorJPG, aSizePixel, tools::Rectangle( aPoint, aSize ), aAlphaMask, i_Graphic );
+ if (!aBitmapEx.IsAlpha() && bTrueColorJPG)
{
// Cache last jpeg export
m_aPDFBmpCache.insert(
{aBitmapEx.GetChecksum(), pStrm});
}
}
- else if ( aBitmapEx.IsTransparent() )
+ else if ( aBitmapEx.IsAlpha() )
m_rOuterFace.DrawBitmapEx( aPoint, aSize, aBitmapEx );
else
m_rOuterFace.DrawBitmap( aPoint, aSize, aBitmapEx.GetBitmap(), i_Graphic );
diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx
index e88592f225a5..d7928956e9bd 100644
--- a/vcl/source/gdi/print.cxx
+++ b/vcl/source/gdi/print.cxx
@@ -307,9 +307,8 @@ void Printer::DrawDeviceBitmap( const Point& rDestPt, const Size& rDestSize,
}
else
{
- Bitmap aBmp( rBmpEx.GetBitmap() ), aMask( rBmpEx.GetMask() );
- aBmp.Replace( aMask, COL_WHITE );
- ImplPrintTransparent( aBmp, aMask, rDestPt, rDestSize, rSrcPtPixel, rSrcSizePixel );
+ Bitmap aBmp( rBmpEx.GetBitmap() );
+ ImplPrintTransparent( aBmp, Bitmap(), rDestPt, rDestSize, rSrcPtPixel, rSrcSizePixel );
}
}
diff --git a/vcl/source/gdi/print2.cxx b/vcl/source/gdi/print2.cxx
index f7e4d8875341..3526d9017cb5 100644
--- a/vcl/source/gdi/print2.cxx
+++ b/vcl/source/gdi/print2.cxx
@@ -186,37 +186,7 @@ void ImplConvertTransparentAction( GDIMetaFile& o_rMtf,
}
Bitmap aBmp(aBmpEx.GetBitmap());
- if (!aBmpEx.IsAlpha())
- {
- // blend with mask
- Bitmap::ScopedReadAccess pRA(aBmp);
-
- if (!pRA)
- return; // what else should I do?
-
- Color aActualColor(aBgColor);
-
- if (pRA->HasPalette())
- aActualColor = pRA->GetBestPaletteColor(aBgColor);
-
- pRA.reset();
-
- // did we get true white?
- if (aActualColor.GetColorError(aBgColor))
- {
- // no, create truecolor bitmap, then
- aBmp.Convert(BmpConversion::N24Bit);
-
- // fill masked out areas white
- aBmp.Replace(aBmpEx.GetMask(), aBgColor);
- }
- else
- {
- // fill masked out areas white
- aBmp.Replace(aBmpEx.GetMask(), aActualColor);
- }
- }
- else
+ if (aBmpEx.IsAlpha())
{
// blend with alpha channel
aBmp.Convert(BmpConversion::N24Bit);
diff --git a/vcl/source/graphic/GraphicID.cxx b/vcl/source/graphic/GraphicID.cxx
index a27485da29aa..61cdee3c2ede 100644
--- a/vcl/source/graphic/GraphicID.cxx
+++ b/vcl/source/graphic/GraphicID.cxx
@@ -55,9 +55,7 @@ GraphicID::GraphicID(ImpGraphic const& rGraphic)
{
const BitmapEx aBmpEx(rGraphic.getBitmapEx(GraphicConversionParameters()));
- mnID1 |= (((static_cast<sal_uLong>(aBmpEx.GetTransparentType()) << 8)
- | (aBmpEx.IsAlpha() ? 1 : 0))
- & 0x0fffffff);
+ mnID1 |= aBmpEx.IsAlpha() ? 1 : 0;
mnID2 = aBmpEx.GetSizePixel().Width();
mnID3 = aBmpEx.GetSizePixel().Height();
mnID4 = rGraphic.getChecksum();
diff --git a/vcl/source/graphic/GraphicObject2.cxx b/vcl/source/graphic/GraphicObject2.cxx
index b9ac81baf1d1..e5b994f72b83 100644
--- a/vcl/source/graphic/GraphicObject2.cxx
+++ b/vcl/source/graphic/GraphicObject2.cxx
@@ -310,7 +310,7 @@ bool GraphicObject::ImplDrawTiled( OutputDevice* pOut, const tools::Rectangle& r
if( GetGraphic().IsAlpha() )
aAlphaGraphic.SetGraphic(BitmapEx(GetGraphic().GetBitmapEx().GetAlpha().GetBitmap()));
else
- aAlphaGraphic.SetGraphic(BitmapEx(GetGraphic().GetBitmapEx().GetMask()));
+ aAlphaGraphic.SetGraphic(BitmapEx(Bitmap()));
if( aAlphaGraphic.ImplRenderTempTile( *aVDev, nNumTilesInCacheX,
nNumTilesInCacheY, rSizePixel, pAttr ) )
@@ -455,17 +455,14 @@ void GraphicObject::ImplTransformBitmap( BitmapEx& rBmpEx,
BitmapEx aBmpEx2;
- if( rBmpEx.IsTransparent() )
+ if( rBmpEx.IsAlpha() )
{
- if( rBmpEx.IsAlpha() )
- aBmpEx2 = BitmapEx( rBmpEx.GetBitmap(), rBmpEx.GetAlpha() );
- else
- aBmpEx2 = BitmapEx( rBmpEx.GetBitmap(), rBmpEx.GetMask() );
+ aBmpEx2 = BitmapEx( rBmpEx.GetBitmap(), rBmpEx.GetAlpha() );
}
else
{
// #104115# Generate mask bitmap and init to zero
- Bitmap aMask(aBmpSize, vcl::PixelFormat::N1_BPP);
+ Bitmap aMask(aBmpSize, vcl::PixelFormat::N8_BPP, &Bitmap::GetGreyPalette(256));
aMask.Erase( Color(0,0,0) );
// #104115# Always generate transparent bitmap, we need the border transparent
diff --git a/vcl/source/graphic/UnoGraphic.cxx b/vcl/source/graphic/UnoGraphic.cxx
index eeda9d2a38c8..fa882a2c5917 100644
--- a/vcl/source/graphic/UnoGraphic.cxx
+++ b/vcl/source/graphic/UnoGraphic.cxx
@@ -171,7 +171,7 @@ uno::Sequence<sal_Int8> SAL_CALL Graphic::getMaskDIB()
{
SvMemoryStream aMemoryStream;
- WriteDIB(maGraphic.GetBitmapEx().GetMask(), aMemoryStream, false, true);
+ WriteDIB(maGraphic.GetBitmapEx().GetAlpha(), aMemoryStream, false, true);
return css::uno::Sequence<sal_Int8>( static_cast<sal_Int8 const *>(aMemoryStream.GetData()), aMemoryStream.Tell() );
}
else
diff --git a/vcl/source/graphic/UnoGraphicTransformer.cxx b/vcl/source/graphic/UnoGraphicTransformer.cxx
index 100e37b29a92..0edeaddb0213 100644
--- a/vcl/source/graphic/UnoGraphicTransformer.cxx
+++ b/vcl/source/graphic/UnoGraphicTransformer.cxx
@@ -59,7 +59,6 @@ uno::Reference< graphic::XGraphic > SAL_CALL GraphicTransformer::colorChange(
aGraphic.GetType() == GraphicType::GdiMetafile)
{
BitmapEx aBitmapEx(aGraphic.GetBitmapEx());
- Bitmap aBitmap(aBitmapEx.GetBitmap());
if (aBitmapEx.IsAlpha())
{
@@ -67,27 +66,11 @@ uno::Reference< graphic::XGraphic > SAL_CALL GraphicTransformer::colorChange(
aBitmapEx.Replace(aColorFrom, aColorTo, nTolerance);
aReturnGraphic = ::Graphic(aBitmapEx);
}
- else if (aBitmapEx.IsTransparent())
- {
- if (nAlphaTo == sal::static_int_cast< sal_Int8 >(0xff))
- {
- Bitmap aMask(aBitmapEx.GetMask());
- Bitmap aMask2(aBitmap.CreateMask(aColorFrom, nTolerance));
- aMask.CombineSimple(aMask2, BmpCombine::Or);
- aBitmap.Replace(aColorFrom, aColorTo, nTolerance);
- aReturnGraphic = ::Graphic(BitmapEx(aBitmap, aMask));
- }
- else
- {
- aBitmapEx.setAlphaFrom(cIndexFrom, 0xff - nAlphaTo);
- aBitmapEx.Replace(aColorFrom, aColorTo, nTolerance);
- aReturnGraphic = ::Graphic(aBitmapEx);
- }
- }
else
{
if ((nAlphaTo == 0) || (nAlphaTo == sal::static_int_cast< sal_Int8 >(0xff)))
{
+ Bitmap aBitmap(aBitmapEx.GetBitmap());
Bitmap aMask(aBitmap.CreateMask(aColorFrom, nTolerance));
aBitmap.Replace(aColorFrom, aColorTo, nTolerance);
aReturnGraphic = ::Graphic(BitmapEx(aBitmap, aMask));
diff --git a/vcl/source/helper/canvasbitmap.cxx b/vcl/source/helper/canvasbitmap.cxx
index 26f4bdb8e412..49faf0a73172 100644
--- a/vcl/source/helper/canvasbitmap.cxx
+++ b/vcl/source/helper/canvasbitmap.cxx
@@ -113,9 +113,9 @@ VclCanvasBitmap::VclCanvasBitmap( const BitmapEx& rBitmap ) :
m_nIndexIndex(-1),
m_bPalette(false)
{
- if( m_aBmpEx.IsTransparent() )
+ if( m_aBmpEx.IsAlpha() )
{
- m_aAlpha = m_aBmpEx.IsAlpha() ? m_aBmpEx.GetAlpha().GetBitmap() : m_aBmpEx.GetMask();
+ m_aAlpha = m_aBmpEx.GetAlpha().GetBitmap();
m_pAlphaAcc = Bitmap::ScopedReadAccess(m_aAlpha);
}
@@ -307,7 +307,7 @@ VclCanvasBitmap::VclCanvasBitmap( const BitmapEx& rBitmap ) :
}
m_nBitsPerOutputPixel = m_nBitsPerInputPixel;
- if( !m_aBmpEx.IsTransparent() )
+ if( !m_aBmpEx.IsAlpha() )
return;
// TODO(P1): need to interleave alpha with bitmap data -
@@ -353,7 +353,7 @@ geometry::IntegerSize2D SAL_CALL VclCanvasBitmap::getSize()
sal_Bool SAL_CALL VclCanvasBitmap::hasAlpha()
{
SolarMutexGuard aGuard;
- return m_aBmpEx.IsTransparent();
+ return m_aBmpEx.IsAlpha();
}
uno::Reference< rendering::XBitmap > SAL_CALL VclCanvasBitmap::getScaledBitmap( const geometry::RealSize2D& newSize,
@@ -381,7 +381,7 @@ uno::Sequence< sal_Int8 > SAL_CALL VclCanvasBitmap::getData( rendering::IntegerB
// Invalid/empty bitmap: no data available
if( !m_pBmpAcc )
throw lang::IndexOutOfBoundsException();
- if( m_aBmpEx.IsTransparent() && !m_pAlphaAcc )
+ if( m_aBmpEx.IsAlpha() && !m_pAlphaAcc )
throw lang::IndexOutOfBoundsException();
if( aRequestedArea.Left() < 0 || aRequestedArea.Top() < 0 ||
@@ -413,7 +413,7 @@ uno::Sequence< sal_Int8 > SAL_CALL VclCanvasBitmap::getData( rendering::IntegerB
nScanlineStride *= -1;
}
- if( !m_aBmpEx.IsTransparent() )
+ if( !m_aBmpEx.IsAlpha() )
{
OSL_ENSURE(m_pBmpAcc,"Invalid bmp read access");
@@ -481,7 +481,7 @@ uno::Sequence< sal_Int8 > SAL_CALL VclCanvasBitmap::getPixel( rendering::Integer
// Invalid/empty bitmap: no data available
if( !m_pBmpAcc )
throw lang::IndexOutOfBoundsException();
- if( m_aBmpEx.IsTransparent() && !m_pAlphaAcc )
+ if( m_aBmpEx.IsAlpha() && !m_pAlphaAcc )
throw lang::IndexOutOfBoundsException();
if( pos.X < 0 || pos.Y < 0 ||
@@ -499,7 +499,7 @@ uno::Sequence< sal_Int8 > SAL_CALL VclCanvasBitmap::getPixel( rendering::Integer
bitmapLayout.ScanLineStride= aRet.getLength();
const tools::Long nScanlineLeftOffset( pos.X*m_nBitsPerInputPixel/8 );
- if( !m_aBmpEx.IsTransparent() )
+ if( !m_aBmpEx.IsAlpha() )
{
assert(m_pBmpAcc && "Invalid bmp read access");
@@ -1052,7 +1052,7 @@ uno::Sequence<rendering::RGBColor> SAL_CALL VclCanvasBitmap::convertIntegerToRGB
ENSURE_OR_THROW(m_pBmpAcc,
"Unable to get BitmapAccess");
- if( m_aBmpEx.IsTransparent() )
+ if( m_aBmpEx.IsAlpha() )
{
const sal_Int32 nBytesPerPixel((m_nBitsPerOutputPixel+7)/8);
for( std::size_t i=0; i<nLen; i+=nBytesPerPixel )
@@ -1104,7 +1104,7 @@ uno::Sequence<rendering::ARGBColor> SAL_CALL VclCanvasBitmap::convertIntegerToAR
ENSURE_OR_THROW(m_pBmpAcc,
"Unable to get BitmapAccess");
- if( m_aBmpEx.IsTransparent() )
+ if( m_aBmpEx.IsAlpha() )
{
const tools::Long nNonAlphaBytes( (m_nBitsPerInputPixel+7)/8 );
const sal_Int32 nBytesPerPixel((m_nBitsPerOutputPixel+7)/8);
@@ -1159,7 +1159,7 @@ uno::Sequence<rendering::ARGBColor> SAL_CALL VclCanvasBitmap::convertIntegerToPA
ENSURE_OR_THROW(m_pBmpAcc,
"Unable to get BitmapAccess");
- if( m_aBmpEx.IsTransparent() )
+ if( m_aBmpEx.IsAlpha() )
{
const tools::Long nNonAlphaBytes( (m_nBitsPerInputPixel+7)/8 );
const sal_Int32 nBytesPerPixel((m_nBitsPerOutputPixel+7)/8);
@@ -1211,7 +1211,7 @@ uno::Sequence< ::sal_Int8 > SAL_CALL VclCanvasBitmap::convertIntegerFromRGB( con
uno::Sequence< sal_Int8 > aRes(nNumBytes);
sal_uInt8* pColors=reinterpret_cast<sal_uInt8*>(aRes.getArray());
- if( m_aBmpEx.IsTransparent() )
+ if( m_aBmpEx.IsAlpha() )
{
const tools::Long nNonAlphaBytes( (m_nBitsPerInputPixel+7)/8 );
for( std::size_t i=0; i<nLen; ++i )
@@ -1260,7 +1260,7 @@ uno::Sequence< ::sal_Int8 > SAL_CALL VclCanvasBitmap::convertIntegerFromARGB( co
uno::Sequence< sal_Int8 > aRes(nNumBytes);
sal_uInt8* pColors=reinterpret_cast<sal_uInt8*>(aRes.getArray());
- if( m_aBmpEx.IsTransparent() )
+ if( m_aBmpEx.IsAlpha() )
{
const tools::Long nNonAlphaBytes( (m_nBitsPerInputPixel+7)/8 );
for( std::size_t i=0; i<nLen; ++i )
@@ -1309,7 +1309,7 @@ uno::Sequence< ::sal_Int8 > SAL_CALL VclCanvasBitmap::convertIntegerFromPARGB( c
uno::Sequence< sal_Int8 > aRes(nNumBytes);
sal_uInt8* pColors=reinterpret_cast<sal_uInt8*>(aRes.getArray());
- if( m_aBmpEx.IsTransparent() )
+ if( m_aBmpEx.IsAlpha() )
{
const tools::Long nNonAlphaBytes( (m_nBitsPerInputPixel+7)/8 );
for( std::size_t i=0; i<nLen; ++i )
diff --git a/vcl/source/image/Image.cxx b/vcl/source/image/Image.cxx
index efcc46e41ea4..e32f7e54df22 100644
--- a/vcl/source/image/Image.cxx
+++ b/vcl/source/image/Image.cxx
@@ -142,7 +142,7 @@ void Image::Draw(OutputDevice* pOutDev, const Point& rPos, DrawImageFlags nStyle
if (nStyle & DrawImageFlags::SemiTransparent)
{
- if (aTempBitmapEx.IsTransparent())
+ if (aTempBitmapEx.IsAlpha())
{
Bitmap aAlphaBmp(aTempBitmapEx.GetAlpha().GetBitmap());
aAlphaBmp.Adjust(50);
diff --git a/vcl/source/outdev/bitmap.cxx b/vcl/source/outdev/bitmap.cxx
index db73c38dabdf..50533a5a40f3 100644
--- a/vcl/source/outdev/bitmap.cxx
+++ b/vcl/source/outdev/bitmap.cxx
@@ -264,7 +264,7 @@ void OutputDevice::DrawBitmapEx( const Point& rDestPt,
if( ImplIsRecordLayout() )
return;
- if( TransparentType::NONE == rBitmapEx.GetTransparentType() )
+ if( !rBitmapEx.IsAlpha() )
{
DrawBitmap( rDestPt, rBitmapEx.GetBitmap() );
}
@@ -283,7 +283,7 @@ void OutputDevice::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize,
if( ImplIsRecordLayout() )
return;
- if ( TransparentType::NONE == rBitmapEx.GetTransparentType() )
+ if ( !rBitmapEx.IsAlpha() )
{
DrawBitmap( rDestPt, rDestSize, rBitmapEx.GetBitmap() );
}
@@ -303,7 +303,7 @@ void OutputDevice::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize,
if( ImplIsRecordLayout() )
return;
- if( TransparentType::NONE == rBitmapEx.GetTransparentType() )
+ if( !rBitmapEx.IsAlpha() )
{
DrawBitmap( rDestPt, rDestSize, rSrcPtPixel, rSrcSizePixel, rBitmapEx.GetBitmap() );
}
@@ -345,7 +345,7 @@ void OutputDevice::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize,
}
else
{
- aBmpEx = BitmapEx( aColorBmp, aBmpEx.GetMask() );
+ aBmpEx = BitmapEx( aColorBmp, aBmpEx.GetAlpha() );
}
}
else if( !aBmpEx.IsEmpty() )
@@ -531,7 +531,7 @@ void OutputDevice::DrawDeviceBitmap( const Point& rDestPt, const Size& rDestSize
rBitmapEx.Mirror(nMirrFlags);
const SalBitmap* pSalSrcBmp = rBitmapEx.ImplGetBitmapSalBitmap().get();
- std::shared_ptr<SalBitmap> xMaskBmp = rBitmapEx.ImplGetMaskSalBitmap();
+ std::shared_ptr<SalBitmap> xMaskBmp = rBitmapEx.maAlphaMask.ImplGetSalBitmap();
if (xMaskBmp)
{
@@ -615,8 +615,8 @@ void OutputDevice::DrawDeviceBitmap( const Point& rDestPt, const Size& rDestSize
if (mpAlphaVDev)
mpAlphaVDev->DrawBitmapEx(rDestPt,
rDestSize,
- BitmapEx(rBitmapEx.GetMask(),
- rBitmapEx.GetMask()));
+ BitmapEx(rBitmapEx.GetAlpha(),
+ rBitmapEx.GetAlpha()));
}
else
{
@@ -1066,16 +1066,9 @@ bool OutputDevice::DrawTransformBitmapExDirect(
SalBitmap* pSalSrcBmp = rBitmapEx.GetBitmap().ImplGetSalBitmap().get();
Bitmap aAlphaBitmap;
- if(rBitmapEx.IsTransparent())
+ if(rBitmapEx.IsAlpha())
{
- if(rBitmapEx.IsAlpha())
- {
- aAlphaBitmap = rBitmapEx.GetAlpha();
- }
- else
- {
- aAlphaBitmap = rBitmapEx.GetMask();
- }
+ aAlphaBitmap = rBitmapEx.GetAlpha();
}
else if (mpAlphaVDev)
{
@@ -1284,7 +1277,7 @@ void OutputDevice::DrawTransformedBitmapEx(
// Apply the alpha manually.
sal_uInt8 nColor( static_cast<sal_uInt8>( ::basegfx::fround( 255.0*(1.0 - fAlpha) + .5) ) );
AlphaMask aAlpha( bitmapEx.GetSizePixel(), &nColor );
- if( bitmapEx.IsTransparent())
+ if( bitmapEx.IsAlpha())
aAlpha.BlendWith( bitmapEx.GetAlpha());
bitmapEx = BitmapEx( bitmapEx.GetBitmap(), aAlpha );
}
@@ -1379,7 +1372,7 @@ void OutputDevice::DrawTransformedBitmapEx(
// #122923# when the result needs an alpha channel due to being rotated or sheared
// and thus uncovering areas, add these channels so that the own transformer (used
// in getTransformed) also creates a transformed alpha channel
- if(!aTransformed.IsTransparent() && (bSheared || bRotated))
+ if(!aTransformed.IsAlpha() && (bSheared || bRotated))
{
// parts will be uncovered, extend aTransformed with a mask bitmap
const Bitmap aContent(aTransformed.GetBitmap());
diff --git a/vcl/source/outdev/outdevstate.cxx b/vcl/source/outdev/outdevstate.cxx
index c34e9fcf95e0..7fa966606744 100644
--- a/vcl/source/outdev/outdevstate.cxx
+++ b/vcl/source/outdev/outdevstate.cxx
@@ -468,17 +468,7 @@ void OutputDevice::SetBackground( const Wallpaper& rBackground )
if( bitmap.IsAlpha())
mpAlphaVDev->SetBackground( Wallpaper( BitmapEx( Bitmap( bitmap.GetAlpha()))));
else
- {
- switch( bitmap.GetTransparentType())
- {
- case TransparentType::NONE:
- mpAlphaVDev->SetBackground( Wallpaper( COL_BLACK ));
- break;
- case TransparentType::Bitmap:
- mpAlphaVDev->SetBackground( Wallpaper( BitmapEx( bitmap.GetMask())));
- break;
- }
- }
+ mpAlphaVDev->SetBackground( Wallpaper( COL_BLACK ));
}
else if( rBackground.IsGradient())
mpAlphaVDev->SetBackground( Wallpaper( COL_BLACK ));
diff --git a/vcl/source/outdev/wallpaper.cxx b/vcl/source/outdev/wallpaper.cxx
index 62258420ef5e..37f3b0c1bcd1 100644
--- a/vcl/source/outdev/wallpaper.cxx
+++ b/vcl/source/outdev/wallpaper.cxx
@@ -156,7 +156,7 @@ void OutputDevice::DrawBitmapWallpaper( tools::Long nX, tools::Long nY,
const tools::Long nBmpWidth = aBmpEx.GetSizePixel().Width();
const tools::Long nBmpHeight = aBmpEx.GetSizePixel().Height();
- const bool bTransparent = aBmpEx.IsTransparent();
+ const bool bTransparent = aBmpEx.IsAlpha();
// draw background
if( bTransparent )
@@ -222,7 +222,7 @@ void OutputDevice::DrawBitmapWallpaper( tools::Long nX, tools::Long nY,
aBmpEx = rWallpaper.GetBitmap();
aBmpEx.Scale( aSize );
- aBmpEx = BitmapEx( aBmpEx.GetBitmap().CreateDisplayBitmap( this ), aBmpEx.GetMask() );
+ aBmpEx = BitmapEx( aBmpEx.GetBitmap().CreateDisplayBitmap( this ), aBmpEx.GetAlpha() );
}
break;
diff --git a/vcl/unx/generic/window/salframe.cxx b/vcl/unx/generic/window/salframe.cxx
index f593e6d89a58..d5e1427e9af2 100644
--- a/vcl/unx/generic/window/salframe.cxx
+++ b/vcl/unx/generic/window/salframe.cxx
@@ -264,19 +264,7 @@ static void CreateNetWmAppIcon( sal_uInt16 nIcon, NetWmIconData& netwm_icon )
continue;
vcl::bitmap::convertBitmap32To24Plus8(aIcon, aIcon);
Bitmap icon = aIcon.GetBitmap();
- AlphaMask mask;
- switch( aIcon.GetTransparentType())
- {
- case TransparentType::NONE:
- {
- sal_uInt8 nTrans = 0;
- mask = AlphaMask( icon.GetSizePixel(), &nTrans );
- }
- break;
- case TransparentType::Bitmap:
- mask = aIcon.GetAlpha();
- break;
- }
+ AlphaMask mask = aIcon.GetAlpha();
BitmapReadAccess* iconData = icon.AcquireReadAccess();
BitmapReadAccess* maskData = mask.AcquireReadAccess();
netwm_icon[ pos++ ] = size; // width
@@ -340,7 +328,7 @@ static bool lcl_SelectAppIconPixmap( SalDisplay const *pDisplay, SalX11Screen nX
icon_mask = None;
- if( TransparentType::Bitmap == aIcon.GetTransparentType() )
+ if( aIcon.IsAlpha() )
{
icon_mask = XCreatePixmap( pDisplay->GetDisplay(),
pDisplay->GetRootWindow( pDisplay->GetDefaultXScreen() ),
@@ -353,7 +341,7 @@ static bool lcl_SelectAppIconPixmap( SalDisplay const *pDisplay, SalX11Screen nX
GC aMonoGC = XCreateGC( pDisplay->GetDisplay(), icon_mask,
GCFunction|GCForeground|GCBackground, &aValues );
- Bitmap aMask = aIcon.GetMask();
+ Bitmap aMask = aIcon.GetAlpha();
aMask.Invert();
X11SalBitmap *pMask = static_cast < X11SalBitmap * >
diff --git a/vcl/workben/vcldemo.cxx b/vcl/workben/vcldemo.cxx
index 1a877bfa794a..d4a5defed4e6 100644
--- a/vcl/workben/vcldemo.cxx
+++ b/vcl/workben/vcldemo.cxx
@@ -1382,7 +1382,7 @@ public:
aAbove.Move(aSrc.GetSizePixel().Width(),0);
rDev.DrawBitmap(aAbove, aSrc.GetBitmap());
aAbove.Move(aSrc.GetSizePixel().Width(),0);
- rDev.DrawBitmap(aAbove, aSrc.GetMask());
+ rDev.DrawBitmap(aAbove, aSrc.GetAlpha());
// intermediates middle
BitmapEx aResult = AlphaRecovery(rDev, aLocation, aSrc);
@@ -1402,7 +1402,7 @@ public:
aBelow.Move(aGrey.GetSizePixel().Width(),0);
BitmapEx aGreyMask(aSrc.GetBitmap(),
- AlphaMask(aSrc.GetMask()));
+ aSrc.GetAlpha());
rDev.DrawBitmapEx(aBelow, aGreyMask);
aLocation.Move(aSrc.GetSizePixel().Width()*6,0);