QRegion(3qt)QRegion(3qt)NAMEQRegion - Clip region for a painter
#include <qregion.h>
Public Members
enum RegionType { Rectangle, Ellipse }
QRegion ()
QRegion ( int x, int y, int w, int h, RegionType =
Rectangle )
QRegion ( const QRect &, RegionType = Rectangle )
QRegion ( const QPointArray &, bool winding=FALSE )
QRegion ( const QRegion & )
QRegion ( const QBitmap & )
~QRegion ()
QRegion& operator= ( const QRegion & )
bool isNull () const
bool isEmpty () const
bool contains ( const QPoint & p ) const
bool contains ( const QRect & r ) const
void translate ( int dx, int dy )
QRegion unite ( const QRegion & ) const
QRegion intersect ( const QRegion & ) const
QRegion subtract ( const QRegion & ) const
QRegion eor ( const QRegion & ) const
QRect boundingRect () const
QArray<QRect> rects () const
void setRects ( const QRect *, int )
QRegion operator| ( const QRegion & ) const
QRegion operator+ ( const QRegion & ) const
QRegion operator& ( const QRegion & ) const
QRegion operator- ( const QRegion & ) const
QRegion operator^ ( const QRegion & ) const
QRegion& operator|= ( const QRegion & )
QRegion& operator+= ( const QRegion & )
QRegion& operator&= ( const QRegion & )
QRegion& operator-= ( const QRegion & )
QRegion& operator^= ( const QRegion & )
bool operator== ( const QRegion & ) const
bool operator!= ( const QRegion & r ) const
RELATED FUNCTION DOCUMENTATION
(Note that these are not member functions.)
QDataStream & operator>> (QDataStream & s, QRegion & r)
QDataStream & operator<< (QDataStream & s, const QRegion &
r)
DESCRIPTION
The QRegion class specifies a clip region for a painter.
QRegion is used with QPainter::setClipRegion() to limit
the paint area to what needs to be painted. There is also
a QWidget::repaint() that takes a QRegion parameter.
Trolltech AS 13 June 2001 1
QRegion(3qt)QRegion(3qt)QRegion is the best tool for reducing flicker.
A region can be created from a rectangle, an ellipse, a
polygon or a bitmap. Complex regions may be created by
combining simple regions, using unite(), intersect(),
subtract() or eor() (exclusive or). Use translate() to
move a region.
You can test if a region isNull(), isEmpty() or if it
contains() a QPoint or QRect. The bounding rectangle is
given by boundingRect().
The function rects() gives a decomposition of the region
into rectangles.
Example of using complex regions:
void MyWidget::paintEvent( QPaintEvent * )
{
QPainter p; // our painter
QRegion r1( QRect(100,100,200,80), // r1 = elliptic region
QRegion::Ellipse );
QRegion r2( QRect(100,120,90,30) ); // r2 = rectangular region
QRegion r3 = r1.intersect( r2 ); // r3 = intersection
p.begin( this ); // start painting widget
p.setClipRegion( r3 ); // set clip region
... // paint clipped graphics
p.end(); // painting done
}
QRegion is an implicitely shared class.
Due to window system limitations, the width and height of
a region is limited to 65535 on Unix/X11.
See also QPainter::setClipRegion() and
QPainter::setClipRect().
Member Type Documentation
QRegion::RegionType
Determines the shape of the region to be created.
Rectangle - the region covers the entire rectangle
Ellipse - the region is an ellipse inside the rectangle
MEMBER FUNCTION DOCUMENTATIONQRegion::QRegion ()
Constructs a null region.
See also isNull().
QRegion::QRegion ( const QBitmap & bm )
Constructs a region from the bitmap bm.
Trolltech AS 13 June 2001 2
QRegion(3qt)QRegion(3qt)
The resulting region consists of the pixels in bm that are
color1, as if each pixel was a 1 by 1 rectangle.
This constructor may create complex regions that will slow
down painting when used. Note that drawing masked pixmaps
can be done much faster using QPixmap::setMask().
QRegion::QRegion ( const QPointArray & a, bool winding=FALSE )
Constructs a polygon region from the point array a.
If winding is TRUE, the polygon region is filled using the
winding algorithm, otherwise the default even-odd fill
algorithm is used.
This constructor may create complex regions that will slow
down painting when used.
QRegion::QRegion ( const QRegion & r )
Constructs a new region which is equal to r.
QRegion::QRegion ( int x, int y, int w, int h, RegionType t =
Rectangle )
Constructs a rectangular or elliptic region.
If t is Rectangle, the region is the filled rectangle (x,
y, w, h). If t is Ellipse, the region is the filled
ellipse ellipse with center at (x + w / 2, y + h / 2) and
size (w ,h ).
QRegion::~QRegion ()
Destructs the region.
QRect QRegion::boundingRect () const
Returns the bounding rectangle of this region. An empty
region gives a rectangle that is QRect::isNull().
bool QRegion::contains ( const QPoint & p ) const
Returns TRUE if the region contains the point p, or FALSE
if p is outside the region.
bool QRegion::contains ( const QRect & r ) const
Returns TRUE if the region overlaps the rectangle r, or
FALSE if r is completely outside the region.
QRegion QRegion::eor ( const QRegion & r ) const
Returns a region which is the exclusive or (XOR) of this
region and r.
[Image Omitted]
The figure shows the exclusive or of two elliptical
regions.
Trolltech AS 13 June 2001 3
QRegion(3qt)QRegion(3qt)QRegion QRegion::intersect ( const QRegion & r ) const
Returns a region which is the intersection of this region
and r.
[Image Omitted]
The figure shows the intersection of two elliptical
regions.
bool QRegion::isEmpty () const
Returns TRUE if the region is empty, or FALSE if it is
non-empty. An empty region is a region that contains no
points.
Example:
QRegion r1( 10, 10, 20, 20 );
QRegion r2( 40, 40, 20, 20 );
QRegion r3;
r1.isNull(); // FALSE
r1.isEmpty(); // FALSE
r3.isNull(); // TRUE
r3.isEmpty(); // TRUE
r3 = r1.intersect( r2 ); // r3 = intersection of r1 and r2
r3.isNull(); // FALSE
r3.isEmpty(); // TRUE
r3 = r1.unite( r2 ); // r3 = union of r1 and r2
r3.isNull(); // FALSE
r3.isEmpty(); // FALSE
See also isNull().
bool QRegion::isNull () const
Returns TRUE if the region is a null region, otherwise
FALSE.
A null region is a region that has not been initialized. A
null region is always empty.
See also isEmpty().
bool QRegion::operator!= ( const QRegion & r ) const
Returns TRUE if the region is different from r, or FALSE
if the regions are equal.
QRegion QRegion::operator& ( const QRegion & r ) const
r1&r2 is equivalent to r1.intersect(r2)
See also intersect().
QRegion& QRegion::operator&= ( const QRegion & r )
r1&=r2 is equivalent to r1=r1.intersect(r2)
See also intersect().
Trolltech AS 13 June 2001 4
QRegion(3qt)QRegion(3qt)QRegion QRegion::operator+ ( const QRegion & r ) const
r1+r2 is equivalent to r1.unite(r2)
See also unite() and operator|().
QRegion& QRegion::operator+= ( const QRegion & r )
r1+=r2 is equivalent to r1=r1.unite(r2)
See also intersect().
QRegion QRegion::operator- ( const QRegion & r ) const
r1-r2 is equivalent to r1.subtract(r2)
See also subtract().
QRegion& QRegion::operator-= ( const QRegion & r )
r1-=r2 is equivalent to r1=r1.subtract(r2)
See also subtract().
QRegion & QRegion::operator= ( const QRegion & r )
Assigns r to this region and returns a reference to the
region.
bool QRegion::operator== ( const QRegion & r ) const
Returns TRUE if the region is equal to r, or FALSE if the
regions are different.
QRegion QRegion::operator^ ( const QRegion & r ) const
r1^r2 is equivalent to r1.eor(r2)
See also eor().
QRegion& QRegion::operator^= ( const QRegion & r )
r1^=r2 is equivalent to r1=r1.eor(r2)
See also eor().
QRegion QRegion::operator| ( const QRegion & r ) const
r1|r2 is equivalent to r1.unite(r2)
See also unite() and operator+().
QRegion& QRegion::operator|= ( const QRegion & r )
r1|=r2 is equivalent to r1=r1.unite(r2)
See also unite().
QArray<QRect> QRegion::rects () const
Returns an array of non-overlapping rectangles that make
up the region.
The union of all the rectangles is equal to the original
region.
Trolltech AS 13 June 2001 5
QRegion(3qt)QRegion(3qt)void QRegion::setRects ( const QRect * rects, int num )
Sets the region to be the given set of rectangles. The
rectangles must be optimal Y-X sorted bands as follows:
The rectangles must not intersect
All rectangles with a given top coordinate must have the
same height.
No two rectangles may abut horizontally (they should be
combined into a single wider rectangle in that case).
The rectangles must be sorted ascendingly by Y as the
major sort key and X as the minor sort key.
QRegion QRegion::subtract ( const QRegion & r ) const
Returns a region which is r subtracted from this region.
[Image Omitted]
The figure shows the result when the ellipse on the right
is subtracted from the ellipse on the left. (left-right ).
void QRegion::translate ( int dx, int dy )
Translates (moves) the region dx along the X axis and dy
along the Y axis.
QRegion QRegion::unite ( const QRegion & r ) const
Returns a region which is the union of this region and r.
[Image Omitted]
The figure shows the union of two elliptical regions.
RELATED FUNCTION DOCUMENTATIONQDataStream & operator>> (QDataStream & s, QRegion & r)
Reads a region from the stream s into r and returns a
reference to the stream.
See also Format of the QDataStream operators
QDataStream & operator<< (QDataStream & s, const QRegion & r)
Writes the region r to the stream s and returns a
reference to the stream.
See also Format of the QDataStream operators
SEE ALSO
http://doc.trolltech.com/qregion.html
http://www.trolltech.com/faq/tech.html
COPYRIGHT
Copyright 1992-2001 Trolltech AS,
http://www.trolltech.com. See the license file included
Trolltech AS 13 June 2001 6
QRegion(3qt)QRegion(3qt)
in the distribution for a complete license statement.
AUTHOR
Generated automatically from the source code.
BUGS
If you find a bug in Qt, please report it as described in
http://doc.trolltech.com/bughowto.html. Good bug reports
make our job much simpler. Thank you.
In case of content or formattting problems with this
manual page, please report them to qt-bugs@trolltech.com.
Please include the name of the manual page (qregion.3qt)
and the Qt version (2.3.1).
Trolltech AS 13 June 2001 7