]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/region.h
define wxHAS_CONFIG_TEMPLATE_RW if template wxConfig::Read/Write() are available...
[wxWidgets.git] / include / wx / region.h
index a4d68ec2aea9897e1cfb99f54dbda28ae864b6bd..38c61ccf9c95979c70bb2cb9f51c4e07149f1f7d 100644 (file)
 #ifndef _WX_REGION_H_BASE_
 #define _WX_REGION_H_BASE_
 
-#include "wx/bitmap.h"
 #include "wx/gdiobj.h"
 #include "wx/gdicmn.h"
 
-class WXDLLEXPORT wxColour;
-class WXDLLEXPORT wxRegion;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxColour;
+class WXDLLIMPEXP_FWD_CORE wxRegion;
 
 // ----------------------------------------------------------------------------
 // constants
@@ -55,7 +55,7 @@ enum wxRegionOp
 // wxRegionBase defines wxRegion API
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxRegionBase : public wxGDIObject
+class WXDLLIMPEXP_CORE wxRegionBase : public wxGDIObject
 {
 public:
     // ctors
@@ -82,8 +82,6 @@ public:
     // accessors
     // ---------
 
-    bool Ok() const { return m_refData != NULL; }
-
     // Is region empty?
     virtual bool IsEmpty() const = 0;
     bool Empty() const { return IsEmpty(); }
@@ -141,23 +139,20 @@ public:
 #endif // wxUSE_IMAGE
 
     // Intersect rectangle or region with this one.
-    bool Intersect(wxCoord x, wxCoord y, wxCoord w, wxCoord h)
-        { return Intersect(wxRect(x, y, w, h)); }
+    bool Intersect(wxCoord x, wxCoord y, wxCoord w, wxCoord h);
     bool Intersect(const wxRect& rect);
     bool Intersect(const wxRegion& region)
         { return DoIntersect(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 w, wxCoord h)
-        { return Subtract(wxRect(x, y, w, h)); }
+    bool Subtract(wxCoord x, wxCoord y, wxCoord w, wxCoord h);
     bool Subtract(const wxRect& rect);
     bool Subtract(const wxRegion& region)
         { return DoSubtract(region); }
 
     // XOR: the union of two combined regions except for any overlapping areas.
-    bool Xor(wxCoord x, wxCoord y, wxCoord w, wxCoord h)
-        { return Xor(wxRect(x, y, w, h)); }
+    bool Xor(wxCoord x, wxCoord y, wxCoord w, wxCoord h);
     bool Xor(const wxRect& rect);
     bool Xor(const wxRegion& region)
         { return DoXor(region); }
@@ -188,12 +183,12 @@ protected:
 // ports with Combine() in this class
 #if defined(__WXPALMOS__) || \
     defined(__WXMSW__) || \
-    defined(__WXMAC__) || \
+    ( defined(__WXMAC__) && wxOSX_USE_CARBON ) || \
     defined(__WXPM__)
 
 #define wxHAS_REGION_COMBINE
 
-class WXDLLEXPORT wxRegionWithCombine : public wxRegionBase
+class WXDLLIMPEXP_CORE wxRegionWithCombine : public wxRegionBase
 {
 public:
     // these methods are not part of public API as they're not implemented on
@@ -209,17 +204,11 @@ protected:
     virtual bool DoCombine(const wxRegion& region, wxRegionOp op) = 0;
 
     // implement some wxRegionBase pure virtuals in terms of Combine()
-    virtual bool DoUnionWithRect(const wxRect& rect)
-        { return Combine(rect, wxRGN_OR); }
-    virtual bool DoUnionWithRegion(const wxRegion& region)
-        { return Combine(region, wxRGN_OR); }
-
-    virtual bool DoIntersect(const wxRegion& region)
-        { return Combine(region, wxRGN_AND); }
-    virtual bool DoSubtract(const wxRegion& region)
-        { return Combine(region, wxRGN_DIFF); }
-    virtual bool DoXor(const wxRegion& region)
-        { return Combine(region, wxRGN_XOR); }
+    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);
 };
 
 #endif // ports with wxRegion::Combine()
@@ -239,7 +228,7 @@ protected:
 #elif defined(__WXDFB__)
     #include "wx/dfb/region.h"
 #elif defined(__WXMAC__)
-    #include "wx/mac/region.h"
+    #include "wx/osx/region.h"
 #elif defined(__WXCOCOA__)
     #include "wx/cocoa/region.h"
 #elif defined(__WXPM__)
@@ -269,6 +258,24 @@ inline bool wxRegionBase::Xor(const wxRect& rect)
     return DoXor(wxRegion(rect));
 }
 
+// ...and these functions are here because they call the ones above, and its
+// not really proper to call an inline function before its defined inline.
+
+inline bool wxRegionBase::Intersect(wxCoord x, wxCoord y, wxCoord w, wxCoord h)
+{
+    return Intersect(wxRect(x, y, w, h));
+}
+
+inline bool wxRegionBase::Subtract(wxCoord x, wxCoord y, wxCoord w, wxCoord h)
+{
+    return Subtract(wxRect(x, y, w, h));
+}
+
+inline bool wxRegionBase::Xor(wxCoord x, wxCoord y, wxCoord w, wxCoord h)
+{
+    return Xor(wxRect(x, y, w, h));
+}
+
 #ifdef wxHAS_REGION_COMBINE
 
 inline bool wxRegionWithCombine::Combine(wxCoord x,