GEOS 3.6.2
SegmentNode.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 * Last port: noding/SegmentNode.java rev. 1.6 (JTS-1.9)
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
32namespace geos {
33 namespace noding {
35 }
36}
37
38namespace geos {
39namespace noding { // geos.noding
40
42//
45class GEOS_DLL SegmentNode {
46private:
47 const NodedSegmentString& segString;
48
49 int segmentOctant;
50
51 bool isInteriorVar;
52
53 // Declare type as noncopyable
54 SegmentNode(const SegmentNode& other);
55 SegmentNode& operator=(const SegmentNode& rhs);
56
57public:
58 friend std::ostream& operator<< (std::ostream& os, const SegmentNode& n);
59
62
64 unsigned int segmentIndex;
65
67 //
79 const geom::Coordinate& nCoord,
80 unsigned int nSegmentIndex, int nSegmentOctant);
81
82 ~SegmentNode() {}
83
89 bool isInterior() const { return isInteriorVar; }
90
91 bool isEndPoint(unsigned int maxSegmentIndex) const;
92
100 int compareTo(const SegmentNode& other);
101
102 //string print() const;
103};
104
105std::ostream& operator<< (std::ostream& os, const SegmentNode& n);
106
107struct GEOS_DLL SegmentNodeLT {
108 bool operator()(SegmentNode *s1, SegmentNode *s2) const {
109 return s1->compareTo(*s2)<0;
110 }
111};
112
113
114} // namespace geos.noding
115} // namespace geos
116
117#endif // GEOS_NODING_SEGMENTNODE_H
Coordinate is the lightweight class used to store coordinates.
Definition Coordinate.h:60
Represents a list of contiguous line segments, and supports noding the segments.
Definition NodedSegmentString.h:58
Represents an intersection point between two NodedSegmentString.
Definition SegmentNode.h:45
SegmentNode(const NodedSegmentString &ss, const geom::Coordinate &nCoord, unsigned int nSegmentIndex, int nSegmentOctant)
Construct a node on the given NodedSegmentString.
geom::Coordinate coord
the point of intersection (own copy)
Definition SegmentNode.h:61
bool isInterior() const
Return true if this Node is internal (not on the boundary) of the corresponding segment....
Definition SegmentNode.h:89
unsigned int segmentIndex
the index of the containing line segment in the parent edge
Definition SegmentNode.h:64
int compareTo(const SegmentNode &other)
Classes to compute nodings for arrangements of line segments and line segment sequences.
Definition PreparedLineString.h:27
Basic namespace for all GEOS functionalities.
Definition IndexedNestedRingTester.h:25