X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b7cacb43db1e69b87b257a67912b4d52995b070a..72ac4e888aff9b766216f96cc090b051a7f52188:/include/wx/region.h diff --git a/include/wx/region.h b/include/wx/region.h index b0a6c47bdd..a4cf196b07 100644 --- a/include/wx/region.h +++ b/include/wx/region.h @@ -12,12 +12,12 @@ #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,9 +82,6 @@ public: // accessors // --------- - bool Ok() const { return IsOk(); } - bool IsOk() const { return m_refData != NULL; } - // Is region empty? virtual bool IsEmpty() const = 0; bool Empty() const { return IsEmpty(); } @@ -142,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); } @@ -194,7 +188,7 @@ protected: #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 @@ -210,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() @@ -240,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__) @@ -270,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,