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