]> git.saurik.com Git - wxWidgets.git/commitdiff
fixing cairo bugs under OS X
authorStefan Csomor <csomor@advancedconcepts.ch>
Sun, 11 Nov 2007 16:46:47 +0000 (16:46 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Sun, 11 Nov 2007 16:46:47 +0000 (16:46 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49832 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/generic/graphicc.cpp

index 728fc687f2897a9cb947bb9eee62f6f5e51c0f81..79493bbb99ad51a71a8e3e0618756d8bc0acc51e 100644 (file)
@@ -735,6 +735,7 @@ void wxCairoFontData::Apply( wxGraphicsContext* context )
     // the rest is done using Pango layouts
 #elif defined(__WXMAC__)
     cairo_set_font_face(ctext, m_font);
+    cairo_set_font_size(ctext, m_size );
 #else
     cairo_select_font_face(ctext, m_fontName, m_slant, m_weights );
     cairo_set_font_size(ctext, m_size );
@@ -1407,6 +1408,17 @@ void wxCairoContext::GetTextExtent( const wxString &str, wxDouble *width, wxDoub
     {
         cairo_font_extents_t fe;
         cairo_font_extents(m_context, &fe);
+        
+        // some backends have negative descents
+        
+        if ( fe.descent < 0 )
+            fe.descent = -fe.descent;
+    
+        if ( fe.height < (fe.ascent + fe.descent ) )
+        {
+            // some backends are broken re height ... (eg currently ATSUI)
+            fe.height = fe.ascent + fe.descent;
+        }
     
         if (height)
             *height = fe.height;
@@ -1498,6 +1510,9 @@ private :
 IMPLEMENT_DYNAMIC_CLASS(wxCairoRenderer,wxGraphicsRenderer)
 
 static wxCairoRenderer gs_cairoGraphicsRenderer;
+// temporary hack to allow creating a cairo context on any platform
+extern wxGraphicsRenderer* gCairoRenderer;
+wxGraphicsRenderer* gCairoRenderer = &gs_cairoGraphicsRenderer;
 
 #ifdef __WXGTK__
 wxGraphicsRenderer* wxGraphicsRenderer::GetDefaultRenderer()