X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/aa6208d975c3757d75d780c661b4d7918236f4fb..4908591c7eb448f3a0f70f3b0c6c4170b5945f9a:/src/osx/carbon/graphics.cpp?ds=sidebyside diff --git a/src/osx/carbon/graphics.cpp b/src/osx/carbon/graphics.cpp index 4bf733644a..d5f4f7e704 100644 --- a/src/osx/carbon/graphics.cpp +++ b/src/osx/carbon/graphics.cpp @@ -72,10 +72,12 @@ int UMAGetSystemVersion() #endif #if wxOSX_USE_COCOA_OR_IPHONE -extern CGContextRef wxOSXGetContextFromCurrentNSContext() ; +extern CGContextRef wxOSXGetContextFromCurrentContext() ; +#if wxOSX_USE_COCOA extern bool wxOSXLockFocus( WXWidget view) ; extern void wxOSXUnlockFocus( WXWidget view) ; #endif +#endif #if 1 // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 @@ -96,7 +98,7 @@ typedef enum CGCompositeOperation { kCGCompositeOperationDestinationAtop = 9, kCGCompositeOperationXOR = 10, kCGCompositeOperationPlusDarker = 11, -// NS only, unsupported by CG : Highlight +// NS only, unsupported by CG : Highlight kCGCompositeOperationPlusLighter = 12 } CGCompositeOperation ; @@ -867,19 +869,19 @@ wxMacCoreGraphicsFontData::wxMacCoreGraphicsFontData(wxGraphicsRenderer* rendere kATSUSizeTag , kATSUColorTag , }; - ByteCount atsuSizes[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] = + ByteCount atsuSizes[WXSIZEOF(atsuTags)] = { sizeof( Fixed ) , sizeof( RGBColor ) , }; - ATSUAttributeValuePtr atsuValues[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] = + ATSUAttributeValuePtr atsuValues[WXSIZEOF(atsuTags)] = { &atsuSize , &atsuColor , }; status = ::ATSUSetAttributes( - m_macATSUIStyle, sizeof(atsuTags) / sizeof(ATSUAttributeTag) , + m_macATSUIStyle, WXSIZEOF(atsuTags), atsuTags, atsuSizes, atsuValues); wxASSERT_MSG( status == noErr , wxT("couldn't modify ATSU style") ); @@ -1347,7 +1349,7 @@ public: virtual void BeginLayer(wxDouble opacity); virtual void EndLayer(); - + // // transformation // @@ -1519,12 +1521,14 @@ wxMacCoreGraphicsContext::wxMacCoreGraphicsContext( wxGraphicsRenderer* renderer #if wxOSX_USE_COCOA_OR_IPHONE m_view = window->GetHandle(); - if ( !((wxWidgetCocoaImpl*) window->GetPeer())->IsFlipped() ) +#if wxOSX_USE_COCOA + if ( ! window->GetPeer()->IsFlipped() ) { m_windowTransform = CGAffineTransformMakeTranslation( 0 , m_height ); m_windowTransform = CGAffineTransformScale( m_windowTransform , 1 , -1 ); } else +#endif { m_windowTransform = CGAffineTransformIdentity; } @@ -1593,18 +1597,25 @@ bool wxMacCoreGraphicsContext::EnsureIsValid() { if (m_invisible) return false; - -#if wxOSX_USE_COCOA_OR_IPHONE + +#if wxOSX_USE_COCOA if ( wxOSXLockFocus(m_view) ) { - m_cgContext = wxOSXGetContextFromCurrentNSContext(); - wxASSERT_MSG( m_cgContext != NULL, _T("Unable to retrieve drawing context from View")); + m_cgContext = wxOSXGetContextFromCurrentContext(); + wxASSERT_MSG( m_cgContext != NULL, wxT("Unable to retrieve drawing context from View")); } else { m_invisible = true; } #endif +#if wxOSX_USE_IPHONE + m_cgContext = wxOSXGetContextFromCurrentContext(); + if ( m_cgContext == NULL ) + { + m_invisible = true; + } +#endif #if wxOSX_USE_CARBON OSStatus status = QDBeginCGContext( GetWindowPort( m_windowRef ) , &m_cgContext ); if ( status != noErr ) @@ -1617,6 +1628,7 @@ bool wxMacCoreGraphicsContext::EnsureIsValid() CGContextConcatCTM( m_cgContext, m_windowTransform ); CGContextSaveGState( m_cgContext ); m_contextSynthesized = true; +#if wxOSX_USE_COCOA_OR_CARBON if ( m_clipRgn.get() ) { // the clip region is in device coordinates, so we convert this again to user coordinates @@ -1635,8 +1647,9 @@ bool wxMacCoreGraphicsContext::EnsureIsValid() CGContextClip( m_cgContext ); } } +#endif CGContextSaveGState( m_cgContext ); - + #if 0 // turn on for debugging of clientdc static float color = 0.5 ; static int channel = 0 ; @@ -1665,9 +1678,9 @@ bool wxMacCoreGraphicsContext::SetAntialiasMode(wxAntialiasMode antialias) if (m_antialias == antialias) return true; - + m_antialias = antialias; - + bool antialiasMode; switch (antialias) { @@ -1691,12 +1704,12 @@ bool wxMacCoreGraphicsContext::SetCompositionMode(wxCompositionMode op) if ( m_composition == op ) return true; - + m_composition = op; - + if (m_composition == wxCOMPOSITION_DEST) return true; - + #if wxOSX_USE_COCOA_OR_CARBON if ( UMAGetSystemVersion() < 0x1060 ) { @@ -1705,37 +1718,37 @@ bool wxMacCoreGraphicsContext::SetCompositionMode(wxCompositionMode op) switch( op ) { case wxCOMPOSITION_CLEAR: - cop = kCGCompositeOperationClear; + cop = kCGCompositeOperationClear; break; case wxCOMPOSITION_SOURCE: - cop = kCGCompositeOperationCopy; + cop = kCGCompositeOperationCopy; break; case wxCOMPOSITION_OVER: - mode = kCGBlendModeNormal; + mode = kCGBlendModeNormal; break; case wxCOMPOSITION_IN: - cop = kCGCompositeOperationSourceIn; + cop = kCGCompositeOperationSourceIn; break; case wxCOMPOSITION_OUT: - cop = kCGCompositeOperationSourceOut; + cop = kCGCompositeOperationSourceOut; break; case wxCOMPOSITION_ATOP: - cop = kCGCompositeOperationSourceAtop; + cop = kCGCompositeOperationSourceAtop; break; case wxCOMPOSITION_DEST_OVER: - cop = kCGCompositeOperationDestinationOver; + cop = kCGCompositeOperationDestinationOver; break; case wxCOMPOSITION_DEST_IN: - cop = kCGCompositeOperationDestinationIn; + cop = kCGCompositeOperationDestinationIn; break; case wxCOMPOSITION_DEST_OUT: - cop = kCGCompositeOperationDestinationOut; + cop = kCGCompositeOperationDestinationOut; break; case wxCOMPOSITION_DEST_ATOP: - cop = kCGCompositeOperationDestinationAtop; + cop = kCGCompositeOperationDestinationAtop; break; case wxCOMPOSITION_XOR: - cop = kCGCompositeOperationXOR; + cop = kCGCompositeOperationXOR; break; #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 case wxCOMPOSITION_ADD: @@ -1758,39 +1771,39 @@ bool wxMacCoreGraphicsContext::SetCompositionMode(wxCompositionMode op) switch( op ) { case wxCOMPOSITION_CLEAR: - mode = kCGBlendModeClear; + mode = kCGBlendModeClear; break; case wxCOMPOSITION_SOURCE: - mode = kCGBlendModeCopy; + mode = kCGBlendModeCopy; break; case wxCOMPOSITION_OVER: - mode = kCGBlendModeNormal; + mode = kCGBlendModeNormal; break; case wxCOMPOSITION_IN: - mode = kCGBlendModeSourceIn; + mode = kCGBlendModeSourceIn; break; case wxCOMPOSITION_OUT: - mode = kCGBlendModeSourceOut; + mode = kCGBlendModeSourceOut; break; case wxCOMPOSITION_ATOP: - mode = kCGBlendModeSourceAtop; + mode = kCGBlendModeSourceAtop; break; case wxCOMPOSITION_DEST_OVER: - mode = kCGBlendModeDestinationOver; + mode = kCGBlendModeDestinationOver; break; case wxCOMPOSITION_DEST_IN: - mode = kCGBlendModeDestinationIn; + mode = kCGBlendModeDestinationIn; break; case wxCOMPOSITION_DEST_OUT: - mode = kCGBlendModeDestinationOut; + mode = kCGBlendModeDestinationOut; break; case wxCOMPOSITION_DEST_ATOP: - mode = kCGBlendModeDestinationAtop; + mode = kCGBlendModeDestinationAtop; break; case wxCOMPOSITION_XOR: - mode = kCGBlendModeXOR; + mode = kCGBlendModeXOR; break; - + case wxCOMPOSITION_ADD: mode = kCGBlendModePlusLighter ; break; @@ -1905,7 +1918,7 @@ void wxMacCoreGraphicsContext::StrokePath( const wxGraphicsPath &path ) if (EnsureIsValid()==false) return; - + if (m_composition == wxCOMPOSITION_DEST) return; @@ -1920,7 +1933,7 @@ void wxMacCoreGraphicsContext::DrawPath( const wxGraphicsPath &path , wxPolygonF { if (EnsureIsValid()==false) return; - + if (m_composition == wxCOMPOSITION_DEST) return; @@ -1976,7 +1989,7 @@ void wxMacCoreGraphicsContext::FillPath( const wxGraphicsPath &path , wxPolygonF if (EnsureIsValid()==false) return; - + if (m_composition == wxCOMPOSITION_DEST) return; @@ -2010,13 +2023,13 @@ void wxMacCoreGraphicsContext::SetNativeContext( CGContextRef cg ) CGContextRestoreGState( m_cgContext ); if ( m_contextSynthesized ) { - // TODO: in case of performance problems, try issuing this not too + // TODO: in case of performance problems, try issuing this not too // frequently (half of refresh rate) CGContextFlush(m_cgContext); #if wxOSX_USE_CARBON QDEndCGContext( GetWindowPort( m_windowRef ) , &m_cgContext); #endif -#if wxOSX_USE_COCOA_OR_IPHONE +#if wxOSX_USE_COCOA wxOSXUnlockFocus(m_view); #endif } @@ -2080,7 +2093,7 @@ void wxMacCoreGraphicsContext::DrawBitmap( const wxGraphicsBitmap &bmp, wxDouble if (m_composition == wxCOMPOSITION_DEST) return; - + #ifdef __WXMAC__ wxMacCoreGraphicsBitmapData* refdata =static_cast(bmp.GetRefData()); CGImageRef image = refdata->GetBitmap(); @@ -2119,7 +2132,7 @@ void wxMacCoreGraphicsContext::DrawIcon( const wxIcon &icon, wxDouble x, wxDoubl { if (EnsureIsValid()==false) return; - + if (m_composition == wxCOMPOSITION_DEST) return; @@ -2138,7 +2151,7 @@ void wxMacCoreGraphicsContext::PushState() { if (EnsureIsValid()==false) return; - + CGContextSaveGState( m_cgContext ); } @@ -2146,7 +2159,7 @@ void wxMacCoreGraphicsContext::PopState() { if (EnsureIsValid()==false) return; - + CGContextRestoreGState( m_cgContext ); } @@ -2156,7 +2169,7 @@ void wxMacCoreGraphicsContext::DoDrawText( const wxString &str, wxDouble x, wxDo if (EnsureIsValid()==false) return; - + if (m_composition == wxCOMPOSITION_DEST) return; @@ -2219,7 +2232,7 @@ void wxMacCoreGraphicsContext::DoDrawRotatedText(const wxString &str, if (EnsureIsValid()==false) return; - + if (m_composition == wxCOMPOSITION_DEST) return; @@ -2255,15 +2268,15 @@ void wxMacCoreGraphicsContext::DoDrawRotatedText(const wxString &str, { kATSULineRotationTag , }; - ByteCount atsuSizes[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] = + ByteCount atsuSizes[WXSIZEOF(atsuTags)] = { sizeof( Fixed ) , }; - ATSUAttributeValuePtr atsuValues[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] = + ATSUAttributeValuePtr atsuValues[WXSIZEOF(atsuTags)] = { &atsuAngle , }; - status = ::ATSUSetLayoutControls(atsuLayout , sizeof(atsuTags) / sizeof(ATSUAttributeTag), + status = ::ATSUSetLayoutControls(atsuLayout , WXSIZEOF(atsuTags), atsuTags, atsuSizes, atsuValues ); } @@ -2272,15 +2285,15 @@ void wxMacCoreGraphicsContext::DoDrawRotatedText(const wxString &str, { kATSUCGContextTag , }; - ByteCount atsuSizes[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] = + ByteCount atsuSizes[WXSIZEOF(atsuTags)] = { sizeof( CGContextRef ) , }; - ATSUAttributeValuePtr atsuValues[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] = + ATSUAttributeValuePtr atsuValues[WXSIZEOF(atsuTags)] = { &m_cgContext , }; - status = ::ATSUSetLayoutControls(atsuLayout , sizeof(atsuTags) / sizeof(ATSUAttributeTag), + status = ::ATSUSetLayoutControls(atsuLayout , WXSIZEOF(atsuTags), atsuTags, atsuSizes, atsuValues ); }