2021-06-08 14:26:20 +10:00

341 lines
9.2 KiB
Plaintext

/************************************************************************
* This file has been generated automatically from *
* *
* src/core/geometry/qgscurve.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/
class QgsCurve: QgsAbstractGeometry /Abstract/
{
%Docstring(signature="appended")
Abstract base class for curved geometry type
.. versionadded:: 2.10
%End
%TypeHeaderCode
#include "qgscurve.h"
%End
public:
QgsCurve();
%Docstring
Constructor for QgsCurve.
%End
virtual bool equals( const QgsCurve &other ) const = 0;
%Docstring
Checks whether this curve exactly equals another curve.
.. versionadded:: 3.0
%End
virtual bool operator==( const QgsAbstractGeometry &other ) const;
virtual bool operator!=( const QgsAbstractGeometry &other ) const;
virtual QgsCurve *clone() const = 0 /Factory/;
virtual QgsPoint startPoint() const = 0;
%Docstring
Returns the starting point of the curve.
.. seealso:: :py:func:`endPoint`
%End
virtual QgsPoint endPoint() const = 0;
%Docstring
Returns the end point of the curve.
.. seealso:: :py:func:`startPoint`
%End
virtual bool isClosed() const /HoldGIL/;
%Docstring
Returns ``True`` if the curve is closed.
.. seealso:: :py:func:`isClosed2D`
%End
virtual bool isClosed2D() const /HoldGIL/;
%Docstring
Returns true if the curve is closed.
Unlike isClosed. It looks only for XY coordinates.
.. seealso:: :py:func:`isClosed`
.. versionadded:: 3.20
%End
virtual bool isRing() const /HoldGIL/;
%Docstring
Returns ``True`` if the curve is a ring.
%End
virtual QgsLineString *curveToLine( double tolerance = M_PI_2 / 90, SegmentationToleranceType toleranceType = MaximumAngle ) const = 0 /Factory/;
%Docstring
Returns a new line string geometry corresponding to a segmentized approximation
of the curve.
:param tolerance: segmentation tolerance
:param toleranceType: maximum segmentation angle or maximum difference between approximation and curve
Uses a MaximumAngle tolerance of 1 degrees by default (360
segments in a full circle)
%End
virtual void addToPainterPath( QPainterPath &path ) const = 0;
%Docstring
Adds a curve to a painter path.
%End
virtual QPainterPath asQPainterPath() const;
virtual void drawAsPolygon( QPainter &p ) const = 0;
%Docstring
Draws the curve as a polygon on the specified QPainter.
:param p: destination QPainter
%End
virtual void points( QgsPointSequence &pt /Out/ ) const = 0;
%Docstring
Returns a list of points within the curve.
%End
virtual int numPoints() const = 0;
%Docstring
Returns the number of points in the curve.
%End
int __len__() const;
%Docstring
Returns the number of points in the curve.
%End
%MethodCode
sipRes = sipCpp->numPoints();
%End
//! Ensures that bool(obj) returns ``True`` (otherwise __len__() would be used)
int __bool__() const;
%MethodCode
sipRes = true;
%End
virtual void sumUpArea( double &sum /Out/ ) const = 0;
%Docstring
Sums up the area of the curve by iterating over the vertices (shoelace formula).
%End
virtual QgsCoordinateSequence coordinateSequence() const;
virtual bool nextVertex( QgsVertexId &id, QgsPoint &vertex /Out/ ) const;
virtual void adjacentVertices( QgsVertexId vertex, QgsVertexId &previousVertex /Out/, QgsVertexId &nextVertex /Out/ ) const;
virtual int vertexNumberFromVertexId( QgsVertexId id ) const;
virtual bool pointAt( int node, QgsPoint &point /Out/, QgsVertexId::VertexType &type /Out/ ) const = 0;
%Docstring
Returns the point and vertex id of a point within the curve.
:param node: node number, where the first node is 0
:return: - ``True`` if node exists within the curve
- point: will be set to point at corresponding node in the curve
- type: will be set to the vertex type of the node
%End
virtual int indexOf( const QgsPoint &point ) const = 0;
%Docstring
Returns the index of the first vertex matching the given ``point``, or -1 if a matching
vertex is not found.
.. note::
If the curve has m or z values then the search ``point`` must have exactly matching
m and z values in order to be matched against the curve's vertices.
.. note::
This method only matches against segment vertices, not curve vertices.
.. versionadded:: 3.20
%End
virtual QgsCurve *reversed() const = 0 /Factory/;
%Docstring
Returns a reversed copy of the curve, where the direction of the curve has been flipped.
.. versionadded:: 2.14
%End
virtual QgsAbstractGeometry *boundary() const /Factory/;
virtual QString asKml( int precision = 17 ) const;
virtual QgsCurve *segmentize( double tolerance = M_PI_2 / 90, SegmentationToleranceType toleranceType = MaximumAngle ) const /Factory/;
%Docstring
Returns a geometry without curves. Caller takes ownership
:param tolerance: segmentation tolerance
:param toleranceType: maximum segmentation angle or maximum difference between approximation and curve
%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 QgsCurve *toCurveType() const /Factory/;
void normalize() final /HoldGIL/;
virtual QgsRectangle boundingBox() const;
virtual bool isValid( QString &error /Out/, int flags = 0 ) const;
virtual double xAt( int index ) const = 0;
%Docstring
Returns the x-coordinate of the specified node in the line string.
:param index: index of node, where the first node in the line is 0
:return: x-coordinate of node, or 0.0 if index is out of bounds
%End
virtual double yAt( int index ) const = 0;
%Docstring
Returns the y-coordinate of the specified node in the line string.
:param index: index of node, where the first node in the line is 0
:return: y-coordinate of node, or 0.0 if index is out of bounds
%End
virtual QPolygonF asQPolygonF() const;
%Docstring
Returns a QPolygonF representing the points.
%End
virtual QgsPoint *interpolatePoint( double distance ) const = 0 /Factory/;
%Docstring
Returns an interpolated point on the curve at the specified ``distance``.
If z or m values are present, the output z and m will be interpolated using
the existing vertices' z or m values.
If distance is negative, or is greater than the length of the curve, ``None``
will be returned.
.. versionadded:: 3.4
%End
virtual QgsCurve *curveSubstring( double startDistance, double endDistance ) const = 0 /Factory/;
%Docstring
Returns a new curve representing a substring of this curve.
The ``startDistance`` and ``endDistance`` arguments specify the length along the curve
which the substring should start and end at. If the ``endDistance`` is greater than the
total length of the curve then any "extra" length will be ignored.
If z or m values are present, the output z and m will be interpolated using
the existing vertices' z or m values.
.. versionadded:: 3.4
%End
double straightDistance2d() const;
%Docstring
Returns the straight distance of the curve, i.e. the direct/euclidean distance
between the first and last vertex of the curve. (Also known as
"as the crow flies" distance).
.. versionadded:: 3.2
%End
double sinuosity() const;
%Docstring
Returns the curve sinuosity, which is the ratio of the curve :py:func:`~QgsCurve.length` to curve
:py:func:`~QgsCurve.straightDistance2d`. Larger numbers indicate a more "sinuous" curve (i.e. more
"bendy"). The minimum value returned of 1.0 indicates a perfectly straight curve.
If a curve :py:func:`~QgsCurve.isClosed`, it has infinite sinuosity and will return NaN.
.. versionadded:: 3.2
%End
enum Orientation
{
Clockwise,
CounterClockwise,
};
Orientation orientation() const;
%Docstring
Returns the curve's orientation, e.g. clockwise or counter-clockwise.
.. warning::
The result is not predictable for non-closed curves.
.. versionadded:: 3.6
%End
virtual void scroll( int firstVertexIndex ) = 0;
%Docstring
Scrolls the curve vertices so that they start with the vertex at the given index.
.. warning::
This should only be called on closed curves, or the shape of the curve will be altered and
the result is undefined.
.. warning::
The ``firstVertexIndex`` must correspond to a segment vertex and not a curve point or the result
is undefined.
.. versionadded:: 3.20
%End
protected:
virtual void clearCache() const;
virtual int childCount() const;
virtual QgsPoint childPoint( int index ) const;
};
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/geometry/qgscurve.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/