This commit is contained in:
Nyall Dawson 2020-09-18 09:06:10 +10:00
parent c293d2c60d
commit fe70bb2440
20 changed files with 144 additions and 13 deletions

View File

@ -842,13 +842,17 @@ Clears any cached parameters associated with the geometry, e.g., bounding boxes
struct QgsVertexId struct QgsVertexId
{ {
enum VertexType enum VertexType
{ {
SegmentVertex, SegmentVertex,
CurveVertex CurveVertex,
}; };
explicit QgsVertexId( int _part = -1, int _ring = -1, int _vertex = -1, VertexType _type = SegmentVertex ); explicit QgsVertexId( int _part = -1, int _ring = -1, int _vertex = -1, VertexType _type = SegmentVertex ) /HoldGIL/;
%Docstring
Constructor for QgsVertexId.
%End
bool isValid() const /HoldGIL/; bool isValid() const /HoldGIL/;
%Docstring %Docstring
@ -857,14 +861,35 @@ Returns ``True`` if the vertex id is valid
bool operator==( QgsVertexId other ) const /HoldGIL/; bool operator==( QgsVertexId other ) const /HoldGIL/;
bool operator!=( QgsVertexId other ) const /HoldGIL/; bool operator!=( QgsVertexId other ) const /HoldGIL/;
bool partEqual( QgsVertexId o ) const /HoldGIL/; bool partEqual( QgsVertexId o ) const /HoldGIL/;
%Docstring
Returns ``True`` if this vertex ID belongs to the same part as another vertex ID.
%End
bool ringEqual( QgsVertexId o ) const /HoldGIL/; bool ringEqual( QgsVertexId o ) const /HoldGIL/;
%Docstring
Returns ``True`` if this vertex ID belongs to the same ring as another vertex ID (i.e. the part
and ring number are equal).
%End
bool vertexEqual( QgsVertexId o ) const /HoldGIL/; bool vertexEqual( QgsVertexId o ) const /HoldGIL/;
%Docstring
Returns ``True`` if this vertex ID corresponds to the same vertex as another vertex ID (i.e. the part,
ring number and vertex number are equal).
%End
bool isValid( const QgsAbstractGeometry *geom ) const /HoldGIL/; bool isValid( const QgsAbstractGeometry *geom ) const /HoldGIL/;
%Docstring
Returns ``True`` if this vertex ID is valid for the specified ``geom``.
%End
int part; int part;
int ring; int ring;
int vertex; int vertex;
VertexType type; VertexType type;
SIP_PYOBJECT __repr__(); SIP_PYOBJECT __repr__();

View File

@ -24,7 +24,13 @@ Geometry collection
#include "qgsgeometrycollection.h" #include "qgsgeometrycollection.h"
%End %End
public: public:
QgsGeometryCollection() /HoldGIL/; QgsGeometryCollection() /HoldGIL/;
%Docstring
Constructor for an empty geometry collection.
%End
QgsGeometryCollection( const QgsGeometryCollection &c ); QgsGeometryCollection( const QgsGeometryCollection &c );
~QgsGeometryCollection(); ~QgsGeometryCollection();

View File

@ -25,7 +25,11 @@ Line string geometry type, with support for z-dimension and m-values.
#include "qgslinestring.h" #include "qgslinestring.h"
%End %End
public: public:
QgsLineString() /HoldGIL/; QgsLineString() /HoldGIL/;
%Docstring
Constructor for an empty linestring geometry.
%End
QgsLineString( const QVector<QgsPoint> &points ) /HoldGIL/; QgsLineString( const QVector<QgsPoint> &points ) /HoldGIL/;
%Docstring %Docstring

View File

@ -21,7 +21,11 @@ Multi line string geometry collection.
#include "qgsmultilinestring.h" #include "qgsmultilinestring.h"
%End %End
public: public:
QgsMultiLineString() /HoldGIL/; QgsMultiLineString() /HoldGIL/;
%Docstring
Constructor for an empty multilinestring geometry.
%End

View File

@ -20,8 +20,11 @@ Multi point geometry collection.
#include "qgsmultipoint.h" #include "qgsmultipoint.h"
%End %End
public: public:
QgsMultiPoint() /HoldGIL/;
QgsMultiPoint() /HoldGIL/;
%Docstring
Constructor for an empty multipoint geometry.
%End
SIP_PYOBJECT pointN( int index ) /TypeHint="QgsPoint"/; SIP_PYOBJECT pointN( int index ) /TypeHint="QgsPoint"/;

View File

@ -21,7 +21,11 @@ Multi polygon geometry collection.
#include "qgsmultipolygon.h" #include "qgsmultipolygon.h"
%End %End
public: public:
QgsMultiPolygon() /HoldGIL/; QgsMultiPolygon() /HoldGIL/;
%Docstring
Constructor for an empty multipolygon geometry.
%End

View File

@ -22,8 +22,11 @@ Multi surface geometry collection.
#include "qgsmultisurface.h" #include "qgsmultisurface.h"
%End %End
public: public:
QgsMultiSurface() /HoldGIL/;
QgsMultiSurface() /HoldGIL/;
%Docstring
Constructor for an empty multisurface geometry.
%End
SIP_PYOBJECT surfaceN( int index ) /TypeHint="QgsSurface"/; SIP_PYOBJECT surfaceN( int index ) /TypeHint="QgsSurface"/;

View File

@ -22,7 +22,12 @@ Polygon geometry type.
#include "qgspolygon.h" #include "qgspolygon.h"
%End %End
public: public:
QgsPolygon() /HoldGIL/; QgsPolygon() /HoldGIL/;
%Docstring
Constructor for an empty polygon geometry.
%End
QgsPolygon( QgsLineString *exterior /Transfer/, const QList< QgsLineString * > &rings /Transfer/ = QList< QgsLineString * >() ) /HoldGIL/; QgsPolygon( QgsLineString *exterior /Transfer/, const QList< QgsLineString * > &rings /Transfer/ = QList< QgsLineString * >() ) /HoldGIL/;
%Docstring %Docstring

View File

@ -24,7 +24,11 @@ This class allows the creation of simple quadrilateral (which does not self-inte
#include "qgsquadrilateral.h" #include "qgsquadrilateral.h"
%End %End
public: public:
QgsQuadrilateral() /HoldGIL/; QgsQuadrilateral() /HoldGIL/;
%Docstring
Constructor for an empty quadrilateral geometry.
%End
QgsQuadrilateral( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &p3, const QgsPoint &p4 ) /HoldGIL/; QgsQuadrilateral( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &p3, const QgsPoint &p4 ) /HoldGIL/;
%Docstring %Docstring

View File

@ -21,7 +21,11 @@ Triangle geometry type.
#include "qgstriangle.h" #include "qgstriangle.h"
%End %End
public: public:
QgsTriangle() /HoldGIL/; QgsTriangle() /HoldGIL/;
%Docstring
Constructor for an empty triangle geometry.
%End
QgsTriangle( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &p3 ) /HoldGIL/; QgsTriangle( const QgsPoint &p1, const QgsPoint &p2, const QgsPoint &p3 ) /HoldGIL/;
%Docstring %Docstring

View File

@ -1048,17 +1048,24 @@ class CORE_EXPORT QgsAbstractGeometry
*/ */
struct CORE_EXPORT QgsVertexId struct CORE_EXPORT QgsVertexId
{ {
/**
* Type of vertex
*/
enum VertexType enum VertexType
{ {
SegmentVertex = 1, //start / endpoint of a segment SegmentVertex = 1, //!< The actual start or end point of a segment
CurveVertex CurveVertex, //!< An intermediate point on a segment defining the curvature of the segment
}; };
explicit QgsVertexId( int _part = -1, int _ring = -1, int _vertex = -1, VertexType _type = SegmentVertex ) /**
: part( _part ) * Constructor for QgsVertexId.
, ring( _ring ) */
, vertex( _vertex ) explicit QgsVertexId( int _part = -1, int _ring = -1, int _vertex = -1, VertexType _type = SegmentVertex ) SIP_HOLDGIL
, type( _type ) : part( _part )
, ring( _ring )
, vertex( _vertex )
, type( _type )
{} {}
/** /**
@ -1074,18 +1081,36 @@ struct CORE_EXPORT QgsVertexId
{ {
return part != other.part || ring != other.ring || vertex != other.vertex; return part != other.part || ring != other.ring || vertex != other.vertex;
} }
/**
* Returns TRUE if this vertex ID belongs to the same part as another vertex ID.
*/
bool partEqual( QgsVertexId o ) const SIP_HOLDGIL bool partEqual( QgsVertexId o ) const SIP_HOLDGIL
{ {
return part >= 0 && o.part == part; return part >= 0 && o.part == part;
} }
/**
* Returns TRUE if this vertex ID belongs to the same ring as another vertex ID (i.e. the part
* and ring number are equal).
*/
bool ringEqual( QgsVertexId o ) const SIP_HOLDGIL bool ringEqual( QgsVertexId o ) const SIP_HOLDGIL
{ {
return partEqual( o ) && ( ring >= 0 && o.ring == ring ); return partEqual( o ) && ( ring >= 0 && o.ring == ring );
} }
/**
* Returns TRUE if this vertex ID corresponds to the same vertex as another vertex ID (i.e. the part,
* ring number and vertex number are equal).
*/
bool vertexEqual( QgsVertexId o ) const SIP_HOLDGIL bool vertexEqual( QgsVertexId o ) const SIP_HOLDGIL
{ {
return ringEqual( o ) && ( vertex >= 0 && o.ring == ring ); return ringEqual( o ) && ( vertex >= 0 && o.ring == ring );
} }
/**
* Returns TRUE if this vertex ID is valid for the specified \a geom.
*/
bool isValid( const QgsAbstractGeometry *geom ) const SIP_HOLDGIL bool isValid( const QgsAbstractGeometry *geom ) const SIP_HOLDGIL
{ {
return ( part >= 0 && part < geom->partCount() ) && return ( part >= 0 && part < geom->partCount() ) &&
@ -1093,9 +1118,16 @@ struct CORE_EXPORT QgsVertexId
( vertex < 0 || vertex < geom->vertexCount( part, ring ) ); ( vertex < 0 || vertex < geom->vertexCount( part, ring ) );
} }
//! Part number
int part; int part;
//! Ring number
int ring; int ring;
//! Vertex number
int vertex; int vertex;
//! Vertex type
VertexType type; VertexType type;
#ifdef SIP_RUN #ifdef SIP_RUN

View File

@ -35,7 +35,13 @@ class QgsPoint;
class CORE_EXPORT QgsGeometryCollection: public QgsAbstractGeometry class CORE_EXPORT QgsGeometryCollection: public QgsAbstractGeometry
{ {
public: public:
/**
* Constructor for an empty geometry collection.
*/
QgsGeometryCollection() SIP_HOLDGIL; QgsGeometryCollection() SIP_HOLDGIL;
QgsGeometryCollection( const QgsGeometryCollection &c ); QgsGeometryCollection( const QgsGeometryCollection &c );
QgsGeometryCollection &operator=( const QgsGeometryCollection &c ); QgsGeometryCollection &operator=( const QgsGeometryCollection &c );
~QgsGeometryCollection() override; ~QgsGeometryCollection() override;

View File

@ -43,6 +43,10 @@ class QgsLineSegment2D;
class CORE_EXPORT QgsLineString: public QgsCurve class CORE_EXPORT QgsLineString: public QgsCurve
{ {
public: public:
/**
* Constructor for an empty linestring geometry.
*/
QgsLineString() SIP_HOLDGIL; QgsLineString() SIP_HOLDGIL;
/** /**

View File

@ -31,6 +31,10 @@ class QgsLineString;
class CORE_EXPORT QgsMultiLineString: public QgsMultiCurve class CORE_EXPORT QgsMultiLineString: public QgsMultiCurve
{ {
public: public:
/**
* Constructor for an empty multilinestring geometry.
*/
QgsMultiLineString() SIP_HOLDGIL; QgsMultiLineString() SIP_HOLDGIL;

View File

@ -29,8 +29,11 @@ email : marco.hugentobler at sourcepole dot com
class CORE_EXPORT QgsMultiPoint: public QgsGeometryCollection class CORE_EXPORT QgsMultiPoint: public QgsGeometryCollection
{ {
public: public:
QgsMultiPoint() SIP_HOLDGIL;
/**
* Constructor for an empty multipoint geometry.
*/
QgsMultiPoint() SIP_HOLDGIL;
#ifndef SIP_RUN #ifndef SIP_RUN

View File

@ -31,6 +31,10 @@ class QgsPolygon;
class CORE_EXPORT QgsMultiPolygon: public QgsMultiSurface class CORE_EXPORT QgsMultiPolygon: public QgsMultiSurface
{ {
public: public:
/**
* Constructor for an empty multipolygon geometry.
*/
QgsMultiPolygon() SIP_HOLDGIL; QgsMultiPolygon() SIP_HOLDGIL;

View File

@ -32,8 +32,11 @@ class QgsSurface;
class CORE_EXPORT QgsMultiSurface: public QgsGeometryCollection class CORE_EXPORT QgsMultiSurface: public QgsGeometryCollection
{ {
public: public:
QgsMultiSurface() SIP_HOLDGIL;
/**
* Constructor for an empty multisurface geometry.
*/
QgsMultiSurface() SIP_HOLDGIL;
#ifndef SIP_RUN #ifndef SIP_RUN

View File

@ -33,6 +33,11 @@ class QgsLineString;
class CORE_EXPORT QgsPolygon: public QgsCurvePolygon class CORE_EXPORT QgsPolygon: public QgsCurvePolygon
{ {
public: public:
/**
* Constructor for an empty polygon geometry.
*/
QgsPolygon() SIP_HOLDGIL; QgsPolygon() SIP_HOLDGIL;
/** /**

View File

@ -35,6 +35,10 @@
class CORE_EXPORT QgsQuadrilateral class CORE_EXPORT QgsQuadrilateral
{ {
public: public:
/**
* Constructor for an empty quadrilateral geometry.
*/
QgsQuadrilateral() SIP_HOLDGIL; QgsQuadrilateral() SIP_HOLDGIL;
/** /**

View File

@ -33,6 +33,10 @@
class CORE_EXPORT QgsTriangle : public QgsPolygon class CORE_EXPORT QgsTriangle : public QgsPolygon
{ {
public: public:
/**
* Constructor for an empty triangle geometry.
*/
QgsTriangle() SIP_HOLDGIL; QgsTriangle() SIP_HOLDGIL;
/** /**