Move overriden methods from headers to cpp files

Since they can't be inlined anyway
This commit is contained in:
Nyall Dawson 2017-09-19 14:53:02 +10:00
parent f387210e4a
commit 9e61cd63df
32 changed files with 221 additions and 39 deletions

View File

@ -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()

View File

@ -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 );

View File

@ -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;

View File

@ -21,6 +21,7 @@ class QgsMultiCurve: QgsGeometryCollection
public:
QgsMultiCurve();
virtual QString geometryType() const;
virtual QgsMultiCurve *clone() const /Factory/;
virtual QgsMultiCurve *toCurveType() const /Factory/;

View File

@ -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;
};
/************************************************************************

View File

@ -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;
};
/************************************************************************

View File

@ -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;
};
/************************************************************************

View File

@ -21,6 +21,7 @@ class QgsMultiSurface: QgsGeometryCollection
public:
QgsMultiSurface();
virtual QString geometryType() const;
virtual QgsMultiSurface *clone() const /Factory/;
virtual QgsMultiSurface *toCurveType() const /Factory/;

View File

@ -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/;

View File

@ -56,6 +56,7 @@ class QgsTriangle : QgsPolygonV2
%End
virtual QString geometryType() const;
virtual QgsTriangle *clone() const /Factory/;
virtual void clear();

View File

@ -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<QgsPoint> QgsCircle::northQuadrant() const
{
QVector<QgsPoint> quad;

View File

@ -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;}

View File

@ -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;

View File

@ -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;

View File

@ -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 ) )

View File

@ -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;

View File

@ -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.

View File

@ -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;

View File

@ -28,6 +28,11 @@ QgsMultiCurve::QgsMultiCurve()
mWkbType = QgsWkbTypes::MultiCurve;
}
QString QgsMultiCurve::geometryType() const
{
return QStringLiteral( "MultiCurve" );
}
QgsMultiCurve *QgsMultiCurve::clone() const
{
return new QgsMultiCurve( *this );

View File

@ -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;

View File

@ -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;
}

View File

@ -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

View File

@ -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<QgsPoint *>( g ) )
@ -115,3 +125,8 @@ QgsAbstractGeometry *QgsMultiPointV2::boundary() const
{
return nullptr;
}
bool QgsMultiPointV2::wktOmitChildType() const
{
return true;
}

View File

@ -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;
};

View File

@ -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;
}

View File

@ -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

View File

@ -29,6 +29,11 @@ QgsMultiSurface::QgsMultiSurface()
mWkbType = QgsWkbTypes::MultiSurface;
}
QString QgsMultiSurface::geometryType() const
{
return QStringLiteral( "MultiSurface" );
}
QgsMultiSurface *QgsMultiSurface::clone() const
{
return new QgsMultiSurface( *this );

View File

@ -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;

View File

@ -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;
}

View File

@ -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;

View File

@ -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();

View File

@ -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;