Version: 3.2.5

#include <wx/region.h>

+ Inheritance diagram for wxRegion:

Detailed Description

A wxRegion represents a simple or complex region on a device context or window.

This class uses reference counting and copy-on-write internally so that assignments between two instances of this class are very cheap. You can therefore use actual objects instead of pointers without efficiency problems. If an instance of this class is changed it will create its own data internally so that other instances, which previously shared the data using the reference counting, are not affected.

Predefined objects/pointers:

Library:  wxCore
Category:  Data Structures, Graphics Device Interface (GDI)
See also
wxRegionIterator

Public Member Functions

 wxRegion ()
 Default constructor. More...
 
 wxRegion (wxCoord x, wxCoord y, wxCoord width, wxCoord height)
 Constructs a rectangular region with the given position and size. More...
 
 wxRegion (const wxPoint &topLeft, const wxPoint &bottomRight)
 Constructs a rectangular region from the top left point and the bottom right point. More...
 
 wxRegion (const wxRect &rect)
 Constructs a rectangular region a wxRect object. More...
 
 wxRegion (const wxRegion &region)
 Copy constructor, uses Reference Counting. More...
 
 wxRegion (size_t n, const wxPoint *points, wxPolygonFillMode fillStyle=wxODDEVEN_RULE)
 Constructs a region corresponding to the polygon made of n points in the provided array. More...
 
 wxRegion (const wxBitmap &bmp)
 Constructs a region using a bitmap. More...
 
 wxRegion (const wxBitmap &bmp, const wxColour &transColour, int tolerance=0)
 Constructs a region using the non-transparent pixels of a bitmap. More...
 
virtual ~wxRegion ()
 Destructor. More...
 
virtual void Clear ()
 Clears the current region. More...
 
wxRegionContain Contains (wxCoord x, wxCoord y) const
 Returns a value indicating whether the given point is contained within the region. More...
 
wxRegionContain Contains (const wxPoint &pt) const
 Returns a value indicating whether the given point is contained within the region. More...
 
wxRegionContain Contains (wxCoord x, wxCoord y, wxCoord width, wxCoord height) const
 Returns a value indicating whether the given rectangle is contained within the region. More...
 
wxRegionContain Contains (const wxRect &rect) const
 Returns a value indicating whether the given rectangle is contained within the region. More...
 
wxBitmap ConvertToBitmap () const
 Convert the region to a black and white bitmap with the white pixels being inside the region. More...
 
bool Intersect (wxCoord x, wxCoord y, wxCoord width, wxCoord height)
 Finds the intersection of this region and another, rectangular region, specified using position and size. More...
 
bool Intersect (const wxRect &rect)
 Finds the intersection of this region and another, rectangular region. More...
 
bool Intersect (const wxRegion &region)
 Finds the intersection of this region and another region. More...
 
virtual bool IsEmpty () const
 Returns true if the region is empty, false otherwise. More...
 
bool IsEqual (const wxRegion &region) const
 Returns true if the region is equal to, i.e. covers the same area as, another one. More...
 
bool Subtract (const wxRect &rect)
 Subtracts a rectangular region from this region. More...
 
bool Subtract (const wxRegion &region)
 Subtracts a region from this region. More...
 
bool Union (wxCoord x, wxCoord y, wxCoord width, wxCoord height)
 Finds the union of this region and another, rectangular region, specified using position and size. More...
 
bool Union (const wxRect &rect)
 Finds the union of this region and another, rectangular region. More...
 
bool Union (const wxRegion &region)
 Finds the union of this region and another region. More...
 
bool Union (const wxBitmap &bmp)
 Finds the union of this region and the non-transparent pixels of a bitmap. More...
 
bool Union (const wxBitmap &bmp, const wxColour &transColour, int tolerance=0)
 Finds the union of this region and the non-transparent pixels of a bitmap. More...
 
bool Xor (wxCoord x, wxCoord y, wxCoord width, wxCoord height)
 Finds the Xor of this region and another, rectangular region, specified using position and size. More...
 
bool Xor (const wxRect &rect)
 Finds the Xor of this region and another, rectangular region. More...
 
bool Xor (const wxRegion &region)
 Finds the Xor of this region and another region. More...
 
wxRegionoperator= (const wxRegion &region)
 Assignment operator, using Reference Counting. More...
 
void GetBox (wxCoord &x, wxCoord &y, wxCoord &width, wxCoord &height) const
 Returns the outer bounds of the region. More...
 
wxRect GetBox () const
 Returns the outer bounds of the region. More...
 
bool Offset (wxCoord x, wxCoord y)
 Moves the region by the specified offsets in horizontal and vertical directions. More...
 
bool Offset (const wxPoint &pt)
 Moves the region by the specified offsets in horizontal and vertical directions. More...
 
- Public Member Functions inherited from wxGDIObject
 wxGDIObject ()
 Default constructor. More...
 
- Public Member Functions inherited from wxObject
 wxObject ()
 Default ctor; initializes to NULL the internal reference data. More...
 
 wxObject (const wxObject &other)
 Copy ctor. More...
 
virtual ~wxObject ()
 Destructor. More...
 
virtual wxClassInfoGetClassInfo () const
 This virtual function is redefined for every class that requires run-time type information, when using the wxDECLARE_CLASS macro (or similar). More...
 
wxObjectRefDataGetRefData () const
 Returns the wxObject::m_refData pointer, i.e. the data referenced by this object. More...
 
bool IsKindOf (const wxClassInfo *info) const
 Determines whether this class is a subclass of (or the same class as) the given class. More...
 
bool IsSameAs (const wxObject &obj) const
 Returns true if this object has the same data pointer as obj. More...
 
void Ref (const wxObject &clone)
 Makes this object refer to the data in clone. More...
 
void SetRefData (wxObjectRefData *data)
 Sets the wxObject::m_refData pointer. More...
 
void UnRef ()
 Decrements the reference count in the associated data, and if it is zero, deletes the data. More...
 
void UnShare ()
 This is the same of AllocExclusive() but this method is public. More...
 
void operator delete (void *buf)
 The delete operator is defined for debugging versions of the library only, when the identifier __WXDEBUG__ is defined. More...
 
void * operator new (size_t size, const wxString &filename=NULL, int lineNum=0)
 The new operator is defined for debugging versions of the library only, when the identifier __WXDEBUG__ is defined. More...
 

Additional Inherited Members

- Protected Member Functions inherited from wxObject
void AllocExclusive ()
 Ensure that this object's data is not shared with any other object. More...
 
virtual wxObjectRefDataCreateRefData () const
 Creates a new instance of the wxObjectRefData-derived class specific to this object and returns it. More...
 
virtual wxObjectRefDataCloneRefData (const wxObjectRefData *data) const
 Creates a new instance of the wxObjectRefData-derived class specific to this object and initializes it copying data. More...
 
- Protected Attributes inherited from wxObject
wxObjectRefDatam_refData
 Pointer to an object which is the object's reference-counted data. More...
 

Constructor & Destructor Documentation

◆ wxRegion() [1/8]

wxRegion::wxRegion ( )

Default constructor.

This constructor creates an invalid, or null, object, i.e. calling IsOk() on it returns false and IsEmpty() returns true.

◆ wxRegion() [2/8]

wxRegion::wxRegion ( wxCoord  x,
wxCoord  y,
wxCoord  width,
wxCoord  height 
)

Constructs a rectangular region with the given position and size.

◆ wxRegion() [3/8]

wxRegion::wxRegion ( const wxPoint topLeft,
const wxPoint bottomRight 
)

Constructs a rectangular region from the top left point and the bottom right point.

◆ wxRegion() [4/8]

wxRegion::wxRegion ( const wxRect rect)

Constructs a rectangular region a wxRect object.

◆ wxRegion() [5/8]

wxRegion::wxRegion ( const wxRegion region)

Copy constructor, uses Reference Counting.

◆ wxRegion() [6/8]

wxRegion::wxRegion ( size_t  n,
const wxPoint points,
wxPolygonFillMode  fillStyle = wxODDEVEN_RULE 
)

Constructs a region corresponding to the polygon made of n points in the provided array.

fillStyle parameter may have values wxWINDING_RULE or wxODDEVEN_RULE.

◆ wxRegion() [7/8]

wxRegion::wxRegion ( const wxBitmap bmp)

Constructs a region using a bitmap.

See Union() for more details.

◆ wxRegion() [8/8]

wxRegion::wxRegion ( const wxBitmap bmp,
const wxColour transColour,
int  tolerance = 0 
)

Constructs a region using the non-transparent pixels of a bitmap.

See Union() for more details.

◆ ~wxRegion()

virtual wxRegion::~wxRegion ( )
virtual

Destructor.

See reference-counted object destruction for more info.

Member Function Documentation

◆ Clear()

virtual void wxRegion::Clear ( )
virtual

Clears the current region.

The object becomes invalid, or null, after being cleared.

◆ Contains() [1/4]

wxRegionContain wxRegion::Contains ( const wxPoint pt) const

Returns a value indicating whether the given point is contained within the region.

This method always returns wxOutRegion for an invalid region but may, nevertheless, be safely called in this case.

Returns
The return value is one of wxOutRegion and wxInRegion.

◆ Contains() [2/4]

wxRegionContain wxRegion::Contains ( const wxRect rect) const

Returns a value indicating whether the given rectangle is contained within the region.

This method always returns wxOutRegion for an invalid region but may, nevertheless, be safely called in this case.

Returns
One of wxOutRegion, wxPartRegion or wxInRegion.
Note
On Windows, only wxOutRegion and wxInRegion are returned; a value wxInRegion then indicates that all or some part of the region is contained in this region.

◆ Contains() [3/4]

wxRegionContain wxRegion::Contains ( wxCoord  x,
wxCoord  y 
) const

Returns a value indicating whether the given point is contained within the region.

This method always returns wxOutRegion for an invalid region but may, nevertheless, be safely called in this case.

Returns
The return value is one of wxOutRegion and wxInRegion.

◆ Contains() [4/4]

wxRegionContain wxRegion::Contains ( wxCoord  x,
wxCoord  y,
wxCoord  width,
wxCoord  height 
) const

Returns a value indicating whether the given rectangle is contained within the region.

This method always returns wxOutRegion for an invalid region but may, nevertheless, be safely called in this case.

Returns
One of wxOutRegion, wxPartRegion or wxInRegion.
Note
On Windows, only wxOutRegion and wxInRegion are returned; a value wxInRegion then indicates that all or some part of the region is contained in this region.

◆ ConvertToBitmap()

wxBitmap wxRegion::ConvertToBitmap ( ) const

Convert the region to a black and white bitmap with the white pixels being inside the region.

This method can't be used for invalid region.

◆ GetBox() [1/2]

wxRect wxRegion::GetBox ( ) const

Returns the outer bounds of the region.

This method returns 0-sized bounding box for invalid regions.

◆ GetBox() [2/2]

void wxRegion::GetBox ( wxCoord x,
wxCoord y,
wxCoord width,
wxCoord height 
) const

Returns the outer bounds of the region.

This method returns 0-sized bounding box for invalid regions.

◆ Intersect() [1/3]

bool wxRegion::Intersect ( const wxRect rect)

Finds the intersection of this region and another, rectangular region.

This method always fails, i.e. returns false, if this region is invalid but may nevertheless be safely used even in this case.

Returns
true if successful, false otherwise.
Remarks
Creates the intersection of the two regions, that is, the parts which are in both regions. The result is stored in this region.

◆ Intersect() [2/3]

bool wxRegion::Intersect ( const wxRegion region)

Finds the intersection of this region and another region.

This method always fails, i.e. returns false, if this region is invalid but may nevertheless be safely used even in this case.

Returns
true if successful, false otherwise.
Remarks
Creates the intersection of the two regions, that is, the parts which are in both regions. The result is stored in this region.

◆ Intersect() [3/3]

bool wxRegion::Intersect ( wxCoord  x,
wxCoord  y,
wxCoord  width,
wxCoord  height 
)

Finds the intersection of this region and another, rectangular region, specified using position and size.

This method always fails, i.e. returns false, if this region is invalid but may nevertheless be safely used even in this case.

Returns
true if successful, false otherwise.
Remarks
Creates the intersection of the two regions, that is, the parts which are in both regions. The result is stored in this region.

◆ IsEmpty()

virtual bool wxRegion::IsEmpty ( ) const
virtual

Returns true if the region is empty, false otherwise.

Always returns true if the region is invalid.

◆ IsEqual()

bool wxRegion::IsEqual ( const wxRegion region) const

Returns true if the region is equal to, i.e. covers the same area as, another one.

If both this region and region are both invalid, they are considered to be equal.

◆ Offset() [1/2]

bool wxRegion::Offset ( const wxPoint pt)

Moves the region by the specified offsets in horizontal and vertical directions.

This method can't be called if the region is invalid as it doesn't make sense to offset it then. Attempts to do it will result in assert failure.

Returns
true if successful, false otherwise (the region is unchanged then).

◆ Offset() [2/2]

bool wxRegion::Offset ( wxCoord  x,
wxCoord  y 
)

Moves the region by the specified offsets in horizontal and vertical directions.

This method can't be called if the region is invalid as it doesn't make sense to offset it then. Attempts to do it will result in assert failure.

Returns
true if successful, false otherwise (the region is unchanged then).

◆ operator=()

wxRegion& wxRegion::operator= ( const wxRegion region)

Assignment operator, using Reference Counting.

◆ Subtract() [1/2]

bool wxRegion::Subtract ( const wxRect rect)

Subtracts a rectangular region from this region.

This method always fails, i.e. returns false, if this region is invalid but may nevertheless be safely used even in this case.

Returns
true if successful, false otherwise.
Remarks
This operation combines the parts of 'this' region that are not part of the second region. The result is stored in this region.

◆ Subtract() [2/2]

bool wxRegion::Subtract ( const wxRegion region)

Subtracts a region from this region.

This method always fails, i.e. returns false, if this region is invalid but may nevertheless be safely used even in this case.

Returns
true if successful, false otherwise.
Remarks
This operation combines the parts of 'this' region that are not part of the second region. The result is stored in this region.

◆ Union() [1/5]

bool wxRegion::Union ( const wxBitmap bmp)

Finds the union of this region and the non-transparent pixels of a bitmap.

The bitmap's mask is used to determine transparency. If the bitmap doesn't have a mask, the bitmap's full dimensions are used.

Returns
true if successful, false otherwise.
Remarks
This operation creates a region that combines all of this region and the second region. The result is stored in this region.

◆ Union() [2/5]

bool wxRegion::Union ( const wxBitmap bmp,
const wxColour transColour,
int  tolerance = 0 
)

Finds the union of this region and the non-transparent pixels of a bitmap.

Colour to be treated as transparent is specified in the transColour argument, along with an optional colour tolerance value.

Returns
true if successful, false otherwise.
Remarks
This operation creates a region that combines all of this region and the second region. The result is stored in this region.

◆ Union() [3/5]

bool wxRegion::Union ( const wxRect rect)

Finds the union of this region and another, rectangular region.

This method can be used even if this region is invalid and has the natural behaviour in this case, i.e. makes this region equal to the given rectangle.

Returns
true if successful, false otherwise.
Remarks
This operation creates a region that combines all of this region and the second region. The result is stored in this region.

◆ Union() [4/5]

bool wxRegion::Union ( const wxRegion region)

Finds the union of this region and another region.

This method can be used even if this region is invalid and has the natural behaviour in this case, i.e. makes this region equal to the given region.

Returns
true if successful, false otherwise.
Remarks
This operation creates a region that combines all of this region and the second region. The result is stored in this region.

◆ Union() [5/5]

bool wxRegion::Union ( wxCoord  x,
wxCoord  y,
wxCoord  width,
wxCoord  height 
)

Finds the union of this region and another, rectangular region, specified using position and size.

This method can be used even if this region is invalid and has the natural behaviour in this case, i.e. makes this region equal to the given rectangle.

Returns
true if successful, false otherwise.
Remarks
This operation creates a region that combines all of this region and the second region. The result is stored in this region.

◆ Xor() [1/3]

bool wxRegion::Xor ( const wxRect rect)

Finds the Xor of this region and another, rectangular region.

This method can be used even if this region is invalid and has the natural behaviour in this case, i.e. makes this region equal to the given rectangle.

Returns
true if successful, false otherwise.
Remarks
This operation creates a region that combines all of this region and the second region, except for any overlapping areas. The result is stored in this region.

◆ Xor() [2/3]

bool wxRegion::Xor ( const wxRegion region)

Finds the Xor of this region and another region.

This method can be used even if this region is invalid and has the natural behaviour in this case, i.e. makes this region equal to the given region.

Returns
true if successful, false otherwise.
Remarks
This operation creates a region that combines all of this region and the second region, except for any overlapping areas. The result is stored in this region.

◆ Xor() [3/3]

bool wxRegion::Xor ( wxCoord  x,
wxCoord  y,
wxCoord  width,
wxCoord  height 
)

Finds the Xor of this region and another, rectangular region, specified using position and size.

This method can be used even if this region is invalid and has the natural behaviour in this case, i.e. makes this region equal to the given rectangle.

Returns
true if successful, false otherwise.
Remarks
This operation creates a region that combines all of this region and the second region, except for any overlapping areas. The result is stored in this region.