Avoid creating and immediately destroying a wxGraphicsContext for most uses of wxGCDC.

This also causes the dummy "measuring context" to be properly initialized with a default font


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72019 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Paul Cornett 2012-07-11 06:36:38 +00:00
parent e6273b919b
commit e7042ce73b
2 changed files with 13 additions and 17 deletions

View File

@ -68,9 +68,6 @@ public:
virtual ~wxGCDCImpl();
void Init();
// implement base class pure virtuals
// ----------------------------------
@ -213,6 +210,9 @@ protected:
wxGraphicsContext* m_graphicContext;
private:
void Init(wxGraphicsContext*);
DECLARE_CLASS(wxGCDCImpl)
wxDECLARE_NO_COPY_CLASS(wxGCDCImpl);
};

View File

@ -157,7 +157,7 @@ IMPLEMENT_ABSTRACT_CLASS(wxGCDCImpl, wxDCImpl)
wxGCDCImpl::wxGCDCImpl( wxDC *owner ) :
wxDCImpl( owner )
{
Init();
Init(wxGraphicsContext::Create());
}
void wxGCDCImpl::SetGraphicsContext( wxGraphicsContext* ctx )
@ -179,26 +179,21 @@ void wxGCDCImpl::SetGraphicsContext( wxGraphicsContext* ctx )
wxGCDCImpl::wxGCDCImpl( wxDC *owner, const wxWindowDC& dc ) :
wxDCImpl( owner )
{
Init();
SetGraphicsContext( wxGraphicsContext::Create(dc) );
Init(wxGraphicsContext::Create(dc));
m_window = dc.GetWindow();
}
wxGCDCImpl::wxGCDCImpl( wxDC *owner, const wxMemoryDC& dc ) :
wxDCImpl( owner )
{
Init();
wxGraphicsContext* context;
context = wxGraphicsContext::Create(dc);
SetGraphicsContext( context );
Init(wxGraphicsContext::Create(dc));
}
#if wxUSE_PRINTING_ARCHITECTURE
wxGCDCImpl::wxGCDCImpl( wxDC *owner, const wxPrinterDC& dc ) :
wxDCImpl( owner )
{
Init();
SetGraphicsContext( wxGraphicsContext::Create(dc) );
Init(wxGraphicsContext::Create(dc));
}
#endif
@ -206,12 +201,11 @@ wxGCDCImpl::wxGCDCImpl( wxDC *owner, const wxPrinterDC& dc ) :
wxGCDCImpl::wxGCDCImpl(wxDC *owner, const wxEnhMetaFileDC& dc)
: wxDCImpl(owner)
{
Init();
SetGraphicsContext(wxGraphicsContext::Create(dc));
Init(wxGraphicsContext::Create(dc));
}
#endif
void wxGCDCImpl::Init()
void wxGCDCImpl::Init(wxGraphicsContext* ctx)
{
m_ok = false;
m_colour = true;
@ -222,11 +216,13 @@ void wxGCDCImpl::Init()
m_font = *wxNORMAL_FONT;
m_brush = *wxWHITE_BRUSH;
m_graphicContext = wxGraphicsContext::Create();
m_graphicContext = NULL;
if (ctx)
SetGraphicsContext(ctx);
m_logicalFunctionSupported = true;
}
wxGCDCImpl::~wxGCDCImpl()
{
delete m_graphicContext;