#endif
#include "wx/imaglist.h"
+#include "wx/dc.h"
+#include "wx/msw/dc.h"
#include "wx/msw/private.h"
// ----------------------------------------------------------------------------
{
UINT flags = 0;
- // set appropriate color depth
+ // as we want to be able to use 32bpp bitmaps in the image lists, we always
+ // use ILC_COLOR32, even if the display resolution is less -- the system
+ // will make the best effort to show the bitmap if we do this resulting in
+ // quite acceptable display while using a lower depth ILC_COLOR constant
+ // (e.g. ILC_COLOR16) shows completely broken bitmaps
#ifdef __WXWINCE__
flags |= ILC_COLOR;
#else
- int dd = wxDisplayDepth();
-
- if (dd <= 4) flags |= ILC_COLOR; // 16 color
- else if (dd <= 8) flags |= ILC_COLOR8; // 256 color
- else if (dd <= 16) flags |= ILC_COLOR16; // 64k hi-color
- else if (dd <= 24) flags |= ILC_COLOR24; // 16m truecolor
- else if (dd <= 32) flags |= ILC_COLOR32; // 16m truecolor
+ flags |= ILC_COLOR32;
#endif
if ( mask )
// Returns the number of images in the image list.
int wxImageList::GetImageCount() const
{
- wxASSERT_MSG( m_hImageList, _T("invalid image list") );
+ wxASSERT_MSG( m_hImageList, wxT("invalid image list") );
return ImageList_GetImageCount(GetHImageList());
}
// Returns the size (same for all images) of the images in the list
bool wxImageList::GetSize(int WXUNUSED(index), int &width, int &height) const
{
- wxASSERT_MSG( m_hImageList, _T("invalid image list") );
+ wxASSERT_MSG( m_hImageList, wxT("invalid image list") );
return ImageList_GetIconSize(GetHImageList(), &width, &height) != 0;
}
int flags,
bool solidBackground)
{
- HDC hDC = GetHdcOf(dc);
- wxCHECK_MSG( hDC, false, _T("invalid wxDC in wxImageList::Draw") );
+ wxDCImpl *impl = dc.GetImpl();
+ wxMSWDCImpl *msw_impl = wxDynamicCast( impl, wxMSWDCImpl );
+ if (!msw_impl)
+ return false;
+
+ HDC hDC = GetHdcOf(*msw_impl);
+ wxCHECK_MSG( hDC, false, wxT("invalid wxDC in wxImageList::Draw") );
COLORREF clr = CLR_NONE; // transparent by default
if ( solidBackground )
// Get the bitmap
wxBitmap wxImageList::GetBitmap(int index) const
{
-#if wxUSE_WXDIB
+#if wxUSE_WXDIB && wxUSE_IMAGE
int bmp_width = 0, bmp_height = 0;
GetSize(index, bmp_width, bmp_height);