22 #ifndef GEOS_GEOMGRAPH_GEOMETRYGRAPH_H
23 #define GEOS_GEOMGRAPH_GEOMETRYGRAPH_H
25 #include <geos/export.h>
30 #include <geos/geom/Coordinate.h>
31 #include <geos/geom/CoordinateSequence.h>
32 #include <geos/geomgraph/PlanarGraph.h>
33 #include <geos/geom/LineString.h>
35 #include <geos/inline.h>
39 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
49 class GeometryCollection;
54 class LineIntersector;
55 class BoundaryNodeRule;
61 class SegmentIntersector;
62 class EdgeSetIntersector;
75 using PlanarGraph::add;
91 std::map<const geom::LineString*, Edge*> lineEdgeMap;
97 bool useBoundaryDeterminationRule;
108 std::auto_ptr< geom::CoordinateSequence > boundaryPoints;
110 std::auto_ptr< std::vector<Node*> > boundaryNodes;
112 bool hasTooFewPointsVar;
117 index::EdgeSetIntersector* createEdgeSetIntersector();
127 int cwLeft,
int cwRight);
145 void addSelfIntersectionNodes(
int argIndex);
154 void addSelfIntersectionNode(
int argIndex,
163 static bool isInBoundary(
int boundaryCount);
165 static int determineBoundary(
int boundaryCount);
167 static int determineBoundary(
184 std::vector<Node*>* getBoundaryNodes();
186 void getBoundaryNodes(std::vector<Node*>&bdyNodes);
193 void computeSplitEdges(std::vector<Edge*> *edgelist);
195 void addEdge(
Edge *e);
214 index::SegmentIntersector* computeSelfNodes(
216 bool computeRingSelfNodes,
219 return computeSelfNodes(*li, computeRingSelfNodes, env);
224 index::SegmentIntersector* computeSelfNodes(
228 index::SegmentIntersector* computeEdgeIntersections(
GeometryGraph *g,
232 std::vector<Edge*> *getEdges();
234 bool hasTooFewPoints();
239 {
return boundaryNodeRule; }
252 # include "geos/geomgraph/GeometryGraph.inl"
255 #endif // ifndef GEOS_GEOMGRAPH_GEOMETRYGRAPH_H