19 #ifndef GEOS_TRIANGULATE_QUADEDGE_QUADEDGESUBDIVISION_H
20 #define GEOS_TRIANGULATE_QUADEDGE_QUADEDGESUBDIVISION_H
27 #include <geos/geom/Envelope.h>
28 #include <geos/geom/MultiLineString.h>
29 #include <geos/triangulate/quadedge/QuadEdgeLocator.h>
30 #include <geos/triangulate/quadedge/Vertex.h>
36 class CoordinateSequence;
37 class GeometryCollection;
38 class GeometryFactory;
42 namespace triangulate {
46 class TriangleVisitor;
48 const double EDGE_COINCIDENCE_TOL_FACTOR = 1000;
78 typedef std::list<QuadEdge*> QuadEdgeList;
89 static void getTriangleEdges(
const QuadEdge &startQE,
93 QuadEdgeList quadEdges;
94 QuadEdgeList createdEdges;
97 double edgeCoincidenceTolerance;
100 std::auto_ptr<QuadEdgeLocator> locator;
120 virtual void initSubdiv(
QuadEdge* initEdges[3]);
159 inline void setLocator(std::auto_ptr<QuadEdgeLocator> locator) {
160 this->locator = locator;
223 return locator->locate(v);
236 return locator->locate(
Vertex(p));
276 bool isFrameEdge(
const QuadEdge &e)
const;
287 bool isFrameBorderEdge(
const QuadEdge &e)
const;
296 bool isFrameVertex(
const Vertex &v)
const;
331 std::auto_ptr<QuadEdgeList> getPrimaryEdges(
bool includeFrame);
340 typedef std::stack<QuadEdge*> QuadEdgeStack;
341 typedef std::set<QuadEdge*> QuadEdgeSet;
342 typedef std::list< geom::CoordinateSequence*> TriList;
362 QuadEdge** fetchTriangleToVisit(
QuadEdge *edge, QuadEdgeStack &edgeStack,
bool includeFrame,
363 QuadEdgeSet &visitedEdges);
372 void getTriangleCoordinates(TriList* triList,
bool includeFrame);
375 class TriangleCoordinatesVisitor;
402 #endif //GEOS_TRIANGULATE_QUADEDGE_QUADEDGESUBDIVISION_H