]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/dcclient.cpp
Removed rundant files, updated readme.txt.
[wxWidgets.git] / src / gtk1 / dcclient.cpp
index c673890cba0becd74ccff93ada7f411efdd71f9c..8a33377614f4ee655fe3b30a85f10363416ecb19 100644 (file)
@@ -332,6 +332,10 @@ wxWindowDC::wxWindowDC( wxWindow *window )
 #ifdef __WXGTK20__
     m_context = gtk_widget_get_pango_context( widget );
     
+    // Always take Xft context to get matching fonts
+    // for display and printing.
+    // m_context = pango_xft_get_context (GDK_DISPLAY (), DefaultScreen (GDK_DISPLAY ()));
+    
     m_fontdesc = widget->style->font_desc;
 #endif
 
@@ -1422,13 +1426,19 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y )
     x = XLOG2DEV(x);
     y = YLOG2DEV(y);
 
-#if defined(__WXGTK20__) && wxUSE_WCHAR_T
+#if defined(__WXGTK20__)
     // TODO: the layout engine should be abstracted at a higher level!
     PangoLayout *layout = pango_layout_new(m_context);
     pango_layout_set_font_description(layout, m_fontdesc);
     {
+#if wxUSE_UNICODE
         const wxCharBuffer data = wxConvUTF8.cWC2MB( text );
         pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data ));
+#else
+        const wxWCharBuffer wdata = wxConvLocal.cMB2WC( text );
+        const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata );
+        pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data ));
+#endif
     }
     PangoLayoutLine *line = (PangoLayoutLine *)pango_layout_get_lines(layout)->data;
     PangoRectangle rect;
@@ -1459,7 +1469,7 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y )
     }
 #endif // GTK+ 2.0/1.x
 
-#if defined(__WXGTK20__) && wxUSE_WCHAR_T
+#if defined(__WXGTK20__)
     g_object_unref( G_OBJECT( layout ) );
 #endif
 
@@ -1599,18 +1609,22 @@ void wxWindowDC::DoGetTextExtent(const wxString &string,
     PangoFontDescription *desc = fontToUse.GetNativeFontInfo()->description;
     PangoLayout *layout = pango_layout_new(m_context);
     pango_layout_set_font_description(layout, desc);
-    {
+#if wxUSE_UNICODE
         const wxCharBuffer data = wxConvUTF8.cWC2MB( string );
         pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data ));
-    }
+#else
+        const wxWCharBuffer wdata = wxConvLocal.cMB2WC( string );
+        const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata );
+        pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data ));
+#endif
     PangoLayoutLine *line = (PangoLayoutLine *)pango_layout_get_lines(layout)->data;
  
     PangoRectangle rect;
     pango_layout_line_get_extents(line, NULL, &rect);
        
     
-    if (width) (*width) = (wxCoord) rect.width;
-    if (height) (*height) = (wxCoord) rect.height;
+    if (width) (*width) = (wxCoord) (rect.width / PANGO_SCALE);
+    if (height) (*height) = (wxCoord) (rect.height / PANGO_SCALE);
     if (descent)
     {
         // Do something about metrics here