From 2b44ffc0e77a8db603b3aba597e4c4df2e2e518f Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Fri, 25 Apr 2008 11:05:16 +0000 Subject: [PATCH] Added wxDC::CreateGraphicsContext and implemented it for a few DCs git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53344 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/dc.h | 19 +++++++++++++++++++ include/wx/gtk/dcclient.h | 4 ++++ include/wx/gtk/dcmemory.h | 4 ++++ include/wx/gtk/print.h | 4 ++++ include/wx/msw/dcclient.h | 4 ++++ include/wx/msw/dcmemory.h | 4 ++++ src/gtk/dcclient.cpp | 13 +++++++++++++ src/gtk/dcmemory.cpp | 12 ++++++++++++ src/gtk/print.cpp | 11 +++++++++++ src/msw/dcclient.cpp | 12 ++++++++++++ src/msw/dcmemory.cpp | 12 ++++++++++++ 11 files changed, 99 insertions(+) diff --git a/include/wx/dc.h b/include/wx/dc.h index f0fe623aa7..e500f1f49a 100644 --- a/include/wx/dc.h +++ b/include/wx/dc.h @@ -42,6 +42,11 @@ class WXDLLIMPEXP_FWD_CORE wxMemoryDC; class WXDLLIMPEXP_FWD_CORE wxPrinterDC; class WXDLLIMPEXP_FWD_CORE wxPrintData; + +#if wxUSE_GRAPHICS_CONTEXT +class WXDLLIMPEXP_FWD_CORE wxGraphicsContext; +#endif + //----------------------------------------------------------------------------- // wxDrawObject helper class //----------------------------------------------------------------------------- @@ -182,6 +187,15 @@ public: virtual bool CanDrawBitmap() const = 0; virtual bool CanGetTextExtent() const = 0; + // get graphics context from + +#if wxUSE_GRAPHICS_CONTEXT + virtual wxGraphicsContext* CreateGraphicsContext() + { + return NULL; + } +#endif + // query dimension, colour deps, resolution virtual void DoGetSize(int *width, int *height) const = 0; @@ -620,6 +634,11 @@ public: bool IsOk() const { return m_pimpl && m_pimpl->IsOk(); } +#if wxUSE_GRAPHICS_CONTEXT + wxGraphicsContext* CreateGraphicsContext() + { return m_pimpl->CreateGraphicsContext(); } +#endif + // query capabilities bool CanDrawBitmap() const diff --git a/include/wx/gtk/dcclient.h b/include/wx/gtk/dcclient.h index 29e35429a5..9a3a13d1a4 100644 --- a/include/wx/gtk/dcclient.h +++ b/include/wx/gtk/dcclient.h @@ -28,6 +28,10 @@ public: virtual ~wxWindowDCImpl(); +#if wxUSE_GRAPHICS_CONTEXT + virtual wxGraphicsContext* CreateGraphicsContext(); +#endif + virtual bool CanDrawBitmap() const { return true; } virtual bool CanGetTextExtent() const { return true; } diff --git a/include/wx/gtk/dcmemory.h b/include/wx/gtk/dcmemory.h index ff470015c8..44296bdb6d 100644 --- a/include/wx/gtk/dcmemory.h +++ b/include/wx/gtk/dcmemory.h @@ -26,6 +26,10 @@ public: virtual ~wxMemoryDCImpl(); +#if wxUSE_GRAPHICS_CONTEXT + virtual wxGraphicsContext* CreateGraphicsContext(); +#endif + // these get reimplemented for mono-bitmaps to behave // more like their Win32 couterparts. They now interpret // wxWHITE, wxWHITE_BRUSH and wxWHITE_PEN as drawing 0 diff --git a/include/wx/gtk/print.h b/include/wx/gtk/print.h index 46dde4f2b0..5cc313bde9 100644 --- a/include/wx/gtk/print.h +++ b/include/wx/gtk/print.h @@ -227,6 +227,10 @@ public: bool Ok() const { return IsOk(); } bool IsOk() const; +#if wxUSE_GRAPHICS_CONTEXT + virtual wxGraphicsContext* CreateGraphicsContext(); +#endif + bool CanDrawBitmap() const { return true; } void Clear(); void SetFont( const wxFont& font ); diff --git a/include/wx/msw/dcclient.h b/include/wx/msw/dcclient.h index eed5e21e59..5957aa5c22 100644 --- a/include/wx/msw/dcclient.h +++ b/include/wx/msw/dcclient.h @@ -43,6 +43,10 @@ public: // Create a DC corresponding to the whole window wxWindowDCImpl( wxDC *owner, wxWindow *win ); +#if wxUSE_GRAPHICS_CONTEXT + virtual wxGraphicsContext* CreateGraphicsContext(); +#endif + virtual void DoGetSize(int *width, int *height) const; protected: diff --git a/include/wx/msw/dcmemory.h b/include/wx/msw/dcmemory.h index 5b78fead33..23b75e9048 100644 --- a/include/wx/msw/dcmemory.h +++ b/include/wx/msw/dcmemory.h @@ -22,6 +22,10 @@ public: wxMemoryDCImpl( wxMemoryDC *owner, wxBitmap& bitmap ); wxMemoryDCImpl( wxMemoryDC *owner, wxDC *dc ); // Create compatible DC +#if wxUSE_GRAPHICS_CONTEXT + virtual wxGraphicsContext* CreateGraphicsContext(); +#endif + // override some base class virtuals virtual void DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height); virtual void DoGetSize(int* width, int* height) const; diff --git a/src/gtk/dcclient.cpp b/src/gtk/dcclient.cpp index 5589029861..1c4a313d5c 100644 --- a/src/gtk/dcclient.cpp +++ b/src/gtk/dcclient.cpp @@ -31,6 +31,11 @@ #include +#if wxUSE_GRAPHICS_CONTEXT +#include "wx/graphics.h" +#endif + + //----------------------------------------------------------------------------- // local defines //----------------------------------------------------------------------------- @@ -365,6 +370,14 @@ wxWindowDCImpl::~wxWindowDCImpl() pango_font_description_free( m_fontdesc ); } +#if wxUSE_GRAPHICS_CONTEXT +wxGraphicsContext* wxWindowDCImpl::CreateGraphicsContext() +{ + wxWindowDC *windowdc = (wxWindowDC*) GetOwner(); + return wxGraphicsRenderer::GetDefaultRenderer()->CreateContext( *windowdc ); +} +#endif + void wxWindowDCImpl::SetUpDC( bool isMemDC ) { m_ok = true; diff --git a/src/gtk/dcmemory.cpp b/src/gtk/dcmemory.cpp index 3c22ca1fc1..d77d307dc5 100644 --- a/src/gtk/dcmemory.cpp +++ b/src/gtk/dcmemory.cpp @@ -16,6 +16,10 @@ #include #include +#if wxUSE_GRAPHICS_CONTEXT +#include "wx/graphics.h" +#endif + //----------------------------------------------------------------------------- // wxMemoryDCImpl //----------------------------------------------------------------------------- @@ -60,6 +64,14 @@ void wxMemoryDCImpl::Init() m_fontdesc = pango_font_description_copy( pango_context_get_font_description( m_context ) ); } +#if wxUSE_GRAPHICS_CONTEXT +wxGraphicsContext* wxMemoryDCImpl::CreateGraphicsContext() +{ + wxMemoryDC *memdc = (wxMemoryDC*) GetOwner(); + return wxGraphicsRenderer::GetDefaultRenderer()->CreateContext( *memdc ); +} +#endif + void wxMemoryDCImpl::DoSelect( const wxBitmap& bitmap ) { Destroy(); diff --git a/src/gtk/print.cpp b/src/gtk/print.cpp index 4ac6043261..d84ee92ffc 100644 --- a/src/gtk/print.cpp +++ b/src/gtk/print.cpp @@ -39,6 +39,10 @@ #include #include +#if wxUSE_GRAPHICS_CONTEXT +#include "wx/graphics.h" +#endif + #include "wx/link.h" wxFORCE_LINK_THIS_MODULE(gtk_print) @@ -1155,6 +1159,13 @@ bool wxGtkPrinterDCImpl::IsOk() const return m_gpc != NULL; } +#if wxUSE_GRAPHICS_CONTEXT +wxGraphicsContext* wxGtkPrinterDCImpl::CreateGraphicsContext() +{ + return wxGraphicsRenderer::GetDefaultRenderer()->CreateContextFromNativeContext( (void*) m_cairo ); +} +#endif + bool wxGtkPrinterDCImpl::DoFloodFill(wxCoord WXUNUSED(x1), wxCoord WXUNUSED(y1), const wxColour& WXUNUSED(col), diff --git a/src/msw/dcclient.cpp b/src/msw/dcclient.cpp index e97fe01af2..b965c68430 100644 --- a/src/msw/dcclient.cpp +++ b/src/msw/dcclient.cpp @@ -33,6 +33,10 @@ #include "wx/window.h" #endif +#if wxUSE_GRAPHICS_CONTEXT +#include "wx/graphics.h" +#endif + #include "wx/msw/private.h" // ---------------------------------------------------------------------------- @@ -118,6 +122,14 @@ void wxWindowDCImpl::InitDC() #endif } +#if wxUSE_GRAPHICS_CONTEXT +wxGraphicsContext* wxWindowDCImpl::CreateGraphicsContext() +{ + wxWindowDC *windowdc = (wxWindowDC*) GetOwner(); + return wxGraphicsRenderer::GetDefaultRenderer()->CreateContext( *windowdc ); +} +#endif + void wxWindowDCImpl::DoGetSize(int *width, int *height) const { wxCHECK_RET( m_window, _T("wxWindowDCImpl without a window?") ); diff --git a/src/msw/dcmemory.cpp b/src/msw/dcmemory.cpp index 6869e6f4e4..7da1ce87c5 100644 --- a/src/msw/dcmemory.cpp +++ b/src/msw/dcmemory.cpp @@ -32,6 +32,10 @@ #include "wx/log.h" #endif +#if wxUSE_GRAPHICS_CONTEXT +#include "wx/graphics.h" +#endif + #include "wx/msw/private.h" // ---------------------------------------------------------------------------- @@ -78,6 +82,14 @@ void wxMemoryDCImpl::Init() } } +#if wxUSE_GRAPHICS_CONTEXT +wxGraphicsContext* wxMemoryDCImpl::CreateGraphicsContext() +{ + wxMemoryDC *memdc = (wxMemoryDC*) GetOwner(); + return wxGraphicsRenderer::GetDefaultRenderer()->CreateContext( *memdc ); +} +#endif + bool wxMemoryDCImpl::CreateCompatible(wxDC *dc) { wxDCImpl *impl = dc ? dc->GetImpl() : NULL ; -- 2.45.2