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;
65 const std::shared_ptr<const CoordinateSequence>& getSharedCoordinates()
const;
67 const SimpleCurve* getCurveN(std::size_t)
const override;
73 virtual std::unique_ptr<Point> getEndPoint()
const;
75 const Envelope* getEnvelopeInternal()
const override
80 std::size_t getNumCurves()
const override;
82 std::size_t getNumPoints()
const override;
84 virtual std::unique_ptr<Point> getPointN(std::size_t n)
const;
90 virtual std::unique_ptr<Point> getStartPoint()
const;
92 bool hasM()
const override;
94 bool hasZ()
const override;
96 bool isClosed()
const override;
98 virtual bool isCoordinate(CoordinateXY& pt)
const;
100 virtual bool isCurved()
const = 0;
102 bool isEmpty()
const override;
111 void normalize()
override;
115 SimpleCurve(
const SimpleCurve& other);
117 SimpleCurve(
const std::shared_ptr<const CoordinateSequence>& newCoords,
119 const GeometryFactory& factory);
121 SimpleCurve(std::unique_ptr<CoordinateSequence>&& newCoords,
123 const GeometryFactory& factory);
125 int compareToSameClass(
const Geometry* ls)
const override;
127 Envelope computeEnvelopeInternal(
bool isLinear)
const;
129 std::shared_ptr<const CoordinateSequence> points;
130 mutable Envelope envelope;
135 void normalizeClosed();
Basic namespace for all GEOS functionalities.
Definition geos.h:38