]> git.saurik.com Git - wxWidgets.git/commitdiff
unified Pango GetTextExtent implementations
authorVáclav Slavík <vslavik@fastmail.fm>
Tue, 13 Jul 2004 11:33:01 +0000 (11:33 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Tue, 13 Jul 2004 11:33:01 +0000 (11:33 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28220 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/generic/dcpsg.cpp
src/gtk/window.cpp
src/gtk1/window.cpp

index 8f7d2b07de9c1c6aac35ca7e8a707bb9bc6c5beb..4af139dd63da086d91c496f28191798c447668f5 100644 (file)
@@ -2086,17 +2086,18 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string,
     const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata );
 #endif
     pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data ));
-    PangoLayoutLine *line = (PangoLayoutLine *)pango_layout_get_lines(layout)->data;
 
     PangoRectangle rect;
-    pango_layout_line_get_extents(line, NULL, &rect);
+    pango_layout_get_extents(layout, NULL, &rect);
 
-    if (x) (*x) = (wxCoord) ( rect.width / PANGO_SCALE / scale );
-    if (y) (*y) = (wxCoord) ( rect.height / PANGO_SCALE / scale );
+    if (x) (*x) = (wxCoord) ( PANGO_PIXELS(rect.width) / scale );
+    if (y) (*y) = (wxCoord) ( PANGO_PIXELS(rect.height) / scale );
     if (descent)
     {
-        // Do something about metrics here
-        (*descent) = 0;
+        PangoLayoutIter *iter = pango_layout_get_iter(layout);
+        int baseline = pango_layout_iter_get_baseline(iter);
+        pango_layout_iter_free(iter);
+        *descent = *y - PANGO_PIXELS(baseline) / scale;
     }
     if (externalLeading) (*externalLeading) = 0;  // ??
 
index 8e6e0f5a81628427ef793148df463cdd8793ea41..8947ad7008493ac4adc1d606eae44ff256588d15 100644 (file)
@@ -3575,10 +3575,9 @@ void wxWindowGTK::GetTextExtent( const wxString& string,
         pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data ));
 #endif
     }
-    PangoLayoutLine *line = pango_layout_get_line(layout, 0);
 
     PangoRectangle rect;
-    pango_layout_line_get_extents(line, NULL, &rect);
+    pango_layout_get_extents(layout, NULL, &rect);
 
     if (x) (*x) = (wxCoord) PANGO_PIXELS(rect.width);
     if (y) (*y) = (wxCoord) PANGO_PIXELS(rect.height);
index 8e6e0f5a81628427ef793148df463cdd8793ea41..8947ad7008493ac4adc1d606eae44ff256588d15 100644 (file)
@@ -3575,10 +3575,9 @@ void wxWindowGTK::GetTextExtent( const wxString& string,
         pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data ));
 #endif
     }
-    PangoLayoutLine *line = pango_layout_get_line(layout, 0);
 
     PangoRectangle rect;
-    pango_layout_line_get_extents(line, NULL, &rect);
+    pango_layout_get_extents(layout, NULL, &rect);
 
     if (x) (*x) = (wxCoord) PANGO_PIXELS(rect.width);
     if (y) (*y) = (wxCoord) PANGO_PIXELS(rect.height);