]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dfb/region.h
update mac gl, after rev 50900
[wxWidgets.git] / include / wx / dfb / region.h
index a7cdd83dd1270dc19e267f487c63719606745c38..3d96a7e718500e80ceab7cccd3c885322ddbf5a7 100644 (file)
 #ifndef _WX_DFB_REGION_H_
 #define _WX_DFB_REGION_H_
 
-#include "wx/gdiobj.h"
-#include "wx/gdicmn.h"
-
-#warning "Move these to wx/region.h when common code is moved there"
-class WXDLLIMPEXP_CORE wxBitmap;
-class WXDLLIMPEXP_CORE wxColour;
-
-class WXDLLIMPEXP_CORE wxRegion : public wxGDIObject
+class WXDLLIMPEXP_CORE wxRegion : public wxRegionBase
 {
-
 public:
+    wxRegion();
     wxRegion(wxCoord x, wxCoord y, wxCoord w, wxCoord h);
     wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight);
     wxRegion(const wxRect& rect);
@@ -35,78 +28,11 @@ public:
         Union(bmp, transColour, tolerance);
     }
 
-    wxRegion();
-    ~wxRegion();
-
-    #warning "FIXME: move this to common code? at least Ok()"
-    bool Ok() const { return m_refData != NULL; }
-
-    bool operator==(const wxRegion& region) const;
-    bool operator!=(const wxRegion& region) const { return !(*this == region); }
-
-    // Clear current region
-    void Clear();
-
-    bool Offset(wxCoord x, wxCoord y);
-
-    // Union rectangle or region with this.
-    bool Union(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
-        { return Union(wxRect(x, y, width, height)); }
-    bool Union(const wxRect& rect);
-    bool Union(const wxRegion& region);
-
-    // Intersect rectangle or region with this.
-    bool Intersect(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
-        { return Intersect(wxRect(x, y, width, height)); }
-    bool Intersect(const wxRect& rect);
-    bool Intersect(const wxRegion& region);
-
-    // Subtract rectangle or region from this:
-    // Combines the parts of 'this' that are not part of the second region.
-    bool Subtract(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
-        { return Subtract(wxRect(x, y, width, height)); }
-    bool Subtract(const wxRect& rect);
-    bool Subtract(const wxRegion& region);
-
-    // XOR: the union of two combined regions except for any overlapping areas.
-    bool Xor(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
-        { return Xor(wxRect(x, y, width, height)); }
-    bool Xor(const wxRect& rect);
-    bool Xor(const wxRegion& region);
-
-    // Outer bounds of region
-    void GetBox(wxCoord& x, wxCoord& y, wxCoord&w, wxCoord &h) const;
-    wxRect GetBox(void) const;
-
-    // Is region empty?
-    bool Empty(void) const;
-    inline bool IsEmpty(void) const { return Empty(); }
-
-    // Does the region contain the point (x,y)?
-    wxRegionContain Contains(wxCoord x, wxCoord y) const;
-    // Does the region contain the point pt?
-    wxRegionContain Contains(const wxPoint& pt) const
-        { return Contains(pt.x, pt.y); }
-    // Does the region contain the rectangle rect?
-    wxRegionContain Contains(const wxRect& rect) const;
-    // Does the region contain the rectangle (x, y, w, h)?
-    wxRegionContain Contains(wxCoord x, wxCoord y, wxCoord w, wxCoord h) const
-        { return Contains(wxRect(x, y, w, h)); }
-
-
-    #warning "Move these union versions + ConvertToBitmap to wxRegionBase"
-    // Convert the region to a B&W bitmap with the white pixels being inside
-    // the region.
-    wxBitmap ConvertToBitmap() const;
-
-    // Use the non-transparent pixels of a wxBitmap for the region to combine
-    // with this region.  First version takes transparency from bitmap's mask,
-    // second lets the user specify the colour to be treated as transparent
-    // along with an optional tolerance value.
-    // NOTE: implemented in common/rgncmn.cpp
-    bool Union(const wxBitmap& bmp);
-    bool Union(const wxBitmap& bmp,
-               const wxColour& transColour, int tolerance = 0);
+    virtual ~wxRegion();
+
+    // wxRegionBase methods
+    virtual void Clear();
+    virtual bool IsEmpty() const;
 
     // NB: implementation detail of DirectFB, should be removed if full
     //     (i.e. not rect-only version is implemented) so that all code that
@@ -114,11 +40,24 @@ public:
     wxRect AsRect() const { return GetBox(); }
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
+    // wxRegionBase pure virtuals
+    virtual bool DoIsEqual(const wxRegion& region) const;
+    virtual bool DoGetBox(wxCoord& x, wxCoord& y, wxCoord& w, wxCoord& h) const;
+    virtual wxRegionContain DoContainsPoint(wxCoord x, wxCoord y) const;
+    virtual wxRegionContain DoContainsRect(const wxRect& rect) const;
+
+    virtual bool DoOffset(wxCoord x, wxCoord y);
+    virtual bool DoUnionWithRect(const wxRect& rect);
+    virtual bool DoUnionWithRegion(const wxRegion& region);
+    virtual bool DoIntersect(const wxRegion& region);
+    virtual bool DoSubtract(const wxRegion& region);
+    virtual bool DoXor(const wxRegion& region);
+
 
-    friend class WXDLLIMPEXP_CORE wxRegionIterator;
+    friend class WXDLLIMPEXP_FWD_CORE wxRegionIterator;
 
     DECLARE_DYNAMIC_CLASS(wxRegion);
 };