GEOS
3.7.2
include
geos
geomgraph
EdgeEnd.h
1
/**********************************************************************
2
*
3
* GEOS - Geometry Engine Open Source
4
* http://geos.osgeo.org
5
*
6
* Copyright (C) 2011 Sandro Santilli <strk@kbt.io>
7
* Copyright (C) 2005-2006 Refractions Research Inc.
8
* Copyright (C) 2001-2002 Vivid Solutions Inc.
9
*
10
* This is free software; you can redistribute and/or modify it under
11
* the terms of the GNU Lesser General Public Licence as published
12
* by the Free Software Foundation.
13
* See the COPYING file for more information.
14
*
15
**********************************************************************
16
*
17
* Last port: geomgraph/EdgeEnd.java r428 (JTS-1.12+)
18
*
19
**********************************************************************/
20
21
22
#ifndef GEOS_GEOMGRAPH_EDGEEND_H
23
#define GEOS_GEOMGRAPH_EDGEEND_H
24
25
#include <geos/export.h>
26
#include <geos/geom/Coordinate.h>
// for p0,p1
27
#include <geos/geomgraph/Label.h>
// for composition
28
#include <geos/inline.h>
29
30
#include <string>
31
32
// Forward declarations
33
namespace
geos
{
34
namespace
algorithm {
35
class
BoundaryNodeRule;
36
}
37
namespace
geomgraph {
38
class
Edge;
39
class
Node;
40
}
41
}
42
43
namespace
geos
{
44
namespace
geomgraph {
// geos.geomgraph
45
56
class
GEOS_DLL
EdgeEnd
{
57
58
public
:
59
60
friend
std::ostream& operator<< (std::ostream&,
const
EdgeEnd
&);
61
62
EdgeEnd
();
63
64
virtual
~
EdgeEnd
() {}
65
73
EdgeEnd
(
Edge
* newEdge,
const
geom::Coordinate
& newP0,
74
const
geom::Coordinate
& newP1,
75
const
Label
& newLabel);
76
83
EdgeEnd
(
Edge
* newEdge,
const
geom::Coordinate
& newP0,
84
const
geom::Coordinate
& newP1);
85
86
Edge
* getEdge() {
return
edge; }
87
//virtual Edge* getEdge() { return edge; }
88
89
Label
& getLabel() {
return
label; }
90
91
const
Label
& getLabel()
const
{
return
label; }
92
93
virtual
geom::Coordinate
& getCoordinate();
94
95
const
geom::Coordinate
& getCoordinate()
const
{
return
p0; }
96
97
virtual
geom::Coordinate
& getDirectedCoordinate();
98
99
virtual
int
getQuadrant();
100
101
virtual
double
getDx();
102
103
virtual
double
getDy();
104
105
virtual
void
setNode(
Node
* newNode);
106
107
virtual
Node
* getNode();
108
109
virtual
int
compareTo(
const
EdgeEnd
*e)
const
;
110
127
virtual
int
compareDirection(
const
EdgeEnd
*e)
const
;
128
129
virtual
void
computeLabel(
const
algorithm::BoundaryNodeRule
& bnr);
130
131
virtual
std::string print()
const
;
132
133
protected
:
134
135
Edge
* edge;
// the parent edge of this edge end
136
137
Label
label;
138
139
EdgeEnd
(
Edge
* newEdge);
140
141
virtual
void
init(
const
geom::Coordinate
& newP0,
142
const
geom::Coordinate
& newP1);
143
144
private
:
145
147
Node
* node;
148
150
geom::Coordinate
p0, p1;
151
153
double
dx, dy;
154
155
int
quadrant;
156
};
157
158
std::ostream& operator<< (std::ostream&,
const
EdgeEnd
&);
159
160
struct
GEOS_DLL EdgeEndLT {
161
bool
operator()(
const
EdgeEnd
*s1,
const
EdgeEnd
*s2)
const
{
162
return
s1->compareTo(s2)<0;
163
}
164
};
165
166
}
// namespace geos.geomgraph
167
}
// namespace geos
168
169
//#ifdef GEOS_INLINE
170
//# include "geos/geomgraph/EdgeEnd.inl"
171
//#endif
172
173
#endif // ifndef GEOS_GEOMGRAPH_EDGEEND_H
geos::geomgraph::Edge
Definition:
geomgraph/Edge.h:66
geos::geomgraph::Label
A Label indicates the topological relationship of a component of a topology graph to a given Geometry...
Definition:
Label.h:91
geos
Basic namespace for all GEOS functionalities.
Definition:
IndexedNestedRingTester.h:25
geos::geomgraph::EdgeEnd
Models the end of an edge incident on a node.
Definition:
EdgeEnd.h:56
geos::geom::Coordinate
Coordinate is the lightweight class used to store coordinates.
Definition:
Coordinate.h:84
geos::geomgraph::Node
Definition:
geomgraph/Node.h:62
geos::algorithm::BoundaryNodeRule
Definition:
BoundaryNodeRule.h:82
Generated by
1.8.17