1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: wx/msw/region.h 3 // Purpose: wxRegion class 4 // Author: Julian Smart 5 // Modified by: 6 // Created: 01/02/97 7 // RCS-ID: $Id: region.h 59602 2009-03-18 10:07:58Z VZ $ 8 // Copyright: (c) 1997-2002 wxWidgets team 9 // Licence: wxWindows licence 10 ///////////////////////////////////////////////////////////////////////////// 11 12 #ifndef _WX_MSW_REGION_H_ 13 #define _WX_MSW_REGION_H_ 14 15 class WXDLLEXPORT wxRegion : public wxRegionWithCombine 16 { 17 public: 18 wxRegion(); 19 wxRegion(wxCoord x, wxCoord y, wxCoord w, wxCoord h); 20 wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight); 21 wxRegion(const wxRect& rect); 22 wxRegion(WXHRGN hRegion); // Hangs on to this region 23 wxRegion(size_t n, const wxPoint *points, int fillStyle = wxODDEVEN_RULE ); 24 #if wxUSE_IMAGE wxRegion(const wxBitmap & bmp)25 wxRegion( const wxBitmap& bmp) 26 { 27 Union(bmp); 28 } 29 wxRegion( const wxBitmap& bmp, 30 const wxColour& transColour, int tolerance = 0) 31 { 32 Union(bmp, transColour, tolerance); 33 } 34 #endif // wxUSE_IMAGE 35 36 virtual ~wxRegion(); 37 38 // wxRegionBase methods 39 virtual void Clear(); 40 virtual bool IsEmpty() const; 41 42 // Get internal region handle 43 WXHRGN GetHRGN() const; 44 45 protected: 46 virtual wxObjectRefData *CreateRefData() const; 47 virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const; 48 49 virtual bool DoIsEqual(const wxRegion& region) const; 50 virtual bool DoGetBox(wxCoord& x, wxCoord& y, wxCoord& w, wxCoord& h) const; 51 virtual wxRegionContain DoContainsPoint(wxCoord x, wxCoord y) const; 52 virtual wxRegionContain DoContainsRect(const wxRect& rect) const; 53 54 virtual bool DoOffset(wxCoord x, wxCoord y); 55 virtual bool DoCombine(const wxRegion& region, wxRegionOp op); 56 57 friend class WXDLLIMPEXP_FWD_CORE wxRegionIterator; 58 59 DECLARE_DYNAMIC_CLASS(wxRegion) 60 }; 61 62 class WXDLLEXPORT wxRegionIterator : public wxObject 63 { 64 public: wxRegionIterator()65 wxRegionIterator() { Init(); } 66 wxRegionIterator(const wxRegion& region); wxRegionIterator(const wxRegionIterator & ri)67 wxRegionIterator(const wxRegionIterator& ri) : wxObject(ri) { Init(); *this = ri; } 68 69 wxRegionIterator& operator=(const wxRegionIterator& ri); 70 71 virtual ~wxRegionIterator(); 72 Reset()73 void Reset() { m_current = 0; } 74 void Reset(const wxRegion& region); 75 HaveRects()76 bool HaveRects() const { return (m_current < m_numRects); } 77 78 operator bool () const { return HaveRects(); } 79 80 wxRegionIterator& operator++(); 81 wxRegionIterator operator++(int); 82 83 wxCoord GetX() const; 84 wxCoord GetY() const; 85 wxCoord GetW() const; GetWidth()86 wxCoord GetWidth() const { return GetW(); } 87 wxCoord GetH() const; GetHeight()88 wxCoord GetHeight() const { return GetH(); } 89 GetRect()90 wxRect GetRect() const { return wxRect(GetX(), GetY(), GetW(), GetH()); } 91 92 private: 93 // common part of all ctors 94 void Init(); 95 96 long m_current; 97 long m_numRects; 98 wxRegion m_region; 99 wxRect* m_rects; 100 101 DECLARE_DYNAMIC_CLASS(wxRegionIterator) 102 }; 103 104 #endif // _WX_MSW_REGION_H_ 105