46class GEOS_DLL CoverageEdge {
59 std::unique_ptr<CoordinateSequence> m_pts;
60 std::size_t m_ringCount ;
61 bool m_isFreeRing =
true;
65 static std::unique_ptr<CoordinateSequence>
66 extractEdgePoints(
const CoordinateSequence& ring,
67 std::size_t start, std::size_t end);
69 static const Coordinate&
71 const CoordinateSequence& pts,
74 const Coordinate& pt);
79 CoverageEdge(std::unique_ptr<CoordinateSequence> && pts,
bool isFreeRing)
80 : m_pts(pts ? std::move(pts) : detail::make_unique<CoordinateSequence>())
93 static LineSegment
key(
94 const CoordinateSequence& ring);
105 const CoordinateSequence& ring,
109 static std::unique_ptr<CoverageEdge> createEdge(
110 const CoordinateSequence& ring);
112 static std::unique_ptr<CoverageEdge> createEdge(
113 const CoordinateSequence& ring,
117 static std::unique_ptr<MultiLineString> createLines(
118 const std::vector<CoverageEdge*>& edges,
119 const GeometryFactory* geomFactory);
121 std::unique_ptr<LineString> toLineString(
122 const GeometryFactory* geomFactory);
131 std::size_t getRingCount()
const
147 void setCoordinates(
const CoordinateSequence* pts)
149 m_pts = pts->clone();
152 const CoordinateSequence* getCoordinates()
const
157 const Coordinate& getEndCoordinate()
const
159 return m_pts->getAt(m_pts->size() - 1);
162 const Coordinate& getStartCoordinate()
const
164 return m_pts->getAt(0);