]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dc.h
Patch 1708290
[wxWidgets.git] / include / wx / dc.h
index 8cee8f3fb75d8d9822f1c0198617fbe99caad539..7551b9990567206174a5957565ad8245f925e417 100644 (file)
@@ -314,6 +314,30 @@ public:
                       source, srcPt.x, srcPt.y, rop, useMask, srcPtMask.x, srcPtMask.y);
     }
 
+    bool StretchBlit(wxCoord dstX, wxCoord dstY, 
+                     wxCoord dstWidth, wxCoord dstHeight,
+                     wxDC *source, 
+                     wxCoord srcX, wxCoord srcY,
+                     wxCoord srcWidth, wxCoord srcHeight,
+                     int rop = wxCOPY, bool useMask = false, 
+                     wxCoord srcMaskX = wxDefaultCoord, wxCoord srcMaskY = wxDefaultCoord)
+    {
+        return DoStretchBlit(dstX, dstY, dstWidth, dstHeight,
+                      source, srcX, srcY, srcWidth, srcHeight, rop, useMask, srcMaskX, srcMaskY);
+    }
+    bool StretchBlit(const wxPoint& dstPt, const wxSize& dstSize,
+                     wxDC *source, const wxPoint& srcPt, const wxSize& srcSize,
+                     int rop = wxCOPY, bool useMask = false, const wxPoint& srcMaskPt = wxDefaultPosition)
+    {
+        return DoStretchBlit(dstPt.x, dstPt.y, dstSize.x, dstSize.y,
+                      source, srcPt.x, srcPt.y, srcSize.x, srcSize.y, rop, useMask, srcMaskPt.x, srcMaskPt.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 *"?)
     void DrawSpline(wxCoord x1, wxCoord y1,
@@ -433,15 +457,29 @@ public:
                        wxCoord *x, wxCoord *y,
                        wxCoord *descent = NULL,
                        wxCoord *externalLeading = NULL,
-                       wxFont *theFont = NULL) const
+                       const wxFont *theFont = NULL) const
         { DoGetTextExtent(string, x, y, descent, externalLeading, theFont); }
 
+    wxSize GetTextExtent(const wxString& string) const
+    {
+        wxCoord w, h;
+        DoGetTextExtent(string, &w, &h);
+        return wxSize(w, h);
+    }
+
     // works for single as well as multi-line strings
-    virtual void GetMultiLineTextExtent(const wxString& text,
+    virtual void GetMultiLineTextExtent(const wxString& string,
                                         wxCoord *width,
                                         wxCoord *height,
                                         wxCoord *heightLine = NULL,
-                                        wxFont *font = NULL);
+                                        const wxFont *font = NULL) const;
+
+    wxSize GetMultiLineTextExtent(const wxString& string) const
+    {
+        wxCoord w, h;
+        GetMultiLineTextExtent(string, &w, &h);
+        return wxSize(w, h);
+    }
 
     // Measure cumulative width of text after each character
     bool GetPartialTextExtents(const wxString& text, wxArrayInt& widths) const
@@ -558,11 +596,6 @@ public:
     virtual int GetLogicalFunction() const { return m_logicalFunction; }
     virtual void SetLogicalFunction(int function) = 0;
 
-#if WXWIN_COMPATIBILITY_2_4
-    virtual void SetOptimization(bool WXUNUSED(opt)) { }
-    virtual bool GetOptimization() { return false; }
-#endif
-
     // bounding box
     // ------------
 
@@ -607,7 +640,7 @@ public:
                        long *x, long *y,
                        long *descent = NULL,
                        long *externalLeading = NULL,
-                       wxFont *theFont = NULL) const
+                       const wxFont *theFont = NULL) const
     {
         wxCoord x2, y2, descent2, externalLeading2;
         DoGetTextExtent(string, &x2, &y2,
@@ -709,8 +742,25 @@ protected:
 
     virtual bool DoBlit(wxCoord xdest, wxCoord ydest,
                         wxCoord width, wxCoord height,
-                        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 bool DoStretchBlit(wxCoord xdest, wxCoord ydest,
+                               wxCoord dstWidth, wxCoord dstHeight,
+                               wxDC *source,
+                               wxCoord xsrc, wxCoord ysrc,
+                               wxCoord srcWidth, wxCoord srcHeight,
+                               int rop = wxCOPY,
+                               bool useMask = false,
+                               wxCoord xsrcMask = wxDefaultCoord,
+                               wxCoord ysrcMask = wxDefaultCoord);
+
+    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;
@@ -728,13 +778,6 @@ protected:
     virtual void DoSetClippingRegion(wxCoord x, wxCoord y,
                                      wxCoord width, wxCoord height) = 0;
 
-#if WXWIN_COMPATIBILITY_2_4
-    // this was only for confusing people, use DoGetClippingBox only
-    virtual void DoGetClippingRegion(wxCoord *x, wxCoord *y,
-                                     wxCoord *w, wxCoord *h)
-        { DoGetClippingBox(x, y, w, h); }
-#endif
-
     virtual void DoGetClippingBox(wxCoord *x, wxCoord *y,
                                   wxCoord *w, wxCoord *h) const
     {
@@ -764,7 +807,7 @@ protected:
                                  wxCoord *x, wxCoord *y,
                                  wxCoord *descent = NULL,
                                  wxCoord *externalLeading = NULL,
-                                 wxFont *theFont = NULL) const = 0;
+                                 const wxFont *theFont = NULL) const = 0;
 
     virtual bool DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const;
 
@@ -856,6 +899,10 @@ private:
     #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
@@ -866,6 +913,11 @@ class WXDLLEXPORT wxDCTextColourChanger
 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() )
@@ -964,72 +1016,4 @@ private:
     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_