20 #ifndef GEOS_OP_BUFFER_OFFSETSEGMENTGENERATOR_H
21 #define GEOS_OP_BUFFER_OFFSETSEGMENTGENERATOR_H
23 #include <geos/export.h>
27 #include <geos/algorithm/LineIntersector.h>
28 #include <geos/geom/Coordinate.h>
29 #include <geos/geom/LineSegment.h>
30 #include <geos/operation/buffer/BufferParameters.h>
31 #include <geos/operation/buffer/OffsetSegmentString.h>
35 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
41 class CoordinateSequence;
88 bool hasNarrowConcaveAngle()
const
90 return _hasNarrowConcaveAngle;
105 to.push_back(segList.getCoordinates());
119 void addFirstSegment()
121 segList.addPt(offset1.p0);
125 void addLastSegment()
127 segList.addPt(offset1.p1);
140 segList.addPts(pts, isForward);
149 static const double OFFSET_SEGMENT_SEPARATION_FACTOR;
155 static const double INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR;
160 static const double CURVE_VERTEX_SNAP_DISTANCE_FACTOR;
165 static const int MAX_CLOSING_SEG_LEN_FACTOR = 80;
171 double maxCurveSegmentError;
177 double filletAngleQuantum;
196 int closingSegLengthFactor;
206 OffsetSegmentString segList;
212 const BufferParameters& bufParams;
228 bool _hasNarrowConcaveAngle;
230 void addCollinear(
bool addStartPoint);
253 void addLimitedMitreJoin(
256 double distance,
double mitreLimit);
268 static const double PI;
273 void init(
double newDistance);
282 static const double SIMPLIFY_FACTOR;
289 void addOutsideTurn(
int orientation,
bool addStartPoint);
296 void addInsideTurn(
int orientation,
bool addStartPoint);
311 int side,
double distance,
327 int direction,
double radius);
339 double endAngle,
int direction,
double radius);
343 OffsetSegmentGenerator(
const OffsetSegmentGenerator&);
344 void operator=(
const OffsetSegmentGenerator&);
356 #endif // ndef GEOS_OP_BUFFER_OFFSETSEGMENTGENERATOR_H