20#include <geos/geom/Curve.h>
21#include <geos/geom/Geometry.h>
26class GEOS_DLL SimpleCurve :
public Curve {
29 using Curve::apply_ro;
30 using Curve::apply_rw;
32 void apply_ro(CoordinateFilter* filter)
const override;
34 void apply_ro(CoordinateSequenceFilter& filter)
const override;
36 void apply_rw(CoordinateSequenceFilter& filter)
override;
38 void apply_rw(
const CoordinateFilter* filter)
override;
40 bool equalsExact(
const Geometry* other,
double tolerance = 0)
43 bool equalsIdentical(
const Geometry* other)
const override;
50 std::unique_ptr<Geometry> getBoundary()
const override;
52 const CoordinateXY* getCoordinate()
const override;
55 uint8_t getCoordinateDimension()
const override;
57 virtual const Coordinate& getCoordinateN(std::size_t n)
const;
59 std::unique_ptr<CoordinateSequence> getCoordinates()
const override;
62 const CoordinateSequence* getCoordinatesRO()
const;
64 const SimpleCurve* getCurveN(std::size_t)
const override;
70 virtual std::unique_ptr<Point> getEndPoint()
const;
72 const Envelope* getEnvelopeInternal()
const override
77 std::size_t getNumCurves()
const override;
79 std::size_t getNumPoints()
const override;
81 virtual std::unique_ptr<Point> getPointN(std::size_t n)
const;
87 virtual std::unique_ptr<Point> getStartPoint()
const;
89 bool hasM()
const override;
91 bool hasZ()
const override;
93 bool isClosed()
const override;
95 virtual bool isCoordinate(CoordinateXY& pt)
const;
97 virtual bool isCurved()
const = 0;
99 bool isEmpty()
const override;
108 void normalize()
override;
117 std::unique_ptr<CoordinateSequence> releaseCoordinates();
121 SimpleCurve(
const SimpleCurve& other);
123 SimpleCurve(std::unique_ptr<CoordinateSequence>&& newCoords,
125 const GeometryFactory& factory);
127 int compareToSameClass(
const Geometry* ls)
const override;
129 Envelope computeEnvelopeInternal(
bool isLinear)
const;
132 std::unique_ptr<CoordinateSequence> points;
133 mutable Envelope envelope;
138 void normalizeClosed();
Basic namespace for all GEOS functionalities.
Definition geos.h:39