Fixes and Cleanup
This commit is contained in:
		
				
					committed by
					
						
						Vadim Zeitlin
					
				
			
			
				
	
			
			
			
						parent
						
							e7d21f6638
						
					
				
				
					commit
					84f68aa764
				
			@@ -224,9 +224,12 @@ public:
 | 
				
			|||||||
    virtual bool CopyFromIcon(const wxIcon& icon) = 0;
 | 
					    virtual bool CopyFromIcon(const wxIcon& icon) = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // implementation:
 | 
					    // implementation:
 | 
				
			||||||
 | 
					#if WXWIN_COMPATIBILITY_3_0
 | 
				
			||||||
 | 
					    // deprecated
 | 
				
			||||||
    virtual void SetHeight(int height) = 0;
 | 
					    virtual void SetHeight(int height) = 0;
 | 
				
			||||||
    virtual void SetWidth(int width) = 0;
 | 
					    virtual void SetWidth(int width) = 0;
 | 
				
			||||||
    virtual void SetDepth(int depth) = 0;
 | 
					    virtual void SetDepth(int depth) = 0;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Format handling
 | 
					    // Format handling
 | 
				
			||||||
    static inline wxList& GetHandlers() { return sm_handlers; }
 | 
					    static inline wxList& GetHandlers() { return sm_handlers; }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -175,13 +175,11 @@ public:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if WXWIN_COMPATIBILITY_3_0
 | 
					#if WXWIN_COMPATIBILITY_3_0
 | 
				
			||||||
    wxDEPRECATED_MSG("this value is determined during creation, this method could lead to inconsistencies")
 | 
					    wxDEPRECATED_MSG("this value is determined during creation, this method could lead to inconsistencies")
 | 
				
			||||||
    void SetWidth(int w);
 | 
					    void SetWidth(int width);
 | 
				
			||||||
    wxDEPRECATED_MSG("this value is determined during creation, this method could lead to inconsistencies")
 | 
					    wxDEPRECATED_MSG("this value is determined during creation, this method could lead to inconsistencies")
 | 
				
			||||||
    void SetHeight(int h);
 | 
					    void SetHeight(int height);
 | 
				
			||||||
    wxDEPRECATED_MSG("this value is determined during creation, this method could lead to inconsistencies")
 | 
					    wxDEPRECATED_MSG("this value is determined during creation, this method could lead to inconsistencies")
 | 
				
			||||||
    void SetDepth(int d);
 | 
					    void SetDepth(int depth);
 | 
				
			||||||
    wxDEPRECATED_MSG("this value is determined during creation, this method could lead to inconsistencies")
 | 
					 | 
				
			||||||
    void SetOk(bool isOk);
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxUSE_PALETTE
 | 
					#if wxUSE_PALETTE
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,10 +44,14 @@ public:
 | 
				
			|||||||
    int GetWidth() const;
 | 
					    int GetWidth() const;
 | 
				
			||||||
    int GetHeight() const;
 | 
					    int GetHeight() const;
 | 
				
			||||||
    int GetDepth() const;
 | 
					    int GetDepth() const;
 | 
				
			||||||
    void SetWidth(int w);
 | 
					#if WXWIN_COMPATIBILITY_3_0
 | 
				
			||||||
    void SetHeight(int h);
 | 
					    wxDEPRECATED_MSG("this value is determined during creation, this method could lead to inconsistencies")
 | 
				
			||||||
    void SetDepth(int d);
 | 
					    void SetWidth(int width);
 | 
				
			||||||
    void SetOk(bool isOk);
 | 
					    wxDEPRECATED_MSG("this value is determined during creation, this method could lead to inconsistencies")
 | 
				
			||||||
 | 
					    void SetHeight(int height);
 | 
				
			||||||
 | 
					    wxDEPRECATED_MSG("this value is determined during creation, this method could lead to inconsistencies")
 | 
				
			||||||
 | 
					    void SetDepth(int depth);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    wxSize GetSize() const { return wxSize(GetWidth(), GetHeight()); }
 | 
					    wxSize GetSize() const { return wxSize(GetWidth(), GetHeight()); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,22 +24,22 @@ wxIMPLEMENT_DYNAMIC_CLASS(wxIcon, wxGDIObject);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#define M_ICONDATA ((wxIconRefData *)m_refData)
 | 
					#define M_ICONDATA ((wxIconRefData *)m_refData)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define wxOSX_ICON_USE_NSIMAGE wxOSX_BITMAP_NATIVE_ACCESS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if wxOSX_ICON_USE_NSIMAGE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// implementation based on NSImage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WXDLLEXPORT wxIconRefData : public wxGDIRefData
 | 
					class WXDLLEXPORT wxIconRefData : public wxGDIRefData
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    wxIconRefData() { Init(); }
 | 
					    wxIconRefData() { Init(); }
 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					 | 
				
			||||||
    wxIconRefData( WXHICON iconref, int desiredWidth, int desiredHeight );
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
    wxIconRefData( WX_NSImage image, int desiredWidth, int desiredHeight );
 | 
					    wxIconRefData( WX_NSImage image, int desiredWidth, int desiredHeight );
 | 
				
			||||||
#endif
 | 
					    wxIconRefData( WXHICON iconref, int desiredWidth, int desiredHeight );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual ~wxIconRefData() { Free(); }
 | 
					    virtual ~wxIconRefData() { Free(); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					 | 
				
			||||||
    virtual bool IsOk() const wxOVERRIDE { return m_iconRef != NULL; }
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
    virtual bool IsOk() const wxOVERRIDE { return m_nsImage != NULL; }
 | 
					    virtual bool IsOk() const wxOVERRIDE { return m_nsImage != NULL; }
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    virtual void Free();
 | 
					    virtual void Free();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void SetWidth( int width ) { m_width = width; }
 | 
					    void SetWidth( int width ) { m_width = width; }
 | 
				
			||||||
@@ -48,22 +48,13 @@ public:
 | 
				
			|||||||
    int GetWidth() const { return m_width; }
 | 
					    int GetWidth() const { return m_width; }
 | 
				
			||||||
    int GetHeight() const { return m_height; }
 | 
					    int GetHeight() const { return m_height; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					 | 
				
			||||||
    WXHICON GetHICON() const { return (WXHICON) m_iconRef; }
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#if wxOSX_USE_COCOA
 | 
					 | 
				
			||||||
    WX_NSImage GetNSImage() const;
 | 
					    WX_NSImage GetNSImage() const;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    void Init();
 | 
					    void Init();
 | 
				
			||||||
 | 
					    void Create( NSImage* icon, int desiredWidth, int desiredHeight );
 | 
				
			||||||
 | 
					    NSImage* m_nsImage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					 | 
				
			||||||
    IconRef m_iconRef;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#if wxOSX_USE_COCOA
 | 
					 | 
				
			||||||
    mutable NSImage* m_nsImage;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    int m_width;
 | 
					    int m_width;
 | 
				
			||||||
    int m_height;
 | 
					    int m_height;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -71,21 +62,24 @@ private:
 | 
				
			|||||||
    wxDECLARE_NO_COPY_CLASS(wxIconRefData);
 | 
					    wxDECLARE_NO_COPY_CLASS(wxIconRefData);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					 | 
				
			||||||
wxIconRefData::wxIconRefData( WXHICON icon, int desiredWidth, int desiredHeight )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    Init();
 | 
					 | 
				
			||||||
    m_iconRef = (IconRef)( icon ) ;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Standard sizes
 | 
					 | 
				
			||||||
    SetWidth( desiredWidth == -1 ? 32 : desiredWidth ) ;
 | 
					 | 
				
			||||||
    SetHeight( desiredHeight == -1 ? 32 : desiredHeight ) ;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
wxIconRefData::wxIconRefData( NSImage* icon, int desiredWidth, int desiredHeight )
 | 
					wxIconRefData::wxIconRefData( NSImage* icon, int desiredWidth, int desiredHeight )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    Init();
 | 
					    Init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Create(icon, desiredWidth, desiredHeight);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxIconRefData::wxIconRefData( WXHICON iconref, int desiredWidth, int desiredHeight )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Create(wxOSXGetNSImageFromIconRef(iconref), desiredWidth, desiredHeight);
 | 
				
			||||||
 | 
					    ReleaseIconRef(iconref);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxIconRefData::Create( NSImage* icon, int desiredWidth, int desiredHeight )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
    if ( icon )
 | 
					    if ( icon )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        m_nsImage = icon;
 | 
					        m_nsImage = icon;
 | 
				
			||||||
@@ -96,53 +90,113 @@ wxIconRefData::wxIconRefData( NSImage* icon, int desiredWidth, int desiredHeight
 | 
				
			|||||||
    SetWidth( desiredWidth == -1 ? 32 : desiredWidth ) ;
 | 
					    SetWidth( desiredWidth == -1 ? 32 : desiredWidth ) ;
 | 
				
			||||||
    SetHeight( desiredHeight == -1 ? 32 : desiredHeight ) ;
 | 
					    SetHeight( desiredHeight == -1 ? 32 : desiredHeight ) ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxIconRefData::Init()
 | 
					void wxIconRefData::Init()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					 | 
				
			||||||
    m_iconRef = NULL ;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#if wxOSX_USE_COCOA
 | 
					 | 
				
			||||||
    m_nsImage = NULL;
 | 
					    m_nsImage = NULL;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    m_width =
 | 
					    m_width =
 | 
				
			||||||
    m_height = 0;
 | 
					    m_height = 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxIconRefData::Free()
 | 
					void wxIconRefData::Free()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					    if ( m_nsImage )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        wxMacCocoaRelease(m_nsImage);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WX_NSImage wxIconRefData::GetNSImage() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxASSERT( IsOk() );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return m_nsImage;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#else // !wxOSX_ICON_USE_NSIMAGE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// implementation based on IconRef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxIconRefData : public wxGDIRefData
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    wxIconRefData() { Init(); }
 | 
				
			||||||
 | 
					    wxIconRefData( WXHICON iconref, int desiredWidth, int desiredHeight );
 | 
				
			||||||
 | 
					    virtual ~wxIconRefData() { Free(); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    virtual bool IsOk() const wxOVERRIDE { return m_iconRef != NULL; }
 | 
				
			||||||
 | 
					    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; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    WX_NSImage GetNSImage() const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    void Init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    IconRef m_iconRef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    mutable NSImage* m_nsImage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    int m_width;
 | 
				
			||||||
 | 
					    int m_height;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // We can (easily) copy m_iconRef so we don't implement the copy ctor.
 | 
				
			||||||
 | 
					    wxDECLARE_NO_COPY_CLASS(wxIconRefData);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxIconRefData::wxIconRefData( WXHICON icon, int desiredWidth, int desiredHeight )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Init();
 | 
				
			||||||
 | 
					    m_iconRef = (IconRef)( icon ) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Standard sizes
 | 
				
			||||||
 | 
					    SetWidth( desiredWidth == -1 ? 32 : desiredWidth ) ;
 | 
				
			||||||
 | 
					    SetHeight( desiredHeight == -1 ? 32 : desiredHeight ) ;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxIconRefData::Init()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    m_iconRef = NULL ;
 | 
				
			||||||
 | 
					    m_nsImage = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    m_width =
 | 
				
			||||||
 | 
					    m_height = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxIconRefData::Free()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
    if ( m_iconRef )
 | 
					    if ( m_iconRef )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        ReleaseIconRef( m_iconRef ) ;
 | 
					        ReleaseIconRef( m_iconRef ) ;
 | 
				
			||||||
        m_iconRef = NULL ;
 | 
					        m_iconRef = NULL ;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxOSX_USE_COCOA
 | 
					 | 
				
			||||||
    if ( m_nsImage )
 | 
					    if ( m_nsImage )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        wxMacCocoaRelease(m_nsImage);
 | 
					        wxMacCocoaRelease(m_nsImage);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxOSX_USE_COCOA
 | 
					 | 
				
			||||||
WX_NSImage wxIconRefData::GetNSImage() const
 | 
					WX_NSImage wxIconRefData::GetNSImage() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    wxASSERT( IsOk() );
 | 
					    wxASSERT( IsOk() );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					 | 
				
			||||||
    if ( m_nsImage == 0 )
 | 
					    if ( m_nsImage == 0 )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        m_nsImage = wxOSXGetNSImageFromIconRef(m_iconRef);
 | 
					        m_nsImage = wxOSXGetNSImageFromIconRef(m_iconRef);
 | 
				
			||||||
        CFRetain(m_nsImage);
 | 
					        CFRetain(m_nsImage);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return m_nsImage;
 | 
					    return m_nsImage;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -182,6 +236,13 @@ wxIcon::wxIcon(WXHICON icon, const wxSize& size)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    m_refData = new wxIconRefData( icon, size.x, size.y ) ;
 | 
					    m_refData = new wxIconRefData( icon, size.x, size.y ) ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WXHICON wxIcon::GetHICON() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxASSERT( IsOk() ) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return (WXHICON) ((wxIconRefData*)m_refData)->GetHICON() ;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxIcon::~wxIcon()
 | 
					wxIcon::~wxIcon()
 | 
				
			||||||
@@ -201,15 +262,6 @@ wxIcon::CloneGDIRefData(const wxGDIRefData * WXUNUSED(data)) const
 | 
				
			|||||||
    return new wxIconRefData;
 | 
					    return new wxIconRefData;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					 | 
				
			||||||
WXHICON wxIcon::GetHICON() const
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    wxASSERT( IsOk() ) ;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return (WXHICON) ((wxIconRefData*)m_refData)->GetHICON() ;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int wxIcon::GetWidth() const
 | 
					int wxIcon::GetWidth() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   wxCHECK_MSG( IsOk(), -1, wxT("invalid icon") );
 | 
					   wxCHECK_MSG( IsOk(), -1, wxT("invalid icon") );
 | 
				
			||||||
@@ -229,15 +281,14 @@ int wxIcon::GetDepth() const
 | 
				
			|||||||
    return 32;
 | 
					    return 32;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxOSX_USE_COCOA
 | 
					 | 
				
			||||||
WX_NSImage wxIcon::GetNSImage() const
 | 
					WX_NSImage wxIcon::GetNSImage() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    wxCHECK_MSG( IsOk(), NULL, wxT("invalid icon") );
 | 
					    wxCHECK_MSG( IsOk(), NULL, wxT("invalid icon") );
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    return M_ICONDATA->GetNSImage() ;
 | 
					    return M_ICONDATA->GetNSImage() ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if WXWIN_COMPATIBILITY_3_0
 | 
				
			||||||
void wxIcon::SetDepth( int WXUNUSED(depth) )
 | 
					void wxIcon::SetDepth( int WXUNUSED(depth) )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -249,6 +300,7 @@ void wxIcon::SetWidth( int WXUNUSED(width) )
 | 
				
			|||||||
void wxIcon::SetHeight( int WXUNUSED(height) )
 | 
					void wxIcon::SetHeight( int WXUNUSED(height) )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Load an icon based on resource name or filel name
 | 
					// Load an icon based on resource name or filel name
 | 
				
			||||||
// Return true on success, false otherwise
 | 
					// Return true on success, false otherwise
 | 
				
			||||||
@@ -279,7 +331,6 @@ bool wxIcon::LoadIconFromSystemResource(const wxString& resourceName, int desire
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    UnRef();
 | 
					    UnRef();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					 | 
				
			||||||
    OSType theId = 0 ;
 | 
					    OSType theId = 0 ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ( resourceName == wxT("wxICON_INFORMATION") )
 | 
					    if ( resourceName == wxT("wxICON_INFORMATION") )
 | 
				
			||||||
@@ -368,13 +419,10 @@ bool wxIcon::LoadIconFromSystemResource(const wxString& resourceName, int desire
 | 
				
			|||||||
        IconRef iconRef = NULL ;
 | 
					        IconRef iconRef = NULL ;
 | 
				
			||||||
        __Verify_noErr(GetIconRef( kOnSystemDisk, kSystemIconsCreator, theId, &iconRef )) ;
 | 
					        __Verify_noErr(GetIconRef( kOnSystemDisk, kSystemIconsCreator, theId, &iconRef )) ;
 | 
				
			||||||
        if ( iconRef )
 | 
					        if ( iconRef )
 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            m_refData = new wxIconRefData( (WXHICON) iconRef, desiredWidth, desiredHeight ) ;
 | 
					            m_refData = new wxIconRefData( (WXHICON) iconRef, desiredWidth, desiredHeight ) ;
 | 
				
			||||||
            return true ;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    }
 | 
					
 | 
				
			||||||
#endif
 | 
					    return IsOk();
 | 
				
			||||||
    return false;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Load an icon of type 'icns' by resource by name
 | 
					// Load an icon of type 'icns' by resource by name
 | 
				
			||||||
@@ -528,7 +576,9 @@ void wxIcon::CopyFromBitmap( const wxBitmap& bmp )
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    UnRef() ;
 | 
					    UnRef() ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					#if wxOSX_ICON_USE_NSIMAGE
 | 
				
			||||||
 | 
					    m_refData = new wxIconRefData( bmp.GetNSImage() , bmp.GetWidth(), bmp.GetHeight()  ) ;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
    // as the bitmap owns that ref, we have to acquire it as well
 | 
					    // as the bitmap owns that ref, we have to acquire it as well
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    int w = bmp.GetWidth() ;
 | 
					    int w = bmp.GetWidth() ;
 | 
				
			||||||
@@ -544,8 +594,6 @@ void wxIcon::CopyFromBitmap( const wxBitmap& bmp )
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        m_refData = new wxIconRefData( (WXHICON) bmp.CreateIconRef() , bmp.GetWidth(), bmp.GetHeight()  ) ;
 | 
					        m_refData = new wxIconRefData( (WXHICON) bmp.CreateIconRef() , bmp.GetWidth(), bmp.GetHeight()  ) ;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
    m_refData = new wxIconRefData( bmp.GetNSImage() , bmp.GetWidth(), bmp.GetHeight()  ) ;
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -60,16 +60,22 @@ public:
 | 
				
			|||||||
    virtual bool IsOk() const wxOVERRIDE { return m_ok; }
 | 
					    virtual bool IsOk() const wxOVERRIDE { return m_ok; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void Free();
 | 
					    void Free();
 | 
				
			||||||
    void SetOk( bool isOk) { m_ok = isOk; }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxOSX_BITMAP_NATIVE_ACCESS
 | 
					#if wxOSX_BITMAP_NATIVE_ACCESS
 | 
				
			||||||
    int GetWidth() const { return CGBitmapContextGetWidth(m_hBitmap); }
 | 
					    int GetWidth() const
 | 
				
			||||||
    int GetHeight() const { return CGBitmapContextGetHeight(m_hBitmap); }
 | 
					        { return CGBitmapContextGetWidth(m_hBitmap); }
 | 
				
			||||||
    int GetDepth() const { return CGBitmapContextGetBitsPerPixel(m_hBitmap); }
 | 
					    int GetHeight() const
 | 
				
			||||||
    int GetBytesPerRow() const { return CGBitmapContextGetBytesPerRow(m_hBitmap); }
 | 
					        { return CGBitmapContextGetHeight(m_hBitmap); }
 | 
				
			||||||
    bool HasAlpha() const {
 | 
					    int GetDepth() const
 | 
				
			||||||
 | 
					        { return CGBitmapContextGetBitsPerPixel(m_hBitmap); }
 | 
				
			||||||
 | 
					    int GetBytesPerRow() const
 | 
				
			||||||
 | 
					        { return CGBitmapContextGetBytesPerRow(m_hBitmap); }
 | 
				
			||||||
 | 
					    bool HasAlpha() const
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
        CGImageAlphaInfo alpha = CGBitmapContextGetAlphaInfo(m_hBitmap);
 | 
					        CGImageAlphaInfo alpha = CGBitmapContextGetAlphaInfo(m_hBitmap);
 | 
				
			||||||
        return !( alpha == kCGImageAlphaNone || alpha == kCGImageAlphaNoneSkipFirst || alpha == kCGImageAlphaNoneSkipLast) ;
 | 
					        return !(alpha == kCGImageAlphaNone ||
 | 
				
			||||||
 | 
					                 alpha == kCGImageAlphaNoneSkipFirst ||
 | 
				
			||||||
 | 
					                 alpha == kCGImageAlphaNoneSkipLast);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
    void SetWidth( int width ) { m_width = width; }
 | 
					    void SetWidth( int width ) { m_width = width; }
 | 
				
			||||||
@@ -109,12 +115,10 @@ public:
 | 
				
			|||||||
    // rescaled to 16 x 16
 | 
					    // rescaled to 16 x 16
 | 
				
			||||||
    bool          HasNativeSize();
 | 
					    bool          HasNativeSize();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef __WXOSX_IPHONE__
 | 
					 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					#if wxOSX_USE_ICONREF
 | 
				
			||||||
    // caller should increase ref count if needed longer
 | 
					    // caller should increase ref count if needed longer
 | 
				
			||||||
    // than the bitmap exists
 | 
					    // than the bitmap exists
 | 
				
			||||||
    IconRef       GetIconRef();
 | 
					    IconRef       GetIconRef();
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    CGContextRef  GetBitmapContext() const;
 | 
					    CGContextRef  GetBitmapContext() const;
 | 
				
			||||||
@@ -127,6 +131,7 @@ private :
 | 
				
			|||||||
    bool Create( CGImageRef image, double scale );
 | 
					    bool Create( CGImageRef image, double scale );
 | 
				
			||||||
    bool Create( CGContextRef bitmapcontext);
 | 
					    bool Create( CGContextRef bitmapcontext);
 | 
				
			||||||
    void Init();
 | 
					    void Init();
 | 
				
			||||||
 | 
					    void FreeDerivedRepresentations();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !wxOSX_BITMAP_NATIVE_ACCESS
 | 
					#if !wxOSX_BITMAP_NATIVE_ACCESS
 | 
				
			||||||
    int           m_width;
 | 
					    int           m_width;
 | 
				
			||||||
@@ -141,10 +146,8 @@ private :
 | 
				
			|||||||
    mutable CGImageRef    m_cgImageRef;
 | 
					    mutable CGImageRef    m_cgImageRef;
 | 
				
			||||||
    bool          m_isTemplate;
 | 
					    bool          m_isTemplate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef __WXOSX_IPHONE__
 | 
					 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					#if wxOSX_USE_ICONREF
 | 
				
			||||||
    IconRef       m_iconRef;
 | 
					    IconRef       m_iconRef;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    wxCFRef<CGContextRef>  m_hBitmap;
 | 
					    wxCFRef<CGContextRef>  m_hBitmap;
 | 
				
			||||||
@@ -190,10 +193,8 @@ void wxBitmapRefData::Init()
 | 
				
			|||||||
    m_cgImageRef = NULL ;
 | 
					    m_cgImageRef = NULL ;
 | 
				
			||||||
    m_isTemplate = false;
 | 
					    m_isTemplate = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef __WXOSX_IPHONE__
 | 
					 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					#if wxOSX_USE_ICONREF
 | 
				
			||||||
    m_iconRef = NULL ;
 | 
					    m_iconRef = NULL ;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    m_hBitmap = NULL ;
 | 
					    m_hBitmap = NULL ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -391,7 +392,7 @@ void wxBitmapRefData::UseAlpha( bool use )
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
    wxASSERT_MSG( hBitmap , wxT("Unable to create CGBitmapContext context") ) ;
 | 
					    wxASSERT_MSG( hBitmap , wxT("Unable to create CGBitmapContext context") ) ;
 | 
				
			||||||
    CGContextTranslateCTM( hBitmap, 0,  GetHeight() );
 | 
					    CGContextTranslateCTM( hBitmap, 0,  GetHeight() );
 | 
				
			||||||
    CGContextScaleCTM( hBitmap, 1*GetScaleFactor(), -1*GetScaleFactor() );
 | 
					    CGContextScaleCTM( hBitmap, GetScaleFactor(), -GetScaleFactor() );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_hBitmap.reset(hBitmap);
 | 
					    m_hBitmap.reset(hBitmap);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -408,13 +409,7 @@ const void *wxBitmapRefData::GetRawAccess() const
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void *wxBitmapRefData::GetRawAccess()
 | 
					void *wxBitmapRefData::GetRawAccess()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    wxCHECK_MSG( IsOk(), NULL , wxT("invalid bitmap") ) ;
 | 
					    return const_cast<void*>(const_cast<const wxBitmapRefData*>(this)->GetRawAccess());
 | 
				
			||||||
    wxASSERT_MSG( m_rawAccessCount == 1, "Direct write access must be within Begin/EndRawAccess" ) ;
 | 
					 | 
				
			||||||
#if !wxOSX_BITMAP_NATIVE_ACCESS
 | 
					 | 
				
			||||||
    return m_memBuf.GetData() ;
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
    return CGBitmapContextGetData(m_hBitmap);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -422,21 +417,17 @@ void *wxBitmapRefData::BeginRawAccess()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    wxCHECK_MSG( IsOk(), NULL, wxT("invalid bitmap") ) ;
 | 
					    wxCHECK_MSG( IsOk(), NULL, wxT("invalid bitmap") ) ;
 | 
				
			||||||
    wxASSERT( m_rawAccessCount == 0 ) ;
 | 
					    wxASSERT( m_rawAccessCount == 0 ) ;
 | 
				
			||||||
#ifndef __WXOSX_IPHONE__
 | 
					
 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					#if wxOSX_USE_ICONREF
 | 
				
			||||||
    wxASSERT_MSG( m_iconRef == NULL ,
 | 
					    wxASSERT_MSG( m_iconRef == NULL ,
 | 
				
			||||||
                 wxT("Currently, modifing bitmaps that are used in controls already is not supported") ) ;
 | 
					                 wxT("Currently, modifing bitmaps that are used in controls already is not supported") ) ;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#endif
 | 
					
 | 
				
			||||||
    ++m_rawAccessCount ;
 | 
					    ++m_rawAccessCount ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // we must destroy an existing cached image, as
 | 
					    // we must destroy an existing cached image, as
 | 
				
			||||||
    // the bitmap data may change now
 | 
					    // the bitmap data may change now
 | 
				
			||||||
    if ( m_cgImageRef )
 | 
					    FreeDerivedRepresentations();
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        CGImageRelease( m_cgImageRef ) ;
 | 
					 | 
				
			||||||
        m_cgImageRef = NULL ;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return GetRawAccess() ;
 | 
					    return GetRawAccess() ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -458,7 +449,6 @@ bool wxBitmapRefData::HasNativeSize()
 | 
				
			|||||||
    return ( sz == 128 || sz == 48 || sz == 32 || sz == 16 );
 | 
					    return ( sz == 128 || sz == 48 || sz == 32 || sz == 16 );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef __WXOSX_IPHONE__
 | 
					 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					#if wxOSX_USE_ICONREF
 | 
				
			||||||
IconRef wxBitmapRefData::GetIconRef()
 | 
					IconRef wxBitmapRefData::GetIconRef()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -671,8 +661,7 @@ IconRef wxBitmapRefData::GetIconRef()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    return m_iconRef ;
 | 
					    return m_iconRef ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif // wxOSX_USE_ICONREF
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
CGImageRef wxBitmapRefData::CreateCGImage() const
 | 
					CGImageRef wxBitmapRefData::CreateCGImage() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -821,25 +810,28 @@ wxDC *wxBitmapRefData::GetSelectedInto() const
 | 
				
			|||||||
    return m_selectedInto;
 | 
					    return m_selectedInto;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxBitmapRefData::FreeDerivedRepresentations()
 | 
				
			||||||
void wxBitmapRefData::Free()
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    wxASSERT_MSG( m_rawAccessCount == 0 , wxT("Bitmap still selected when destroyed") ) ;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if ( m_cgImageRef )
 | 
					    if ( m_cgImageRef )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        CGImageRelease( m_cgImageRef ) ;
 | 
					        CGImageRelease( m_cgImageRef ) ;
 | 
				
			||||||
        m_cgImageRef = NULL ;
 | 
					        m_cgImageRef = NULL ;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#ifndef __WXOSX_IPHONE__
 | 
					 | 
				
			||||||
#if wxOSX_USE_ICONREF
 | 
					#if wxOSX_USE_ICONREF
 | 
				
			||||||
    if ( m_iconRef )
 | 
					    if ( m_iconRef )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        ReleaseIconRef( m_iconRef ) ;
 | 
					        ReleaseIconRef( m_iconRef ) ;
 | 
				
			||||||
        m_iconRef = NULL ;
 | 
					        m_iconRef = NULL ;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif
 | 
					#endif // wxOSX_USE_ICONREF
 | 
				
			||||||
#endif
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxBitmapRefData::Free()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxASSERT_MSG( m_rawAccessCount == 0 , wxT("Bitmap still selected when destroyed") ) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    FreeDerivedRepresentations();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_hBitmap.reset();
 | 
					    m_hBitmap.reset();
 | 
				
			||||||
    wxDELETE(m_bitmapMask);
 | 
					    wxDELETE(m_bitmapMask);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1479,6 +1471,7 @@ bool wxBitmap::HasAlpha() const
 | 
				
			|||||||
   return GetBitmapData()->HasAlpha() ;
 | 
					   return GetBitmapData()->HasAlpha() ;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if WXWIN_COMPATIBILITY_3_0
 | 
				
			||||||
void wxBitmap::SetWidth(int w)
 | 
					void wxBitmap::SetWidth(int w)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    AllocExclusive();
 | 
					    AllocExclusive();
 | 
				
			||||||
@@ -1496,12 +1489,7 @@ void wxBitmap::SetDepth(int d)
 | 
				
			|||||||
    AllocExclusive();
 | 
					    AllocExclusive();
 | 
				
			||||||
    wxASSERT_MSG( d == -1 || GetDepth() == d, "Changing the bitmap depth is not supported");
 | 
					    wxASSERT_MSG( d == -1 || GetDepth() == d, "Changing the bitmap depth is not supported");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
void wxBitmap::SetOk(bool isOk)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    AllocExclusive();
 | 
					 | 
				
			||||||
    GetBitmapData()->SetOk(isOk);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxUSE_PALETTE
 | 
					#if wxUSE_PALETTE
 | 
				
			||||||
wxPalette *wxBitmap::GetPalette() const
 | 
					wxPalette *wxBitmap::GetPalette() const
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -74,7 +74,7 @@ void wxMemoryDCImpl::DoSelect( const wxBitmap& bitmap )
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        wxASSERT_MSG( !bitmap.GetSelectedInto() ||
 | 
					        wxASSERT_MSG( !bitmap.GetSelectedInto() ||
 | 
				
			||||||
                     (bitmap.GetSelectedInto() == GetOwner()),
 | 
					                     (bitmap.GetSelectedInto() == GetOwner()),
 | 
				
			||||||
                     wxT("Bitmap is selected in another wxMemoryDC, delete the first wxMemoryDC or use SelectObject(NULL)") );
 | 
					                     "Bitmap is selected in another wxMemoryDC, delete the first wxMemoryDC or use SelectObject(NULL)" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        m_selected.SetSelectedInto(GetOwner());
 | 
					        m_selected.SetSelectedInto(GetOwner());
 | 
				
			||||||
        m_width = bitmap.GetScaledWidth();
 | 
					        m_width = bitmap.GetScaledWidth();
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user