QGIS API Documentation
3.16.0-Hannover (43b64b13f3)
|
Go to the documentation of this file.
18 #ifndef QGSRECTANGLE_H
19 #define QGSRECTANGLE_H
21 #include "qgis_core.h"
24 #include <QDomDocument>
67 mXmin = qRectF.topLeft().x();
68 mYmin = qRectF.topLeft().y();
69 mXmax = qRectF.bottomRight().x();
70 mYmax = qRectF.bottomRight().y();
76 mXmin = other.xMinimum();
77 mYmin = other.yMinimum();
78 mXmax = other.xMaximum();
79 mYmax = other.yMaximum();
118 void set(
double xMin,
double yMin,
double xMax,
double yMax )
153 mXmin = std::numeric_limits<double>::max();
154 mYmin = std::numeric_limits<double>::max();
155 mXmax = -std::numeric_limits<double>::max();
156 mYmax = -std::numeric_limits<double>::max();
189 std::swap( mXmin, mXmax );
193 std::swap( mYmin, mYmax );
238 double centerX, centerY;
246 centerX = mXmin + width() / 2;
247 centerY = mYmin + height() / 2;
249 scale( scaleFactor, centerX, centerY );
255 void scale(
double scaleFactor,
double centerX,
double centerY )
257 double newWidth = width() * scaleFactor;
258 double newHeight = height() * scaleFactor;
259 mXmin = centerX - newWidth / 2.0;
260 mXmax = centerX + newWidth / 2.0;
261 mYmin = centerY - newHeight / 2.0;
262 mYmax = centerY + newHeight / 2.0;
288 if ( p.
x() < xMinimum() )
289 setXMinimum( p.
x() );
290 else if ( p.
x() > xMaximum() )
291 setXMaximum( p.
x() );
292 if ( p.
y() < yMinimum() )
293 setYMinimum( p.
y() );
294 if ( p.
y() > yMaximum() )
295 setYMaximum( p.
y() );
306 return QgsRectangle( mXmin - width, mYmin - width, mXmax + width, mYmax + width );
315 if ( intersects( rect ) )
330 double x1 = ( mXmin > rect.mXmin ? mXmin : rect.mXmin );
331 double x2 = ( mXmax < rect.mXmax ? mXmax : rect.mXmax );
334 double y1 = ( mYmin > rect.mYmin ? mYmin : rect.mYmin );
335 double y2 = ( mYmax < rect.mYmax ? mYmax : rect.mYmax );
344 return ( rect.mXmin >= mXmin && rect.mXmax <= mXmax && rect.mYmin >= mYmin && rect.mYmax <= mYmax );
352 return mXmin <= p.
x() && p.
x() <= mXmax &&
353 mYmin <= p.
y() && p.
y() <= mYmax;
363 else if ( !rect.
isNull() )
365 mXmin = std::min( mXmin, rect.
xMinimum() );
366 mXmax = std::max( mXmax, rect.
xMaximum() );
367 mYmin = std::min( mYmin, rect.
yMinimum() );
368 mYmax = std::max( mYmax, rect.
yMaximum() );
381 mXmin = ( ( mXmin < x ) ? mXmin : x );
382 mXmax = ( ( mXmax > x ) ? mXmax : x );
384 mYmin = ( ( mYmin < y ) ? mYmin : y );
385 mYmax = ( ( mYmax > y ) ? mYmax : y );
395 combineExtentWith( point.
x(), point.
y() );
404 const double dx = std::max( std::max( mXmin - point.
x(), 0.0 ), point.
x() - mXmax );
405 const double dy = std::max( std::max( mYmin - point.
y(), 0.0 ), point.
y() - mYmax );
406 return std::sqrt( dx * dx + dy * dy );
458 QString asWktCoordinates()
const;
463 QString asWktPolygon()
const;
470 return QRectF(
static_cast< qreal
>( mXmin ),
static_cast< qreal
>( mYmin ),
static_cast< qreal
>( mXmax - mXmin ),
static_cast< qreal
>( mYmax - mYmin ) );
478 QString toString(
int precision = 16 )
const;
483 QString asPolygon()
const;
503 return ( !
operator==( r1 ) );
529 if ( std::isinf( mXmin ) || std::isinf( mYmin ) || std::isinf( mXmax ) || std::isinf( mYmax ) )
533 if ( std::isnan( mXmin ) || std::isnan( mYmin ) || std::isnan( mXmax ) || std::isnan( mYmax ) )
545 std::swap( mXmin, mYmin );
546 std::swap( mXmax, mYmax );
554 QgsBox3d toBox3d(
double zMin,
double zMax )
const;
557 operator QVariant()
const
559 return QVariant::fromValue( *
this );
571 SIP_PYOBJECT __repr__();
573 QString str = QStringLiteral(
"<QgsRectangle: %1>" ).arg( sipCpp->asWktCoordinates() );
574 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
603 return os << r.
toString().toLocal8Bit().data();
608 #endif // QGSRECTANGLE_H
double perimeter() const SIP_HOLDGIL
Returns the perimeter of the rectangle.
bool isFinite() const
Returns true if the rectangle has finite boundaries.
double height() const SIP_HOLDGIL
Returns the height of the rectangle.
double distance(const QgsPointXY &point) const
Returns the distance from point to the nearest point on the boundary of the rectangle.
void scale(double scaleFactor, double centerX, double centerY)
Scale the rectangle around its center point.
void include(const QgsPointXY &p)
Updates the rectangle to include the specified point.
void combineExtentWith(const QgsRectangle &rect)
Expands the rectangle so that it covers both the original rectangle and the given rectangle.
void invert()
Swap x/y coordinates in the rectangle.
QgsPointXY center() const SIP_HOLDGIL
Returns the center point of the rectangle.
double yMinimum() const SIP_HOLDGIL
Returns the y minimum value (bottom side of rectangle).
QRectF toRectF() const
Returns a QRectF with same coordinates as the rectangle.
void setMinimal() SIP_HOLDGIL
Set a rectangle so that min corner is at max and max corner is at min.
QgsRectangle intersect(const QgsRectangle &rect) const
Returns the intersection with the given rectangle.
A rectangle specified with double values.
Q_DECLARE_METATYPE(QgsMeshTimeSettings)
QgsRectangle(double xMin, double yMin=0, double xMax=0, double yMax=0) SIP_HOLDGIL
Constructor.
void normalize()
Normalize the rectangle so it has non-negative width/height.
QgsRectangle(const QgsRectangle &other) SIP_HOLDGIL
Copy constructor.
double xMaximum() const SIP_HOLDGIL
Returns the x maximum value (right side of rectangle).
void scale(double scaleFactor, const QgsPointXY *c=nullptr)
Scale the rectangle around its center point.
void combineExtentWith(double x, double y)
Expands the rectangle so that it covers both the original rectangle and the given point.
double area() const SIP_HOLDGIL
Returns the area of the rectangle.
bool contains(const QgsRectangle &rect) const
Returns true when rectangle contains other rectangle.
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)
QgsRectangle(const QRectF &qRectF) SIP_HOLDGIL
Construct a rectangle from a QRectF. The rectangle is normalized after construction.
QgsRectangle(const QgsPointXY &p1, const QgsPointXY &p2) SIP_HOLDGIL
Construct a rectangle from two points. The rectangle is normalized after construction.
bool operator==(const QgsRectangle &r1) const
Comparison operator.
void setXMinimum(double x) SIP_HOLDGIL
Set the minimum x value.
double xMinimum() const SIP_HOLDGIL
Returns the x minimum value (left side of rectangle).
QgsRectangle buffered(double width) const
Gets rectangle enlarged by buffer.
void setXMaximum(double x) SIP_HOLDGIL
Set the maximum x value.
QString toString(int precision=16) const
Returns a string representation of form xmin,ymin : xmax,ymax Coordinates will be truncated to the sp...
A class to represent a 2D point.
void setYMaximum(double y) SIP_HOLDGIL
Set the maximum y value.
bool contains(const QgsPointXY &p) const
Returns true when rectangle contains a point.
bool operator!=(const QgsRectangle &r1) const
Comparison operator.
bool intersects(const QgsRectangle &rect) const
Returns true when rectangle intersects with other rectangle.
void combineExtentWith(const QgsPointXY &point)
Expands the rectangle so that it covers both the original rectangle and the given point.
double yMaximum() const SIP_HOLDGIL
Returns the y maximum value (top side of rectangle).
void setYMinimum(double y) SIP_HOLDGIL
Set the minimum y value.
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c
double width() const SIP_HOLDGIL
Returns the width of the rectangle.
void set(const QgsPointXY &p1, const QgsPointXY &p2)
Sets the rectangle from two QgsPoints.
QgsInterval operator-(const QDateTime &dt1, const QDateTime &dt2)
Returns the interval between two datetimes.
A class to represent a vector.
QDateTime operator+(const QDateTime &start, const QgsInterval &interval)
Adds an interval to a datetime.
void set(double xMin, double yMin, double xMax, double yMax)
Sets the rectangle from four points.
A 3-dimensional box composed of x, y, z coordinates.
void grow(double delta)
Grows the rectangle in place by the specified amount.
bool isEmpty() const
Returns true if the rectangle is empty.
QgsRectangle()=default
Constructor for a null rectangle.
QgsRectangle & operator=(const QgsRectangle &r1)
Assignment operator.
bool isNull() const
Test if the rectangle is null (all coordinates zero or after call to setMinimal()).
CORE_EXPORT QDataStream & operator<<(QDataStream &out, const QgsRectangle &rectangle)
Writes the list rectangle to stream out.
CORE_EXPORT QDataStream & operator>>(QDataStream &in, QgsRectangle &rectangle)
Reads a rectangle from stream in into rectangle.