diff --git a/python/core/auto_generated/geometry/qgsrectangle.sip.in b/python/core/auto_generated/geometry/qgsrectangle.sip.in index 1dae45d63e56..f6fdb6872719 100644 --- a/python/core/auto_generated/geometry/qgsrectangle.sip.in +++ b/python/core/auto_generated/geometry/qgsrectangle.sip.in @@ -183,6 +183,13 @@ Scale the rectangle around its center point. void scale( double scaleFactor, double centerX, double centerY ); %Docstring Scale the rectangle around its center point. +%End + + QgsRectangle scaled( double scaleFactor, const QgsPointXY *center = 0 ); +%Docstring +Scale the rectangle around its ``center`` point. + +.. versionadded:: 3.4 %End void grow( double delta ); diff --git a/src/core/geometry/qgsrectangle.cpp b/src/core/geometry/qgsrectangle.cpp index a5c7884b1e7c..eb079739493a 100644 --- a/src/core/geometry/qgsrectangle.cpp +++ b/src/core/geometry/qgsrectangle.cpp @@ -58,6 +58,13 @@ QgsRectangle QgsRectangle::fromCenterAndSize( QgsPointXY center, double width, d return QgsRectangle( xMin, yMin, xMax, yMax ); } +QgsRectangle QgsRectangle::scaled( double scaleFactor, const QgsPointXY *center ) +{ + QgsRectangle scaledRect = QgsRectangle( *this ); + scaledRect.scale( scaleFactor, center ); + return scaledRect; +} + QgsRectangle QgsRectangle::operator-( const QgsVector v ) const { double xmin = mXmin - v.x(); diff --git a/src/core/geometry/qgsrectangle.h b/src/core/geometry/qgsrectangle.h index 81202f6c4dda..3daec595f496 100644 --- a/src/core/geometry/qgsrectangle.h +++ b/src/core/geometry/qgsrectangle.h @@ -261,6 +261,12 @@ class CORE_EXPORT QgsRectangle mYmax = centerY + newHeight / 2.0; } + /** + * Scale the rectangle around its \a center point. + * \since QGIS 3.4 + */ + QgsRectangle scaled( double scaleFactor, const QgsPointXY *center = nullptr ); + /** * Grows the rectangle in place by the specified amount. * \see buffered()