X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77ffb5937e89927b621128789401db8921fe580f..1f0acb435592470b421b80df854fbbb08cd2853f:/include/wx/generic/region.h diff --git a/include/wx/generic/region.h b/include/wx/generic/region.h index b0e5b44309..665f8f8b15 100644 --- a/include/wx/generic/region.h +++ b/include/wx/generic/region.h @@ -6,110 +6,55 @@ // Created: 2004/04/12 // RCS-ID: $Id$ // Copyright: (c) 2004 David Elliott -// Licence: wxWidgets licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_GENERIC_REGION_H__ #define _WX_GENERIC_REGION_H__ -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" - -class WXDLLEXPORT wxRect; -class WXDLLEXPORT wxPoint; - -enum wxRegionContain -{ wxOutRegion = 0 -, wxPartRegion = 1 -, wxInRegion = 2 -}; - -class WXDLLEXPORT wxRegionGeneric : public wxGDIObject +class WXDLLIMPEXP_CORE wxRegionGeneric : public wxRegionBase { -// DECLARE_DYNAMIC_CLASS(wxRegionGeneric); - friend class WXDLLEXPORT wxRegionIteratorGeneric; public: wxRegionGeneric(wxCoord x, wxCoord y, wxCoord w, wxCoord h); wxRegionGeneric(const wxPoint& topLeft, const wxPoint& bottomRight); wxRegionGeneric(const wxRect& rect); + wxRegionGeneric(size_t n, const wxPoint *points, wxPolygonFillMode fillStyle = wxODDEVEN_RULE); + wxRegionGeneric(const wxBitmap& bmp); + wxRegionGeneric(const wxBitmap& bmp, const wxColour& transp, int tolerance = 0); wxRegionGeneric(); - ~wxRegionGeneric(); - - //# Copying - wxRegionGeneric(const wxRegionGeneric& r) - : wxGDIObject() - { Ref(r); } - wxRegionGeneric& operator= (const wxRegionGeneric& r) - { Ref(r); return (*this); } - - bool Ok() const { return m_refData != NULL; } - - bool operator == ( const wxRegionGeneric& region ); - bool operator != ( const wxRegionGeneric& region ) { return !(*this == region); } - - //# Modify region - // Clear current region - void Clear(); - - // Move the region - bool Offset(wxCoord x, wxCoord y); - - // Union rectangle or region with this. - bool Union(long x, long y, long width, long height) - { return Union(wxRect(x,y,width,height)); } - bool Union(const wxRect& rect); - bool Union(const wxRegionGeneric& region); - - // Intersect rectangle or region with this. - bool Intersect(long x, long y, long width, long height) - { return Intersect(wxRect(x,y,width,height)); } - bool Intersect(const wxRect& rect); - bool Intersect(const wxRegionGeneric& region); - - // Subtract rectangle or region from this: - // Combines the parts of 'this' that are not part of the second region. - bool Subtract(long x, long y, long width, long height) - { return Subtract(wxRect(x,y,width,height)); } - bool Subtract(const wxRect& rect); - bool Subtract(const wxRegionGeneric& region); - - // XOR: the union of two combined regions except for any overlapping areas. - bool Xor(long x, long y, long width, long height); - bool Xor(const wxRect& rect); - bool Xor(const wxRegionGeneric& region); - - //# Information on region - // Outer bounds of region - void GetBox(wxCoord& x, wxCoord& y, wxCoord&w, wxCoord &h) const; - wxRect GetBox() const; - - // Is region empty? - bool Empty() const; - inline bool IsEmpty() const { return Empty(); } + virtual ~wxRegionGeneric(); - //# Tests - // Does the region contain the point (x,y)? - wxRegionContain Contains(long x, long y) const; - // Does the region contain the point pt? - wxRegionContain Contains(const wxPoint& pt) const; - // Does the region contain the rectangle (x, y, w, h)? - wxRegionContain Contains(long x, long y, long w, long h) const; - // Does the region contain the rectangle rect? - wxRegionContain Contains(const wxRect& rect) const; + // wxRegionBase pure virtuals + virtual void Clear(); + virtual bool IsEmpty() const; protected: - 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_FWD_CORE wxRegionIteratorGeneric; }; -class WXDLLEXPORT wxRegionIteratorGeneric : public wxObject +class WXDLLIMPEXP_CORE wxRegionIteratorGeneric : public wxObject { -// DECLARE_DYNAMIC_CLASS(wxRegionIteratorGeneric); public: wxRegionIteratorGeneric(); wxRegionIteratorGeneric(const wxRegionGeneric& region); wxRegionIteratorGeneric(const wxRegionIteratorGeneric& iterator); - ~wxRegionIteratorGeneric(); + virtual ~wxRegionIteratorGeneric(); wxRegionIteratorGeneric& operator=(const wxRegionIteratorGeneric& iterator); @@ -134,4 +79,4 @@ private: wxRegionGeneric m_region; }; -#endif //ndef _WX_GENERIC_REGION_H__ +#endif // _WX_GENERIC_REGION_H__