You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
389 lines
13 KiB
389 lines
13 KiB
'\" t
|
|
.TH QRegion 3qt "2 February 2007" "Trolltech AS" \" -*- nroff -*-
|
|
.\" Copyright 1992-2007 Trolltech ASA. All rights reserved. See the
|
|
.\" license file included in the distribution for a complete license
|
|
.\" statement.
|
|
.\"
|
|
.ad l
|
|
.nh
|
|
.SH NAME
|
|
QRegion \- Clip region for a painter
|
|
.SH SYNOPSIS
|
|
\fC#include <qregion.h>\fR
|
|
.PP
|
|
.SS "Public Members"
|
|
.in +1c
|
|
.ti -1c
|
|
.BI "enum \fBRegionType\fR { Rectangle, Ellipse }"
|
|
.br
|
|
.ti -1c
|
|
.BI "\fBQRegion\fR ()"
|
|
.br
|
|
.ti -1c
|
|
.BI "\fBQRegion\fR ( int x, int y, int w, int h, RegionType t = Rectangle )"
|
|
.br
|
|
.ti -1c
|
|
.BI "\fBQRegion\fR ( const QRect & r, RegionType t = Rectangle )"
|
|
.br
|
|
.ti -1c
|
|
.BI "\fBQRegion\fR ( const QPointArray & a, bool winding = FALSE )"
|
|
.br
|
|
.ti -1c
|
|
.BI "\fBQRegion\fR ( const QRegion & r )"
|
|
.br
|
|
.ti -1c
|
|
.BI "\fBQRegion\fR ( const QBitmap & bm )"
|
|
.br
|
|
.ti -1c
|
|
.BI "\fB~QRegion\fR ()"
|
|
.br
|
|
.ti -1c
|
|
.BI "QRegion & \fBoperator=\fR ( const QRegion & r )"
|
|
.br
|
|
.ti -1c
|
|
.BI "bool \fBisNull\fR () const"
|
|
.br
|
|
.ti -1c
|
|
.BI "bool \fBisEmpty\fR () const"
|
|
.br
|
|
.ti -1c
|
|
.BI "bool \fBcontains\fR ( const QPoint & p ) const"
|
|
.br
|
|
.ti -1c
|
|
.BI "bool \fBcontains\fR ( const QRect & r ) const"
|
|
.br
|
|
.ti -1c
|
|
.BI "void \fBtranslate\fR ( int dx, int dy )"
|
|
.br
|
|
.ti -1c
|
|
.BI "QRegion \fBunite\fR ( const QRegion & r ) const"
|
|
.br
|
|
.ti -1c
|
|
.BI "QRegion \fBintersect\fR ( const QRegion & r ) const"
|
|
.br
|
|
.ti -1c
|
|
.BI "QRegion \fBsubtract\fR ( const QRegion & r ) const"
|
|
.br
|
|
.ti -1c
|
|
.BI "QRegion \fBeor\fR ( const QRegion & r ) const"
|
|
.br
|
|
.ti -1c
|
|
.BI "QRect \fBboundingRect\fR () const"
|
|
.br
|
|
.ti -1c
|
|
.BI "QMemArray<QRect> \fBrects\fR () const"
|
|
.br
|
|
.ti -1c
|
|
.BI "const QRegion \fBoperator|\fR ( const QRegion & r ) const"
|
|
.br
|
|
.ti -1c
|
|
.BI "const QRegion \fBoperator+\fR ( const QRegion & r ) const"
|
|
.br
|
|
.ti -1c
|
|
.BI "const QRegion \fBoperator&\fR ( const QRegion & r ) const"
|
|
.br
|
|
.ti -1c
|
|
.BI "const QRegion \fBoperator-\fR ( const QRegion & r ) const"
|
|
.br
|
|
.ti -1c
|
|
.BI "const QRegion \fBoperator^\fR ( const QRegion & r ) const"
|
|
.br
|
|
.ti -1c
|
|
.BI "QRegion & \fBoperator|=\fR ( const QRegion & r )"
|
|
.br
|
|
.ti -1c
|
|
.BI "QRegion & \fBoperator+=\fR ( const QRegion & r )"
|
|
.br
|
|
.ti -1c
|
|
.BI "QRegion & \fBoperator&=\fR ( const QRegion & r )"
|
|
.br
|
|
.ti -1c
|
|
.BI "QRegion & \fBoperator-=\fR ( const QRegion & r )"
|
|
.br
|
|
.ti -1c
|
|
.BI "QRegion & \fBoperator^=\fR ( const QRegion & r )"
|
|
.br
|
|
.ti -1c
|
|
.BI "bool \fBoperator==\fR ( const QRegion & r ) const"
|
|
.br
|
|
.ti -1c
|
|
.BI "bool \fBoperator!=\fR ( const QRegion & r ) const"
|
|
.br
|
|
.ti -1c
|
|
.BI "HRGN \fBhandle\fR () const"
|
|
.br
|
|
.in -1c
|
|
.SH RELATED FUNCTION DOCUMENTATION
|
|
.in +1c
|
|
.ti -1c
|
|
.BI "QDataStream & \fBoperator<<\fR ( QDataStream & s, const QRegion & r )"
|
|
.br
|
|
.ti -1c
|
|
.BI "QDataStream & \fBoperator>>\fR ( QDataStream & s, QRegion & r )"
|
|
.br
|
|
.in -1c
|
|
.SH DESCRIPTION
|
|
The QRegion class specifies a clip region for a painter.
|
|
.PP
|
|
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. QRegion is the best tool for reducing flicker.
|
|
.PP
|
|
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). You can move a region using translate().
|
|
.PP
|
|
You can test whether a region isNull(), isEmpty() or if it contains() a QPoint or QRect. The bounding rectangle is given by boundingRect().
|
|
.PP
|
|
The function rects() gives a decomposition of the region into rectangles.
|
|
.PP
|
|
Example of using complex regions:
|
|
.PP
|
|
.nf
|
|
.br
|
|
void MyWidget::paintEvent( QPaintEvent * )
|
|
.br
|
|
{
|
|
.br
|
|
QPainter p; // our painter
|
|
.br
|
|
QRegion r1( QRect(100,100,200,80), // r1 = elliptic region
|
|
.br
|
|
QRegion::Ellipse );
|
|
.br
|
|
QRegion r2( QRect(100,120,90,30) ); // r2 = rectangular region
|
|
.br
|
|
QRegion r3 = r1.intersect( r2 ); // r3 = intersection
|
|
.br
|
|
p.begin( this ); // start painting widget
|
|
.br
|
|
p.setClipRegion( r3 ); // set clip region
|
|
.br
|
|
... // paint clipped graphics
|
|
.br
|
|
p.end(); // painting done
|
|
.br
|
|
}
|
|
.br
|
|
.fi
|
|
.PP
|
|
QRegion is an implicitly shared class.
|
|
.PP
|
|
\fBWarning:\fR Due to window system limitations, the whole coordinate space for a region is limited to the points between -32767 and 32767 on Mac OS X and Windows 95/98/ME.
|
|
.PP
|
|
See also QPainter::setClipRegion(), QPainter::setClipRect(), Graphics Classes, and Image Processing Classes.
|
|
.SS "Member Type Documentation"
|
|
.SH "QRegion::RegionType"
|
|
Specifies the shape of the region to be created.
|
|
.TP
|
|
\fCQRegion::Rectangle\fR - the region covers the entire rectangle.
|
|
.TP
|
|
\fCQRegion::Ellipse\fR - the region is an ellipse inside the rectangle.
|
|
.SH MEMBER FUNCTION DOCUMENTATION
|
|
.SH "QRegion::QRegion ()"
|
|
Constructs a null region.
|
|
.PP
|
|
See also isNull().
|
|
.SH "QRegion::QRegion ( int x, int y, int w, int h, RegionType t = Rectangle )"
|
|
Constructs a rectangular or elliptic region.
|
|
.PP
|
|
If \fIt\fR is Rectangle, the region is the filled rectangle (\fIx\fR, \fIy\fR, \fIw\fR, \fIh\fR). If \fIt\fR is Ellipse, the region is the filled ellipse with center at (\fIx\fR + \fIw\fR / 2, \fIy\fR + \fIh\fR / 2) and size (\fIw\fR ,\fIh\fR ).
|
|
.SH "QRegion::QRegion ( const QRect & r, RegionType t = Rectangle )"
|
|
This is an overloaded member function, provided for convenience. It behaves essentially like the above function.
|
|
.PP
|
|
Create a region based on the rectange \fIr\fR with region type \fIt\fR.
|
|
.PP
|
|
If the rectangle is invalid a null region will be created.
|
|
.PP
|
|
See also QRegion::RegionType.
|
|
.SH "QRegion::QRegion ( const QPointArray & a, bool winding = FALSE )"
|
|
Constructs a polygon region from the point array \fIa\fR.
|
|
.PP
|
|
If \fIwinding\fR is TRUE, the polygon region is filled using the winding algorithm, otherwise the default even-odd fill algorithm is used.
|
|
.PP
|
|
This constructor may create complex regions that will slow down painting when used.
|
|
.SH "QRegion::QRegion ( const QRegion & r )"
|
|
Constructs a new region which is equal to region \fIr\fR.
|
|
.SH "QRegion::QRegion ( const QBitmap & bm )"
|
|
Constructs a region from the bitmap \fIbm\fR.
|
|
.PP
|
|
The resulting region consists of the pixels in bitmap \fIbm\fR that are \fCcolor1\fR, as if each pixel was a 1 by 1 rectangle.
|
|
.PP
|
|
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().
|
|
.SH "QRegion::~QRegion ()"
|
|
Destroys the region.
|
|
.SH "QRect QRegion::boundingRect () const"
|
|
Returns the bounding rectangle of this region. An empty region gives a rectangle that is QRect::isNull().
|
|
.SH "bool QRegion::contains ( const QPoint & p ) const"
|
|
Returns TRUE if the region contains the point \fIp\fR; otherwise returns FALSE.
|
|
.SH "bool QRegion::contains ( const QRect & r ) const"
|
|
This is an overloaded member function, provided for convenience. It behaves essentially like the above function.
|
|
.PP
|
|
Returns TRUE if the region overlaps the rectangle \fIr\fR; otherwise returns FALSE.
|
|
.SH "QRegion QRegion::eor ( const QRegion & r ) const"
|
|
Returns a region which is the exclusive or (XOR) of this region and \fIr\fR.
|
|
.PP
|
|
<center>
|
|
.ce 1
|
|
.B "[Image Omitted]"
|
|
.PP
|
|
</center>
|
|
.PP
|
|
The figure shows the exclusive or of two elliptical regions.
|
|
.SH "HRGN QRegion::handle () const"
|
|
Returns the region's handle.
|
|
.SH "QRegion QRegion::intersect ( const QRegion & r ) const"
|
|
Returns a region which is the intersection of this region and \fIr\fR.
|
|
.PP
|
|
<center>
|
|
.ce 1
|
|
.B "[Image Omitted]"
|
|
.PP
|
|
</center>
|
|
.PP
|
|
The figure shows the intersection of two elliptical regions.
|
|
.SH "bool QRegion::isEmpty () const"
|
|
Returns TRUE if the region is empty; otherwise returns FALSE. An empty region is a region that contains no points.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.br
|
|
QRegion r1( 10, 10, 20, 20 );
|
|
.br
|
|
QRegion r2( 40, 40, 20, 20 );
|
|
.br
|
|
QRegion r3;
|
|
.br
|
|
r1.isNull(); // FALSE
|
|
.br
|
|
r1.isEmpty(); // FALSE
|
|
.br
|
|
r3.isNull(); // TRUE
|
|
.br
|
|
r3.isEmpty(); // TRUE
|
|
.br
|
|
r3 = r1.intersect( r2 ); // r3 = intersection of r1 and r2
|
|
.br
|
|
r3.isNull(); // FALSE
|
|
.br
|
|
r3.isEmpty(); // TRUE
|
|
.br
|
|
r3 = r1.unite( r2 ); // r3 = union of r1 and r2
|
|
.br
|
|
r3.isNull(); // FALSE
|
|
.br
|
|
r3.isEmpty(); // FALSE
|
|
.br
|
|
.fi
|
|
.PP
|
|
See also isNull().
|
|
.SH "bool QRegion::isNull () const"
|
|
Returns TRUE if the region is a null region; otherwise returns FALSE.
|
|
.PP
|
|
A null region is a region that has not been initialized. A null region is always empty.
|
|
.PP
|
|
See also isEmpty().
|
|
.SH "bool QRegion::operator!= ( const QRegion & r ) const"
|
|
Returns TRUE if the region is different from \fIr\fR; otherwise returns FALSE.
|
|
.SH "const QRegion QRegion::operator& ( const QRegion & r ) const"
|
|
Applies the intersect() function to this region and \fIr\fR. \fCr1&r2\fR is equivalent to \fCr1.intersect(r2)\fR
|
|
.PP
|
|
See also intersect().
|
|
.SH "QRegion & QRegion::operator&= ( const QRegion & r )"
|
|
Applies the intersect() function to this region and \fIr\fR and assigns the result to this region. \fCr1&=r2\fR is equivalent to \fCr1=r1.intersect(r2)\fR
|
|
.PP
|
|
See also intersect().
|
|
.SH "const QRegion QRegion::operator+ ( const QRegion & r ) const"
|
|
Applies the unite() function to this region and \fIr\fR. \fCr1+r2\fR is equivalent to \fCr1.unite(r2)\fR
|
|
.PP
|
|
See also unite() and operator|().
|
|
.SH "QRegion & QRegion::operator+= ( const QRegion & r )"
|
|
Applies the unite() function to this region and \fIr\fR and assigns the result to this region. \fCr1+=r2\fR is equivalent to \fCr1=r1.unite(r2)\fR
|
|
.PP
|
|
See also intersect().
|
|
.SH "const QRegion QRegion::operator- ( const QRegion & r ) const"
|
|
Applies the subtract() function to this region and \fIr\fR. \fCr1-r2\fR is equivalent to \fCr1.subtract(r2)\fR
|
|
.PP
|
|
See also subtract().
|
|
.SH "QRegion & QRegion::operator-= ( const QRegion & r )"
|
|
Applies the subtract() function to this region and \fIr\fR and assigns the result to this region. \fCr1-=r2\fR is equivalent to \fCr1=r1.subtract(r2)\fR
|
|
.PP
|
|
See also subtract().
|
|
.SH "QRegion & QRegion::operator= ( const QRegion & r )"
|
|
Assigns \fIr\fR to this region and returns a reference to the region.
|
|
.SH "bool QRegion::operator== ( const QRegion & r ) const"
|
|
Returns TRUE if the region is equal to \fIr\fR; otherwise returns FALSE.
|
|
.SH "const QRegion QRegion::operator^ ( const QRegion & r ) const"
|
|
Applies the eor() function to this region and \fIr\fR. \fCr1^r2\fR is equivalent to \fCr1.eor(r2)\fR
|
|
.PP
|
|
See also eor().
|
|
.SH "QRegion & QRegion::operator^= ( const QRegion & r )"
|
|
Applies the eor() function to this region and \fIr\fR and assigns the result to this region. \fCr1^=r2\fR is equivalent to \fCr1=r1.eor(r2)\fR
|
|
.PP
|
|
See also eor().
|
|
.SH "const QRegion QRegion::operator| ( const QRegion & r ) const"
|
|
Applies the unite() function to this region and \fIr\fR. \fCr1|r2\fR is equivalent to \fCr1.unite(r2)\fR
|
|
.PP
|
|
See also unite() and operator+().
|
|
.SH "QRegion & QRegion::operator|= ( const QRegion & r )"
|
|
Applies the unite() function to this region and \fIr\fR and assigns the result to this region. \fCr1|=r2\fR is equivalent to \fCr1=r1.unite(r2)\fR
|
|
.PP
|
|
See also unite().
|
|
.SH "QMemArray<QRect> QRegion::rects () const"
|
|
Returns an array of non-overlapping rectangles that make up the region.
|
|
.PP
|
|
The union of all the rectangles is equal to the original region.
|
|
.SH "QRegion QRegion::subtract ( const QRegion & r ) const"
|
|
Returns a region which is \fIr\fR subtracted from this region.
|
|
.PP
|
|
<center>
|
|
.ce 1
|
|
.B "[Image Omitted]"
|
|
.PP
|
|
</center>
|
|
.PP
|
|
The figure shows the result when the ellipse on the right is subtracted from the ellipse on the left. (\fCleft-right\fR )
|
|
.SH "void QRegion::translate ( int dx, int dy )"
|
|
Translates (moves) the region \fIdx\fR along the X axis and \fIdy\fR along the Y axis.
|
|
.SH "QRegion QRegion::unite ( const QRegion & r ) const"
|
|
Returns a region which is the union of this region and \fIr\fR.
|
|
.PP
|
|
<center>
|
|
.ce 1
|
|
.B "[Image Omitted]"
|
|
.PP
|
|
</center>
|
|
.PP
|
|
The figure shows the union of two elliptical regions.
|
|
.SH RELATED FUNCTION DOCUMENTATION
|
|
.SH "QDataStream & operator<< ( QDataStream & s, const QRegion & r )"
|
|
Writes the region \fIr\fR to the stream \fIs\fR and returns a reference to the stream.
|
|
.PP
|
|
See also Format of the QDataStream operators.
|
|
.SH "QDataStream & operator>> ( QDataStream & s, QRegion & r )"
|
|
Reads a region from the stream \fIs\fR into \fIr\fR and returns a reference to the stream.
|
|
.PP
|
|
See also Format of the QDataStream operators.
|
|
|
|
.SH "SEE ALSO"
|
|
.BR http://doc.trolltech.com/qregion.html
|
|
.BR http://www.trolltech.com/faq/tech.html
|
|
.SH COPYRIGHT
|
|
Copyright 1992-2007 Trolltech ASA, http://www.trolltech.com. See the
|
|
license file included in the distribution for a complete license
|
|
statement.
|
|
.SH AUTHOR
|
|
Generated automatically from the source code.
|
|
.SH BUGS
|
|
If you find a bug in Qt, please report it as described in
|
|
.BR http://doc.trolltech.com/bughowto.html .
|
|
Good bug reports help us to help you. Thank you.
|
|
.P
|
|
The definitive Qt documentation is provided in HTML format; it is
|
|
located at $QTDIR/doc/html and can be read using Qt Assistant or with
|
|
a web browser. This man page is provided as a convenience for those
|
|
users who prefer man pages, although this format is not officially
|
|
supported by Trolltech.
|
|
.P
|
|
If you find errors in this manual page, please report them to
|
|
.BR qt-bugs@trolltech.com .
|
|
Please include the name of the manual page (qregion.3qt) and the Qt
|
|
version (3.3.8).
|