1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/mgl/region.h
3 // Purpose: wxRegion class
4 // Author: Vaclav Slavik
7 // Copyright: (c) 2001-2002 SciTech Software, Inc. (www.scitechsoft.com)
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
11 #ifndef _WX_MGL_REGION_H_
12 #define _WX_MGL_REGION_H_
18 class WXDLLEXPORT wxRegion
: public wxRegionBase
22 wxRegion(wxCoord x
, wxCoord y
, wxCoord w
, wxCoord h
);
23 wxRegion(const wxPoint
& topLeft
, const wxPoint
& bottomRight
);
24 wxRegion(const wxRect
& rect
);
25 wxRegion(const MGLRegion
& region
);
26 wxRegion(size_t n
, const wxPoint
*points
, int fillStyle
= wxODDEVEN_RULE
);
27 wxRegion(const wxBitmap
& bmp
)
31 wxRegion(const wxBitmap
& bmp
,
32 const wxColour
& transColour
, int tolerance
= 0)
34 Union(bmp
, transColour
, tolerance
);
39 // wxRegionBase methods
41 virtual bool IsEmpty() const;
43 // implementation from now on:
44 const MGLRegion
& GetMGLRegion() const;
48 virtual wxObjectRefData
*CreateRefData() const;
49 virtual wxObjectRefData
*CloneRefData(const wxObjectRefData
*data
) const;
51 // wxRegionBase pure virtuals
52 virtual bool DoIsEqual(const wxRegion
& region
) const;
53 virtual bool DoGetBox(wxCoord
& x
, wxCoord
& y
, wxCoord
& w
, wxCoord
& h
) const;
54 virtual wxRegionContain
DoContainsPoint(wxCoord x
, wxCoord y
) const;
55 virtual wxRegionContain
DoContainsRect(const wxRect
& rect
) const;
57 virtual bool DoOffset(wxCoord x
, wxCoord y
);
58 virtual bool DoUnionWithRect(const wxRect
& rect
);
59 virtual bool DoUnionWithRegion(const wxRegion
& region
);
60 virtual bool DoIntersect(const wxRegion
& region
);
61 virtual bool DoSubtract(const wxRegion
& region
);
62 virtual bool DoXor(const wxRegion
& region
);
65 DECLARE_DYNAMIC_CLASS(wxRegion
);
66 friend class WXDLLEXPORT wxRegionIterator
;
70 WX_DECLARE_EXPORTED_LIST(wxRect
, wxRegionRectList
);
72 class WXDLLEXPORT wxRegionIterator
: public wxObject
75 wxRegionIterator(void);
76 wxRegionIterator(const wxRegion
& region
);
77 virtual ~wxRegionIterator(void);
79 void Reset(void) { m_currentNode
= NULL
; }
80 void Reset(const wxRegion
& region
);
82 operator bool (void) const { return (m_currentNode
!= NULL
); }
84 bool HaveRects(void) const { return (m_currentNode
!= NULL
); }
86 void operator ++ (void);
87 void operator ++ (int);
89 wxCoord
GetX(void) const;
90 wxCoord
GetY(void) const;
91 wxCoord
GetW(void) const;
92 wxCoord
GetWidth(void) const { return GetW(); }
93 wxCoord
GetH(void) const;
94 wxCoord
GetHeight(void) const { return GetH(); }
95 wxRect
GetRect() const { return wxRect(GetX(), GetY(), GetWidth(), GetHeight()); }
98 wxRegionRectList m_rects
;
99 wxRegionRectList::Node
*m_currentNode
;
101 DECLARE_DYNAMIC_CLASS(wxRegionIterator
);
104 #endif // _WX_MGL_REGION_H_