8a16d7370e
1. added wxRegionBase class and derive all wxRegions from it 2. also added wxRegionWithCombine for the ports providing Combine() method (MSW, OS2 and Mac) to reduce code duplication further 3. made sure region comparison works the same way in all ports (except those not implementing it) and added IsEqual() method git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41429 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
98 lines
2.7 KiB
C++
98 lines
2.7 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: region.h
|
|
// Purpose: wxRegion class
|
|
// Author: Stefan Csomor
|
|
// Modified by:
|
|
// Created: 1998-01-01
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) Stefan Csomor
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_MAC_CARBON_REGION_H_
|
|
#define _WX_MAC_CARBON_REGION_H_
|
|
|
|
#include "wx/list.h"
|
|
|
|
class WXDLLEXPORT wxRegion : public wxRegionWithCombine
|
|
{
|
|
public:
|
|
wxRegion(long x, long y, long w, long h);
|
|
wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight);
|
|
wxRegion(const wxRect& rect);
|
|
wxRegion( WXHRGN hRegion );
|
|
wxRegion(size_t n, const wxPoint *points, int fillStyle = wxODDEVEN_RULE );
|
|
wxRegion();
|
|
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;
|
|
|
|
// Internal
|
|
const WXHRGN GetWXHRGN() const ;
|
|
|
|
protected:
|
|
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 DoCombine(const wxRegion& region, wxRegionOp op);
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS(wxRegion)
|
|
friend class WXDLLEXPORT wxRegionIterator;
|
|
};
|
|
|
|
class WXDLLEXPORT wxRegionIterator : public wxObject
|
|
{
|
|
public:
|
|
wxRegionIterator();
|
|
wxRegionIterator(const wxRegion& region);
|
|
wxRegionIterator(const wxRegionIterator& iterator);
|
|
virtual ~wxRegionIterator();
|
|
|
|
wxRegionIterator& operator=(const wxRegionIterator& iterator);
|
|
|
|
void Reset() { m_current = 0; }
|
|
void Reset(const wxRegion& region);
|
|
|
|
operator bool () const { return m_current < m_numRects; }
|
|
bool HaveRects() const { return m_current < m_numRects; }
|
|
|
|
wxRegionIterator& operator++();
|
|
wxRegionIterator operator++(int);
|
|
|
|
long GetX() const;
|
|
long GetY() const;
|
|
long GetW() const;
|
|
long GetWidth() const { return GetW(); }
|
|
long GetH() const;
|
|
long GetHeight() const { return GetH(); }
|
|
wxRect GetRect() const { return wxRect(GetX(), GetY(), GetWidth(), GetHeight()); }
|
|
|
|
private:
|
|
void SetRects(long numRects, wxRect *rects);
|
|
|
|
long m_current;
|
|
long m_numRects;
|
|
wxRegion m_region;
|
|
wxRect* m_rects;
|
|
|
|
DECLARE_DYNAMIC_CLASS(wxRegionIterator)
|
|
};
|
|
|
|
#endif // _WX_MAC_CARBON_REGION_H_
|