GEOS  3.9.1dev
SegmentNode.h
Go to the documentation of this file.
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  * Last port: noding/SegmentNode.java 4667170ea (JTS-1.17)
16  *
17  **********************************************************************/
18 
19 #ifndef GEOS_NODING_SEGMENTNODE_H
20 #define GEOS_NODING_SEGMENTNODE_H
21 
22 #include <geos/export.h>
23 
24 #include <vector>
25 #include <iostream>
26 
27 #include <geos/inline.h>
28 
29 #include <geos/geom/Coordinate.h>
30 
31 // Forward declarations
32 namespace geos {
33 namespace noding {
34 class NodedSegmentString;
35 }
36 }
37 
38 namespace geos {
39 namespace noding { // geos.noding
40 
48 private:
50 
52 
54 
55  // Declare type as noncopyable
56  SegmentNode(const SegmentNode& other) = delete;
57  SegmentNode& operator=(const SegmentNode& rhs) = delete;
58 
59 public:
60  friend std::ostream& operator<< (std::ostream& os, const SegmentNode& n);
61 
64 
66  size_t segmentIndex;
67 
81  const geom::Coordinate& nCoord,
82  size_t nSegmentIndex, int nSegmentOctant);
83 
85 
91  bool
92  isInterior() const
93  {
94  return isInteriorVar;
95  }
96 
97  bool isEndPoint(unsigned int maxSegmentIndex) const;
98 
106  int compareTo(const SegmentNode& other);
107 
108  //string print() const;
109 };
110 
111 std::ostream& operator<< (std::ostream& os, const SegmentNode& n);
112 
114  bool
116  {
117  return s1->compareTo(*s2) < 0;
118  }
119 };
120 
121 
122 } // namespace geos.noding
123 } // namespace geos
124 
125 #endif // GEOS_NODING_SEGMENTNODE_H
#define GEOS_DLL
Definition: export.h:28
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
std::ostream & operator<<(std::ostream &os, const SegmentNode &n)
Represents a list of contiguous line segments, and supports noding the segments.
const NodedSegmentString & segString
Definition: SegmentNode.h:49
size_t segmentIndex
the index of the containing line segment in the parent edge
Definition: SegmentNode.h:66
geom::Coordinate coord
the point of intersection (own copy)
Definition: SegmentNode.h:63
bool isInterior() const
Return true if this Node is internal (not on the boundary) of the corresponding segment. Currently only the first segment endpoint is checked, actually.
Definition: SegmentNode.h:92
Basic namespace for all GEOS functionalities.
bool operator()(SegmentNode *s1, SegmentNode *s2) const
Definition: SegmentNode.h:115
Represents an intersection point between two NodedSegmentString.
Definition: SegmentNode.h:47
int compareTo(const SegmentNode &other)