diff --git a/python/core/geometry/qgscircle.sip b/python/core/geometry/qgscircle.sip index b88835e6e69..6be3aed25b3 100644 --- a/python/core/geometry/qgscircle.sip +++ b/python/core/geometry/qgscircle.sip @@ -133,6 +133,7 @@ class QgsCircle : QgsEllipse virtual void setSemiMajorAxis( const double semiMajorAxis ); + %Docstring Inherited method. Use setRadius instead. .. seealso:: radius() @@ -140,6 +141,7 @@ class QgsCircle : QgsEllipse %End virtual void setSemiMinorAxis( const double semiMinorAxis ); + %Docstring Inherited method. Use setRadius instead. .. seealso:: radius() diff --git a/python/core/geometry/qgsgeometrycollection.sip b/python/core/geometry/qgsgeometrycollection.sip index 6143a01e51e..5e82789ce4e 100644 --- a/python/core/geometry/qgsgeometrycollection.sip +++ b/python/core/geometry/qgsgeometrycollection.sip @@ -152,8 +152,10 @@ Adds a geometry and takes ownership. Returns true in case of success. virtual int ringCount( int part = 0 ) const; virtual int partCount() const; + virtual QgsPoint vertexAt( QgsVertexId id ) const; + virtual bool addZValue( double zValue = 0 ); virtual bool addMValue( double mValue = 0 ); diff --git a/python/core/geometry/qgslinestring.sip b/python/core/geometry/qgslinestring.sip index 3c44b911d49..ab533e81722 100644 --- a/python/core/geometry/qgslinestring.sip +++ b/python/core/geometry/qgslinestring.sip @@ -168,7 +168,9 @@ Closes the line string by appending the first point to the end of the line, if i virtual QString geometryType() const; + virtual int dimension() const; + virtual QgsLineString *clone() const /Factory/; virtual void clear(); @@ -212,6 +214,7 @@ Closes the line string by appending the first point to the end of the line, if i virtual int numPoints() const; virtual int nCoordinates() const; + virtual void points( QgsPointSequence &pt /Out/ ) const; diff --git a/python/core/geometry/qgsmulticurve.sip b/python/core/geometry/qgsmulticurve.sip index cc155edd14d..ed25b1f6649 100644 --- a/python/core/geometry/qgsmulticurve.sip +++ b/python/core/geometry/qgsmulticurve.sip @@ -21,6 +21,7 @@ class QgsMultiCurve: QgsGeometryCollection public: QgsMultiCurve(); virtual QString geometryType() const; + virtual QgsMultiCurve *clone() const /Factory/; virtual QgsMultiCurve *toCurveType() const /Factory/; diff --git a/python/core/geometry/qgsmultilinestring.sip b/python/core/geometry/qgsmultilinestring.sip index 94181864153..45314dcc301 100644 --- a/python/core/geometry/qgsmultilinestring.sip +++ b/python/core/geometry/qgsmultilinestring.sip @@ -21,6 +21,7 @@ class QgsMultiLineString: QgsMultiCurve public: QgsMultiLineString(); virtual QString geometryType() const; + virtual QgsMultiLineString *clone() const /Factory/; @@ -52,6 +53,7 @@ Adds a geometry and takes ownership. Returns true in case of success protected: virtual bool wktOmitChildType() const; + }; /************************************************************************ diff --git a/python/core/geometry/qgsmultipoint.sip b/python/core/geometry/qgsmultipoint.sip index b30db22184a..534d2d63135 100644 --- a/python/core/geometry/qgsmultipoint.sip +++ b/python/core/geometry/qgsmultipoint.sip @@ -21,6 +21,7 @@ class QgsMultiPointV2: QgsGeometryCollection public: QgsMultiPointV2(); virtual QString geometryType() const; + virtual QgsMultiPointV2 *clone() const /Factory/; virtual QgsMultiPointV2 *toCurveType() const /Factory/; @@ -38,6 +39,7 @@ class QgsMultiPointV2: QgsGeometryCollection virtual int nCoordinates() const; + virtual bool addGeometry( QgsAbstractGeometry *g /Transfer/ ); %Docstring @@ -52,6 +54,7 @@ Adds a geometry and takes ownership. Returns true in case of success virtual bool wktOmitChildType() const; + }; /************************************************************************ diff --git a/python/core/geometry/qgsmultipolygon.sip b/python/core/geometry/qgsmultipolygon.sip index 5a00e37d142..97e69930d97 100644 --- a/python/core/geometry/qgsmultipolygon.sip +++ b/python/core/geometry/qgsmultipolygon.sip @@ -21,6 +21,7 @@ class QgsMultiPolygonV2: QgsMultiSurface public: QgsMultiPolygonV2(); virtual QString geometryType() const; + virtual QgsMultiPolygonV2 *clone() const /Factory/; @@ -55,6 +56,7 @@ Adds a geometry and takes ownership. Returns true in case of success protected: virtual bool wktOmitChildType() const; + }; /************************************************************************ diff --git a/python/core/geometry/qgsmultisurface.sip b/python/core/geometry/qgsmultisurface.sip index 97c499e4289..084e446d0a4 100644 --- a/python/core/geometry/qgsmultisurface.sip +++ b/python/core/geometry/qgsmultisurface.sip @@ -21,6 +21,7 @@ class QgsMultiSurface: QgsGeometryCollection public: QgsMultiSurface(); virtual QString geometryType() const; + virtual QgsMultiSurface *clone() const /Factory/; virtual QgsMultiSurface *toCurveType() const /Factory/; diff --git a/python/core/geometry/qgspoint.sip b/python/core/geometry/qgspoint.sip index 1c0e1d6f355..cc40febdd6d 100644 --- a/python/core/geometry/qgspoint.sip +++ b/python/core/geometry/qgspoint.sip @@ -329,9 +329,13 @@ class QgsPoint: QgsAbstractGeometry %End virtual bool isEmpty() const; + virtual QgsRectangle boundingBox() const; + virtual QString geometryType() const; + virtual int dimension() const; + virtual QgsPoint *clone() const /Factory/; virtual void clear(); @@ -359,20 +363,24 @@ class QgsPoint: QgsAbstractGeometry virtual QgsCoordinateSequence coordinateSequence() const; virtual int nCoordinates() const; + virtual QgsAbstractGeometry *boundary() const /Factory/; virtual bool insertVertex( QgsVertexId position, const QgsPoint &vertex ); + virtual bool moveVertex( QgsVertexId position, const QgsPoint &newPos ); virtual bool deleteVertex( QgsVertexId position ); + virtual double closestSegment( const QgsPoint &pt, QgsPoint &segmentPt /Out/, QgsVertexId &vertexAfter /Out/, bool *leftOf /Out/ = 0, double epsilon = 4 * DBL_EPSILON ) const; virtual bool nextVertex( QgsVertexId &id, QgsPoint &vertex /Out/ ) const; virtual double vertexAngle( QgsVertexId vertex ) const; + %Docstring Angle undefined. Always returns 0.0 \param vertex the vertex id @@ -381,9 +389,13 @@ class QgsPoint: QgsAbstractGeometry %End virtual int vertexCount( int /*part*/ = 0, int /*ring*/ = 0 ) const; + virtual int ringCount( int /*part*/ = 0 ) const; + virtual int partCount() const; + virtual QgsPoint vertexAt( QgsVertexId /*id*/ ) const; + virtual QgsPoint *toCurveType() const /Factory/; diff --git a/python/core/geometry/qgstriangle.sip b/python/core/geometry/qgstriangle.sip index bf77861752c..de50ca6afd8 100644 --- a/python/core/geometry/qgstriangle.sip +++ b/python/core/geometry/qgstriangle.sip @@ -56,6 +56,7 @@ class QgsTriangle : QgsPolygonV2 %End virtual QString geometryType() const; + virtual QgsTriangle *clone() const /Factory/; virtual void clear(); diff --git a/src/core/geometry/qgscircle.cpp b/src/core/geometry/qgscircle.cpp index 2f3c3211236..29ba7e6150a 100644 --- a/src/core/geometry/qgscircle.cpp +++ b/src/core/geometry/qgscircle.cpp @@ -227,6 +227,18 @@ double QgsCircle::perimeter() const return 2.0 * M_PI * mSemiMajorAxis; } +void QgsCircle::setSemiMajorAxis( const double semiMajorAxis ) +{ + mSemiMajorAxis = std::fabs( semiMajorAxis ); + mSemiMinorAxis = mSemiMajorAxis; +} + +void QgsCircle::setSemiMinorAxis( const double semiMinorAxis ) +{ + mSemiMajorAxis = std::fabs( semiMinorAxis ); + mSemiMinorAxis = mSemiMajorAxis; +} + QVector QgsCircle::northQuadrant() const { QVector quad; diff --git a/src/core/geometry/qgscircle.h b/src/core/geometry/qgscircle.h index 27fd07f67eb..0c5a125c47b 100644 --- a/src/core/geometry/qgscircle.h +++ b/src/core/geometry/qgscircle.h @@ -143,21 +143,13 @@ class CORE_EXPORT QgsCircle : public QgsEllipse * \see radius() * \see setRadius() */ - void setSemiMajorAxis( const double semiMajorAxis ) override - { - mSemiMajorAxis = std::fabs( semiMajorAxis ); - mSemiMinorAxis = mSemiMajorAxis; - } + void setSemiMajorAxis( const double semiMajorAxis ) override; /** Inherited method. Use setRadius instead. * \see radius() * \see setRadius() */ - void setSemiMinorAxis( const double semiMinorAxis ) override - { - mSemiMajorAxis = std::fabs( semiMinorAxis ); - mSemiMinorAxis = mSemiMajorAxis; - } + void setSemiMinorAxis( const double semiMinorAxis ) override; //! Returns the radius of the circle double radius() const {return mSemiMajorAxis;} diff --git a/src/core/geometry/qgscompoundcurve.cpp b/src/core/geometry/qgscompoundcurve.cpp index 62ec046ea42..c9c2f21d4b0 100644 --- a/src/core/geometry/qgscompoundcurve.cpp +++ b/src/core/geometry/qgscompoundcurve.cpp @@ -49,6 +49,16 @@ bool QgsCompoundCurve::operator!=( const QgsCurve &other ) const return !operator==( other ); } +QString QgsCompoundCurve::geometryType() const +{ + return QStringLiteral( "CompoundCurve" ); +} + +int QgsCompoundCurve::dimension() const +{ + return 1; +} + QgsCompoundCurve::QgsCompoundCurve( const QgsCompoundCurve &curve ): QgsCurve( curve ) { mWkbType = QgsWkbTypes::CompoundCurve; diff --git a/src/core/geometry/qgscompoundcurve.h b/src/core/geometry/qgscompoundcurve.h index 67151b80308..fa61a0a6b86 100644 --- a/src/core/geometry/qgscompoundcurve.h +++ b/src/core/geometry/qgscompoundcurve.h @@ -38,8 +38,8 @@ class CORE_EXPORT QgsCompoundCurve: public QgsCurve virtual bool operator==( const QgsCurve &other ) const override; virtual bool operator!=( const QgsCurve &other ) const override; - virtual QString geometryType() const override { return QStringLiteral( "CompoundCurve" ); } - virtual int dimension() const override { return 1; } + virtual QString geometryType() const override; + virtual int dimension() const override; virtual QgsCompoundCurve *clone() const override SIP_FACTORY; virtual void clear() override; diff --git a/src/core/geometry/qgsgeometrycollection.cpp b/src/core/geometry/qgsgeometrycollection.cpp index fdd954f5416..e50e9fdbf03 100644 --- a/src/core/geometry/qgsgeometrycollection.cpp +++ b/src/core/geometry/qgsgeometrycollection.cpp @@ -639,6 +639,16 @@ int QgsGeometryCollection::ringCount( int part ) const return mGeometries[part]->ringCount(); } +int QgsGeometryCollection::partCount() const +{ + return mGeometries.size(); +} + +QgsPoint QgsGeometryCollection::vertexAt( QgsVertexId id ) const +{ + return mGeometries[id.part]->vertexAt( id ); +} + bool QgsGeometryCollection::addZValue( double zValue ) { if ( QgsWkbTypes::hasZ( mWkbType ) ) diff --git a/src/core/geometry/qgsgeometrycollection.h b/src/core/geometry/qgsgeometrycollection.h index d9c24594b6a..8b227b8b0b5 100644 --- a/src/core/geometry/qgsgeometrycollection.h +++ b/src/core/geometry/qgsgeometrycollection.h @@ -123,8 +123,8 @@ class CORE_EXPORT QgsGeometryCollection: public QgsAbstractGeometry int vertexCount( int part = 0, int ring = 0 ) const override; int ringCount( int part = 0 ) const override; - int partCount() const override { return mGeometries.size(); } - QgsPoint vertexAt( QgsVertexId id ) const override { return mGeometries[id.part]->vertexAt( id ); } + int partCount() const override; + QgsPoint vertexAt( QgsVertexId id ) const override; bool addZValue( double zValue = 0 ) override; bool addMValue( double mValue = 0 ) override; diff --git a/src/core/geometry/qgslinestring.cpp b/src/core/geometry/qgslinestring.cpp index 9534cb53b6f..407e0cc83b1 100644 --- a/src/core/geometry/qgslinestring.cpp +++ b/src/core/geometry/qgslinestring.cpp @@ -370,6 +370,11 @@ int QgsLineString::numPoints() const return mX.size(); } +int QgsLineString::nCoordinates() const +{ + return mX.size(); +} + QgsPoint QgsLineString::pointN( int i ) const { if ( i < 0 || i >= mX.size() ) @@ -698,6 +703,16 @@ void QgsLineString::extend( double startDistance, double endDistance ) } } +QString QgsLineString::geometryType() const +{ + return QStringLiteral( "LineString" ); +} + +int QgsLineString::dimension() const +{ + return 1; +} + /*************************************************************************** * This class is considered CRITICAL and any change MUST be accompanied with * full unit tests. diff --git a/src/core/geometry/qgslinestring.h b/src/core/geometry/qgslinestring.h index d89ad25e1a3..16ff09da903 100644 --- a/src/core/geometry/qgslinestring.h +++ b/src/core/geometry/qgslinestring.h @@ -162,8 +162,8 @@ class CORE_EXPORT QgsLineString: public QgsCurve //reimplemented methods - QString geometryType() const override { return QStringLiteral( "LineString" ); } - int dimension() const override { return 1; } + QString geometryType() const override; + int dimension() const override; QgsLineString *clone() const override SIP_FACTORY; void clear() override; bool isEmpty() const override; @@ -189,7 +189,7 @@ class CORE_EXPORT QgsLineString: public QgsCurve QgsLineString *curveToLine( double tolerance = M_PI_2 / 90, SegmentationToleranceType toleranceType = MaximumAngle ) const override SIP_FACTORY; int numPoints() const override; - int nCoordinates() const override { return mX.size(); } + int nCoordinates() const override; void points( QgsPointSequence &pt SIP_OUT ) const override; void draw( QPainter &p ) const override; diff --git a/src/core/geometry/qgsmulticurve.cpp b/src/core/geometry/qgsmulticurve.cpp index 8e2fc871fc2..36f7cd9592c 100644 --- a/src/core/geometry/qgsmulticurve.cpp +++ b/src/core/geometry/qgsmulticurve.cpp @@ -28,6 +28,11 @@ QgsMultiCurve::QgsMultiCurve() mWkbType = QgsWkbTypes::MultiCurve; } +QString QgsMultiCurve::geometryType() const +{ + return QStringLiteral( "MultiCurve" ); +} + QgsMultiCurve *QgsMultiCurve::clone() const { return new QgsMultiCurve( *this ); diff --git a/src/core/geometry/qgsmulticurve.h b/src/core/geometry/qgsmulticurve.h index 7ee32bff545..3ce7b7a0681 100644 --- a/src/core/geometry/qgsmulticurve.h +++ b/src/core/geometry/qgsmulticurve.h @@ -29,7 +29,7 @@ class CORE_EXPORT QgsMultiCurve: public QgsGeometryCollection { public: QgsMultiCurve(); - QString geometryType() const override { return QStringLiteral( "MultiCurve" ); } + QString geometryType() const override; QgsMultiCurve *clone() const override SIP_FACTORY; QgsMultiCurve *toCurveType() const override SIP_FACTORY; diff --git a/src/core/geometry/qgsmultilinestring.cpp b/src/core/geometry/qgsmultilinestring.cpp index c32d476f304..2a1e3e0754a 100644 --- a/src/core/geometry/qgsmultilinestring.cpp +++ b/src/core/geometry/qgsmultilinestring.cpp @@ -28,6 +28,11 @@ QgsMultiLineString::QgsMultiLineString() mWkbType = QgsWkbTypes::MultiLineString; } +QString QgsMultiLineString::geometryType() const +{ + return QStringLiteral( "MultiLineString" ); +} + QgsMultiLineString *QgsMultiLineString::clone() const { return new QgsMultiLineString( *this ); @@ -119,3 +124,8 @@ QgsMultiCurve *QgsMultiLineString::toCurveType() const return multiCurve; } +bool QgsMultiLineString::wktOmitChildType() const +{ + return true; +} + diff --git a/src/core/geometry/qgsmultilinestring.h b/src/core/geometry/qgsmultilinestring.h index d0975b2e096..95dd9c12fd7 100644 --- a/src/core/geometry/qgsmultilinestring.h +++ b/src/core/geometry/qgsmultilinestring.h @@ -29,7 +29,7 @@ class CORE_EXPORT QgsMultiLineString: public QgsMultiCurve { public: QgsMultiLineString(); - QString geometryType() const override { return QStringLiteral( "MultiLineString" ); } + QString geometryType() const override; QgsMultiLineString *clone() const override SIP_FACTORY; bool fromWkt( const QString &wkt ) override; @@ -66,7 +66,7 @@ class CORE_EXPORT QgsMultiLineString: public QgsMultiCurve #endif protected: - bool wktOmitChildType() const override { return true; } + bool wktOmitChildType() const override; }; #endif // QGSMULTILINESTRINGV2_H diff --git a/src/core/geometry/qgsmultipoint.cpp b/src/core/geometry/qgsmultipoint.cpp index 3b44ac2bff7..f4390ebdacc 100644 --- a/src/core/geometry/qgsmultipoint.cpp +++ b/src/core/geometry/qgsmultipoint.cpp @@ -25,6 +25,11 @@ QgsMultiPointV2::QgsMultiPointV2() mWkbType = QgsWkbTypes::MultiPoint; } +QString QgsMultiPointV2::geometryType() const +{ + return QStringLiteral( "MultiPoint" ); +} + QgsMultiPointV2 *QgsMultiPointV2::clone() const { return new QgsMultiPointV2( *this ); @@ -100,6 +105,11 @@ QString QgsMultiPointV2::asJSON( int precision ) const return json; } +int QgsMultiPointV2::nCoordinates() const +{ + return mGeometries.size(); +} + bool QgsMultiPointV2::addGeometry( QgsAbstractGeometry *g ) { if ( !qgsgeometry_cast( g ) ) @@ -115,3 +125,8 @@ QgsAbstractGeometry *QgsMultiPointV2::boundary() const { return nullptr; } + +bool QgsMultiPointV2::wktOmitChildType() const +{ + return true; +} diff --git a/src/core/geometry/qgsmultipoint.h b/src/core/geometry/qgsmultipoint.h index 561649271fb..4c6128f5071 100644 --- a/src/core/geometry/qgsmultipoint.h +++ b/src/core/geometry/qgsmultipoint.h @@ -29,7 +29,7 @@ class CORE_EXPORT QgsMultiPointV2: public QgsGeometryCollection { public: QgsMultiPointV2(); - QString geometryType() const override { return QStringLiteral( "MultiPoint" ); } + QString geometryType() const override; QgsMultiPointV2 *clone() const override SIP_FACTORY; QgsMultiPointV2 *toCurveType() const override SIP_FACTORY; @@ -42,7 +42,7 @@ class CORE_EXPORT QgsMultiPointV2: public QgsGeometryCollection QDomElement asGML3( QDomDocument &doc, int precision = 17, const QString &ns = "gml" ) const override; QString asJSON( int precision = 17 ) const override; - int nCoordinates() const override { return mGeometries.size(); } + int nCoordinates() const override; //! Adds a geometry and takes ownership. Returns true in case of success bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override; @@ -67,7 +67,7 @@ class CORE_EXPORT QgsMultiPointV2: public QgsGeometryCollection #endif protected: - bool wktOmitChildType() const override { return true; } + bool wktOmitChildType() const override; }; diff --git a/src/core/geometry/qgsmultipolygon.cpp b/src/core/geometry/qgsmultipolygon.cpp index d99094184e7..f5e9fcefc9e 100644 --- a/src/core/geometry/qgsmultipolygon.cpp +++ b/src/core/geometry/qgsmultipolygon.cpp @@ -28,6 +28,11 @@ QgsMultiPolygonV2::QgsMultiPolygonV2() mWkbType = QgsWkbTypes::MultiPolygon; } +QString QgsMultiPolygonV2::geometryType() const +{ + return QStringLiteral( "MultiPolygon" ); +} + QgsMultiPolygonV2 *QgsMultiPolygonV2::clone() const { return new QgsMultiPolygonV2( *this ); @@ -169,3 +174,8 @@ QgsAbstractGeometry *QgsMultiPolygonV2::boundary() const } return multiLine; } + +bool QgsMultiPolygonV2::wktOmitChildType() const +{ + return true; +} diff --git a/src/core/geometry/qgsmultipolygon.h b/src/core/geometry/qgsmultipolygon.h index 5b22bb84435..ac87de48aec 100644 --- a/src/core/geometry/qgsmultipolygon.h +++ b/src/core/geometry/qgsmultipolygon.h @@ -29,7 +29,7 @@ class CORE_EXPORT QgsMultiPolygonV2: public QgsMultiSurface { public: QgsMultiPolygonV2(); - QString geometryType() const override { return QStringLiteral( "MultiPolygon" ); } + QString geometryType() const override; QgsMultiPolygonV2 *clone() const override SIP_FACTORY; bool fromWkt( const QString &wkt ) override; @@ -68,7 +68,7 @@ class CORE_EXPORT QgsMultiPolygonV2: public QgsMultiSurface protected: - bool wktOmitChildType() const override { return true; } + bool wktOmitChildType() const override; }; #endif // QGSMULTIPOLYGONV2_H diff --git a/src/core/geometry/qgsmultisurface.cpp b/src/core/geometry/qgsmultisurface.cpp index 194482639f9..a6c97696099 100644 --- a/src/core/geometry/qgsmultisurface.cpp +++ b/src/core/geometry/qgsmultisurface.cpp @@ -29,6 +29,11 @@ QgsMultiSurface::QgsMultiSurface() mWkbType = QgsWkbTypes::MultiSurface; } +QString QgsMultiSurface::geometryType() const +{ + return QStringLiteral( "MultiSurface" ); +} + QgsMultiSurface *QgsMultiSurface::clone() const { return new QgsMultiSurface( *this ); diff --git a/src/core/geometry/qgsmultisurface.h b/src/core/geometry/qgsmultisurface.h index 0f4613e8045..d69cb58265c 100644 --- a/src/core/geometry/qgsmultisurface.h +++ b/src/core/geometry/qgsmultisurface.h @@ -29,7 +29,7 @@ class CORE_EXPORT QgsMultiSurface: public QgsGeometryCollection { public: QgsMultiSurface(); - QString geometryType() const override { return QStringLiteral( "MultiSurface" ); } + QString geometryType() const override; QgsMultiSurface *clone() const override SIP_FACTORY; QgsMultiSurface *toCurveType() const override SIP_FACTORY; diff --git a/src/core/geometry/qgspoint.cpp b/src/core/geometry/qgspoint.cpp index 24bbc63f93f..34534118ad7 100644 --- a/src/core/geometry/qgspoint.cpp +++ b/src/core/geometry/qgspoint.cpp @@ -319,11 +319,23 @@ QgsCoordinateSequence QgsPoint::coordinateSequence() const return cs; } +int QgsPoint::nCoordinates() const +{ + return 1; +} + QgsAbstractGeometry *QgsPoint::boundary() const { return nullptr; } +bool QgsPoint::insertVertex( QgsVertexId position, const QgsPoint &vertex ) +{ + Q_UNUSED( position ); + Q_UNUSED( vertex ); + return false; +} + /*************************************************************************** * This class is considered CRITICAL and any change MUST be accompanied with * full unit tests. @@ -347,6 +359,12 @@ bool QgsPoint::moveVertex( QgsVertexId position, const QgsPoint &newPos ) return true; } +bool QgsPoint::deleteVertex( QgsVertexId position ) +{ + Q_UNUSED( position ); + return false; +} + double QgsPoint::closestSegment( const QgsPoint &pt, QgsPoint &segmentPt, QgsVertexId &vertexAfter, bool *leftOf, double epsilon ) const { Q_UNUSED( pt ); @@ -379,6 +397,32 @@ bool QgsPoint::nextVertex( QgsVertexId &id, QgsPoint &vertex ) const } } +double QgsPoint::vertexAngle( QgsVertexId vertex ) const +{ + Q_UNUSED( vertex ); + return 0.0; +} + +int QgsPoint::vertexCount( int, int ) const +{ + return 1; +} + +int QgsPoint::ringCount( int ) const +{ + return 1; +} + +int QgsPoint::partCount() const +{ + return 1; +} + +QgsPoint QgsPoint::vertexAt( QgsVertexId ) const +{ + return *this; +} + QgsPoint *QgsPoint::toCurveType() const { return clone(); @@ -584,3 +628,23 @@ QgsPoint QgsPoint::project( double distance, double azimuth, double inclination return QgsPoint( mX + dx, mY + dy, mZ + dz, mM, pType ); } + +bool QgsPoint::isEmpty() const +{ + return false; +} + +QgsRectangle QgsPoint::boundingBox() const +{ + return QgsRectangle( mX, mY, mX, mY ); +} + +QString QgsPoint::geometryType() const +{ + return QStringLiteral( "Point" ); +} + +int QgsPoint::dimension() const +{ + return 0; +} diff --git a/src/core/geometry/qgspoint.h b/src/core/geometry/qgspoint.h index 1256b6f7fb3..ade71e1c418 100644 --- a/src/core/geometry/qgspoint.h +++ b/src/core/geometry/qgspoint.h @@ -369,10 +369,10 @@ class CORE_EXPORT QgsPoint: public QgsAbstractGeometry QgsPoint operator-( QgsVector v ) const { QgsPoint r = *this; r.rx() -= v.x(); r.ry() -= v.y(); return r; } //implementation of inherited methods - bool isEmpty() const override { return false; } - QgsRectangle boundingBox() const override { return QgsRectangle( mX, mY, mX, mY ); } - QString geometryType() const override { return QStringLiteral( "Point" ); } - int dimension() const override { return 0; } + bool isEmpty() const override; + QgsRectangle boundingBox() const override; + QString geometryType() const override; + int dimension() const override; QgsPoint *clone() const override SIP_FACTORY; void clear() override; bool fromWkb( QgsConstWkbPtr &wkb ) override; @@ -387,13 +387,13 @@ class CORE_EXPORT QgsPoint: public QgsAbstractGeometry bool transformZ = false ) override; void transform( const QTransform &t ) override; QgsCoordinateSequence coordinateSequence() const override; - int nCoordinates() const override { return 1; } + int nCoordinates() const override; QgsAbstractGeometry *boundary() const override SIP_FACTORY; //low-level editing - bool insertVertex( QgsVertexId position, const QgsPoint &vertex ) override { Q_UNUSED( position ); Q_UNUSED( vertex ); return false; } + bool insertVertex( QgsVertexId position, const QgsPoint &vertex ) override; bool moveVertex( QgsVertexId position, const QgsPoint &newPos ) override; - bool deleteVertex( QgsVertexId position ) override { Q_UNUSED( position ); return false; } + bool deleteVertex( QgsVertexId position ) override; double closestSegment( const QgsPoint &pt, QgsPoint &segmentPt SIP_OUT, QgsVertexId &vertexAfter SIP_OUT, bool *leftOf SIP_OUT = nullptr, double epsilon = 4 * DBL_EPSILON ) const override; bool nextVertex( QgsVertexId &id, QgsPoint &vertex SIP_OUT ) const override; @@ -401,12 +401,12 @@ class CORE_EXPORT QgsPoint: public QgsAbstractGeometry /** Angle undefined. Always returns 0.0 \param vertex the vertex id \returns 0.0*/ - double vertexAngle( QgsVertexId vertex ) const override { Q_UNUSED( vertex ); return 0.0; } + double vertexAngle( QgsVertexId vertex ) const override; - int vertexCount( int /*part*/ = 0, int /*ring*/ = 0 ) const override { return 1; } - int ringCount( int /*part*/ = 0 ) const override { return 1; } - int partCount() const override { return 1; } - QgsPoint vertexAt( QgsVertexId /*id*/ ) const override { return *this; } + int vertexCount( int /*part*/ = 0, int /*ring*/ = 0 ) const override; + int ringCount( int /*part*/ = 0 ) const override; + int partCount() const override; + QgsPoint vertexAt( QgsVertexId /*id*/ ) const override; QgsPoint *toCurveType() const override SIP_FACTORY; bool addZValue( double zValue = 0 ) override; diff --git a/src/core/geometry/qgstriangle.cpp b/src/core/geometry/qgstriangle.cpp index a0553186e52..636079ee16c 100644 --- a/src/core/geometry/qgstriangle.cpp +++ b/src/core/geometry/qgstriangle.cpp @@ -107,6 +107,11 @@ bool QgsTriangle::operator!=( const QgsTriangle &other ) const return !operator==( other ); } +QString QgsTriangle::geometryType() const +{ + return QStringLiteral( "Triangle" ); +} + void QgsTriangle::clear() { QgsCurvePolygon::clear(); diff --git a/src/core/geometry/qgstriangle.h b/src/core/geometry/qgstriangle.h index 4e1ac26a0a3..30342cb43f9 100644 --- a/src/core/geometry/qgstriangle.h +++ b/src/core/geometry/qgstriangle.h @@ -61,7 +61,7 @@ class CORE_EXPORT QgsTriangle : public QgsPolygonV2 bool operator==( const QgsTriangle &other ) const; bool operator!=( const QgsTriangle &other ) const; - QString geometryType() const override { return QStringLiteral( "Triangle" ); } + QString geometryType() const override; QgsTriangle *clone() const override SIP_FACTORY; void clear() override;