GEOS  3.5.0
SingleInteriorIntersectionFinder.h
1 /**********************************************************************
2  *
3  * GEOS - Geometry Engine Open Source
4  * http://geos.osgeo.org
5  *
6  * Copyright (C) 2006 Refractions Research Inc.
7  *
8  * This is free software; you can redistribute and/or modify it under
9  * the terms of the GNU Lesser General Public Licence as published
10  * by the Free Software Foundation.
11  * See the COPYING file for more information.
12  *
13  **********************************************************************/
14 
15 #ifndef GEOS_NODING_SINGLEINTERIORINTERSECTIONFINDER_H
16 #define GEOS_NODING_SINGLEINTERIORINTERSECTIONFINDER_H
17 
18 #include <geos/noding/SegmentIntersector.h> // for inheritance
19 #include <geos/geom/Coordinate.h> // for composition
20 
21 #include <vector>
22 
23 // Forward declarations
24 namespace geos {
25  namespace algorithm {
26  class LineIntersector;
27  }
28  namespace noding {
29  class SegmentString;
30  }
31 }
32 
33 namespace geos {
34 namespace noding { // geos.noding
35 
44 {
45 
46 public:
47 
55  :
56  li(newLi),
57  interiorIntersection(geom::Coordinate::getNull())
58  {
59  }
60 
66  bool hasIntersection() const
67  {
68  return !interiorIntersection.isNull();
69  }
70 
78  {
79  return interiorIntersection;
80  }
81 
87  const std::vector<geom::Coordinate>& getIntersectionSegments() const
88  {
89  return intSegments;
90  }
91 
102  SegmentString* e0, int segIndex0,
103  SegmentString* e1, int segIndex1);
104 
105  bool isDone() const
106  {
107  return !interiorIntersection.isNull();
108  }
109 
110 private:
112  geom::Coordinate interiorIntersection;
113  std::vector<geom::Coordinate> intSegments;
114 
115  // Declare type as noncopyable
118 };
119 
120 } // namespace geos.noding
121 } // namespace geos
122 
123 #endif // GEOS_NODING_SINGLEINTERIORINTERSECTIONFINDER_H