19 #ifndef GEOS_OP_OVERLAY_OVERLAYOP_H
20 #define GEOS_OP_OVERLAY_OVERLAYOP_H
22 #include <geos/export.h>
24 #include <geos/operation/GeometryGraphOperation.h>
25 #include <geos/geomgraph/EdgeList.h>
26 #include <geos/algorithm/PointLocator.h>
27 #include <geos/geomgraph/PlanarGraph.h>
33 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
41 class GeometryFactory;
53 class ElevationMatrix;
119 static bool isResultOfOp(
int loc0,
int loc1, OpCode opCode);
195 std::vector<geom::Polygon*> *resultPolyList;
197 std::vector<geom::LineString*> *resultLineList;
199 std::vector<geom::Point*> *resultPointList;
201 void computeOverlay(OpCode opCode);
203 void insertUniqueEdges(std::vector<geomgraph::Edge*> *edges);
225 void computeLabelsFromDepths();
231 void replaceCollapsedEdges();
243 void copyPoints(
int argIndex);
253 void computeLabelling();
262 void mergeSymLabels();
264 void updateNodeLabelling();
283 void labelIncompleteNodes();
301 void findResultAreaEdges(OpCode opCode);
307 void cancelDuplicateResultEdges();
314 std::vector<geom::Geometry*> *geomList);
321 std::vector<geom::Polygon*> *geomList);
328 std::vector<geom::LineString*> *geomList);
335 std::vector<geom::Point*> *nResultPointList,
336 std::vector<geom::LineString*> *nResultLineList,
337 std::vector<geom::Polygon*> *nResultPolyList);
340 std::vector<geomgraph::Edge *>dupEdges;
359 bool avgzcomputed[2];
361 double getAverageZ(
int targetIndex);
364 ElevationMatrix *elevationMatrix;
368 void checkObviouslyWrongResult(OpCode opCode);
400 #endif // ndef GEOS_OP_OVERLAY_OVERLAYOP_H