1 Index: vcl/source/gdi/bitmapex.cxx
2 ===================================================================
3 --- vcl/source/gdi/bitmapex.cxx.orig 2003-04-11 19:28:27.000000000 +0200
4 +++ vcl/source/gdi/bitmapex.cxx 2003-10-22 22:42:23.000000000 +0200
5 @@ -113,6 +113,12 @@ BitmapEx::BitmapEx( const Bitmap& rBmp )
6 eTransparent( TRANSPARENT_NONE ),
9 + if (aBitmap.GetBitCount () == 32)
11 + eTransparent = TRANSPARENT_BITMAP;
13 + aMask = aBitmap.GetAlphaMask();
17 // ------------------------------------------------------------------
18 @@ -124,12 +130,8 @@ BitmapEx::BitmapEx( const Bitmap& rBmp,
19 eTransparent ( !rMask ? TRANSPARENT_NONE : TRANSPARENT_BITMAP ),
22 - // #105489# Ensure a mask is exactly one bit deep
23 if( !!aMask && aMask.GetBitCount() != 1 )
25 - OSL_TRACE("BitmapEx: forced mask to monochrome");
26 - aMask.ImplMakeMono( 255 );
31 // ------------------------------------------------------------------
32 @@ -152,7 +154,13 @@ BitmapEx::BitmapEx( const Bitmap& rBmp,
33 eTransparent ( TRANSPARENT_BITMAP ),
36 - aMask = aBitmap.CreateMask( aTransparentColor );
37 + if( rBmp.GetBitCount() > 24 )
39 + aMask = rBmp.GetAlphaMask();
43 + aMask = aBitmap.CreateMask( aTransparentColor );
46 // ------------------------------------------------------------------
47 @@ -287,12 +295,7 @@ BitmapEx BitmapEx::GetColorTransformedBi
49 Bitmap BitmapEx::GetMask() const
51 - Bitmap aRet( aMask );
54 - aRet.ImplMakeMono( 255 );
57 + return Bitmap( aMask );
60 // ------------------------------------------------------------------
61 @@ -395,7 +398,7 @@ BOOL BitmapEx::Scale( const double& rSca
62 bRet = aBitmap.Scale( rScaleX, rScaleY, nScaleFlag );
64 if( bRet && ( eTransparent == TRANSPARENT_BITMAP ) && !!aMask )
65 - aMask.Scale( rScaleX, rScaleY, BMP_SCALE_FAST );
66 + aMask.Scale( rScaleX, rScaleY, aMask.GetBitCount() == 1 ? BMP_SCALE_FAST : nScaleFlag);
68 aBitmapSize = aBitmap.GetSizePixel();