]> git.saurik.com Git - wxWidgets.git/blame - include/wx/mgl/region.h
Allow returning NULL windows from GetCompositeWindowParts().
[wxWidgets.git] / include / wx / mgl / region.h
CommitLineData
32b8ec41 1/////////////////////////////////////////////////////////////////////////////
320bf9ce 2// Name: wx/mgl/region.h
32b8ec41
VZ
3// Purpose: wxRegion class
4// Author: Vaclav Slavik
5// Created: 2001/03/12
6// RCS-ID: $Id$
52750c2e 7// Copyright: (c) 2001-2002 SciTech Software, Inc. (www.scitechsoft.com)
65571936 8// Licence: wxWindows licence
32b8ec41
VZ
9/////////////////////////////////////////////////////////////////////////////
10
8a16d737
VZ
11#ifndef _WX_MGL_REGION_H_
12#define _WX_MGL_REGION_H_
32b8ec41 13
32b8ec41 14#include "wx/list.h"
32b8ec41 15
32b8ec41
VZ
16class MGLRegion;
17
53a2db12 18class WXDLLIMPEXP_CORE wxRegion : public wxRegionBase
32b8ec41 19{
32b8ec41 20public:
8a16d737 21 wxRegion();
32b8ec41
VZ
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);
94a007ec 26 wxRegion(size_t n, const wxPoint *points, wxPolygonFillMode fillStyle = wxODDEVEN_RULE );
320bf9ce 27 wxRegion(const wxBitmap& bmp)
85f6b408
VS
28 {
29 Union(bmp);
30 }
320bf9ce
WS
31 wxRegion(const wxBitmap& bmp,
32 const wxColour& transColour, int tolerance = 0)
1542ea39
RD
33 {
34 Union(bmp, transColour, tolerance);
35 }
32b8ec41 36
d3c7fc99 37 virtual ~wxRegion();
32b8ec41 38
8a16d737
VZ
39 // wxRegionBase methods
40 virtual void Clear();
41 virtual bool IsEmpty() const;
1542ea39 42
32b8ec41
VZ
43 // implementation from now on:
44 const MGLRegion& GetMGLRegion() const;
6d7ee9e8
VS
45
46protected:
8f884a0d
VZ
47 virtual wxGDIRefData *CreateGDIRefData() const;
48 virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
8a16d737
VZ
49
50 // wxRegionBase pure virtuals
51 virtual bool DoIsEqual(const wxRegion& region) const;
52 virtual bool DoGetBox(wxCoord& x, wxCoord& y, wxCoord& w, wxCoord& h) const;
53 virtual wxRegionContain DoContainsPoint(wxCoord x, wxCoord y) const;
54 virtual wxRegionContain DoContainsRect(const wxRect& rect) const;
55
56 virtual bool DoOffset(wxCoord x, wxCoord y);
57 virtual bool DoUnionWithRect(const wxRect& rect);
58 virtual bool DoUnionWithRegion(const wxRegion& region);
59 virtual bool DoIntersect(const wxRegion& region);
60 virtual bool DoSubtract(const wxRegion& region);
61 virtual bool DoXor(const wxRegion& region);
62
63private:
64 DECLARE_DYNAMIC_CLASS(wxRegion);
b5dbe15d 65 friend class WXDLLIMPEXP_FWD_CORE wxRegionIterator;
32b8ec41
VZ
66};
67
68
69WX_DECLARE_EXPORTED_LIST(wxRect, wxRegionRectList);
70
53a2db12 71class WXDLLIMPEXP_CORE wxRegionIterator : public wxObject
32b8ec41 72{
32b8ec41
VZ
73public:
74 wxRegionIterator(void);
75 wxRegionIterator(const wxRegion& region);
d3c7fc99 76 virtual ~wxRegionIterator(void);
32b8ec41
VZ
77
78 void Reset(void) { m_currentNode = NULL; }
79 void Reset(const wxRegion& region);
80
32b8ec41 81 operator bool (void) const { return (m_currentNode != NULL); }
32b8ec41
VZ
82
83 bool HaveRects(void) const { return (m_currentNode != NULL); }
84
85 void operator ++ (void);
86 void operator ++ (int);
87
88 wxCoord GetX(void) const;
89 wxCoord GetY(void) const;
90 wxCoord GetW(void) const;
91 wxCoord GetWidth(void) const { return GetW(); }
92 wxCoord GetH(void) const;
93 wxCoord GetHeight(void) const { return GetH(); }
94 wxRect GetRect() const { return wxRect(GetX(), GetY(), GetWidth(), GetHeight()); }
95
96private:
97 wxRegionRectList m_rects;
98 wxRegionRectList::Node *m_currentNode;
8a16d737
VZ
99
100 DECLARE_DYNAMIC_CLASS(wxRegionIterator);
32b8ec41
VZ
101};
102
8a16d737 103#endif // _WX_MGL_REGION_H_