X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0423b6851815f12d331cf09a0d05f117e5b803ca..520e470fdd0daef09c77938db642e4583933c90d:/src/generic/imaglist.cpp diff --git a/src/generic/imaglist.cpp b/src/generic/imaglist.cpp index dffb5f530d..20a5101650 100644 --- a/src/generic/imaglist.cpp +++ b/src/generic/imaglist.cpp @@ -20,32 +20,42 @@ IMPLEMENT_DYNAMIC_CLASS(wxImageList, wxObject) -wxImageList::wxImageList(int width, int height, bool mask, int initialCount) +wxImageList::wxImageList( int width, int height, bool WXUNUSED(mask), int WXUNUSED(initialCount) ) { + m_width = width; + m_height = height; Create(); -}; +} wxImageList::~wxImageList() { -}; +} int wxImageList::GetImageCount() const { return m_images.Number(); -}; +} bool wxImageList::Create() { m_images.DeleteContents( TRUE ); return TRUE; -}; +} int wxImageList::Add( const wxBitmap &bitmap ) { m_images.Append( new wxBitmap(bitmap) ); return m_images.Number(); -}; +} +const wxBitmap *wxImageList::GetBitmap(int index) const { + wxNode *node = m_images.Nth(index); + if (node != NULL) + return (wxBitmap*)node->Data(); + + return (wxBitmap *) NULL; +} + bool wxImageList::Replace( int index, const wxBitmap &bitmap ) { wxNode *node = m_images.Nth( index ); @@ -61,26 +71,35 @@ bool wxImageList::Replace( int index, const wxBitmap &bitmap ) wxNode *next = node->Next(); m_images.DeleteNode( node ); m_images.Insert( next, new wxBitmap(bitmap) ); - }; + } return TRUE; -}; +} bool wxImageList::Remove( int index ) { wxNode *node = m_images.Nth( index ); if (node) m_images.DeleteNode( node ); return (node != NULL); -}; +} bool wxImageList::RemoveAll() { m_images.Clear(); return TRUE; -}; +} bool wxImageList::GetSize( int index, int &width, int &height ) const { +#ifdef __WXGTK__ + + width = m_width; + height = m_height; + + return (m_images.Nth( index ) != NULL); + +#else + wxNode *node = m_images.Nth( index ); if (node) { @@ -94,19 +113,35 @@ bool wxImageList::GetSize( int index, int &width, int &height ) const width = 0; height = 0; return FALSE; - }; -}; + } + +#endif +} -bool wxImageList::Draw( int index, wxDC &dc, - int x, int y, - int WXUNUSED(flags), const bool WXUNUSED(solidBackground) ) +bool wxImageList::Draw( int index, wxDC &dc, int x, int y, + int flags, bool WXUNUSED(solidBackground) ) { wxNode *node = m_images.Nth( index ); if (!node) return FALSE; wxBitmap *bm = (wxBitmap*)node->Data(); + +#ifdef __WXGTK__ + + // As X doesn't have a standard size for icons, we resize here. + // Otherwise we'd simply have to forbid different bitmap sizes. + + if ((m_width != bm->GetWidth()) || + (m_height != bm->GetHeight())) + { + bm->Resize( m_width, m_height ); + } + +#endif + wxIcon *icon = (wxIcon*)bm; - dc.DrawIcon( *icon, x, y ); + dc.DrawIcon( *icon, x, y, (flags & wxIMAGELIST_DRAW_TRANSPARENT) > 0 ); + return TRUE; -}; +}