1///////////////////////////////////////////////////////////////////////////// 2// Name: wx/os2/region.h 3// Purpose: wxRegion class 4// Author: David Webster 5// Modified by: 6// Created: 10/15/99 7// RCS-ID: $Id: region.h 43288 2006-11-10 20:35:39Z ABX $ 8// Copyright: (c) David Webster 9// Licence: wxWindows licence 10///////////////////////////////////////////////////////////////////////////// 11 12#ifndef _WX_OS2_REGION_H_ 13#define _WX_OS2_REGION_H_ 14 15#include "wx/list.h" 16#include "wx/os2/private.h" 17 18class WXDLLEXPORT wxRegion : public wxRegionWithCombine 19{ 20public: 21 wxRegion( wxCoord x 22 ,wxCoord y 23 ,wxCoord vWidth 24 ,wxCoord vHeight 25 ); 26 wxRegion( const wxPoint& rTopLeft 27 ,const wxPoint& rBottomRight 28 ); 29 wxRegion(const wxRect& rRect); 30 wxRegion(WXHRGN hRegion, WXHDC hPS); // Hangs on to this region 31 wxRegion(size_t n, const wxPoint *points, int fillStyle = wxODDEVEN_RULE ); 32 wxRegion( const wxBitmap& bmp) 33 { 34 Union(bmp); 35 } 36 wxRegion( const wxBitmap& bmp, 37 const wxColour& transColour, int tolerance = 0) 38 { 39 Union(bmp, transColour, tolerance); 40 } 41 42 wxRegion(); 43 virtual ~wxRegion(); 44 45 // 46 // Modify region 47 // 48 49 // 50 // Clear current region 51 // 52 virtual void Clear(); 53 54 // 55 // Is region empty? 56 // 57 virtual bool IsEmpty() const; 58 59 // 60 // Get internal region handle 61 // 62 WXHRGN GetHRGN() const; 63 64 void SetPS(HPS hPS); 65 66protected: 67 virtual wxObjectRefData* CreateData(void) const; 68 virtual wxObjectRefData* CloneData(const wxObjectRefData* pData) const; 69 70 virtual bool DoIsEqual(const wxRegion& region) const; 71 virtual bool DoGetBox(wxCoord& x, wxCoord& y, wxCoord& w, wxCoord& h) const; 72 virtual wxRegionContain DoContainsPoint(wxCoord x, wxCoord y) const; 73 virtual wxRegionContain DoContainsRect(const wxRect& rect) const; 74 75 virtual bool DoOffset(wxCoord x, wxCoord y); 76 virtual bool DoCombine(const wxRegion& region, wxRegionOp op); 77 78 friend class WXDLLEXPORT wxRegionIterator; 79 DECLARE_DYNAMIC_CLASS(wxRegion); 80 81}; // end of CLASS wxRegion 82 83class WXDLLEXPORT wxRegionIterator : public wxObject 84{ 85DECLARE_DYNAMIC_CLASS(wxRegionIterator); 86public: 87 wxRegionIterator(); 88 wxRegionIterator(const wxRegion& rRegion); 89 virtual ~wxRegionIterator(); 90 91 void Reset(void) { m_lCurrent = 0; } 92 void Reset(const wxRegion& rRegion); 93 94 operator bool (void) const { return m_lCurrent < m_lNumRects; } 95 bool HaveRects(void) const { return m_lCurrent < m_lNumRects; } 96 97 void operator ++ (void); 98 void operator ++ (int); 99 100 wxCoord GetX(void) const; 101 wxCoord GetY(void) const; 102 wxCoord GetW(void) const; 103 wxCoord GetWidth(void) const { return GetW(); } 104 wxCoord GetH(void) const; 105 wxCoord GetHeight(void) const { return GetH(); } 106 wxRect GetRect(void) const { return wxRect(GetX(), GetY(), GetWidth(), GetHeight()); } 107 108private: 109 long m_lCurrent; 110 long m_lNumRects; 111 wxRegion m_vRegion; 112 wxRect* m_pRects; 113}; // end of wxRegionIterator 114 115#endif // _WX_OS2_REGION_H_ 116