From fd43b1b3eac2d3cc776e40fdfa12bfe633be7fb2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Tue, 13 Jul 2004 11:33:01 +0000 Subject: [PATCH] unified Pango GetTextExtent implementations git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28220 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/generic/dcpsg.cpp | 13 +++++++------ src/gtk/window.cpp | 3 +-- src/gtk1/window.cpp | 3 +-- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/generic/dcpsg.cpp b/src/generic/dcpsg.cpp index 8f7d2b07de..4af139dd63 100644 --- a/src/generic/dcpsg.cpp +++ b/src/generic/dcpsg.cpp @@ -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; // ?? diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 8e6e0f5a81..8947ad7008 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -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); diff --git a/src/gtk1/window.cpp b/src/gtk1/window.cpp index 8e6e0f5a81..8947ad7008 100644 --- a/src/gtk1/window.cpp +++ b/src/gtk1/window.cpp @@ -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); -- 2.47.2