X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f72e03b222e573e4b1311c27ae8cdc31b90be94b..5b304314d9b9b479c85d384737667768f0071d36:/src/osx/carbon/graphics.cpp diff --git a/src/osx/carbon/graphics.cpp b/src/osx/carbon/graphics.cpp index 33bd0dde0d..b446fc502c 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 @@ -171,7 +173,7 @@ CGColorRef wxMacCreateCGColor( const wxColour& col ) CTFontRef wxMacCreateCTFont( const wxFont& font ) { #ifdef __WXMAC__ - return wxCFRetain((CTFontRef) font.MacGetCTFont()); + return wxCFRetain((CTFontRef) font.OSXGetCTFont()); #else return CTFontCreateWithName( wxCFStringRef( font.GetFaceName(), wxLocale::GetSystemEncoding() ) , font.GetPointSize() , NULL ); #endif @@ -815,7 +817,7 @@ public: virtual ATSUStyle GetATSUStyle() { return m_macATSUIStyle; } #endif #if wxOSX_USE_CORE_TEXT - CTFontRef GetCTFont() const { return m_ctFont ; } + CTFontRef OSXGetCTFont() const { return m_ctFont ; } #endif wxColour GetColour() const { return m_colour ; } @@ -859,7 +861,7 @@ wxMacCoreGraphicsFontData::wxMacCoreGraphicsFontData(wxGraphicsRenderer* rendere // we need the scale here ... - Fixed atsuSize = IntToFixed( int( 1 * font.MacGetFontSize()) ); + Fixed atsuSize = IntToFixed( int( 1 * font.GetPointSize()) ); RGBColor atsuColor ; col.GetRGBColor( &atsuColor ); ATSUAttributeTag atsuTags[] = @@ -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") ); @@ -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; } @@ -1594,10 +1598,10 @@ 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(); + m_cgContext = wxOSXGetContextFromCurrentContext(); wxASSERT_MSG( m_cgContext != NULL, _T("Unable to retrieve drawing context from View")); } else @@ -1605,6 +1609,13 @@ bool wxMacCoreGraphicsContext::EnsureIsValid() 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,6 +1647,7 @@ bool wxMacCoreGraphicsContext::EnsureIsValid() CGContextClip( m_cgContext ); } } +#endif CGContextSaveGState( m_cgContext ); #if 0 // turn on for debugging of clientdc @@ -1737,9 +1750,11 @@ bool wxMacCoreGraphicsContext::SetCompositionMode(wxCompositionMode op) case wxCOMPOSITION_XOR: cop = kCGCompositeOperationXOR; break; +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 case wxCOMPOSITION_ADD: mode = kCGBlendModePlusLighter ; break; +#endif default: return false; } @@ -1804,7 +1819,7 @@ bool wxMacCoreGraphicsContext::SetCompositionMode(wxCompositionMode op) void wxMacCoreGraphicsContext::BeginLayer(wxDouble opacity) { CGContextSaveGState(m_cgContext); - CGContextSetAlpha(m_cgContext, opacity); + CGContextSetAlpha(m_cgContext, (CGFloat) opacity); CGContextBeginTransparencyLayer(m_cgContext, 0); } @@ -2014,7 +2029,7 @@ void wxMacCoreGraphicsContext::SetNativeContext( CGContextRef cg ) #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 } @@ -2163,7 +2178,7 @@ void wxMacCoreGraphicsContext::DoDrawText( const wxString &str, wxDouble x, wxDo { wxMacCoreGraphicsFontData* fref = (wxMacCoreGraphicsFontData*)m_font.GetRefData(); wxCFStringRef text(str, wxLocale::GetSystemEncoding() ); - CTFontRef font = fref->GetCTFont(); + CTFontRef font = fref->OSXGetCTFont(); CGColorRef col = wxMacCreateCGColor( fref->GetColour() ); CTUnderlineStyle ustyle = fref->GetUnderlined() ? kCTUnderlineStyleSingle : kCTUnderlineStyleNone ; wxCFRef underlined( CFNumberCreate(NULL, kCFNumberSInt32Type, &ustyle) ); @@ -2177,7 +2192,7 @@ void wxMacCoreGraphicsContext::DoDrawText( const wxString &str, wxDouble x, wxDo y += CTFontGetAscent(font); CGContextSaveGState(m_cgContext); - CGContextTranslateCTM(m_cgContext, x, y); + CGContextTranslateCTM(m_cgContext, (CGFloat) x, (CGFloat) y); CGContextScaleCTM(m_cgContext, 1, -1); CGContextSetTextPosition(m_cgContext, 0, 0); CTLineDraw( line, m_cgContext ); @@ -2253,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 ); } @@ -2270,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 ); } @@ -2340,7 +2355,7 @@ void wxMacCoreGraphicsContext::GetTextExtent( const wxString &str, wxDouble *wid if ( UMAGetSystemVersion() >= 0x1050 ) { wxMacCoreGraphicsFontData* fref = (wxMacCoreGraphicsFontData*)m_font.GetRefData(); - CTFontRef font = fref->GetCTFont(); + CTFontRef font = fref->OSXGetCTFont(); wxCFStringRef text(str, wxLocale::GetSystemEncoding() ); CFStringRef keys[] = { kCTFontAttributeName }; @@ -2350,7 +2365,8 @@ void wxMacCoreGraphicsContext::GetTextExtent( const wxString &str, wxDouble *wid wxCFRef attrtext( CFAttributedStringCreate(kCFAllocatorDefault, text, attributes) ); wxCFRef line( CTLineCreateWithAttributedString(attrtext) ); - CGFloat w, a, d, l; + double w; + CGFloat a, d, l; w = CTLineGetTypographicBounds(line, &a, &d, &l) ; @@ -2434,7 +2450,7 @@ void wxMacCoreGraphicsContext::GetPartialTextExtents(const wxString& text, wxArr #if wxOSX_USE_CORE_TEXT { wxMacCoreGraphicsFontData* fref = (wxMacCoreGraphicsFontData*)m_font.GetRefData(); - CTFontRef font = fref->GetCTFont(); + CTFontRef font = fref->OSXGetCTFont(); wxCFStringRef t(text, wxLocale::GetSystemEncoding() ); CFStringRef keys[] = { kCTFontAttributeName }; @@ -2701,6 +2717,7 @@ wxGraphicsContext * wxMacCoreGraphicsRenderer::CreateContextFromNativeWindow( vo #if wxOSX_USE_CARBON return new wxMacCoreGraphicsContext(this,(WindowRef)window); #else + wxUnusedVar(window); return NULL; #endif }