X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c801d85f158c4cba50b588807daabdcbd0ed3853..637f467a0639bf942ebeb466d056fa339bfdbdee:/src/generic/imaglist.cpp?ds=sidebyside diff --git a/src/generic/imaglist.cpp b/src/generic/imaglist.cpp index 368a72735a..61819c387a 100644 --- a/src/generic/imaglist.cpp +++ b/src/generic/imaglist.cpp @@ -20,21 +20,23 @@ IMPLEMENT_DYNAMIC_CLASS(wxImageList, wxObject) -wxImageList::wxImageList(void) +wxImageList::wxImageList( int width, int height, bool WXUNUSED(mask), int WXUNUSED(initialCount) ) { + m_width = width; + m_height = height; Create(); }; -wxImageList::~wxImageList(void) +wxImageList::~wxImageList() { }; -int wxImageList::GetImageCount(void) const +int wxImageList::GetImageCount() const { return m_images.Number(); }; -bool wxImageList::Create(void) +bool wxImageList::Create() { m_images.DeleteContents( TRUE ); return TRUE; @@ -46,7 +48,7 @@ int wxImageList::Add( const wxBitmap &bitmap ) return m_images.Number(); }; -bool wxImageList::Replace( const int index, const wxBitmap &bitmap ) +bool wxImageList::Replace( int index, const wxBitmap &bitmap ) { wxNode *node = m_images.Nth( index ); if (!node) return FALSE; @@ -66,21 +68,30 @@ bool wxImageList::Replace( const int index, const wxBitmap &bitmap ) return TRUE; }; -bool wxImageList::Remove( const int index ) +bool wxImageList::Remove( int index ) { wxNode *node = m_images.Nth( index ); if (node) m_images.DeleteNode( node ); return (node != NULL); }; -bool wxImageList::RemoveAll(void) +bool wxImageList::RemoveAll() { m_images.Clear(); return TRUE; }; -bool wxImageList::GetSize( const int index, int &width, int &height ) const +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 +106,33 @@ bool wxImageList::GetSize( const int index, int &width, int &height ) const height = 0; return FALSE; }; + +#endif }; -bool wxImageList::Draw( const int index, wxDC &dc, - const int x, const int y, - const 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; };