have CGImage Support in all OSX builds
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32509 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -196,7 +196,7 @@ public:
 | 
			
		||||
    // returns the 'native' implementation, a GWorldPtr for the content and one for the mask 
 | 
			
		||||
    WXHBITMAP GetHBITMAP( WXHBITMAP * mask = NULL ) const;
 | 
			
		||||
 | 
			
		||||
#if wxMAC_USE_CORE_GRAPHICS
 | 
			
		||||
#ifdef __WXMAC_OSX__
 | 
			
		||||
    // returns a CGImageRef which must released after usage with CGImageRelease
 | 
			
		||||
    WXCGIMAGEREF CGImageCreate() const ;
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -637,10 +637,14 @@ private:
 | 
			
		||||
    wxBrush m_brush ;
 | 
			
		||||
} ;
 | 
			
		||||
 | 
			
		||||
#endif // wxMAC_USE_CORE_GRAPHICS
 | 
			
		||||
 | 
			
		||||
#ifdef __WXMAC_OSX__
 | 
			
		||||
 | 
			
		||||
CGColorSpaceRef wxMacGetGenericRGBColorSpace(void) ;
 | 
			
		||||
void wxMacMemoryBufferReleaseProc(void *info, const void *data, size_t size) ;
 | 
			
		||||
 | 
			
		||||
#endif // wxMAC_USE_CORE_GRAPHICS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData
 | 
			
		||||
{
 | 
			
		||||
@@ -678,7 +682,7 @@ public:
 | 
			
		||||
#endif // wxUSE_PALETTE
 | 
			
		||||
    
 | 
			
		||||
    wxMask *      m_bitmapMask; // Optional mask
 | 
			
		||||
#if wxMAC_USE_CORE_GRAPHICS
 | 
			
		||||
#ifdef __WXMAC_OSX__
 | 
			
		||||
    CGImageRef    CGImageCreate() const ;
 | 
			
		||||
#endif
 | 
			
		||||
     
 | 
			
		||||
@@ -710,7 +714,7 @@ private :
 | 
			
		||||
    wxMemoryBuffer m_memBuf ;
 | 
			
		||||
    int           m_rawAccessCount ;
 | 
			
		||||
    bool          m_ok;
 | 
			
		||||
#if wxMAC_USE_CORE_GRAPHICS
 | 
			
		||||
#ifdef __WXMAC_OSX__
 | 
			
		||||
    mutable CGImageRef    m_cgImageRef ;
 | 
			
		||||
#endif
 | 
			
		||||
    IconRef       m_iconRef ;
 | 
			
		||||
 
 | 
			
		||||
@@ -454,7 +454,7 @@ PicHandle wxBitmapRefData::GetPictHandle()
 | 
			
		||||
    return m_pictHandle ;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if wxMAC_USE_CORE_GRAPHICS
 | 
			
		||||
#ifdef __WXMAC_OSX__
 | 
			
		||||
void wxMacMemoryBufferReleaseProc(void *info, const void *data, size_t size)
 | 
			
		||||
{
 | 
			
		||||
    wxMemoryBuffer* membuf = (wxMemoryBuffer*) info ;
 | 
			
		||||
@@ -817,7 +817,7 @@ bool wxBitmap::CreateFromXpm(const char **bits)
 | 
			
		||||
    return TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if wxMAC_USE_CORE_GRAPHICS
 | 
			
		||||
#ifdef __WXMAC_OSX__
 | 
			
		||||
WXCGIMAGEREF wxBitmap::CGImageCreate() const
 | 
			
		||||
{
 | 
			
		||||
    wxCHECK_MSG( Ok(), NULL , wxT("invalid bitmap") ) ;
 | 
			
		||||
 
 | 
			
		||||
@@ -467,68 +467,6 @@ void wxMacCGContext::SetBrush( const wxBrush &brush )
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// snippets from Sketch Sample from Apple :
 | 
			
		||||
 | 
			
		||||
#define	kGenericRGBProfilePathStr       "/System/Library/ColorSync/Profiles/Generic RGB Profile.icc"
 | 
			
		||||
/*
 | 
			
		||||
    This function locates, opens, and returns the profile reference for the calibrated 
 | 
			
		||||
    Generic RGB color space. It is up to the caller to call CMCloseProfile when done
 | 
			
		||||
    with the profile reference this function returns.
 | 
			
		||||
*/
 | 
			
		||||
CMProfileRef wxMacOpenGenericProfile(void)
 | 
			
		||||
{
 | 
			
		||||
    static CMProfileRef cachedRGBProfileRef = NULL;
 | 
			
		||||
    
 | 
			
		||||
    // we only create the profile reference once
 | 
			
		||||
    if (cachedRGBProfileRef == NULL)
 | 
			
		||||
    {
 | 
			
		||||
		CMProfileLocation 	loc;
 | 
			
		||||
	
 | 
			
		||||
		loc.locType = cmPathBasedProfile;
 | 
			
		||||
		strcpy(loc.u.pathLoc.path, kGenericRGBProfilePathStr);
 | 
			
		||||
	
 | 
			
		||||
		verify_noerr( CMOpenProfile(&cachedRGBProfileRef, &loc) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (cachedRGBProfileRef)
 | 
			
		||||
    {
 | 
			
		||||
		// clone the profile reference so that the caller has their own reference, not our cached one
 | 
			
		||||
		CMCloneProfileRef(cachedRGBProfileRef);   
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return cachedRGBProfileRef;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    Return the generic RGB color space. This is a 'get' function and the caller should
 | 
			
		||||
    not release the returned value unless the caller retains it first. Usually callers
 | 
			
		||||
    of this routine will immediately use the returned colorspace with CoreGraphics
 | 
			
		||||
    so they typically do not need to retain it themselves.
 | 
			
		||||
    
 | 
			
		||||
    This function creates the generic RGB color space once and hangs onto it so it can
 | 
			
		||||
    return it whenever this function is called.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
CGColorSpaceRef wxMacGetGenericRGBColorSpace()
 | 
			
		||||
{
 | 
			
		||||
    static CGColorSpaceRef genericRGBColorSpace = NULL;
 | 
			
		||||
 | 
			
		||||
	if (genericRGBColorSpace == NULL)
 | 
			
		||||
	{
 | 
			
		||||
		CMProfileRef genericRGBProfile = wxMacOpenGenericProfile();
 | 
			
		||||
	
 | 
			
		||||
		if (genericRGBProfile)
 | 
			
		||||
		{
 | 
			
		||||
			genericRGBColorSpace = CGColorSpaceCreateWithPlatformColorSpace(genericRGBProfile);
 | 
			
		||||
			wxASSERT_MSG( genericRGBColorSpace != NULL, wxT("couldn't create the generic RGB color space") ) ;
 | 
			
		||||
			
 | 
			
		||||
			// we opened the profile so it is up to us to close it
 | 
			
		||||
			CMCloseProfile(genericRGBProfile); 
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
    return genericRGBColorSpace;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AddEllipticArcToPath(CGContextRef c, CGPoint center, float a, float b, float fromDegree , float toDegree )
 | 
			
		||||
{
 | 
			
		||||
    CGContextSaveGState(c);
 | 
			
		||||
 
 | 
			
		||||
@@ -1457,5 +1457,73 @@ OSStatus wxMacControl::SetTabEnabled( SInt16 tabNo , bool enable )
 | 
			
		||||
    return ::SetTabEnabled( m_controlRef , tabNo , enable ) ;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Quartz Support
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#ifdef __WXMAC_OSX__
 | 
			
		||||
// snippets from Sketch Sample from Apple :
 | 
			
		||||
 | 
			
		||||
#define	kGenericRGBProfilePathStr       "/System/Library/ColorSync/Profiles/Generic RGB Profile.icc"
 | 
			
		||||
/*
 | 
			
		||||
    This function locates, opens, and returns the profile reference for the calibrated 
 | 
			
		||||
    Generic RGB color space. It is up to the caller to call CMCloseProfile when done
 | 
			
		||||
    with the profile reference this function returns.
 | 
			
		||||
*/
 | 
			
		||||
CMProfileRef wxMacOpenGenericProfile(void)
 | 
			
		||||
{
 | 
			
		||||
    static CMProfileRef cachedRGBProfileRef = NULL;
 | 
			
		||||
    
 | 
			
		||||
    // we only create the profile reference once
 | 
			
		||||
    if (cachedRGBProfileRef == NULL)
 | 
			
		||||
    {
 | 
			
		||||
		CMProfileLocation 	loc;
 | 
			
		||||
	
 | 
			
		||||
		loc.locType = cmPathBasedProfile;
 | 
			
		||||
		strcpy(loc.u.pathLoc.path, kGenericRGBProfilePathStr);
 | 
			
		||||
	
 | 
			
		||||
		verify_noerr( CMOpenProfile(&cachedRGBProfileRef, &loc) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (cachedRGBProfileRef)
 | 
			
		||||
    {
 | 
			
		||||
		// clone the profile reference so that the caller has their own reference, not our cached one
 | 
			
		||||
		CMCloneProfileRef(cachedRGBProfileRef);   
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return cachedRGBProfileRef;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    Return the generic RGB color space. This is a 'get' function and the caller should
 | 
			
		||||
    not release the returned value unless the caller retains it first. Usually callers
 | 
			
		||||
    of this routine will immediately use the returned colorspace with CoreGraphics
 | 
			
		||||
    so they typically do not need to retain it themselves.
 | 
			
		||||
    
 | 
			
		||||
    This function creates the generic RGB color space once and hangs onto it so it can
 | 
			
		||||
    return it whenever this function is called.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
CGColorSpaceRef wxMacGetGenericRGBColorSpace()
 | 
			
		||||
{
 | 
			
		||||
    static CGColorSpaceRef genericRGBColorSpace = NULL;
 | 
			
		||||
 | 
			
		||||
	if (genericRGBColorSpace == NULL)
 | 
			
		||||
	{
 | 
			
		||||
		CMProfileRef genericRGBProfile = wxMacOpenGenericProfile();
 | 
			
		||||
	
 | 
			
		||||
		if (genericRGBProfile)
 | 
			
		||||
		{
 | 
			
		||||
			genericRGBColorSpace = CGColorSpaceCreateWithPlatformColorSpace(genericRGBProfile);
 | 
			
		||||
			wxASSERT_MSG( genericRGBColorSpace != NULL, wxT("couldn't create the generic RGB color space") ) ;
 | 
			
		||||
			
 | 
			
		||||
			// we opened the profile so it is up to us to close it
 | 
			
		||||
			CMCloseProfile(genericRGBProfile); 
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
    return genericRGBColorSpace;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif // wxUSE_GUI
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user