1. Override DoGetTextExtent() in wxMetafileDC instead of redefining (unused)
GetTextExtent() 2. Do use the provided font in it git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@46103 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -88,6 +88,18 @@ public:
|
|||||||
// Should be called at end of drawing
|
// Should be called at end of drawing
|
||||||
virtual wxMetafile *Close();
|
virtual wxMetafile *Close();
|
||||||
virtual void SetMapMode(int mode);
|
virtual void SetMapMode(int mode);
|
||||||
|
|
||||||
|
#if wxABI_VERSION >= 20805
|
||||||
|
virtual void DoGetTextExtent(const wxString& string,
|
||||||
|
wxCoord *x, wxCoord *y,
|
||||||
|
wxCoord *descent = NULL,
|
||||||
|
wxCoord *externalLeading = NULL,
|
||||||
|
const wxFont *theFont = NULL) const;
|
||||||
|
#endif // wx ABI 2.8.5+
|
||||||
|
|
||||||
|
// this method shouldn't have been defined here (DoGetTextExtent() is the
|
||||||
|
// correct one) but keep it to avoid breaking binary backwards
|
||||||
|
// compatibility
|
||||||
virtual void GetTextExtent(const wxString& string, long *x, long *y,
|
virtual void GetTextExtent(const wxString& string, long *x, long *y,
|
||||||
long *descent = NULL, long *externalLeading = NULL,
|
long *descent = NULL, long *externalLeading = NULL,
|
||||||
wxFont *theFont = NULL, bool use16bit = false) const;
|
wxFont *theFont = NULL, bool use16bit = false) const;
|
||||||
|
@@ -209,21 +209,23 @@ wxMetafileDC::~wxMetafileDC()
|
|||||||
m_hDC = 0;
|
m_hDC = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxMetafileDC::GetTextExtent(const wxString& string, long *x, long *y,
|
void wxMetafileDC::DoGetTextExtent(const wxString& string,
|
||||||
long *descent, long *externalLeading, wxFont *theFont, bool WXUNUSED(use16bit)) const
|
wxCoord *x, wxCoord *y,
|
||||||
|
wxCoord *descent,
|
||||||
|
wxCoord *externalLeading,
|
||||||
|
const wxFont *theFont) const
|
||||||
{
|
{
|
||||||
wxFont *fontToUse = theFont;
|
const wxFont *fontToUse = theFont;
|
||||||
if (!fontToUse)
|
if (!fontToUse)
|
||||||
fontToUse = (wxFont*) &m_font;
|
fontToUse = &m_font;
|
||||||
|
|
||||||
HDC dc = GetDC(NULL);
|
ScreenHDC dc;
|
||||||
|
SelectInHDC selFont(dc, GetHfontOf(*fontToUse));
|
||||||
|
|
||||||
SIZE sizeRect;
|
SIZE sizeRect;
|
||||||
TEXTMETRIC tm;
|
TEXTMETRIC tm;
|
||||||
::GetTextExtentPoint32(dc, WXSTRINGCAST string, wxStrlen(WXSTRINGCAST string), &sizeRect);
|
::GetTextExtentPoint32(dc, string, string.length(), &sizeRect);
|
||||||
GetTextMetrics(dc, &tm);
|
::GetTextMetrics(dc, &tm);
|
||||||
|
|
||||||
ReleaseDC(NULL, dc);
|
|
||||||
|
|
||||||
if ( x )
|
if ( x )
|
||||||
*x = sizeRect.cx;
|
*x = sizeRect.cx;
|
||||||
@@ -235,6 +237,22 @@ void wxMetafileDC::GetTextExtent(const wxString& string, long *x, long *y,
|
|||||||
*externalLeading = tm.tmExternalLeading;
|
*externalLeading = tm.tmExternalLeading;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxMetafileDC::GetTextExtent(const wxString& string, long *x, long *y,
|
||||||
|
long *descent, long *externalLeading, wxFont *theFont, bool WXUNUSED(use16bit)) const
|
||||||
|
{
|
||||||
|
wxCoord xc, yc, dc, elc;
|
||||||
|
DoGetTextExtent(string, &xc, &yc, &dc, &elc, theFont);
|
||||||
|
|
||||||
|
if ( x )
|
||||||
|
*x = xc;
|
||||||
|
if ( y )
|
||||||
|
*y = yc;
|
||||||
|
if ( descent )
|
||||||
|
*descent = dc;
|
||||||
|
if ( externalLeading )
|
||||||
|
*externalLeading = elc;
|
||||||
|
}
|
||||||
|
|
||||||
void wxMetafileDC::DoGetSize(int *width, int *height) const
|
void wxMetafileDC::DoGetSize(int *width, int *height) const
|
||||||
{
|
{
|
||||||
wxCHECK_RET( m_refData, _T("invalid wxMetafileDC") );
|
wxCHECK_RET( m_refData, _T("invalid wxMetafileDC") );
|
||||||
|
@@ -24,6 +24,12 @@
|
|||||||
# and once released its version cannot be changed.
|
# and once released its version cannot be changed.
|
||||||
|
|
||||||
|
|
||||||
|
# public symbols added in 2.8.5 (please keep in alphabetical order):
|
||||||
|
@WX_VERSION_TAG@.5 {
|
||||||
|
global:
|
||||||
|
*wxMetafileDC*DoGetTextExtent*;
|
||||||
|
};
|
||||||
|
|
||||||
# public symbols added in 2.8.4 (please keep in alphabetical order):
|
# public symbols added in 2.8.4 (please keep in alphabetical order):
|
||||||
@WX_VERSION_TAG@.4 {
|
@WX_VERSION_TAG@.4 {
|
||||||
global:
|
global:
|
||||||
|
Reference in New Issue
Block a user