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
42 class GeometryFactory;
54 class ElevationMatrix;
120 static bool isResultOfOp(
int loc0,
int loc1, OpCode opCode);
196 std::vector<geom::Polygon*> *resultPolyList;
198 std::vector<geom::LineString*> *resultLineList;
200 std::vector<geom::Point*> *resultPointList;
202 void computeOverlay(OpCode opCode);
204 void insertUniqueEdges(std::vector<geomgraph::Edge*> *edges,
const geom::Envelope *env=0);
226 void computeLabelsFromDepths();
232 void replaceCollapsedEdges();
254 void computeLabelling();
263 void mergeSymLabels();
265 void updateNodeLabelling();
284 void labelIncompleteNodes();
302 void findResultAreaEdges(OpCode opCode);
308 void cancelDuplicateResultEdges();
315 std::vector<geom::Geometry*> *geomList);
322 std::vector<geom::Polygon*> *geomList);
329 std::vector<geom::LineString*> *geomList);
336 std::vector<geom::Point*> *nResultPointList,
337 std::vector<geom::LineString*> *nResultLineList,
338 std::vector<geom::Polygon*> *nResultPolyList);
341 std::vector<geomgraph::Edge *>dupEdges;
360 bool avgzcomputed[2];
362 double getAverageZ(
int targetIndex);
365 ElevationMatrix *elevationMatrix;
369 void checkObviouslyWrongResult(OpCode opCode);
401 #endif // ndef GEOS_OP_OVERLAY_OVERLAYOP_H