22#include <geos/geom/Coordinate.h>
23#include <geos/geom/CoordinateSequence.h>
24#include <geos/geom/PrecisionModel.h>
41class OffsetSegmentString {
55 double minimumVertexDistance;
67 if(ptList->size() < 1) {
71 double ptDist = pt.distance(lastPt);
72 if(ptDist < minimumVertexDistance) {
78 OffsetSegmentString(
const OffsetSegmentString&) =
delete;
79 OffsetSegmentString& operator=(
const OffsetSegmentString&) =
delete;
83 friend std::ostream& operator<< (std::ostream& os,
const OffsetSegmentString& node);
88 precisionModel(
nullptr),
89 minimumVertexDistance(0.0)
93 ~OffsetSegmentString()
108 precisionModel =
nullptr;
109 minimumVertexDistance = 0.0;
115 precisionModel = nPrecisionModel;
119 setMinimumVertexDistance(
double nMinVertexDistance)
121 minimumVertexDistance = nMinVertexDistance;
127 assert(precisionModel);
130 precisionModel->makePrecise(bufPt);
132 if(isRedundant(bufPt)) {
138 ptList->add(bufPt,
true);
145 for(std::size_t i = 0, n = pts.
size(); i < n; ++i) {
150 for(std::size_t i = pts.
size(); i > 0; --i) {
162 if(ptList->size() < 1) {
167 if(startPt.equals(lastPt)) {
171 ptList->add(startPt,
true);
194 return ptList ? ptList->
size() : 0 ;
200operator<< (std::ostream& os,
201 const OffsetSegmentString& lst)
207 os <<
"empty (consumed?)";
The internal representation of a list of coordinates inside a Geometry.
Definition CoordinateSequence.h:56
Coordinate is the lightweight class used to store coordinates.
Definition Coordinate.h:217
Specifies the precision model of the Coordinate in a Geometry.
Definition PrecisionModel.h:88
void closeRing()
Definition OffsetSegmentString.h:160
geom::CoordinateSequence * getCoordinates()
Definition OffsetSegmentString.h:183
size_t size() const
Returns the number of Coordinates.
Definition CoordinateSequence.h:185
Provides classes for computing buffers of geometries.
Definition namespaces.h:182
Provides classes for implementing operations on geometries.
Definition namespaces.h:179
Basic namespace for all GEOS functionalities.
Definition geos.h:39