SUMO - Simulation of Urban MObility
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
GUILane.h
Go to the documentation of this file.
1
/****************************************************************************/
9
// Representation of a lane in the micro simulation (gui-version)
10
/****************************************************************************/
11
// SUMO, Simulation of Urban MObility; see http://sumo-sim.org/
12
// Copyright (C) 2001-2014 DLR (http://www.dlr.de/) and contributors
13
/****************************************************************************/
14
//
15
// This file is part of SUMO.
16
// SUMO is free software: you can redistribute it and/or modify
17
// it under the terms of the GNU General Public License as published by
18
// the Free Software Foundation, either version 3 of the License, or
19
// (at your option) any later version.
20
//
21
/****************************************************************************/
22
#ifndef GUILane_h
23
#define GUILane_h
24
25
26
// ===========================================================================
27
// included modules
28
// ===========================================================================
29
#ifdef _MSC_VER
30
#include <
windows_config.h
>
31
#else
32
#include <
config.h
>
33
#endif
34
35
#include <fx.h>
36
#include <string>
37
#include <utility>
38
#include <
microsim/MSLane.h
>
39
#include <
microsim/MSEdge.h
>
40
#include <
utils/foxtools/MFXMutex.h
>
41
#include <
utils/geom/Position.h
>
42
#include <
utils/geom/PositionVector.h
>
43
#include <
utils/gui/globjects/GUIGlObject.h
>
44
#include <
utils/gui/settings/GUIColorer.h
>
45
46
47
// ===========================================================================
48
// class declarations
49
// ===========================================================================
50
class
GUINet
;
51
class
MSVehicle
;
52
class
MSNet
;
53
#ifdef HAVE_OSG
54
namespace
osg {
55
class
Geometry;
56
}
57
#endif
58
59
// ===========================================================================
60
// class definitions
61
// ===========================================================================
70
class
GUILane
:
public
MSLane
,
public
GUIGlObject
{
71
public
:
85
GUILane
(
const
std::string&
id
,
SUMOReal
maxSpeed,
86
SUMOReal
length,
MSEdge
*
const
edge,
unsigned
int
numericalID,
87
const
PositionVector
& shape,
SUMOReal
width,
88
SVCPermissions
permissions,
unsigned
int
index);
89
90
92
~GUILane
();
93
94
95
98
108
const
VehCont
&
getVehiclesSecure
()
const
;
109
110
116
void
releaseVehicles
()
const
;
118
119
120
123
126
void
planMovements
(
const
SUMOTime
t);
127
130
bool
executeMovements
(
SUMOTime
t, std::vector<MSLane*>& into);
131
134
bool
integrateNewVehicle
(
SUMOTime
t);
136
137
140
void
detectCollisions
(
SUMOTime
timestep,
const
std::string& stage);
141
142
145
MSVehicle
*
removeVehicle
(
MSVehicle
* remVehicle,
MSMoveReminder::Notification
notification);
146
147
148
150
151
159
GUIGLObjectPopupMenu
*
getPopUpMenu
(
GUIMainWindow
& app,
160
GUISUMOAbstractView
& parent);
161
162
170
GUIParameterTableWindow
*
getParameterWindow
(
GUIMainWindow
& app,
171
GUISUMOAbstractView
& parent);
172
173
179
Boundary
getCenteringBoundary
()
const
;
180
181
186
void
drawGL
(
const
GUIVisualizationSettings
& s)
const
;
188
189
190
191
const
PositionVector
&
getShape
()
const
;
192
const
std::vector<SUMOReal>&
getShapeRotations
()
const
;
193
const
std::vector<SUMOReal>&
getShapeLengths
()
const
;
194
195
SUMOReal
firstWaitingTime
()
const
;
196
198
void
drawMarkings
(
const
GUIVisualizationSettings
& s,
SUMOReal
scale)
const
;
199
201
void
drawCrossties
(
SUMOReal
length,
SUMOReal
spacing,
SUMOReal
halfWidth)
const
;
202
203
SUMOReal
getHalfWidth
()
const
{
204
return
myHalfLaneWidth
;
205
}
206
207
208
SUMOReal
getEdgeLaneNumber
()
const
;
209
212
SUMOReal
getStoredEdgeTravelTime
()
const
;
213
214
#ifdef HAVE_OSG
215
void
setGeometry(osg::Geometry* geom) {
216
myGeom = geom;
217
}
218
219
void
updateColor(
const
GUIVisualizationSettings
& s);
220
#endif
221
protected
:
223
void
swapAfterLaneChange
(
SUMOTime
t);
224
236
virtual
void
incorporateVehicle
(
MSVehicle
* veh,
SUMOReal
pos,
SUMOReal
speed,
237
const
MSLane::VehCont::iterator& at,
238
MSMoveReminder::Notification
notification =
MSMoveReminder::NOTIFICATION_DEPARTED
);
239
240
private
:
242
void
drawLinkNo
()
const
;
243
void
drawTLSLinkNo
(
const
GUINet
& net)
const
;
244
void
drawTextAtEnd
(
const
std::string& text,
const
PositionVector
& shape,
SUMOReal
x)
const
;
245
void
drawLinkRules
(
const
GUINet
& net)
const
;
246
void
drawLinkRule
(
const
GUINet
& net,
MSLink
* link,
const
PositionVector
& shape,
SUMOReal
x1,
SUMOReal
x2)
const
;
247
void
drawArrows
()
const
;
248
void
drawLane2LaneConnections
()
const
;
249
250
251
252
private
:
254
SUMOReal
getColorValue
(
size_t
activeScheme)
const
;
255
257
bool
setFunctionalColor
(
size_t
activeScheme)
const
;
258
260
void
setColor
(
const
GUIVisualizationSettings
& s)
const
;
261
263
std::vector<SUMOReal>
myShapeRotations
;
264
266
std::vector<SUMOReal>
myShapeLengths
;
267
269
SUMOReal
myHalfLaneWidth
;
270
272
SUMOReal
myQuarterLaneWidth
;
273
275
unsigned
int
myIndex
;
276
277
#ifdef HAVE_OSG
278
osg::Geometry* myGeom;
279
#endif
280
281
282
private
:
284
mutable
MFXMutex
myLock
;
285
286
287
};
288
289
290
#endif
291
292
/****************************************************************************/
293
tmp
buildd
sumo-0.21.0+dfsg
src
guisim
GUILane.h
Generated on Thu Nov 20 2014 19:49:53 for SUMO - Simulation of Urban MObility by
1.8.1.2