19#ifndef GEOS_OP_BUFFER_OFFSETSEGMENTGENERATOR_H
20#define GEOS_OP_BUFFER_OFFSETSEGMENTGENERATOR_H
22#include <geos/export.h>
26#include <geos/algorithm/LineIntersector.h>
27#include <geos/geom/Coordinate.h>
28#include <geos/geom/LineSegment.h>
29#include <geos/operation/buffer/BufferParameters.h>
30#include <geos/operation/buffer/OffsetSegmentString.h>
34#pragma warning(disable: 4251)
61class GEOS_DLL OffsetSegmentGenerator {
89 return _hasNarrowConcaveAngle;
104 to.push_back(segList.getCoordinates());
120 segList.addPt(offset1.p0);
126 segList.addPt(offset1.p1);
139 segList.addPts(pts, isForward);
148 static const double OFFSET_SEGMENT_SEPARATION_FACTOR;
154 static const double INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR;
159 static const double CURVE_VERTEX_SNAP_DISTANCE_FACTOR;
164 static const int MAX_CLOSING_SEG_LEN_FACTOR = 80;
170 double maxCurveSegmentError;
176 double filletAngleQuantum;
195 int closingSegLengthFactor;
227 bool _hasNarrowConcaveAngle;
229 void addCollinear(
bool addStartPoint);
252 void addLimitedMitreJoin(
255 double distance,
double mitreLimit);
267 static const double PI;
272 void init(
double newDistance);
281 static const double SIMPLIFY_FACTOR;
288 void addOutsideTurn(
int orientation,
bool addStartPoint);
295 void addInsideTurn(
int orientation,
bool addStartPoint);
326 int direction,
double radius);
338 double endAngle,
int direction,
double radius);
A LineIntersector is an algorithm that can both test whether two line segments intersect and compute ...
Definition LineIntersector.h:49
The internal representation of a list of coordinates inside a Geometry.
Definition CoordinateSequence.h:59
Coordinate is the lightweight class used to store coordinates.
Definition Coordinate.h:60
Definition LineSegment.h:57
Specifies the precision model of the Coordinate in a Geometry.
Definition PrecisionModel.h:87
Contains the parameters which describe how a buffer should be constructed.
Definition BufferParameters.h:58
Definition OffsetSegmentGenerator.h:61
void addFirstSegment()
Add first offset point.
Definition OffsetSegmentGenerator.h:118
bool hasNarrowConcaveAngle() const
Definition OffsetSegmentGenerator.h:87
void addLastSegment()
Add last offset point.
Definition OffsetSegmentGenerator.h:124
void addLineEndCap(const geom::Coordinate &p0, const geom::Coordinate &p1)
Add an end cap around point p1, terminating a line segment coming from p0.
void createSquare(const geom::Coordinate &p, double distance)
Adds a CW square around a point.
void createCircle(const geom::Coordinate &p, double distance)
Adds a CW circle around a point.
void getCoordinates(std::vector< geom::CoordinateSequence * > &to)
Get coordinates by taking ownership of them.
Definition OffsetSegmentGenerator.h:103
A dynamic list of the vertices in a constructed offset curve.
Definition OffsetSegmentString.h:44
Contains the Geometry interface hierarchy and supporting classes.
Definition IndexedNestedRingTester.h:26
Provides classes for computing buffers of geometries.
Definition opBuffer.h:23
Provides classes for computing the distance between geometries.
Definition opDistance.h:23
Provides classes for implementing operations on geometries.
Definition IndexedNestedRingTester.h:40
Basic namespace for all GEOS functionalities.
Definition IndexedNestedRingTester.h:25