From 595fda6f9c3b672c5e5c2a879c904c055cea5108 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 6 Nov 2007 01:43:56 +0000 Subject: [PATCH] don't add 0.5 to GetTextExtent() results and do take trailing spaces into account, as wxDC does (patch 1814620) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49671 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/graphics.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/msw/graphics.cpp b/src/msw/graphics.cpp index ba6e529f12..c7489e54a3 100644 --- a/src/msw/graphics.cpp +++ b/src/msw/graphics.cpp @@ -1123,11 +1123,11 @@ void wxGDIPlusContext::GetTextExtent( const wxString &str, wxDouble *width, wxDo f->GetSize() / ffamily.GetEmHeight(FontStyleRegular); if ( height ) - *height = rHeight * factorY + 0.5 ; + *height = rHeight * factorY; if ( descent ) - *descent = rDescent * factorY + 0.5 ; + *descent = rDescent * factorY; if ( externalLeading ) - *externalLeading = (rHeight - rAscent - rDescent) * factorY + 0.5 ; + *externalLeading = (rHeight - rAscent - rDescent) * factorY; // measuring empty strings is not guaranteed, so do it by hand if ( str.IsEmpty()) { @@ -1142,12 +1142,14 @@ void wxGDIPlusContext::GetTextExtent( const wxString &str, wxDouble *width, wxDo StringFormat strFormat; CharacterRange strRange(0,wcslen(s)); strFormat.SetMeasurableCharacterRanges(1,&strRange); + strFormat.SetFormatFlags(StringFormatFlagsMeasureTrailingSpaces); + Region region ; m_context->MeasureCharacterRanges(s, -1 , f,layoutRect, &strFormat,1,®ion) ; RectF bbox ; region.GetBounds(&bbox,m_context); if ( width ) - *width = bbox.GetRight()-bbox.GetLeft()+0.5; + *width = bbox.GetRight()-bbox.GetLeft(); } } @@ -1176,6 +1178,7 @@ void wxGDIPlusContext::GetPartialTextExtents(const wxString& text, wxArrayDouble ranges[i].Length = 1 ; } strFormat.SetMeasurableCharacterRanges(len,ranges); + strFormat.SetFormatFlags(StringFormatFlagsMeasureTrailingSpaces); m_context->MeasureCharacterRanges(ws, -1 , f,layoutRect, &strFormat,1,regions) ; RectF bbox ;