16 #ifndef GEOS_GEOM_COORDINATESEQUENCE_H
17 #define GEOS_GEOM_COORDINATESEQUENCE_H
19 #include <geos/export.h>
20 #include <geos/platform.h>
21 #include <geos/inline.h>
23 #include <geos/geom/Coordinate.h>
33 class CoordinateFilter;
70 typedef std::auto_ptr<CoordinateSequence> AutoPtr;
86 virtual const Coordinate& getAt(std::size_t i)
const=0;
90 return getAt(size()-1);
98 const Coordinate& operator[] (std::size_t i)
const {
105 virtual void getAt(std::size_t i, Coordinate& c)
const=0;
112 virtual std::size_t getSize()
const=0;
114 size_t size()
const {
return getSize(); }
136 virtual const std::vector<Coordinate>* toVector()
const=0;
142 virtual void toVector(std::vector<Coordinate>& coords)
const=0;
151 void add(
const std::vector<Coordinate>* vc,
bool allowRepeated);
168 void add(
const CoordinateSequence *cl,
bool allowRepeated,
178 virtual void add(
const Coordinate& c,
bool allowRepeated);
191 virtual void add(std::size_t i,
const Coordinate& coord,
bool allowRepeated)=0;
194 virtual bool isEmpty()
const=0;
197 virtual void add(
const Coordinate& c)=0;
206 virtual void setAt(
const Coordinate& c, std::size_t pos)=0;
209 virtual void deleteAt(std::size_t pos)=0;
212 virtual std::string toString()
const=0;
215 virtual void setPoints(
const std::vector<Coordinate> &v)=0;
218 bool hasRepeatedPoints()
const;
221 const Coordinate* minCoordinate()
const;
232 static CoordinateSequence* removeRepeatedPoints(
233 const CoordinateSequence *cl);
239 virtual CoordinateSequence& removeRepeatedPoints()=0;
245 static bool hasRepeatedPoints(
const CoordinateSequence *cl);
251 static CoordinateSequence* atLeastNCoordinatesOrNothing(std::size_t n,
252 CoordinateSequence *c);
259 static const Coordinate* minCoordinate(CoordinateSequence *cl);
266 static int indexOf(
const Coordinate *coordinate,
267 const CoordinateSequence *cl);
274 static bool equals(
const CoordinateSequence *cl1,
275 const CoordinateSequence *cl2);
278 static void scroll(CoordinateSequence *cl,
const Coordinate *firstCoordinate);
297 static int increasingDirection(
const CoordinateSequence& pts);
300 static void reverse(CoordinateSequence *cl);
311 virtual std::size_t getDimension()
const=0;
323 virtual double getOrdinate(std::size_t index, std::size_t ordinateIndex)
const=0;
331 virtual double getX(std::size_t index)
const {
return getOrdinate(index, X); }
339 virtual double getY(std::size_t index)
const {
return getOrdinate(index, Y); }
350 virtual void setOrdinate(std::size_t index, std::size_t ordinateIndex,
double value)=0;
359 virtual void expandEnvelope(
Envelope &env)
const;
376 for(std::size_t i=0, n=size(); i<n; ++i)
386 GEOS_DLL std::ostream&
operator<< (std::ostream& os,
const CoordinateSequence& cs);
388 GEOS_DLL
bool operator== (
const CoordinateSequence& s1,
const CoordinateSequence& s2);
390 GEOS_DLL
bool operator!= (
const CoordinateSequence& s1,
const CoordinateSequence& s2);
399 #endif // ndef GEOS_GEOM_COORDINATESEQUENCE_H
void applyCoordinateFilter(T &f)
Apply a fiter to each Coordinate of this sequence. The filter is expected to provide a ...
Definition: CoordinateSequence.h:373
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition: Envelope.h:54
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:61
GEOS_DLL std::ostream & operator<<(std::ostream &os, const Coordinate &c)
Output function.
const Coordinate & back() const
Return last Coordinate in the sequence.
Definition: CoordinateSequence.h:89
virtual double getY(std::size_t index) const
Definition: CoordinateSequence.h:339
Definition: CoordinateFilter.h:44
GEOS_DLL bool operator==(const Coordinate &a, const Coordinate &b)
Equality operator for Coordinate. 2D only.
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:60
virtual double getX(std::size_t index) const
Definition: CoordinateSequence.h:331
GEOS_DLL bool operator!=(const Coordinate &a, const Coordinate &b)
Inequality operator for Coordinate. 2D only.
const Coordinate & front() const
Return first Coordinate in the sequence.
Definition: CoordinateSequence.h:94