20 #ifndef GEOS_OP_BUFFER_OFFSETCURVESETBUILDER_H
21 #define GEOS_OP_BUFFER_OFFSETCURVESETBUILDER_H
23 #include <geos/export.h>
24 #include <geos/geom/Location.h>
30 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
37 class CoordinateSequence;
38 class GeometryCollection;
52 class OffsetCurveBuilder;
71 class GEOS_DLL OffsetCurveSetBuilder {
77 std::vector<geomgraph::Label*> newLabels;
79 const geom::Geometry& inputGeom;
83 OffsetCurveBuilder& curveBuilder;
88 std::vector<noding::SegmentString*> curveList;
102 void addCurve(geom::CoordinateSequence* coord,
geom::Location leftLoc,
105 void add(
const geom::Geometry& g);
107 void addCollection(
const geom::GeometryCollection* gc);
112 void addPoint(
const geom::Point* p);
114 void addLineString(
const geom::LineString* line);
116 void addPolygon(
const geom::Polygon* p);
136 void addPolygonRing(
const geom::CoordinateSequence* coord,
149 bool isErodedCompletely(
const geom::LinearRing* ringCoord,
150 double bufferDistance);
170 bool isTriangleErodedCompletely(
const geom::CoordinateSequence* triCoords,
171 double bufferDistance);
174 OffsetCurveSetBuilder(
const OffsetCurveSetBuilder& other) =
delete;
175 OffsetCurveSetBuilder& operator=(
const OffsetCurveSetBuilder& rhs) =
delete;
180 OffsetCurveSetBuilder(
const geom::Geometry& newInputGeom,
181 double newDistance, OffsetCurveBuilder& newCurveBuilder);
184 ~OffsetCurveSetBuilder();
194 std::vector<noding::SegmentString*>& getCurves();
203 void addCurves(
const std::vector<geom::CoordinateSequence*>& lineList,
216 #endif // ndef GEOS_OP_BUFFER_OFFSETCURVESETBUILDER_H