]>
Commit | Line | Data |
---|---|---|
efef92ce | 1 | Index: vcl/source/gdi/image.cxx |
2 | =================================================================== | |
3 | RCS file: /cvs/gsl/vcl/source/gdi/image.cxx,v | |
4 | retrieving revision 1.8 | |
5 | diff -u -p -u -r1.8 image.cxx | |
6 | --- vcl/source/gdi/image.cxx 27 Mar 2003 17:57:57 -0000 1.8 | |
7 | +++ vcl/source/gdi/image.cxx 16 Sep 2003 10:55:26 -0000 | |
8 | @@ -103,6 +103,16 @@ DBG_NAME( ImageList ); | |
9 | ||
10 | // ======================================================================= | |
11 | ||
12 | +static void SplitAlpha( Bitmap &rImage, Bitmap &rMask ) | |
13 | +{ | |
14 | + if( rImage.GetBitCount() < 32 ) | |
15 | + return; | |
16 | + | |
17 | + rMask = rImage.GetAlphaMask(); | |
18 | +} | |
19 | + | |
20 | +// ======================================================================= | |
21 | + | |
22 | ImplImageList::~ImplImageList() | |
23 | { | |
24 | if ( mpImageBitmap ) | |
25 | @@ -151,8 +161,14 @@ ImplImageData::ImplImageData( const Bitm | |
26 | maBmp( rBmp ), | |
27 | maColor( rColor ) | |
28 | { | |
29 | - mbColor = TRUE; | |
30 | - mpImageBitmap = NULL; | |
31 | + if( rBmp.GetBitCount() > 24 ) | |
32 | + { | |
33 | + maMaskBmp = rBmp.GetAlphaMask(); | |
34 | + mbColor = FALSE; | |
35 | + } | |
36 | + else | |
37 | + mbColor = TRUE; | |
38 | + mpImageBitmap = NULL; | |
39 | } | |
40 | ||
41 | // ----------------------------------------------------------------------- | |
42 | @@ -240,6 +256,8 @@ Image::Image( const ResId& rResId ) | |
43 | pResMgr->Increment( pResMgr->GetObjSize( (RSHEADER_TYPE*)pResMgr->GetClass() ) ); | |
44 | } | |
45 | ||
46 | + SplitAlpha( aImageBitmap, aMaskBitmap ); | |
47 | + | |
48 | if ( !aImageBitmap ) | |
49 | mpImplData = NULL; | |
50 | else | |
51 | @@ -786,6 +804,12 @@ static void ImplBmpImageCreate( ImageLis | |
52 | return; | |
53 | } | |
54 | ||
55 | + if( !rMaskBmp && rBitmap.GetBitCount() == 32 ) | |
56 | + { | |
57 | + rMaskBmp = rBitmap.GetAlphaMask(); | |
58 | + bColor = FALSE; | |
59 | + } | |
60 | + | |
61 | DBG_ASSERT( !nInit || rBitmap.GetSizePixel().Width(), | |
62 | "ImageList::ImageList(): nInitSize != 0 and BmpSize.Width() == 0" ); | |
63 | DBG_ASSERT( (rBitmap.GetSizePixel().Width() % nInit) == 0, | |
64 | @@ -893,6 +917,7 @@ ImageList::ImageList( const ResId& rResI | |
65 | pResMgr->Increment( pResMgr->GetObjSize( (RSHEADER_TYPE*)pResMgr->GetClass() ) ); | |
66 | bCol = TRUE; | |
67 | } | |
68 | + SplitAlpha( aImageBitmap, aMaskBitmap ); | |
69 | if ( nObjMask & RSC_IMAGELIST_IDLIST ) | |
70 | { | |
71 | bIsIdList = TRUE; |