X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/be2001feddfb5f388c61a5a6f64146f0193e239b..153530afb595110592776c461e52be99b1559439:/include/wx/generic/region.h diff --git a/include/wx/generic/region.h b/include/wx/generic/region.h index d8da3a0eab..665f8f8b15 100644 --- a/include/wx/generic/region.h +++ b/include/wx/generic/region.h @@ -12,104 +12,49 @@ #ifndef _WX_GENERIC_REGION_H__ #define _WX_GENERIC_REGION_H__ -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" - -class WXDLLEXPORT wxRect; -class WXDLLEXPORT wxPoint; - -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(); - - bool Ok() const { return m_refData != NULL; } - - bool operator == ( const wxRegionGeneric& region ) const; - bool operator != ( const wxRegionGeneric& region ) const { 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(); } - - //# 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; - - // 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 ~wxRegionGeneric(); - // Convert the region to a B&W bitmap with the white pixels being inside - // the region. - wxBitmap ConvertToBitmap() 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__