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
|
// returns the 'native' implementation, a GWorldPtr for the content and one for the mask
|
||||||
WXHBITMAP GetHBITMAP( WXHBITMAP * mask = NULL ) const;
|
WXHBITMAP GetHBITMAP( WXHBITMAP * mask = NULL ) const;
|
||||||
|
|
||||||
#if wxMAC_USE_CORE_GRAPHICS
|
#ifdef __WXMAC_OSX__
|
||||||
// returns a CGImageRef which must released after usage with CGImageRelease
|
// returns a CGImageRef which must released after usage with CGImageRelease
|
||||||
WXCGIMAGEREF CGImageCreate() const ;
|
WXCGIMAGEREF CGImageCreate() const ;
|
||||||
#endif
|
#endif
|
||||||
|
@@ -637,10 +637,14 @@ private:
|
|||||||
wxBrush m_brush ;
|
wxBrush m_brush ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
#endif // wxMAC_USE_CORE_GRAPHICS
|
||||||
|
|
||||||
|
#ifdef __WXMAC_OSX__
|
||||||
|
|
||||||
CGColorSpaceRef wxMacGetGenericRGBColorSpace(void) ;
|
CGColorSpaceRef wxMacGetGenericRGBColorSpace(void) ;
|
||||||
void wxMacMemoryBufferReleaseProc(void *info, const void *data, size_t size) ;
|
void wxMacMemoryBufferReleaseProc(void *info, const void *data, size_t size) ;
|
||||||
|
|
||||||
#endif // wxMAC_USE_CORE_GRAPHICS
|
#endif
|
||||||
|
|
||||||
class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData
|
class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData
|
||||||
{
|
{
|
||||||
@@ -678,7 +682,7 @@ public:
|
|||||||
#endif // wxUSE_PALETTE
|
#endif // wxUSE_PALETTE
|
||||||
|
|
||||||
wxMask * m_bitmapMask; // Optional mask
|
wxMask * m_bitmapMask; // Optional mask
|
||||||
#if wxMAC_USE_CORE_GRAPHICS
|
#ifdef __WXMAC_OSX__
|
||||||
CGImageRef CGImageCreate() const ;
|
CGImageRef CGImageCreate() const ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -710,7 +714,7 @@ private :
|
|||||||
wxMemoryBuffer m_memBuf ;
|
wxMemoryBuffer m_memBuf ;
|
||||||
int m_rawAccessCount ;
|
int m_rawAccessCount ;
|
||||||
bool m_ok;
|
bool m_ok;
|
||||||
#if wxMAC_USE_CORE_GRAPHICS
|
#ifdef __WXMAC_OSX__
|
||||||
mutable CGImageRef m_cgImageRef ;
|
mutable CGImageRef m_cgImageRef ;
|
||||||
#endif
|
#endif
|
||||||
IconRef m_iconRef ;
|
IconRef m_iconRef ;
|
||||||
|
@@ -454,7 +454,7 @@ PicHandle wxBitmapRefData::GetPictHandle()
|
|||||||
return m_pictHandle ;
|
return m_pictHandle ;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if wxMAC_USE_CORE_GRAPHICS
|
#ifdef __WXMAC_OSX__
|
||||||
void wxMacMemoryBufferReleaseProc(void *info, const void *data, size_t size)
|
void wxMacMemoryBufferReleaseProc(void *info, const void *data, size_t size)
|
||||||
{
|
{
|
||||||
wxMemoryBuffer* membuf = (wxMemoryBuffer*) info ;
|
wxMemoryBuffer* membuf = (wxMemoryBuffer*) info ;
|
||||||
@@ -817,7 +817,7 @@ bool wxBitmap::CreateFromXpm(const char **bits)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if wxMAC_USE_CORE_GRAPHICS
|
#ifdef __WXMAC_OSX__
|
||||||
WXCGIMAGEREF wxBitmap::CGImageCreate() const
|
WXCGIMAGEREF wxBitmap::CGImageCreate() const
|
||||||
{
|
{
|
||||||
wxCHECK_MSG( Ok(), NULL , wxT("invalid bitmap") ) ;
|
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 )
|
void AddEllipticArcToPath(CGContextRef c, CGPoint center, float a, float b, float fromDegree , float toDegree )
|
||||||
{
|
{
|
||||||
CGContextSaveGState(c);
|
CGContextSaveGState(c);
|
||||||
|
@@ -1457,5 +1457,73 @@ OSStatus wxMacControl::SetTabEnabled( SInt16 tabNo , bool enable )
|
|||||||
return ::SetTabEnabled( m_controlRef , tabNo , 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
|
#endif // wxUSE_GUI
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user