00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef GEOS_OP_PREDICATE_SEGMENTINTERSECTIONTESTER_H
00021 #define GEOS_OP_PREDICATE_SEGMENTINTERSECTIONTESTER_H
00022
00023 #include <geos/export.h>
00024
00025 #include <geos/algorithm/LineIntersector.h>
00026 #include <geos/geom/Coordinate.h>
00027
00028
00029 namespace geos {
00030 namespace geom {
00031 class LineString;
00032 class CoordinateSequence;
00033 }
00034 }
00035
00036 namespace geos {
00037 namespace operation {
00038 namespace predicate {
00039
00048 class GEOS_DLL SegmentIntersectionTester {
00049
00050 private:
00051
00056 algorithm::LineIntersector li;
00057
00058 bool hasIntersectionVar;
00059
00060 geom::Coordinate pt10;
00061 geom::Coordinate pt11;
00062 geom::Coordinate pt00;
00063 geom::Coordinate pt01;
00064
00065
00066 public:
00067
00068 SegmentIntersectionTester(): hasIntersectionVar(false) {}
00069
00070 bool hasIntersectionWithLineStrings(const geom::LineString &line,
00071 const std::vector<const geom::LineString *>& lines);
00072
00073 bool hasIntersection(const geom::LineString &line,
00074 const geom::LineString &testLine);
00075
00090 bool hasIntersectionWithEnvelopeFilter(const geom::LineString &line,
00091 const geom::LineString &testLine);
00092
00093
00094 };
00095
00096 }
00097 }
00098 }
00099
00100 #endif // ifndef GEOS_OP_PREDICATE_SEGMENTINTERSECTIONTESTER_H