]>
Commit | Line | Data |
---|---|---|
efef92ce | 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 ), | |
7 | bAlpha ( FALSE ) | |
8 | { | |
9 | + if (aBitmap.GetBitCount () == 32) | |
10 | + { | |
11 | + eTransparent = TRANSPARENT_BITMAP; | |
12 | + bAlpha = TRUE; | |
13 | + aMask = aBitmap.GetAlphaMask(); | |
14 | + } | |
15 | } | |
16 | ||
17 | // ------------------------------------------------------------------ | |
18 | @@ -124,12 +130,8 @@ BitmapEx::BitmapEx( const Bitmap& rBmp, | |
19 | eTransparent ( !rMask ? TRANSPARENT_NONE : TRANSPARENT_BITMAP ), | |
20 | bAlpha ( FALSE ) | |
21 | { | |
22 | - // #105489# Ensure a mask is exactly one bit deep | |
23 | if( !!aMask && aMask.GetBitCount() != 1 ) | |
24 | - { | |
25 | - OSL_TRACE("BitmapEx: forced mask to monochrome"); | |
26 | - aMask.ImplMakeMono( 255 ); | |
27 | - } | |
28 | + bAlpha = TRUE; | |
29 | } | |
30 | ||
31 | // ------------------------------------------------------------------ | |
32 | @@ -152,7 +154,13 @@ BitmapEx::BitmapEx( const Bitmap& rBmp, | |
33 | eTransparent ( TRANSPARENT_BITMAP ), | |
34 | bAlpha ( FALSE ) | |
35 | { | |
36 | - aMask = aBitmap.CreateMask( aTransparentColor ); | |
37 | + if( rBmp.GetBitCount() > 24 ) | |
38 | + { | |
39 | + aMask = rBmp.GetAlphaMask(); | |
40 | + bAlpha = TRUE; | |
41 | + } | |
42 | + else | |
43 | + aMask = aBitmap.CreateMask( aTransparentColor ); | |
44 | } | |
45 | ||
46 | // ------------------------------------------------------------------ | |
47 | @@ -287,12 +295,7 @@ BitmapEx BitmapEx::GetColorTransformedBi | |
48 | ||
49 | Bitmap BitmapEx::GetMask() const | |
50 | { | |
51 | - Bitmap aRet( aMask ); | |
52 | - | |
53 | - if( IsAlpha() ) | |
54 | - aRet.ImplMakeMono( 255 ); | |
55 | - | |
56 | - return aRet; | |
57 | + return Bitmap( aMask ); | |
58 | } | |
59 | ||
60 | // ------------------------------------------------------------------ | |
61 | @@ -395,7 +398,7 @@ BOOL BitmapEx::Scale( const double& rSca | |
62 | bRet = aBitmap.Scale( rScaleX, rScaleY, nScaleFlag ); | |
63 | ||
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); | |
67 | ||
68 | aBitmapSize = aBitmap.GetSizePixel(); | |
69 | } |