From e7042ce73b824b32d50778c79688a455c6fe89b6 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Wed, 11 Jul 2012 06:36:38 +0000 Subject: [PATCH] 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 --- include/wx/dcgraph.h | 6 +++--- src/common/dcgraph.cpp | 24 ++++++++++-------------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/include/wx/dcgraph.h b/include/wx/dcgraph.h index c0fa7451b1..afe88c83d8 100644 --- a/include/wx/dcgraph.h +++ b/include/wx/dcgraph.h @@ -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); }; diff --git a/src/common/dcgraph.cpp b/src/common/dcgraph.cpp index 1f11435352..fb05146587 100644 --- a/src/common/dcgraph.cpp +++ b/src/common/dcgraph.cpp @@ -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; -- 2.45.2