QGIS API Documentation  2.12.0-Lyon
qgscurvev2.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgscurvev2.h
3  ------------
4  begin : September 2014
5  copyright : (C) 2014 by Marco Hugentobler
6  email : marco at sourcepole dot ch
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef QGSCURVEV2_H
19 #define QGSCURVEV2_H
20 
21 #include "qgsabstractgeometryv2.h"
22 #include "qgspointv2.h"
23 
24 class QgsLineStringV2;
25 class QPainterPath;
26 
32 class CORE_EXPORT QgsCurveV2: public QgsAbstractGeometryV2
33 {
34  public:
35  QgsCurveV2();
36  virtual ~QgsCurveV2();
37 
41  virtual QgsPointV2 startPoint() const = 0;
42 
46  virtual QgsPointV2 endPoint() const = 0;
47 
50  virtual bool isClosed() const;
51 
54  virtual bool isRing() const;
55 
59  virtual QgsLineStringV2* curveToLine() const = 0;
60 
63  virtual void addToPainterPath( QPainterPath& path ) const = 0;
64 
68  virtual void drawAsPolygon( QPainter& p ) const = 0;
69 
72  virtual void points( QList<QgsPointV2>& pt ) const = 0;
73 
76  virtual int numPoints() const = 0;
77 
81  virtual void sumUpArea( double& sum ) const = 0;
82 
83  virtual void coordinateSequence( QList< QList< QList< QgsPointV2 > > >& coord ) const override;
84  virtual bool nextVertex( QgsVertexId& id, QgsPointV2& vertex ) const override;
85 
88  virtual bool pointAt( int i, QgsPointV2& vertex, QgsVertexId::VertexType& type ) const = 0;
89 
90  QgsAbstractGeometryV2* segmentize() const override;
91 
92  virtual int vertexCount( int /*part*/ = 0, int /*ring*/ = 0 ) const override { return numPoints(); }
93  virtual int ringCount( int /*part*/ = 0 ) const override { return numPoints() > 0 ? 1 : 0; }
94  virtual int partCount() const override { return numPoints() > 0 ? 1 : 0; }
95  virtual QgsPointV2 vertexAt( const QgsVertexId& id ) const override;
96 };
97 
98 #endif // QGSCURVEV2_H
virtual int partCount() const override
Definition: qgscurvev2.h:94
static QVariant pointAt(const QVariantList &values, const QgsExpressionContext *context, QgsExpression *parent)
Abstract base class for all geometries.
virtual int ringCount(int=0) const override
Definition: qgscurvev2.h:93
Utility class for identifying a unique vertex within a geometry.
Line string geometry type.
virtual int vertexCount(int=0, int=0) const override
Definition: qgscurvev2.h:92
Point geometry type.
Definition: qgspointv2.h:29
virtual bool nextVertex(QgsVertexId &id, QgsPointV2 &vertex) const =0
Returns next vertex id and coordinates.
virtual QgsPointV2 vertexAt(const QgsVertexId &id) const =0
Returns the point corresponding to a specified vertex id.
virtual QgsAbstractGeometryV2 * segmentize() const
Returns a version of the geometry without curves.
virtual void coordinateSequence(QList< QList< QList< QgsPointV2 > > > &coord) const =0
Retrieves the sequence of geometries, rings and nodes.
Abstract base class for curved geometry type.
Definition: qgscurvev2.h:32