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:
parent
0919e93e52
commit
553aa032f2
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user