// headers
// ----------------------------------------------------------------------------
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "imaglist.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#pragma hdrstop
#endif
-#if defined(__WIN95__)
-
#ifndef WX_PRECOMP
+ #include "wx/msw/wrapcctl.h" // include <commctrl.h> "properly"
#include "wx/window.h"
#include "wx/icon.h"
#include "wx/dc.h"
#include "wx/string.h"
#include "wx/dcmemory.h"
-
+ #include "wx/intl.h"
+ #include "wx/log.h"
+ #include "wx/image.h"
#include <stdio.h>
#endif
-#include "wx/log.h"
-#include "wx/intl.h"
-#include "wx/image.h"
-
-#include "wx/msw/imaglist.h"
+#include "wx/imaglist.h"
+#include "wx/dc.h"
+#include "wx/msw/dc.h"
#include "wx/msw/private.h"
-#if defined(__WIN95__) && !(defined(__GNUWIN32_OLD__) && !defined(__CYGWIN10__))
- #include <commctrl.h>
-#endif
-
// ----------------------------------------------------------------------------
// wxWin macros
// ----------------------------------------------------------------------------
GetHbitmapOf(bitmap), hbmpMask) != 0;
if ( !ok )
{
- wxLogLastError(wxT("ImageList_Add()"));
+ wxLogLastError(wxT("ImageList_Replace()"));
}
::DeleteObject(hbmpMask);
// Replaces a bitmap and mask from an icon.
bool wxImageList::Replace(int i, const wxIcon& icon)
{
- bool ok = ImageList_ReplaceIcon(GetHImageList(), i, GetHiconOf(icon)) != 0;
+ bool ok = ImageList_ReplaceIcon(GetHImageList(), i, GetHiconOf(icon)) != -1;
if ( !ok )
{
wxLogLastError(wxT("ImageList_ReplaceIcon()"));
bool wxImageList::RemoveAll()
{
// don't use ImageList_RemoveAll() because mingw32 headers don't have it
- int count = ImageList_GetImageCount(GetHImageList());
- for ( int i = 0; i < count; i++ )
- {
- // the image indexes are shifted, so we should always remove the first
- // one
- (void)Remove(0);
- }
-
- return true;
+ return Remove(-1);
}
// Draws the given image on a dc at the specified position.
int flags,
bool solidBackground)
{
- HDC hDC = GetHdcOf(dc);
+ wxDCImpl *impl = dc.GetImpl();
+ wxMSWDCImpl *msw_impl = wxDynamicCast( impl, wxMSWDCImpl );
+ if (!msw_impl)
+ return false;
+
+ HDC hDC = GetHdcOf(*msw_impl);
wxCHECK_MSG( hDC, false, _T("invalid wxDC in wxImageList::Draw") );
COLORREF clr = CLR_NONE; // transparent by default
// Get the bitmap
wxBitmap wxImageList::GetBitmap(int index) const
{
+#if wxUSE_WXDIB && wxUSE_IMAGE
int bmp_width = 0, bmp_height = 0;
GetSize(index, bmp_width, bmp_height);
image = bitmap.ConvertToImage();
image.SetMaskColour(r, g, b);
bitmap = wxBitmap(image);
-
+#else
+ wxBitmap bitmap;
+#endif
return bitmap;
}
{
wxIcon icon;
icon.SetHICON((WXHICON)hIcon);
-
+
int iconW, iconH;
GetSize(index, iconW, iconH);
icon.SetSize(iconW, iconH);
-
+
return icon;
}
- else
+ else
return wxNullIcon;
}
static HBITMAP GetMaskForImage(const wxBitmap& bitmap, const wxBitmap& mask)
{
+#if wxUSE_IMAGE
+ wxBitmap bitmapWithMask;
+#endif // wxUSE_IMAGE
+
HBITMAP hbmpMask;
wxMask *pMask;
bool deleteMask = false;
else
{
pMask = bitmap.GetMask();
+
+#if wxUSE_IMAGE
+ // check if we don't have alpha in this bitmap -- we can create a mask
+ // from it (and we need to do it for the older systems which don't
+ // support 32bpp bitmaps natively)
+ if ( !pMask )
+ {
+ wxImage img(bitmap.ConvertToImage());
+ if ( img.HasAlpha() )
+ {
+ img.ConvertAlphaToMask();
+ bitmapWithMask = wxBitmap(img);
+ pMask = bitmapWithMask.GetMask();
+ }
+ }
+#endif // wxUSE_IMAGE
+
if ( !pMask )
{
// use the light grey count as transparent: the trouble here is
return hbmpMaskInv;
}
-
-#endif // Win95
-