17#include <geos/algorithm/locate/IndexedPointInAreaLocator.h>
18#include <geos/geom/CoordinateSequence.h>
19#include <geos/geom/LinearRing.h>
20#include <geos/export.h>
26class PointOnGeometryLocator;
32class CoordinateSequence;
48class GEOS_DLL OverlayEdgeRing {
50 using CoordinateXY = geos::geom::CoordinateXY;
53 using Curve = geos::geom::Curve;
55 using PointOnGeometryLocator = algorithm::locate::PointOnGeometryLocator;
56 using IndexedPointInAreaLocator = algorithm::locate::IndexedPointInAreaLocator;
61 OverlayEdge* startEdge;
62 std::unique_ptr<Curve> ring;
64 mutable std::unique_ptr<PointOnGeometryLocator> locator;
65 OverlayEdgeRing* shell;
67 std::vector<OverlayEdgeRing*> holes;
70 void computeRing(OverlayEdge* start,
const GeometryFactory* geometryFactory);
71 std::unique_ptr<Curve> computeRingGeometry(OverlayEdge* start,
const GeometryFactory* geometryFactory)
const;
78 PointOnGeometryLocator* getLocator()
const;
79 static void closeRing(CoordinateSequence& pts);
80 bool contains(
const OverlayEdgeRing& otherRing)
const;
81 bool isPointInOrOut(
const OverlayEdgeRing& otherRing)
const;
86 OverlayEdgeRing(OverlayEdge* start,
const GeometryFactory* geometryFactory);
88 std::unique_ptr<Curve> getRing();
89 const Curve* getRingPtr()
const;
91 const geom::Envelope& getEnvelope()
const;
104 void setShell(OverlayEdgeRing* p_shell);
111 bool hasShell()
const;
118 const OverlayEdgeRing* getShell()
const;
120 void addHole(OverlayEdgeRing* ring);
122 geom::Location locate(
const CoordinateXY& pt)
const;
124 const Coordinate& getCoordinate()
const;
130 std::unique_ptr<Surface> toSurface(
const GeometryFactory* factory);
132 OverlayEdge* getEdge();
152 OverlayEdgeRing* findEdgeRingContaining(
const std::vector<OverlayEdgeRing*>& erList)
const;
The internal representation of a list of coordinates inside a Geometry.
Definition CoordinateSequence.h:56
Coordinate is the lightweight class used to store coordinates.
Definition Coordinate.h:220
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
Definition GeometryFactory.h:72
Basic namespace for all GEOS functionalities.
Definition geos.h:38