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:
@@ -80,6 +80,7 @@ public:
|
|||||||
wxCoord *descent = NULL,
|
wxCoord *descent = NULL,
|
||||||
wxCoord *externalLeading = NULL,
|
wxCoord *externalLeading = NULL,
|
||||||
wxFont *theFont = NULL) const;
|
wxFont *theFont = NULL) const;
|
||||||
|
virtual bool DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const;
|
||||||
|
|
||||||
virtual bool CanDrawBitmap() const;
|
virtual bool CanDrawBitmap() const;
|
||||||
virtual bool CanGetTextExtent() 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)
|
void wxDC::SetMapMode(int mode)
|
||||||
{
|
{
|
||||||
WXMICROWIN_CHECK_HDC
|
WXMICROWIN_CHECK_HDC
|
||||||
|
Reference in New Issue
Block a user