#define M_ICONDATA ((wxIconRefData *)m_refData)
+class WXDLLEXPORT wxIconRefData : public wxGDIRefData
+{
+public:
+ wxIconRefData();
+ wxIconRefData( WXHICON iconref, int desiredWidth, int desiredHeight );
+ virtual ~wxIconRefData() { Free(); }
+
+ void Init();
+ virtual void Free();
+
+ void SetWidth( int width ) { m_width = width; }
+ void SetHeight( int height ) { m_height = height; }
+
+ int GetWidth() const { return m_width; }
+ int GetHeight() const { return m_height; }
+
+ WXHICON GetHICON() const { return (WXHICON) m_iconRef; }
+ private :
+ IconRef m_iconRef;
+ int m_width;
+ int m_height;
+};
+
+
+wxIconRefData::wxIconRefData( WXHICON icon, int desiredWidth, int desiredHeight )
+{
+ m_iconRef = MAC_WXHICON( icon ) ;
+
+ // Standard sizes
+ SetWidth( desiredWidth == -1 ? 32 : desiredWidth ) ;
+ SetHeight( desiredHeight == -1 ? 32 : desiredHeight ) ;
+}
+
+void wxIconRefData::Init()
+{
+ m_iconRef = NULL ;
+}
+
+void wxIconRefData::Free()
+{
+ if ( m_iconRef )
+ {
+ ReleaseIconRef( m_iconRef ) ;
+ m_iconRef = NULL ;
+ }
+}
+
+//
+//
+//
wxIcon::wxIcon()
{
if (icon)
AcquireIconRef( (IconRef) icon ) ;
- m_refData = new wxIconRefData( icon ) ;
- M_ICONDATA->SetWidth( size.x ) ;
- M_ICONDATA->SetHeight( size.y ) ;
+ m_refData = new wxIconRefData( icon, size.x, size.y ) ;
}
wxIcon::~wxIcon()
}
if ( iconRef )
{
- m_refData = new wxIconRefData( (WXHICON) iconRef ) ;
+ m_refData = new wxIconRefData( (WXHICON) iconRef, desiredWidth, desiredHeight ) ;
return true ;
}
}
verify_noerr( GetIconRef( kOnSystemDisk, kSystemIconsCreator, theId, &iconRef ) ) ;
if ( iconRef )
{
- m_refData = new wxIconRefData( (WXHICON) iconRef ) ;
+ m_refData = new wxIconRefData( (WXHICON) iconRef, desiredWidth, desiredHeight ) ;
return true ;
}
UnRef() ;
// as the bitmap owns that ref, we have to acquire it as well
- IconRef iconRef = bmp.GetBitmapData()->GetIconRef() ;
- AcquireIconRef( iconRef ) ;
-
- m_refData = new wxIconRefData( (WXHICON) iconRef ) ;
- M_ICONDATA->SetWidth( bmp.GetWidth() ) ;
- M_ICONDATA->SetHeight( bmp.GetHeight() ) ;
-}
-
-wxIconRefData::wxIconRefData( WXHICON icon )
-{
- m_iconRef = MAC_WXHICON( icon ) ;
-
- // Standard sizes
- SetWidth( 32 ) ;
- SetHeight( 32 ) ;
-}
-
-void wxIconRefData::Init()
-{
- m_iconRef = NULL ;
-}
-
-void wxIconRefData::Free()
-{
- if ( m_iconRef )
- {
- ReleaseIconRef( m_iconRef ) ;
- m_iconRef = NULL ;
- }
+ IconRef iconRef = bmp.CreateIconRef() ;
+ m_refData = new wxIconRefData( (WXHICON) iconRef, bmp.GetWidth(), bmp.GetHeight() ) ;
}
IMPLEMENT_DYNAMIC_CLASS(wxICONResourceHandler, wxBitmapHandler)