15 #ifndef GEOS_GEOM_COORDINATESEQUENCE_H
16 #define GEOS_GEOM_COORDINATESEQUENCE_H
18 #include <geos/export.h>
19 #include <geos/platform.h>
20 #include <geos/inline.h>
22 #include <geos/geom/Coordinate.h>
32 class CoordinateFilter;
69 typedef std::auto_ptr<CoordinateSequence> AutoPtr;
85 virtual const Coordinate& getAt(std::size_t i)
const=0;
89 return getAt(size()-1);
97 const Coordinate& operator[] (std::size_t i)
const {
104 virtual void getAt(std::size_t i, Coordinate& c)
const=0;
111 virtual std::size_t getSize()
const=0;
113 size_t size()
const {
return getSize(); }
135 virtual const std::vector<Coordinate>* toVector()
const=0;
141 virtual void toVector(std::vector<Coordinate>& coords)
const=0;
150 void add(
const std::vector<Coordinate>* vc,
bool allowRepeated);
167 void add(
const CoordinateSequence *cl,
bool allowRepeated,
177 virtual void add(
const Coordinate& c,
bool allowRepeated);
190 virtual void add(std::size_t i,
const Coordinate& coord,
bool allowRepeated)=0;
193 virtual bool isEmpty()
const=0;
196 virtual void add(
const Coordinate& c)=0;
205 virtual void setAt(
const Coordinate& c, std::size_t pos)=0;
208 virtual void deleteAt(std::size_t pos)=0;
211 virtual std::string toString()
const=0;
214 virtual void setPoints(
const std::vector<Coordinate> &v)=0;
217 bool hasRepeatedPoints()
const;
220 const Coordinate* minCoordinate()
const;
231 static CoordinateSequence* removeRepeatedPoints(
232 const CoordinateSequence *cl);
238 virtual CoordinateSequence& removeRepeatedPoints()=0;
244 static bool hasRepeatedPoints(
const CoordinateSequence *cl);
250 static CoordinateSequence* atLeastNCoordinatesOrNothing(std::size_t n,
251 CoordinateSequence *c);
258 static const Coordinate* minCoordinate(CoordinateSequence *cl);
265 static int indexOf(
const Coordinate *coordinate,
266 const CoordinateSequence *cl);
273 static bool equals(
const CoordinateSequence *cl1,
274 const CoordinateSequence *cl2);
277 static void scroll(CoordinateSequence *cl,
const Coordinate *firstCoordinate);
296 static int increasingDirection(
const CoordinateSequence& pts);
299 static void reverse(CoordinateSequence *cl);
310 virtual std::size_t getDimension()
const=0;
322 virtual double getOrdinate(std::size_t index, std::size_t ordinateIndex)
const=0;
330 virtual double getX(std::size_t index)
const {
return getOrdinate(index, X); }
338 virtual double getY(std::size_t index)
const {
return getOrdinate(index, Y); }
349 virtual void setOrdinate(std::size_t index, std::size_t ordinateIndex,
double value)=0;
358 virtual void expandEnvelope(
Envelope &env)
const;
375 for(std::size_t i=0, n=size(); i<n; ++i)
385 GEOS_DLL std::ostream&
operator<< (std::ostream& os,
const CoordinateSequence& cs);
387 GEOS_DLL
bool operator== (
const CoordinateSequence& s1,
const CoordinateSequence& s2);
389 GEOS_DLL
bool operator!= (
const CoordinateSequence& s1,
const CoordinateSequence& s2);
398 #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:372
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition: Envelope.h:53
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
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:88
virtual double getY(std::size_t index) const
Definition: CoordinateSequence.h:338
Definition: CoordinateFilter.h:43
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:59
virtual double getX(std::size_t index) const
Definition: CoordinateSequence.h:330
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:93