addLineString method
Implementation
void addLineString(LineString line) {
// a zero or negative width buffer of a line/point is empty
if (distance <= 0.0 && !curveBuilder.getBufferParameters().isSingleSided)
return;
List<Coordinate> coord =
CoordinateArrays.removeRepeatedPoints(line.getCoordinates());
/**
* Rings (closed lines) are generated with a continuous curve,
* with no end arcs. This produces better quality linework,
* and avoids noding issues with arcs around almost-parallel end segments.
* See JTS #523 and #518.
*
* Singled-sided buffers currently treat rings as if they are lines.
*/
if (CoordinateArrays.isRing(coord) &&
!curveBuilder.getBufferParameters().isSingleSided) {
addRingBothSides(coord, distance);
} else {
List<Coordinate>? curve = curveBuilder.getLineCurve(coord, distance);
addCurve(curve, Location.EXTERIOR, Location.INTERIOR);
}
// TESTING
//List<Coordinate> curveTrim = BufferCurveLoopPruner.prune(curve);
//addCurve(curveTrim, Location.EXTERIOR, Location.INTERIOR);
}