/*! \class QgsRectangle * \brief A rectangle specified with double values. * * QgsRectangle is used to store a rectangle when double values are required. * Examples are storing a layer extent or the current view extent of a map */ class QgsRectangle { %TypeHeaderCode #include %End public: //! Constructor QgsRectangle(double xmin=0, double ymin=0, double xmax=0, double ymax=0); //! Construct a rectangle from two points. The rectangle is normalized after construction. QgsRectangle(const QgsPoint & p1, const QgsPoint & p2); //! Copy constructor QgsRectangle(const QgsRectangle &other); //! Destructor ~QgsRectangle(); //! Set the rectangle from two QgsPoints. The rectangle is //normalised after construction. void set(const QgsPoint& p1, const QgsPoint& p2); //! Set the rectangle from four points. The rectangle is // normalised after construction. void set(double xmin, double ymin, double xmax, double ymax); //! Set the minimum x value void setXMinimum(double x); //! Set the maximum x value void setXMaximum(double x); //! Set the maximum y value void setYMinimum(double y); //! Set the maximum y value void setYMaximum(double y); //! Set a rectangle so that min corner is at max // and max corner is at min. It is NOT normalized. void setMinimal(); //! Get the x maximum value (right side of rectangle) double xMaximum() const; //! Get the x minimum value (left side of rectangle) double xMinimum() const; //! Get the y maximum value (top side of rectangle) double yMaximum() const; //! Get the y minimum value (bottom side of rectangle) double yMinimum() const; //! Normalize the rectangle so it has non-negative width/height void normalize(); //! Width of the rectangle double width() const; //! Height of the rectangle double height() const; //! Center point of the rectangle QgsPoint center() const; //! Scale the rectangle around its center point void scale(double, const QgsPoint *c =0); //! Expand the rectangle to support zoom out scaling void expand(double, const QgsPoint *c = 0); //! return the intersection with the given rectangle QgsRectangle intersect(const QgsRectangle *rect); //! returns true when rectangle intersects with other rectangle bool intersects(const QgsRectangle& rect) const; //! return true when rectangle contains other rectangle //! @note added in version 1.1 bool contains( const QgsRectangle& rect ) const; //! return true when rectangle contains a point //! @note added in version 1.3 bool contains( const QgsPoint& p ) const; //! expand the rectangle so that covers both the original rectangle and the given rectangle void combineExtentWith(QgsRectangle *rect); //! expand the rectangle so that covers both the original rectangle and the given point void combineExtentWith(double x, double y); //! test if rectangle is empty bool isEmpty() const; //! returns string representation in Wkt form QString asWktCoordinates() const; //! returns string representation of form xmin,ymin xmax,ymax QString toString(bool automaticPrecision = false) const; //! overloaded toString that allows precision of numbers to be set QString toString(int thePrecision) const; //! returns rectangle s a polygon QString asPolygon() const; /*! Comparison operator @return True if rectangles are equal */ bool operator==(const QgsRectangle &r1) const; /*! Comparison operator @return False if rectangles are equal */ bool operator!=(const QgsRectangle &r1) const; /** updates rectangle to include passed argument */ void unionRect(const QgsRectangle& rect); };