QGIS API Documentation  2.99.0-Master (75367e4)
qgsrectangle.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsrectangle.h - description
3  -------------------
4  begin : Sat Jun 22 2002
5  copyright : (C) 2002 by Gary E.Sherman
6  email : sherman at mrcc.com
7 ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef QGSRECTANGLE_H
19 #define QGSRECTANGLE_H
20 
21 #include "qgis_core.h"
22 #include <iosfwd>
23 #include <QDomDocument>
24 
25 class QString;
26 class QRectF;
27 #include "qgspoint.h"
28 
29 
36 class CORE_EXPORT QgsRectangle
37 {
38  public:
40  QgsRectangle( double xmin = 0, double ymin = 0, double xmax = 0, double ymax = 0 );
42  QgsRectangle( const QgsPoint & p1, const QgsPoint & p2 );
44  QgsRectangle( const QRectF & qRectF );
46  QgsRectangle( const QgsRectangle &other );
47 
48  ~QgsRectangle();
51  void set( const QgsPoint& p1, const QgsPoint& p2 );
54  void set( double xmin, double ymin, double xmax, double ymax );
56  void setXMinimum( double x );
58  void setXMaximum( double x );
60  void setYMinimum( double y );
62  void setYMaximum( double y );
65  void setMinimal();
67  double xMaximum() const;
69  double xMinimum() const;
71  double yMaximum() const;
73  double yMinimum() const;
75  void normalize();
77  double width() const;
79  double height() const;
81  QgsPoint center() const;
83  void scale( double scaleFactor, const QgsPoint *c = nullptr );
84  void scale( double scaleFactor, double centerX, double centerY );
86  void grow( double delta );
88  void include( const QgsPoint& p );
89 
92  QgsRectangle buffer( double width );
94  QgsRectangle intersect( const QgsRectangle *rect ) const;
96  bool intersects( const QgsRectangle& rect ) const;
98  bool contains( const QgsRectangle& rect ) const;
100  bool contains( const QgsPoint &p ) const;
102  void combineExtentWith( const QgsRectangle& rect );
104  void combineExtentWith( double x, double y );
107  bool isEmpty() const;
111  bool isNull() const;
113  QString asWktCoordinates() const;
115  QString asWktPolygon() const;
117  QRectF toRectF() const;
119  QString toString( bool automaticPrecision = false ) const;
121  QString toString( int thePrecision ) const;
123  QString asPolygon() const;
124 
128  bool operator==( const QgsRectangle &r1 ) const;
129 
133  bool operator!=( const QgsRectangle &r1 ) const;
134 
138  QgsRectangle & operator=( const QgsRectangle &r1 );
139 
141  void unionRect( const QgsRectangle& rect );
142 
146  bool isFinite() const;
147 
149  void invert();
150 
151  protected:
152 
153  // These are protected instead of private so that things like
154  // the QgsPostGisBox3d can get at them.
155 
156  double xmin;
157  double ymin;
158  double xmax;
159  double ymax;
160 
161 };
162 
164 CORE_EXPORT QDataStream& operator<<( QDataStream& out, const QgsRectangle& rectangle );
166 CORE_EXPORT QDataStream& operator>>( QDataStream& in, QgsRectangle& rectangle );
167 
169 {
170 }
171 
172 inline void QgsRectangle::setXMinimum( double x )
173 {
174  xmin = x;
175 }
176 
177 inline void QgsRectangle::setXMaximum( double x )
178 {
179  xmax = x;
180 }
181 
182 inline void QgsRectangle::setYMinimum( double y )
183 {
184  ymin = y;
185 }
186 
187 inline void QgsRectangle::setYMaximum( double y )
188 {
189  ymax = y;
190 }
191 
192 inline double QgsRectangle::xMaximum() const
193 {
194  return xmax;
195 }
196 
197 inline double QgsRectangle::xMinimum() const
198 {
199  return xmin;
200 }
201 
202 inline double QgsRectangle::yMaximum() const
203 {
204  return ymax;
205 }
206 
207 inline double QgsRectangle::yMinimum() const
208 {
209  return ymin;
210 }
211 
212 inline double QgsRectangle::width() const
213 {
214  return xmax - xmin;
215 }
216 
217 inline double QgsRectangle::height() const
218 {
219  return ymax - ymin;
220 }
221 
223 {
224  return QgsPoint( xmin + width() / 2, ymin + height() / 2 );
225 }
226 inline std::ostream& operator << ( std::ostream& os, const QgsRectangle &r )
227 {
228  return os << r.toString().toLocal8Bit().data();
229 }
230 
231 #endif // QGSRECTANGLE_H
A rectangle specified with double values.
Definition: qgsrectangle.h:36
QgsPoint center() const
Center point of the rectangle.
Definition: qgsrectangle.h:222
void setXMaximum(double x)
Set the maximum x value.
Definition: qgsrectangle.h:177
bool operator==(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)
bool operator!=(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)
CORE_EXPORT QDataStream & operator<<(QDataStream &out, const QgsRectangle &rectangle)
Writes the list rectangle to stream out. QGIS version compatibility is not guaranteed.
QString toString(bool automaticPrecision=false) const
returns string representation of form xmin,ymin xmax,ymax
double width() const
Width of the rectangle.
Definition: qgsrectangle.h:212
void setYMinimum(double y)
Set the minimum y value.
Definition: qgsrectangle.h:182
A class to represent a point.
Definition: qgspoint.h:143
double yMinimum() const
Get the y minimum value (bottom side of rectangle)
Definition: qgsrectangle.h:207
double xMaximum() const
Get the x maximum value (right side of rectangle)
Definition: qgsrectangle.h:192
CORE_EXPORT QDataStream & operator>>(QDataStream &in, QgsRectangle &rectangle)
Reads a rectangle from stream in into rectangle. QGIS version compatibility is not guaranteed...
void setYMaximum(double y)
Set the maximum y value.
Definition: qgsrectangle.h:187
double xMinimum() const
Get the x minimum value (left side of rectangle)
Definition: qgsrectangle.h:197
double yMaximum() const
Get the y maximum value (top side of rectangle)
Definition: qgsrectangle.h:202
bool isNull(const QVariant &v)
void setXMinimum(double x)
Set the minimum x value.
Definition: qgsrectangle.h:172
double height() const
Height of the rectangle.
Definition: qgsrectangle.h:217