#pragma hdrstop
#endif
-#include "wx/imaglist.h"
+#include "wx/generic/imaglist.h"
+#include "wx/icon.h"
//-----------------------------------------------------------------------------
// wxImageList
int wxImageList::Add( const wxBitmap &bitmap )
{
- m_images.Append( new wxBitmap(bitmap) );
- return m_images.Number();
+ if (bitmap.IsKindOf(CLASSINFO(wxIcon)))
+ m_images.Append( new wxIcon( (const wxIcon&) bitmap ) );
+ else
+ m_images.Append( new wxBitmap(bitmap) );
+ return m_images.Number()-1;
}
const wxBitmap *wxImageList::GetBitmap( int index ) const
{
wxNode *node = m_images.Nth( index );
- wxCHECK_MSG( node, (wxBitmap *) NULL, "wrong index in image list" );
+ wxCHECK_MSG( node, (wxBitmap *) NULL, wxT("wrong index in image list") );
return (wxBitmap*)node->Data();
}
{
wxNode *node = m_images.Nth( index );
- wxCHECK_MSG( node, FALSE, "wrong index in image list" );
-
+ wxCHECK_MSG( node, FALSE, wxT("wrong index in image list") );
+
+ wxBitmap* newBitmap = NULL;
+ if (bitmap.IsKindOf(CLASSINFO(wxIcon)))
+ newBitmap = new wxIcon( (const wxIcon&) bitmap );
+ else
+ newBitmap = new wxBitmap(bitmap) ;
+
if (index == m_images.Number()-1)
{
m_images.DeleteNode( node );
- m_images.Append( new wxBitmap(bitmap) );
+ m_images.Append( newBitmap );
}
else
{
wxNode *next = node->Next();
m_images.DeleteNode( node );
- m_images.Insert( next, new wxBitmap(bitmap) );
+ m_images.Insert( next, newBitmap );
}
return TRUE;
{
wxNode *node = m_images.Nth( index );
- wxCHECK_MSG( node, FALSE, "wrong index in image list" );
+ wxCHECK_MSG( node, FALSE, wxT("wrong index in image list") );
m_images.DeleteNode( node );
wxNode *node = m_images.Nth( index );
- wxCHECK_MSG( node, FALSE, "wrong index in image list" );
+ wxCHECK_MSG( node, FALSE, wxT("wrong index in image list") );
wxBitmap *bm = (wxBitmap*)node->Data();
width = bm->GetWidth();
{
wxNode *node = m_images.Nth( index );
- wxCHECK_MSG( node, FALSE, "wrong index in image list" );
+ wxCHECK_MSG( node, FALSE, wxT("wrong index in image list") );
wxBitmap *bm = (wxBitmap*)node->Data();
-
- dc.DrawBitmap( *bm, x, y, (flags & wxIMAGELIST_DRAW_TRANSPARENT) > 0 );
+
+ if (bm->IsKindOf(CLASSINFO(wxIcon)))
+ dc.DrawIcon( * ((wxIcon*) bm), x, y);
+ else
+ dc.DrawBitmap( *bm, x, y, (flags & wxIMAGELIST_DRAW_TRANSPARENT) > 0 );
return TRUE;
}