#include "wx/icon.h"
#include "wx/dc.h"
#include "wx/string.h"
+ #include "wx/dcmemory.h"
#include <stdio.h>
#endif
// Creates an image list
bool wxImageList::Create(int width, int height, bool mask, int initial)
{
- UINT flags = 0; // TODO shouldallow to specify ILC_COLORxxx here
+ UINT flags = 0;
+
+ // set appropriate color depth
+ 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
+
if ( mask )
flags |= ILC_MASK;
// Remove all images
bool wxImageList::RemoveAll()
{
- bool ok = ImageList_RemoveAll(GetHImageList()) != 0;
- if ( !ok )
+ // don't use ImageList_RemoveAll() because mingw32 headers don't have it
+ int count = ImageList_GetImageCount(GetHImageList());
+ for ( int i = 0; i < count; i++ )
{
- wxLogLastError("ImageList_RemoveAll()");
+ // the image indexes are shifted, so we should always remove the first
+ // one
+ (void)Remove(0);
}
- return ok;
+ return TRUE;
}
// Draws the given image on a dc at the specified position.