21 #include "qgis_core.h" 
   25 #include <QPainterPath> 
  104     virtual 
void addToPainterPath( QPainterPath &path ) const = 0;
 
  105     QPainterPath asQPainterPath() const override;
 
  111     virtual 
void drawAsPolygon( QPainter &p ) const = 0;
 
  121     virtual 
int numPoints() const = 0;
 
  126     Returns the number of points in the curve.
 
  129     sipRes = sipCpp->numPoints();
 
  133     int __bool__() 
const;
 
  178     QString asKml( 
int precision = 17 ) const override;
 
  187     int vertexCount( 
int part = 0, 
int ring = 0 ) const override;
 
  188     int ringCount( 
int part = 0 ) const override;
 
  189     int partCount() const override;
 
  195     bool isValid( QString &error 
SIP_OUT, 
Qgis::GeometryValidityFlags flags = 
Qgis::GeometryValidityFlags() ) const override;
 
  202     virtual 
double xAt( 
int index ) const = 0;
 
  209     virtual 
double yAt( 
int index ) const = 0;
 
  214     virtual QPolygonF asQPolygonF() const;
 
  250     double straightDistance2d() const;
 
  261     double sinuosity() const;
 
  277     Orientation orientation() 
const;
 
  290     virtual void scroll( 
int firstVertexIndex ) = 0;
 
  309         return static_cast<const QgsCurve *
>( geom );
 
  324     virtual std::tuple< std::unique_ptr< QgsCurve >, std::unique_ptr< QgsCurve > > 
splitCurveAtVertex( 
int index ) 
const = 0;
 
  341     bool snapToGridPrivate( 
double hSpacing, 
double vSpacing, 
double dSpacing, 
double mSpacing,
 
  342                             const QVector<double> &srcX, 
const QVector<double> &srcY, 
const QVector<double> &srcZ, 
const QVector<double> &srcM,
 
  343                             QVector<double> &outX, QVector<double> &outY, QVector<double> &outZ, QVector<double> &outM ) 
const;
 
  353     mutable bool mHasCachedValidity = 
false;
 
  354     mutable QString mValidityFailureReason;
 
  356     friend class TestQgsGeometry;
 
The Qgis class provides global constants for use throughout the application.
VertexType
Types of vertex.
Abstract base class for all geometries.
virtual QgsPoint childPoint(int index) const
Returns point at index (for geometries without child geometries - i.e.
virtual QgsAbstractGeometry * boundary() const =0
Returns the closure of the combinatorial boundary of the geometry (ie the topological boundary of the...
SegmentationToleranceType
Segmentation tolerance as maximum angle or maximum difference between approximation and circle.
virtual int vertexNumberFromVertexId(QgsVertexId id) const =0
Returns the vertex number corresponding to a vertex id.
virtual int childCount() const
Returns number of child geometries (for geometries with child geometries) or child points (for geomet...
virtual void adjacentVertices(QgsVertexId vertex, QgsVertexId &previousVertex, QgsVertexId &nextVertex) const =0
Returns the vertices adjacent to a specified vertex within a geometry.
virtual void clearCache() const
Clears any cached parameters associated with the geometry, e.g., bounding boxes.
virtual bool operator!=(const QgsAbstractGeometry &other) const =0
virtual QgsCoordinateSequence coordinateSequence() const =0
Retrieves the sequence of geometries, rings and nodes.
QgsWkbTypes::Type wkbType() const SIP_HOLDGIL
Returns the WKB type of the geometry.
virtual bool operator==(const QgsAbstractGeometry &other) const =0
virtual bool nextVertex(QgsVertexId &id, QgsPoint &vertex) const =0
Returns next vertex id and coordinates.
Abstract base class for curved geometry type.
virtual bool equals(const QgsCurve &other) const =0
Checks whether this curve exactly equals another curve.
virtual void scroll(int firstVertexIndex)=0
Scrolls the curve vertices so that they start with the vertex at the given index.
virtual bool pointAt(int node, QgsPoint &point, Qgis::VertexType &type) const =0
Returns the point and vertex id of a point within the curve.
virtual int indexOf(const QgsPoint &point) const =0
Returns the index of the first vertex matching the given point, or -1 if a matching vertex is not fou...
virtual void sumUpArea(double &sum) const =0
Sums up the area of the curve by iterating over the vertices (shoelace formula).
static const QgsCurve * cast(const QgsAbstractGeometry *geom)
Cast the geom to a QgsCurve.
QgsCurve * clone() const override=0
Clones the geometry by performing a deep copy.
Orientation
Curve orientation.
@ Clockwise
Clockwise orientation.
@ CounterClockwise
Counter-clockwise orientation.
virtual QgsPoint startPoint() const =0
Returns the starting point of the curve.
virtual std::tuple< std::unique_ptr< QgsCurve >, std::unique_ptr< QgsCurve > > splitCurveAtVertex(int index) const =0
Splits the curve at the specified vertex index, returning two curves which represent the portion of t...
QgsRectangle mBoundingBox
Cached bounding box.
virtual QgsPoint endPoint() const =0
Returns the end point of the curve.
virtual QgsCurve * reversed() const =0
Returns a reversed copy of the curve, where the direction of the curve has been flipped.
QgsCurve()=default
Constructor for QgsCurve.
Line string geometry type, with support for z-dimension and m-values.
Point geometry type, with support for z-dimension and m-values.
A rectangle specified with double values.
static bool isSingleType(Type type) SIP_HOLDGIL
Returns true if the WKB type is a single type.
static GeometryType geometryType(Type type) SIP_HOLDGIL
Returns the geometry type for a WKB type, e.g., both MultiPolygon and CurvePolygon would have a Polyg...
Type
The WKB type describes the number of dimensions a geometry has.
QVector< QgsRingSequence > QgsCoordinateSequence
QVector< QgsPoint > QgsPointSequence
Utility class for identifying a unique vertex within a geometry.