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
This commit is contained in:
Vadim Zeitlin 2007-11-06 01:43:56 +00:00
parent 0a5b15da92
commit 595fda6f9c

View File

@ -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,&region) ;
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 ;