]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dc.h
Implement deep copy of wxBitmapRefData
[wxWidgets.git] / include / wx / dc.h
index 8cee8f3fb75d8d9822f1c0198617fbe99caad539..dbe62c4d95e2f94754072a0c0c5c4e3ceeef919b 100644 (file)
@@ -313,6 +313,11 @@ public:
         return DoBlit(destPt.x, destPt.y, sz.x, sz.y,
                       source, srcPt.x, srcPt.y, rop, useMask, srcPtMask.x, srcPtMask.y);
     }
         return DoBlit(destPt.x, destPt.y, sz.x, sz.y,
                       source, srcPt.x, srcPt.y, rop, useMask, srcPtMask.x, srcPtMask.y);
     }
+    
+    wxBitmap GetAsBitmap(const wxRect *subrect = (const wxRect *) NULL) const
+    {
+        return DoGetAsBitmap(subrect);
+    }
 
 #if wxUSE_SPLINES
     // TODO: this API needs fixing (wxPointList, why (!const) "wxList *"?)
 
 #if wxUSE_SPLINES
     // TODO: this API needs fixing (wxPointList, why (!const) "wxList *"?)
@@ -712,6 +717,8 @@ protected:
                         wxDC *source, wxCoord xsrc, wxCoord ysrc,
                         int rop = wxCOPY, bool useMask = false, wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord) = 0;
 
                         wxDC *source, wxCoord xsrc, wxCoord ysrc,
                         int rop = wxCOPY, bool useMask = false, wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord) = 0;
 
+    virtual wxBitmap DoGetAsBitmap(const wxRect *WXUNUSED(subrect)) const { return wxNullBitmap; }
+
     virtual void DoGetSize(int *width, int *height) const = 0;
     virtual void DoGetSizeMM(int* width, int* height) const = 0;
 
     virtual void DoGetSize(int *width, int *height) const = 0;
     virtual void DoGetSizeMM(int* width, int* height) const = 0;
 
@@ -856,6 +863,10 @@ private:
     #include "wx/os2/dc.h"
 #endif
 
     #include "wx/os2/dc.h"
 #endif
 
+#if wxUSE_GRAPHICS_CONTEXT
+    #include "wx/dcgraph.h"
+#endif
+
 // ----------------------------------------------------------------------------
 // helper class: you can use it to temporarily change the DC text colour and
 // restore it automatically when the object goes out of scope
 // ----------------------------------------------------------------------------
 // helper class: you can use it to temporarily change the DC text colour and
 // restore it automatically when the object goes out of scope
@@ -866,6 +877,11 @@ class WXDLLEXPORT wxDCTextColourChanger
 public:
     wxDCTextColourChanger(wxDC& dc) : m_dc(dc), m_colFgOld() { }
 
 public:
     wxDCTextColourChanger(wxDC& dc) : m_dc(dc), m_colFgOld() { }
 
+    wxDCTextColourChanger(wxDC& dc, const wxColour& col) : m_dc(dc)
+    {
+        Set(col);
+    }
+
     ~wxDCTextColourChanger()
     {
         if ( m_colFgOld.Ok() )
     ~wxDCTextColourChanger()
     {
         if ( m_colFgOld.Ok() )
@@ -964,72 +980,4 @@ private:
     DECLARE_NO_COPY_CLASS(wxDCClipper)
 };
 
     DECLARE_NO_COPY_CLASS(wxDCClipper)
 };
 
-// ----------------------------------------------------------------------------
-// creates an overlay over an existing window, allowing for manipulations like
-// rubberbanding etc. this API is not stable yet, not to be used outside wx
-// internal code
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxOverlayImpl;
-class WXDLLEXPORT wxWindowDC;
-
-class WXDLLEXPORT wxOverlay
-{
-public:
-    wxOverlay();
-    ~wxOverlay();
-
-    // clears the overlay without restoring the former state
-    // to be done eg when the window content has been changed and repainted
-    void Reset();
-
-private:
-    friend class WXDLLEXPORT wxDCOverlay;
-
-    // returns true if it has been setup
-    bool IsOk();
-
-    void Init(wxWindowDC* dc, int x , int y , int width , int height);
-
-    void BeginDrawing(wxWindowDC* dc);
-
-    void EndDrawing(wxWindowDC* dc);
-
-    void Clear(wxWindowDC* dc);
-
-    wxOverlayImpl* m_impl;
-
-    bool m_inDrawing;
-
-
-    DECLARE_NO_COPY_CLASS(wxOverlay)
-};
-
-class WXDLLEXPORT wxDCOverlay
-{
-public:
-    // connects this overlay to the corresponding drawing dc, if the overlay is not initialized yet
-    // this call will do so
-    wxDCOverlay(wxOverlay &overlay, wxWindowDC *dc, int x , int y , int width , int height);
-
-    // convenience wrapper that behaves the same using the entire area of the dc
-    wxDCOverlay(wxOverlay &overlay, wxWindowDC *dc);
-
-    // removes the connection between the overlay and the dc
-    virtual ~wxDCOverlay();
-
-    // clears the layer, restoring the state at the last init
-    void Clear();
-
-private:
-    void Init(wxWindowDC *dc, int x , int y , int width , int height);
-
-    wxOverlay& m_overlay;
-
-    wxWindowDC* m_dc;
-
-
-    DECLARE_NO_COPY_CLASS(wxDCOverlay)
-};
-
 #endif // _WX_DC_H_BASE_
 #endif // _WX_DC_H_BASE_