X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0423b6851815f12d331cf09a0d05f117e5b803ca..338c2a71e9d2e560c21f901a4a3f33658da8600f:/src/generic/imaglist.cpp diff --git a/src/generic/imaglist.cpp b/src/generic/imaglist.cpp index dffb5f530d..1629c414d9 100644 --- a/src/generic/imaglist.cpp +++ b/src/generic/imaglist.cpp @@ -20,8 +20,10 @@ 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(); }; @@ -46,6 +48,11 @@ int wxImageList::Add( const wxBitmap &bitmap ) return m_images.Number(); }; +wxBitmap *wxImageList::GetBitmap(int index) { + wxNode *node = m_images.Nth( index ); + return (wxBitmap*)node->Data(); +} + bool wxImageList::Replace( int index, const wxBitmap &bitmap ) { wxNode *node = m_images.Nth( index ); @@ -81,6 +88,15 @@ bool wxImageList::RemoveAll() 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) { @@ -95,17 +111,33 @@ bool wxImageList::GetSize( int index, int &width, int &height ) const 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; };