Override GetPixelSize on OS X as the base impl creates a wxScreenDC each time, which causes a significant performance hit.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42416 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -56,6 +56,7 @@ public:
|
|||||||
|
|
||||||
// implement base class pure virtuals
|
// implement base class pure virtuals
|
||||||
virtual int GetPointSize() const;
|
virtual int GetPointSize() const;
|
||||||
|
virtual wxSize GetPixelSize() const;
|
||||||
virtual int GetFamily() const;
|
virtual int GetFamily() const;
|
||||||
virtual int GetStyle() const;
|
virtual int GetStyle() const;
|
||||||
virtual int GetWeight() const;
|
virtual int GetWeight() const;
|
||||||
|
@@ -21,7 +21,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "wx/fontutil.h"
|
#include "wx/fontutil.h"
|
||||||
#include "wx/fontutil.h"
|
#include "wx/graphics.h"
|
||||||
|
|
||||||
#include "wx/mac/private.h"
|
#include "wx/mac/private.h"
|
||||||
|
|
||||||
@@ -528,6 +528,20 @@ int wxFont::GetPointSize() const
|
|||||||
return M_FONTDATA->m_pointSize;
|
return M_FONTDATA->m_pointSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxSize wxFont::GetPixelSize() const
|
||||||
|
{
|
||||||
|
#if wxUSE_GRAPHICS_CONTEXT
|
||||||
|
// TODO: consider caching the value
|
||||||
|
wxGraphicsContext* dc = wxGraphicsContext::CreateFromNative((CGContextRef) NULL);
|
||||||
|
dc->SetFont(*(wxFont *)this);
|
||||||
|
wxDouble width, height = 0;
|
||||||
|
dc->GetTextExtent( wxT("g"), &width, &height, NULL, NULL);
|
||||||
|
return wxSize(width, height);
|
||||||
|
#else
|
||||||
|
wxFontBase::GetPixelSize();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
int wxFont::GetFamily() const
|
int wxFont::GetFamily() const
|
||||||
{
|
{
|
||||||
wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") );
|
wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") );
|
||||||
|
@@ -353,10 +353,20 @@ void wxMacCoreGraphicsContext::Init()
|
|||||||
|
|
||||||
wxMacCoreGraphicsContext::wxMacCoreGraphicsContext( CGContextRef cgcontext )
|
wxMacCoreGraphicsContext::wxMacCoreGraphicsContext( CGContextRef cgcontext )
|
||||||
{
|
{
|
||||||
Init();
|
Init();
|
||||||
m_cgContext = cgcontext;
|
m_cgContext = cgcontext;
|
||||||
CGContextSaveGState( m_cgContext );
|
// FIXME: This check is needed because currently we need to use a DC/GraphicsContext
|
||||||
CGContextSaveGState( m_cgContext );
|
// in order to get font properties, like wxFont::GetPixelSize, but since we don't have
|
||||||
|
// a native window attached to use, I create a wxGraphicsContext with a NULL CGContextRef
|
||||||
|
// for this one operation.
|
||||||
|
|
||||||
|
// When wxFont::GetPixelSize on Mac no longer needs a graphics context, this check
|
||||||
|
// can be removed.
|
||||||
|
if (m_cgContext)
|
||||||
|
{
|
||||||
|
CGContextSaveGState( m_cgContext );
|
||||||
|
CGContextSaveGState( m_cgContext );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wxMacCoreGraphicsContext::wxMacCoreGraphicsContext( WindowRef window )
|
wxMacCoreGraphicsContext::wxMacCoreGraphicsContext( WindowRef window )
|
||||||
|
Reference in New Issue
Block a user