+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name: region.tex
+%% Purpose: wxRegion documentation
+%% Author: wxTeam
+%% Created:
+%% RCS-ID: $Id$
+%% Copyright: (c) wxTeam
+%% License: wxWindows license
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
\section{\class{wxRegion}}\label{wxregion}
-A wxRegion represents a simple or complex region on a device context or window. It uses
-reference counting, so copying and assignment operations are fast.
+A wxRegion represents a simple or complex region on a device context or window.
+
+This class uses \helpref{reference counting and copy-on-write}{trefcount}
+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.
\wxheading{Derived from}
<wx/region.h>
+\wxheading{Library}
+
+\helpref{wxCore}{librarieslist}
+
\wxheading{See also}
\helpref{wxRegionIterator}{wxregioniterator}
\latexignore{\rtfignore{\wxheading{Members}}}
+
\membersection{wxRegion::wxRegion}\label{wxregionctor}
\func{}{wxRegion}{\void}
\func{}{wxRegion}{\param{const wxRegion\&}{ region}}
-Constructs a region by copying another region.
+Copy constructor, uses \helpref{reference counting}{trefcount}.
\func{}{wxRegion}{\param{size\_t}{ n}, \param{const wxPoint }{*points}, \param{int }{fillStyle = wxWINDING\_RULE}}
provided array. {\it fillStyle} parameter may have values
{\tt wxWINDING\_RULE} or {\tt wxODDEVEN\_RULE}.
-{\bf NB:} This constructor is only implemented for Win32 and GTK+ wxWidgets ports.
-
\func{}{wxRegion}{\param{const wxBitmap\&}{ bmp}}
\func{}{wxRegion}{\param{const wxBitmap\&}{ bmp},
\param{const wxColour\&}{ transColour},
- \param{int}{ tolerance = 0}}
+ \param{int}{ tolerance = 0}}
Constructs a region using the non-transparent pixels of a bitmap. See
\helpref{Union}{wxregionunion} for more details.
+
\membersection{wxRegion::\destruct{wxRegion}}\label{wxregiondtor}
\func{}{\destruct{wxRegion}}{\void}
Destructor.
+See \helpref{reference-counted object destruction}{refcountdestruct} for more info.
+
\membersection{wxRegion::Clear}\label{wxregionclear}
Clears the current region.
+
\membersection{wxRegion::Contains}\label{wxregioncontains}
\constfunc{wxRegionContain}{Contains}{\param{long\& }{x}, \param{long\& }{y}}
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.
+
\membersection{wxRegion::ConvertToBitmap}\label{wxregionconverttobitmap}
\constfunc{wxBitmap}{ConvertToBitmap}{}
Convert the region to a black and white bitmap with the white pixels
being inside the region.
+
\membersection{wxRegion::GetBox}\label{wxregiongetbox}
\constfunc{void}{GetBox}{\param{wxCoord\& }{x}, \param{wxCoord\& }{y}, \param{wxCoord\& }{width}, \param{wxCoord\& }{height}}
Returns the outer bounds of the region.
+
\membersection{wxRegion::Intersect}\label{wxregionintersect}
\func{bool}{Intersect}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}}
Creates the intersection of the two regions, that is, the parts which are in both regions. The result
is stored in this region.
+
\membersection{wxRegion::IsEmpty}\label{wxregionisempty}
\constfunc{bool}{IsEmpty}{\void}
Returns {\tt true} if the region is empty, {\tt false} otherwise.
+
+\membersection{wxRegion::IsEqual}\label{wxregionisequal}
+
+\constfunc{bool}{IsEqual}{\param{const wxRegion\& }{region}}
+
+Returns {\tt true} if the region is equal to, i.e. covers the same area as,
+another one. Note that if both this region and \arg{region} are invalid, they
+are considered to be equal.
+
+
\membersection{wxRegion::Subtract}\label{wxregionsubtract}
\func{bool}{Subtract}{\param{const wxRect\&}{ rect}}
This operation combines the parts of 'this' region that are not part of the second region.
The result is stored in this region.
+
\membersection{wxRegion::Offset}\label{wxregionoffset}
\func{bool}{Offset}{\param{wxCoord}{ x}, \param{wxCoord}{ y}}
+\func{bool}{Offset}{\param{const wxPoint\& }{ pt}}
+
Moves the region by the specified offsets in horizontal and vertical
directions.
{\tt true} if successful, {\tt false} otherwise (the region is unchanged then).
+
\membersection{wxRegion::Union}\label{wxregionunion}
\func{bool}{Union}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}}
\func{bool}{Union}{\param{const wxBitmap\&}{ bmp},
\param{const wxColour\&}{ transColour},
- \param{int}{ tolerance = 0}}
+ \param{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
This operation creates a region that combines all of this region and the second region.
The result is stored in this region.
+
\membersection{wxRegion::Xor}\label{wxregionxor}
\func{bool}{Xor}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}}
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.
+
\membersection{wxRegion::operator $=$}\label{wxregionassign}
\func{void}{operator $=$}{\param{const wxRegion\&}{ region}}
-Copies {\it region} by reference counting.
+Assignment operator, using \helpref{reference counting}{trefcount}.
+
+
\section{\class{wxRegionIterator}}\label{wxregioniterator}
<wx/region.h>
+\wxheading{Library}
+
+\helpref{wxCore}{librarieslist}
+
\wxheading{See also}
\helpref{wxPaintEvent}{wxpaintevent}
\latexignore{\rtfignore{\wxheading{Members}}}
+
\membersection{wxRegionIterator::wxRegionIterator}\label{wxregioniteratorctor}
\func{}{wxRegionIterator}{\void}
Creates an iterator object given a region.
+
\membersection{wxRegionIterator::GetX}\label{wxregioniteratorgetx}
\constfunc{wxCoord}{GetX}{\void}
Returns the x value for the current region.
+
\membersection{wxRegionIterator::GetY}\label{wxregioniteratorgety}
\constfunc{wxCoord}{GetY}{\void}
Returns the y value for the current region.
+
\membersection{wxRegionIterator::GetW}\label{wxregioniteratorgetw}
\constfunc{wxCoord}{GetW}{\void}
An alias for GetWidth.
+
\membersection{wxRegionIterator::GetHeight}\label{wxregioniteratorgetheight}
\constfunc{wxCoord}{GetHeight}{\void}
Returns the height value for the current region.
+
\membersection{wxRegionIterator::GetH}\label{wxregioniteratorgeth}
\constfunc{wxCoord}{GetH}{\void}
An alias for GetHeight.
+
\membersection{wxRegionIterator::GetRect}\label{wxregioniteratorgetrect}
\constfunc{wxRect}{GetRect}{\void}
Returns the current rectangle.
+
\membersection{wxRegionIterator::GetWidth}\label{wxregioniteratorgetwidth}
\constfunc{wxCoord}{GetWidth}{\void}
Returns the width value for the current region.
+
\membersection{wxRegionIterator::HaveRects}\label{wxregioniteratorhaverects}
\constfunc{bool}{HaveRects}{\void}
Returns {\tt true} if there are still some rectangles; otherwise returns {\tt false}.
+
\membersection{wxRegionIterator::Reset}\label{wxregioniteratorreset}
\func{void}{Reset}{\void}
Resets the iterator to the given region.
+
\membersection{wxRegionIterator::operator $++$}\label{wxregioniteratorinc}
\func{void}{operator $++$}{\void}
\pythonnote{A wxPython alias for this operator is called {\tt Next}.}
+
\membersection{wxRegionIterator::operator bool}\label{wxregioniteratorbool}
\constfunc{}{operator bool}{\void}