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
GUISUMOAbstractView.h
Go to the documentation of this file.
1
/****************************************************************************/
10
// The base class for a view
11
/****************************************************************************/
12
// SUMO, Simulation of Urban MObility; see http://sumo.sourceforge.net/
13
// Copyright (C) 2001-2013 DLR (http://www.dlr.de/) and contributors
14
/****************************************************************************/
15
//
16
// This file is part of SUMO.
17
// SUMO is free software: you can redistribute it and/or modify
18
// it under the terms of the GNU General Public License as published by
19
// the Free Software Foundation, either version 3 of the License, or
20
// (at your option) any later version.
21
//
22
/****************************************************************************/
23
#ifndef GUISUMOAbstractView_h
24
#define GUISUMOAbstractView_h
25
26
27
// ===========================================================================
28
// included modules
29
// ===========================================================================
30
#ifdef _MSC_VER
31
#include <
windows_config.h
>
32
#else
33
#include <
config.h
>
34
#endif
35
36
#include <string>
37
#include <vector>
38
#include <map>
39
#include <fx.h>
40
// fx3d includes windows.h so we need to guard against macro pollution
41
#ifdef WIN32
42
#define NOMINMAX
43
#endif
44
#include <fx3d.h>
45
#ifdef WIN32
46
#undef NOMINMAX
47
#endif
48
49
#include <
utils/foxtools/MFXMutex.h
>
50
#include <
utils/geom/Boundary.h
>
51
#include <
utils/geom/Position.h
>
52
#include <
utils/common/RGBColor.h
>
53
#include <
utils/common/SUMOTime.h
>
54
#include <
utils/shapes/Polygon.h
>
55
#include <
utils/gui/globjects/GUIGlObjectTypes.h
>
56
#include <
foreign/rtree/SUMORTree.h
>
57
58
59
// ===========================================================================
60
// class declarations
61
// ===========================================================================
62
class
GUIGlChildWindow
;
63
class
GUIVehicle
;
64
class
GUIPerspectiveChanger
;
65
class
GUIMainWindow
;
66
class
GUIGLObjectPopupMenu
;
67
class
GUIGlObject
;
68
class
GUIDialog_EditViewport
;
69
class
GUIDialog_ViewSettings
;
70
class
GUIVisualizationSettings
;
71
72
73
// ===========================================================================
74
// class definitions
75
// ===========================================================================
82
class
GUISUMOAbstractView
:
public
FXGLCanvas
{
83
FXDECLARE(
GUISUMOAbstractView
)
84
public
:
86
GUISUMOAbstractView
(FXComposite* p,
GUIMainWindow
& app,
87
GUIGlChildWindow
* parent,
const
SUMORTree
& grid,
88
FXGLVisual* glVis,
FXGLCanvas
* share);
89
91
virtual
~GUISUMOAbstractView
();
92
94
virtual
void
buildViewToolBars
(
GUIGlChildWindow
&) { }
95
97
virtual
void
recenterView
();
98
105
virtual
void
centerTo
(
GUIGlID
id
,
bool
applyZoom,
SUMOReal
zoomDist = 20);
106
108
void
centerTo
(
const
Boundary
& bound);
109
111
virtual
void
setViewport
(
const
Position
& lookFrom,
const
Position
& lookAt);
112
114
SUMOReal
m2p
(
SUMOReal
meter)
const
;
115
117
SUMOReal
p2m
(
SUMOReal
pixel)
const
;
118
120
// bool allowRotation() const;
121
123
void
setWindowCursorPosition
(FXint x, FXint y);
124
126
FXbool
makeCurrent
();
127
129
bool
isInEditMode
();
130
131
GUIPerspectiveChanger
&
getChanger
()
const
{
132
return
*
myChanger
;
133
}
134
135
Boundary
getVisibleBoundary
()
const
;
136
137
virtual
long
onConfigure
(
FXObject
*, FXSelector,
void
*);
138
virtual
long
onPaint
(
FXObject
*, FXSelector,
void
*);
139
virtual
long
onLeftBtnPress
(
FXObject
*, FXSelector,
void
*);
140
virtual
long
onLeftBtnRelease
(
FXObject
*, FXSelector,
void
*);
141
virtual
long
onRightBtnPress
(
FXObject
*, FXSelector,
void
*);
142
virtual
long
onRightBtnRelease
(
FXObject
*, FXSelector,
void
*);
143
virtual
long
onMouseWheel
(
FXObject
*, FXSelector,
void
*);
144
virtual
long
onMouseMove
(
FXObject
*, FXSelector,
void
*);
145
virtual
long
onMouseLeft
(
FXObject
*, FXSelector,
void
*);
146
147
virtual
long
onKeyPress
(
FXObject
* o, FXSelector sel,
void
* data);
148
virtual
long
onKeyRelease
(
FXObject
* o, FXSelector sel,
void
* data);
149
150
151
virtual
void
openObjectDialog
();
152
154
void
updateToolTip
();
155
156
159
163
void
setSnapshots
(std::map<SUMOTime, std::string> snaps);
164
165
172
std::string
makeSnapshot
(
const
std::string& destFile);
173
174
177
void
checkSnapshots
();
178
180
virtual
SUMOTime
getCurrentTimeStep
()
const
{
181
return
0;
182
}
184
185
186
187
virtual
void
showViewportEditor
();
188
void
showViewschemeEditor
();
189
void
showToolTips
(
bool
val);
190
virtual
bool
setColorScheme
(
const
std::string&) {
191
return
true
;
192
}
193
194
void
remove
(
GUIDialog_EditViewport
*) {
195
myViewportChooser
= 0;
196
}
197
198
void
remove
(
GUIDialog_ViewSettings
*) {
199
myVisualizationChanger
= 0;
200
}
201
202
203
// @todo: check why this is here
204
SUMOReal
getGridWidth
()
const
;
205
// @todo: check why this is here
206
SUMOReal
getGridHeight
()
const
;
207
208
virtual
void
startTrack
(
int
/*id*/
) { }
209
virtual
void
stopTrack
() { }
210
virtual
int
getTrackedID
()
const
{
211
return
-1;
212
}
213
214
virtual
void
onGamingClick
(
Position
/*pos*/
) { }
215
218
224
bool
addAdditionalGLVisualisation
(
GUIGlObject
*
const
which);
225
226
232
bool
removeAdditionalGLVisualisation
(
GUIGlObject
*
const
which);
234
235
237
void
destroyPopup
();
238
239
240
public
:
241
245
struct
Decal
{
247
Decal
()
248
:
filename
(),
centerX
(0),
centerY
(0),
centerZ
(0),
249
width
(0),
height
(0),
altitude
(0),
rot
(0),
tilt
(0),
roll
(0),
layer
(0),
250
initialised
(false),
skip2D
(false),
glID
(-1),
image
(0) { }
251
253
std::string
filename
;
255
SUMOReal
centerX
;
257
SUMOReal
centerY
;
259
SUMOReal
centerZ
;
261
SUMOReal
width
;
263
SUMOReal
height
;
265
SUMOReal
altitude
;
267
SUMOReal
rot
;
269
SUMOReal
tilt
;
271
SUMOReal
roll
;
273
SUMOReal
layer
;
275
bool
initialised
;
277
bool
skip2D
;
279
int
glID
;
281
FXImage*
image
;
282
};
283
284
285
public
:
286
FXComboBox&
getColoringSchemesCombo
();
287
288
292
Position
getPositionInformation
()
const
;
293
294
void
addDecals
(
const
std::vector<Decal>& decals) {
295
myDecals
.insert(
myDecals
.end(), decals.begin(), decals.end());
296
}
297
298
299
const
GUIVisualizationSettings
*
getVisualisationSettings
() {
300
return
myVisualizationSettings
;
301
}
302
303
304
protected
:
306
void
paintGL
();
307
308
void
updatePositionInformation
()
const
;
309
310
311
virtual
int
doPaintGL
(
int
/*mode*/
,
const
Boundary
&
/*boundary*/
) {
312
return
0;
313
}
314
315
virtual
void
doInit
() { }
316
318
void
paintGLGrid
();
319
324
void
displayLegend
();
325
326
328
GUIGlID
getObjectUnderCursor
();
329
331
GUIGlID
getObjectAtPosition
(
Position
pos);
332
334
std::vector<GUIGlID>
getObjectsInBoundary
(
const
Boundary
& bound);
335
337
void
showToolTipFor
(
unsigned
int
id
);
338
339
340
protected
:
343
void
drawDecals
();
344
345
// applies gl-transformations to fit the Boundary given by myChanger onto
346
// the canvas. If fixRatio is true, this boundary will be enlarged to
347
// prevent anisotropic stretching. (this should be set to false when doing
348
// selections)
349
void
applyGLTransform
(
bool
fixRatio =
true
);
350
351
protected
:
353
GUIMainWindow
*
myApp
;
354
356
GUIGlChildWindow
*
myParent
;
357
359
SUMORTree
*
myGrid
;
360
362
GUIPerspectiveChanger
*
myChanger
;
363
365
bool
myInEditMode
;
366
368
FXint
myWindowCursorPositionX
,
myWindowCursorPositionY
;
369
371
int
myMouseHotspotX
,
myMouseHotspotY
;
372
374
GUIGLObjectPopupMenu
*
myPopup
;
375
376
GUIVisualizationSettings
*
myVisualizationSettings
;
377
378
bool
myUseToolTips
;
379
381
bool
myAmInitialised
;
382
383
384
GUIDialog_EditViewport
*
myViewportChooser
;
385
GUIDialog_ViewSettings
*
myVisualizationChanger
;
386
387
390
392
std::vector<Decal>
myDecals
;
393
395
MFXMutex
myDecalsLock
;
397
398
399
std::map<SUMOTime, std::string>
mySnapshots
;
400
401
mutable
MFXMutex
myPolyDrawLock
;
402
404
std::map<GUIGlObject*, int>
myAdditionallyDrawn
;
405
406
407
protected
:
408
GUISUMOAbstractView
() { }
409
410
};
411
412
413
#endif
414
415
/****************************************************************************/
416
build
buildd
sumo-0.17.1~dfsg
src
utils
gui
windows
GUISUMOAbstractView.h
Generated on Sun Jun 16 2013 17:30:15 for SUMO - Simulation of Urban MObility by
1.8.3.1