]> git.saurik.com Git - wxWidgets.git/commitdiff
Added new wxGraphicsContext:Create( wxPrinterDC ) instead of wxDC:CreateGraphicsContext
authorRobert Roebling <robert@roebling.de>
Mon, 28 Apr 2008 20:39:57 +0000 (20:39 +0000)
committerRobert Roebling <robert@roebling.de>
Mon, 28 Apr 2008 20:39:57 +0000 (20:39 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53406 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

18 files changed:
include/wx/dc.h
include/wx/graphics.h
include/wx/gtk/dcclient.h
include/wx/gtk/dcmemory.h
include/wx/gtk/print.h
include/wx/msw/dcclient.h
include/wx/msw/dcmemory.h
interface/graphics.h
samples/printing/printing.cpp
src/common/graphcmn.cpp
src/generic/graphicc.cpp
src/gtk/dcclient.cpp
src/gtk/dcmemory.cpp
src/gtk/print.cpp
src/mac/carbon/graphics.cpp
src/msw/dcclient.cpp
src/msw/dcmemory.cpp
src/msw/graphics.cpp

index e500f1f49ac4d121c6087ee081106c3ebc15d28d..3131286296036b3ccb7994bd7e540723e357f9e0 100644 (file)
@@ -42,11 +42,6 @@ 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
 //-----------------------------------------------------------------------------
@@ -187,14 +182,11 @@ public:
     virtual bool CanDrawBitmap() const = 0;
     virtual bool CanGetTextExtent() const = 0;
 
-    // get graphics context from 
-
-#if wxUSE_GRAPHICS_CONTEXT
-    virtual wxGraphicsContext* CreateGraphicsContext()
+    // get Cairo context
+    virtual void* GetCairoContext() const
     {
         return NULL;
     }
-#endif
 
     // query dimension, colour deps, resolution
 
@@ -634,11 +626,6 @@ 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
index 488e8dcd5453f64d04d0c0e3efd397889d38e81b..4ab38f42c73af841044082c84c975386a0087d4e 100644 (file)
@@ -21,6 +21,7 @@
 
 class WXDLLIMPEXP_FWD_CORE wxWindowDC;
 class WXDLLIMPEXP_FWD_CORE wxMemoryDC;
+class WXDLLIMPEXP_FWD_CORE wxPrinterDC;
 class WXDLLIMPEXP_FWD_CORE wxGraphicsContext;
 class WXDLLIMPEXP_FWD_CORE wxGraphicsPath;
 class WXDLLIMPEXP_FWD_CORE wxGraphicsMatrix;
@@ -277,6 +278,7 @@ public:
     
     static wxGraphicsContext* Create( const wxWindowDC& dc) ;
     static wxGraphicsContext * Create( const wxMemoryDC& dc) ;
+    static wxGraphicsContext * Create( const wxPrinterDC& dc) ;
 
     static wxGraphicsContext* CreateFromNative( void * context ) ;
 
@@ -543,6 +545,7 @@ public :
 
     virtual wxGraphicsContext * CreateContext( const wxWindowDC& dc) = 0 ;
     virtual wxGraphicsContext * CreateContext( const wxMemoryDC& dc) = 0 ;
+    virtual wxGraphicsContext * CreateContext( const wxPrinterDC& dc) = 0 ;
     
     virtual wxGraphicsContext * CreateContextFromNativeContext( void * context ) = 0;
 
index 9a3a13d1a4c60c336d5421a2b627937004740bcd..29e35429a5382665f43cd3d9a32f68a9008bc71f 100644 (file)
@@ -28,10 +28,6 @@ public:
 
     virtual ~wxWindowDCImpl();
 
-#if wxUSE_GRAPHICS_CONTEXT
-    virtual wxGraphicsContext* CreateGraphicsContext();
-#endif
-
     virtual bool CanDrawBitmap() const { return true; }
     virtual bool CanGetTextExtent() const { return true; }
 
index 44296bdb6d482607d1ad26723733aab38495f1d8..ff470015c82cedf04f4023ad7fd2d06901131946 100644 (file)
@@ -26,10 +26,6 @@ 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
index 5cc313bde90c80103f9826c30e780ca76c69f6f4..b6f26630b09aec3d6eca549aeeb689c3b73be0c8 100644 (file)
@@ -227,9 +227,7 @@ public:
     bool Ok() const { return IsOk(); }
     bool IsOk() const;
 
-#if wxUSE_GRAPHICS_CONTEXT
-    virtual wxGraphicsContext* CreateGraphicsContext();
-#endif
+    virtual void* GetCairoContext() const;
 
     bool CanDrawBitmap() const { return true; }
     void Clear();
index 5957aa5c22855d0ead61a10533451dc22c17f7e4..eed5e21e594f3bc94e110b6a14642071dc8109b9 100644 (file)
@@ -43,10 +43,6 @@ 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:
index 23b75e904822ce6ba231742b863b41a35820f71d..5b78fead33222f744a980a452808c55f9da2a2f4 100644 (file)
@@ -22,10 +22,6 @@ 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;
index a701b38bca3484cd4ee87418a7a1e12184510d02..d1cdf137b2398ab7cfb1d414d79882ddf535de3c 100644 (file)
@@ -192,9 +192,9 @@ public:
     @wxheader{graphics.h}
 
     A wxGraphicsContext instance is the object that is drawn upon. It is created by
-    a renderer using the CreateContext calls.., this can be either directly using a renderer
-    instance, or indirectly using the static convenience CreateXXX functions of
-    wxGraphicsContext that always delegate the task to the default renderer.
+    a renderer using wxGraphicsRenderer::CreateContext(). This can be either directly
+    using a renderer instance, or indirectly using the static convenience Create()
+    functions of wxGraphicsContext that always delegate the task to the default renderer.
 
     @code
     void MyCanvas::OnPaint(wxPaintEvent &event)
@@ -203,11 +203,11 @@ public:
         wxPaintDC dc(this);
         
         // Create graphics context from it
-        wxGraphicsContext *gc = dc.CreateGraphicsContext();
+        wxGraphicsContext *gc = wxGraphicsContext::CreateContext( dc );
     
         if (gc)
         {
-            // make a path that contains a circle and some lines, centered at 100,100
+            // make a path that contains a circle and some lines
             gc->SetPen( *wxRED_PEN );
             wxGraphicsPath path = gc->CreatePath();
             path.AddCircle( 50.0, 50.0, 50.0 );
@@ -234,28 +234,49 @@ public:
 class wxGraphicsContext : public wxGraphicsObject
 {
 public:
-    //@{
     /**
-        Clips drawings to the rectangle.
+        Creates a wxGraphicsContext from a wxWindow.
+
+        @see wxGraphicsRenderer::CreateContext()
+    */
+    static wxGraphicsContext* Create( wxWindow* window ) ;
+    
+    /**
+        Creates a wxGraphicsContext from a wxWindowDC
+
+        @see wxGraphicsRenderer::CreateContext()
+    */
+    static wxGraphicsContext* Create( const wxWindowDC& dc) ;
+    
+    /**
+        Creates a wxGraphicsContext from a wxMemoryDC
+
+        @see wxGraphicsRenderer::CreateContext()
+    */
+    static wxGraphicsContext * Create( const wxMemoryDC& dc) ;
+    
+    /**
+        Creates a wxGraphicsContext from a wxPrinterDC
+
+        @see wxGraphicsRenderer::CreateContext()
+    */
+    static wxGraphicsContext * Create( const wxPrinterDC& dc) ;
+
+    /**
+        Clips drawings to the region
     */
     void Clip(const wxRegion& region);
+
+    /**
+        Clips drawings to the rectangle.
+    */
     void Clip(wxDouble x, wxDouble y, wxDouble w, wxDouble h);
-    //@}
 
     /**
         Concatenates the passed in transform with the current transform of this context
     */
     void ConcatTransform(const wxGraphicsMatrix& matrix);
 
-    //@{
-    /**
-        Creates a wxGraphicsContext from a wxWindow.
-
-        @see wxGraphicsRenderer:: CreateContext
-    */
-    wxGraphicsContext* Create(const wxWindowDC& dc);
-    wxGraphicsContext* Create(wxWindow* window);
-    //@}
 
     /**
         Creates a native brush from a wxBrush.
index e0a29dc9dd80cd37757433dae07bf27accbc0271..0b4c31acccc4cfaf8ad22f6d24947be3e435df37 100644 (file)
@@ -412,7 +412,16 @@ void MyFrame::Draw(wxDC& dc)
         dc.DrawBitmap( m_bitmap, 10, 10 );
 
 #if wxUSE_GRAPHICS_CONTEXT
-    wxGraphicsContext *gc = dc.CreateGraphicsContext();
+    wxGraphicsContext *gc = NULL;
+
+    wxPrinterDC *printer_dc = wxDynamicCast( &dc, wxPrinterDC );
+    if (printer_dc)
+        gc = wxGraphicsContext::Create( *printer_dc );
+
+    wxWindowDC *window_dc = wxDynamicCast( &dc, wxWindowDC );
+    if (window_dc)
+        gc = wxGraphicsContext::Create( *window_dc );
+   
     if (gc)
     {
         // make a path that contains a circle and some lines, centered at 100,100
index 3b3c05d9d2d67be959c261f4def32b297150d57f..d3166c26ddfa9b759c23855a280b50e1afe263e4 100644 (file)
@@ -790,12 +790,17 @@ wxGraphicsBitmap wxGraphicsContext::CreateSubBitmap( const wxGraphicsBitmap &bmp
 #endif
 }
 
-wxGraphicsContext* wxGraphicsContext::Create( const wxWindowDC& dc) 
+/* static */ wxGraphicsContext* wxGraphicsContext::Create( const wxWindowDC& dc) 
 {
     return wxGraphicsRenderer::GetDefaultRenderer()->CreateContext(dc);
 }
 
-wxGraphicsContext* wxGraphicsContext::Create( const wxMemoryDC& dc) 
+/* static */ wxGraphicsContext* wxGraphicsContext::Create( const wxMemoryDC& dc) 
+{
+    return wxGraphicsRenderer::GetDefaultRenderer()->CreateContext(dc);
+}
+
+/* static */ wxGraphicsContext* wxGraphicsContext::Create( const wxPrinterDC& dc) 
 {
     return wxGraphicsRenderer::GetDefaultRenderer()->CreateContext(dc);
 }
index 0c6ff555903508461c10459cf1dc1b8899fd4c8c..9fdbbf8a705c5dcaefd3faea438f7162a4c1d1b1 100644 (file)
@@ -1481,6 +1481,7 @@ public :
 
     virtual wxGraphicsContext * CreateContext( const wxWindowDC& dc);
     virtual wxGraphicsContext * CreateContext( const wxMemoryDC& dc);
+    virtual wxGraphicsContext * CreateContext( const wxPrinterDC& dc);
 
     virtual wxGraphicsContext * CreateContextFromNativeContext( void * context );
 
@@ -1562,6 +1563,16 @@ wxGraphicsContext * wxCairoRenderer::CreateContext( const wxMemoryDC& dc)
     return new wxCairoContext(this,dc);
 }
 
+wxGraphicsContext * wxCairoRenderer::CreateContext( const wxPrinterDC& dc)
+{
+    const wxDCImpl *impl = dc.GetImpl();
+    cairo_t* context = (cairo_t*) impl->GetCairoContext();
+    if (context)
+       return new wxCairoContext(this,context);
+    else
+       return NULL;
+}
+
 wxGraphicsContext * wxCairoRenderer::CreateContextFromNativeContext( void * context )
 {
     return new wxCairoContext(this,(cairo_t*)context);
index 1c4a313d5cfa028d55a625ddfa1bf95036487abf..5589029861b47d4044ca88e4abd6ccef02c9f517 100644 (file)
 
 #include <gdk/gdkx.h>
 
-#if wxUSE_GRAPHICS_CONTEXT
-#include "wx/graphics.h"
-#endif
-
-
 //-----------------------------------------------------------------------------
 // local defines
 //-----------------------------------------------------------------------------
@@ -370,14 +365,6 @@ 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;
index d77d307dc5c3c76da744cbfb1ecd0bc61937dc94..3c22ca1fc19b2e57293b8c105de6fdb9576d6c2a 100644 (file)
 #include <gdk/gdk.h>
 #include <gtk/gtk.h>
 
-#if wxUSE_GRAPHICS_CONTEXT
-#include "wx/graphics.h"
-#endif
-
 //-----------------------------------------------------------------------------
 // wxMemoryDCImpl
 //-----------------------------------------------------------------------------
@@ -64,14 +60,6 @@ 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();
index d84ee92ffc5528bde57d3c13af60dd1780aee878..0c0792d37c016d6762324d95abfbd407c00207f6 100644 (file)
@@ -1159,12 +1159,10 @@ bool wxGtkPrinterDCImpl::IsOk() const
     return m_gpc != NULL;
 }
 
-#if wxUSE_GRAPHICS_CONTEXT
-wxGraphicsContext* wxGtkPrinterDCImpl::CreateGraphicsContext()
+void* wxGtkPrinterDCImpl::GetCairoContext() const
 {
-    return wxGraphicsRenderer::GetDefaultRenderer()->CreateContextFromNativeContext( (void*) m_cairo );
+    return (void*) cairo_reference( m_cairo );
 }
-#endif
 
 bool wxGtkPrinterDCImpl::DoFloodFill(wxCoord WXUNUSED(x1),
                                wxCoord WXUNUSED(y1),
index b7a64d5726a5a85e2c2648e33b828f740939de9a..83fc525b3fe4bb788ab9e4429a16e62793fcf461 100644 (file)
@@ -2259,6 +2259,7 @@ public :
 
     virtual wxGraphicsContext * CreateContext( const wxWindowDC& dc);
     virtual wxGraphicsContext * CreateContext( const wxMemoryDC& dc);
+    virtual wxGraphicsContext * CreateContext( const wxPrinterDC& dc);
 
     virtual wxGraphicsContext * CreateContextFromNativeContext( void * context );
 
@@ -2355,6 +2356,16 @@ wxGraphicsContext * wxMacCoreGraphicsRenderer::CreateContext( const wxMemoryDC&
     return NULL;
 }
 
+wxGraphicsContext * wxMacCoreGraphicsRenderer::CreateContext( const wxPrinterDC& dc )
+{
+#ifdef __WXMAC__
+    const wxDCImpl* impl = dc.GetImpl();
+    
+    // TODO
+#endif
+    return NULL;
+}
+
 wxGraphicsContext * wxMacCoreGraphicsRenderer::CreateContextFromNativeContext( void * context )
 {
     return new wxMacCoreGraphicsContext(this,(CGContextRef)context);
index b965c68430e128da179f4ba62e5ae1c3dff264ac..e97fe01af2b2a691b9c822bcd73d0db792bc2bb2 100644 (file)
     #include "wx/window.h"
 #endif
 
-#if wxUSE_GRAPHICS_CONTEXT
-#include "wx/graphics.h"
-#endif
-
 #include "wx/msw/private.h"
 
 // ----------------------------------------------------------------------------
@@ -122,14 +118,6 @@ 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?") );
index 7da1ce87c5b4a4b4b5ff0c52c199edb7203bfb60..6869e6f4e4b2f6873ede578fd7c176a7f0ad394e 100644 (file)
     #include "wx/log.h"
 #endif
 
-#if wxUSE_GRAPHICS_CONTEXT
-#include "wx/graphics.h"
-#endif
-
 #include "wx/msw/private.h"
 
 // ----------------------------------------------------------------------------
@@ -82,14 +78,6 @@ 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 ;
index 15e3bd87d4738489b9cb781104eae32d44843389..e2b875612a1b814f4299ab90a8ecbbfe9c38d46f 100644 (file)
@@ -1408,6 +1408,8 @@ public :
 
     virtual wxGraphicsContext * CreateContext( const wxMemoryDC& dc);
 
+    virtual wxGraphicsContext * CreateContext( const wxPrinterDC& dc);
+    
     virtual wxGraphicsContext * CreateContextFromNativeContext( void * context );
 
     virtual wxGraphicsContext * CreateContextFromNativeWindow( void * window );
@@ -1507,6 +1509,13 @@ wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxWindowDC& dc)
     return new wxGDIPlusContext(this,(HDC) msw->GetHDC());
 }
 
+wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxPrinterDC& dc)
+{
+    EnsureIsLoaded();
+    wxMSWDCImpl *msw = wxDynamicCast( dc.GetImpl() , wxMSWDCImpl );
+    return new wxGDIPlusContext(this,(HDC) msw->GetHDC());
+}
+
 wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxMemoryDC& dc)
 {
     EnsureIsLoaded();