- DECLARE_DYNAMIC_CLASS(wxRegion);
-
- public:
-
- wxRegion( long x, long y, long w, long h );
- wxRegion( const wxPoint& topLeft, const wxPoint& bottomRight );
- wxRegion( const wxRect& rect );
- wxRegion(void);
- ~wxRegion(void);
-
- inline wxRegion( const wxRegion& r )
- { Ref(r); }
- inline wxRegion& operator = ( const wxRegion& r )
- { Ref(r); return (*this); }
-
- void Clear(void);
-
- bool Union( long x, long y, long width, long height );
- bool Union( const wxRect& rect );
- bool Union( const wxRegion& region );
-
- bool Intersect( long x, long y, long width, long height );
- bool Intersect( const wxRect& rect );
- bool Intersect( const wxRegion& region );
-
- bool Subtract( long x, long y, long width, long height );
- bool Subtract( const wxRect& rect );
- bool Subtract( const wxRegion& region );
-
- bool Xor( long x, long y, long width, long height );
- bool Xor( const wxRect& rect );
- bool Xor( const wxRegion& region );
-
- void GetBox( long& x, long& y, long&w, long &h ) const;
- wxRect GetBox(void) const ;
-
- bool Empty(void) const;
-
- wxRegionContain Contains( long x, long y ) const;
- wxRegionContain Contains( long x, long y, long w, long h ) const;
- wxRegionContain Contains(const wxPoint& pt) const;
- wxRegionContain Contains(const wxRect& rect) const;
-
- public:
-
- wxList *GetRectList() const;
- GdkRegion *GetRegion(void) const;
+public:
+ wxRegion() { }
+
+ wxRegion( wxCoord x, wxCoord y, wxCoord w, wxCoord h )
+ {
+ InitRect(x, y, w, h);
+ }
+
+ wxRegion( const wxPoint& topLeft, const wxPoint& bottomRight )
+ {
+ InitRect(topLeft.x, topLeft.y,
+ bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);
+ }
+
+ wxRegion( const wxRect& rect )
+ {
+ InitRect(rect.x, rect.y, rect.width, rect.height);
+ }
+
+ wxRegion( size_t n, const wxPoint *points, int fillStyle = wxODDEVEN_RULE );
+
+ wxRegion( const wxBitmap& bmp)
+ {
+ Union(bmp);
+ }
+ wxRegion( const wxBitmap& bmp,
+ const wxColour& transColour, int tolerance = 0)
+ {
+ Union(bmp, transColour, tolerance);
+ }
+
+ virtual ~wxRegion();
+
+ // wxRegionBase methods
+ virtual void Clear();
+ virtual bool IsEmpty() const;
+
+public:
+ // Init with GdkRegion, set ref count to 2 so that
+ // the C++ class will not destroy the region!
+ wxRegion( GdkRegion *region );
+
+ GdkRegion *GetRegion() const;
+
+protected:
+ 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);
+
+ // common part of ctors for a rectangle region
+ void InitRect(wxCoord x, wxCoord y, wxCoord w, wxCoord h);
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxRegion)