]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/graphics.cpp
fix memory leak in SetColFormat() if the column already had an attribute (closes...
[wxWidgets.git] / src / osx / carbon / graphics.cpp
index e81a541cb53afe34139a170159b1c5fbbc603b4c..4a1e139f31780e58e6a6be569e561b6f06b4d37c 100644 (file)
@@ -72,10 +72,12 @@ int UMAGetSystemVersion()
 #endif
 
 #if wxOSX_USE_COCOA_OR_IPHONE
 #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
 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
 
 
 #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__
 CTFontRef wxMacCreateCTFont( const wxFont& font )
 {
 #ifdef __WXMAC__
-    return wxCFRetain((CTFontRef) font.GetCTFont());
+    return wxCFRetain((CTFontRef) font.OSXGetCTFont());
 #else
     return CTFontCreateWithName( wxCFStringRef( font.GetFaceName(), wxLocale::GetSystemEncoding() ) , font.GetPointSize() , NULL );
 #endif
 #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
     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 ; }
 
 #endif
     wxColour GetColour() const { return m_colour ; }
 
@@ -1519,12 +1521,14 @@ wxMacCoreGraphicsContext::wxMacCoreGraphicsContext( wxGraphicsRenderer* renderer
 #if wxOSX_USE_COCOA_OR_IPHONE
     m_view = window->GetHandle();
 
 #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
     {
         m_windowTransform = CGAffineTransformMakeTranslation( 0 , m_height );
         m_windowTransform = CGAffineTransformScale( m_windowTransform , 1 , -1 );
     }
     else
+#endif
     {
         m_windowTransform = CGAffineTransformIdentity;
     }
     {
         m_windowTransform = CGAffineTransformIdentity;
     }
@@ -1594,10 +1598,10 @@ bool wxMacCoreGraphicsContext::EnsureIsValid()
         if (m_invisible)
             return false;
             
         if (m_invisible)
             return false;
             
-#if wxOSX_USE_COCOA_OR_IPHONE
+#if wxOSX_USE_COCOA
         if ( wxOSXLockFocus(m_view) )
         {
         if ( wxOSXLockFocus(m_view) )
         {
-            m_cgContext = wxOSXGetContextFromCurrentNSContext();
+            m_cgContext = wxOSXGetContextFromCurrentContext();
             wxASSERT_MSG( m_cgContext != NULL, _T("Unable to retrieve drawing context from View"));
         }
         else
             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
             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 )
 #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;
             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
             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 );
                 }
             }
                     CGContextClip( m_cgContext );
                 }
             }
+#endif
             CGContextSaveGState( m_cgContext );
             
 #if 0 // turn on for debugging of clientdc
             CGContextSaveGState( m_cgContext );
             
 #if 0 // turn on for debugging of clientdc
@@ -2016,7 +2029,7 @@ void wxMacCoreGraphicsContext::SetNativeContext( CGContextRef cg )
 #if wxOSX_USE_CARBON
             QDEndCGContext( GetWindowPort( m_windowRef ) , &m_cgContext);
 #endif
 #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
         }
             wxOSXUnlockFocus(m_view);
 #endif
         }
@@ -2165,7 +2178,7 @@ void wxMacCoreGraphicsContext::DoDrawText( const wxString &str, wxDouble x, wxDo
     {
         wxMacCoreGraphicsFontData* fref = (wxMacCoreGraphicsFontData*)m_font.GetRefData();
         wxCFStringRef text(str, wxLocale::GetSystemEncoding() );
     {
         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<CFNumberRef> underlined( CFNumberCreate(NULL, kCFNumberSInt32Type, &ustyle) );
         CGColorRef col = wxMacCreateCGColor( fref->GetColour() );
         CTUnderlineStyle ustyle = fref->GetUnderlined() ? kCTUnderlineStyleSingle : kCTUnderlineStyleNone ;
         wxCFRef<CFNumberRef> underlined( CFNumberCreate(NULL, kCFNumberSInt32Type, &ustyle) );
@@ -2342,7 +2355,7 @@ void wxMacCoreGraphicsContext::GetTextExtent( const wxString &str, wxDouble *wid
     if ( UMAGetSystemVersion() >= 0x1050 )
     {
         wxMacCoreGraphicsFontData* fref = (wxMacCoreGraphicsFontData*)m_font.GetRefData();
     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  };
 
         wxCFStringRef text(str, wxLocale::GetSystemEncoding() );
         CFStringRef keys[] = { kCTFontAttributeName  };
@@ -2437,7 +2450,7 @@ void wxMacCoreGraphicsContext::GetPartialTextExtents(const wxString& text, wxArr
 #if wxOSX_USE_CORE_TEXT
     {
         wxMacCoreGraphicsFontData* fref = (wxMacCoreGraphicsFontData*)m_font.GetRefData();
 #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  };
 
         wxCFStringRef t(text, wxLocale::GetSystemEncoding() );
         CFStringRef keys[] = { kCTFontAttributeName  };