GEOS  3.13.1
buffer/MaximalEdgeRing.h
1 /**********************************************************************
2  *
3  * GEOS - Geometry Engine Open Source
4  * http://geos.osgeo.org
5  *
6  * Copyright (C) 2006 Refractions Research Inc.
7  *
8  * This is free software; you can redistribute and/or modify it under
9  * the terms of the GNU Lesser General Public Licence as published
10  * by the Free Software Foundation.
11  * See the COPYING file for more information.
12  *
13  **********************************************************************
14  *
15  * Last port: operation/overlay/MaximalEdgeRing.java rev. 1.15 (JTS-1.10)
16  *
17  **********************************************************************/
18 
19 #pragma once
20 
21 #include <geos/export.h>
22 
23 #include <vector>
24 
25 #include <geos/geomgraph/EdgeRing.h> // for inheritance
26 
27 // Forward declarations
28 namespace geos {
29 namespace geom {
30 class GeometryFactory;
31 }
32 namespace geomgraph {
33 class DirectedEdge;
34 }
35 namespace operation {
36 namespace buffer {
37 class MinimalEdgeRing;
38 }
39 }
40 }
41 
42 namespace geos {
43 namespace operation { // geos::operation
44 namespace buffer { // geos::operation::buffer
45 
64 class GEOS_DLL MaximalEdgeRing: public geomgraph::EdgeRing {
65 
66 public:
67 
69  const geom::GeometryFactory* geometryFactory);
70  // throw(const TopologyException &)
71 
72  ~MaximalEdgeRing() override = default;
73 
74  geomgraph::DirectedEdge* getNext(geomgraph::DirectedEdge* de) override;
75 
76  void setEdgeRing(geomgraph::DirectedEdge* de, geomgraph::EdgeRing* er) override;
77 
84  std::vector<MinimalEdgeRing*>* buildMinimalRings();
85 
90  void buildMinimalRings(std::vector<MinimalEdgeRing*>& minEdgeRings);
91  void buildMinimalRings(std::vector<EdgeRing*>& minEdgeRings);
92 
98 };
99 
100 
101 } // namespace geos::operation::buffer
102 } // namespace geos::operation
103 } // namespace geos
104 
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
Definition: GeometryFactory.h:70
A directed EdgeEnd.
Definition: geomgraph/DirectedEdge.h:42
Definition: geomgraph/EdgeRing.h:57
A ring of DirectedEdges which may contain nodes of degree > 2.
Definition: buffer/MaximalEdgeRing.h:64
void buildMinimalRings(std::vector< MinimalEdgeRing * > &minEdgeRings)
This function pushes pointers to newly allocated MinimalEdgeRing objects to the provided vector.
void linkDirectedEdgesForMinimalEdgeRings()
For all nodes in this EdgeRing, link the DirectedEdges at the node to form minimalEdgeRings.
std::vector< MinimalEdgeRing * > * buildMinimalRings()
This function returns a newly allocated vector of pointers to newly allocated MinimalEdgeRing objects...
Basic namespace for all GEOS functionalities.
Definition: Angle.h:25