00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef GEOS_OP_OVERLAY_POINTBUILDER_H
00017 #define GEOS_OP_OVERLAY_POINTBUILDER_H
00018
00019 #include <geos/geom/GeometryFactory.h>
00020 #include <geos/operation/overlay/OverlayOp.h>
00021 #include <geos/util.h>
00022
00023 #include <vector>
00024
00025
00026 namespace geos {
00027 namespace geom {
00028 class GeometryFactory;
00029 class Point;
00030 }
00031 namespace geomgraph {
00032 class Node;
00033 }
00034 namespace algorithm {
00035 class PointLocator;
00036 }
00037 namespace operation {
00038 namespace overlay {
00039 class OverlayOp;
00040 }
00041 }
00042 }
00043
00044 namespace geos {
00045 namespace operation {
00046 namespace overlay {
00047
00051 class PointBuilder {
00052 private:
00053
00054 OverlayOp *op;
00055 const geom::GeometryFactory *geometryFactory;
00056 void extractNonCoveredResultNodes(OverlayOp::OpCode opCode);
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069 void filterCoveredNodeToPoint(const geomgraph::Node *);
00070
00074 std::vector<geom::Point*> *resultPointList;
00075
00076 public:
00077
00078 PointBuilder(OverlayOp *newOp,
00079 const geom::GeometryFactory *newGeometryFactory,
00080 algorithm::PointLocator *newPtLocator=NULL)
00081 :
00082 op(newOp),
00083 geometryFactory(newGeometryFactory),
00084 resultPointList(new std::vector<geom::Point *>())
00085 {
00086 UNREFERENCED_PARAMETER(newPtLocator);
00087 }
00088
00093 std::vector<geom::Point*>* build(OverlayOp::OpCode opCode);
00094 };
00095
00096
00097 }
00098 }
00099 }
00100
00101 #endif // ndef GEOS_OP_OVERLAY_POINTBUILDER_H
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112