Added wxDC::GetPartialTextExtents

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25754 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn 2004-02-12 00:25:49 +00:00
parent 0919e93e52
commit 553aa032f2
2 changed files with 42 additions and 0 deletions

View File

@ -80,6 +80,7 @@ public:
wxCoord *descent = NULL,
wxCoord *externalLeading = NULL,
wxFont *theFont = NULL) const;
virtual bool DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const;
virtual bool CanDrawBitmap() const;
virtual bool CanGetTextExtent() const;

View File

@ -1611,6 +1611,47 @@ void wxDC::DoGetTextExtent(const wxString& string, wxCoord *x, wxCoord *y,
}
}
// Each element of the array will be the width of the string up to and
// including the coresoponding character in text.
bool wxDC::DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const
{
static int maxLenText = -1;
static int maxWidth = -1;
int fit = 0;
SIZE sz = {0,0};
int stlen = text.Length();
if (maxLenText == -1)
{
// Win9x and WinNT+ have different limits
int version = wxGetOsVersion();
maxLenText = version == wxWINDOWS_NT ? 65535 : 8192;
maxWidth = version == wxWINDOWS_NT ? INT_MAX : 32767;
}
widths.Empty();
widths.Add(0, stlen); // fill the array with zeros
if (!::GetTextExtentExPoint(GetHdc(),
text.c_str(), // string to check
wxMin(stlen, maxLenText),
maxWidth,
&fit, // receives count of chars
// that will fit
widths.begin(), // array to fill
&sz)) {
// API failed
wxLogLastError(wxT("GetTextExtentExPoint"));
return false;
}
return true;
}
void wxDC::SetMapMode(int mode)
{
WXMICROWIN_CHECK_HDC