Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/utils/gui/settings/GUIVisualizationSettings.h
169684 views
1
/****************************************************************************/
2
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.
4
// This program and the accompanying materials are made available under the
5
// terms of the Eclipse Public License 2.0 which is available at
6
// https://www.eclipse.org/legal/epl-2.0/
7
// This Source Code may also be made available under the following Secondary
8
// Licenses when the conditions for such availability set forth in the Eclipse
9
// Public License 2.0 are satisfied: GNU General Public License, version 2
10
// or later which is available at
11
// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13
/****************************************************************************/
14
/// @file GUIVisualizationSettings.h
15
/// @author Daniel Krajzewicz
16
/// @author Jakob Erdmann
17
/// @author Michael Behrisch
18
/// @date Sept 2002
19
///
20
// Stores the information about how to visualize structures
21
/****************************************************************************/
22
#pragma once
23
#include <config.h>
24
25
#include <string>
26
#include <vector>
27
#include <map>
28
#include <utils/common/RGBColor.h>
29
#include <utils/common/ToString.h>
30
31
#include "GUIPropertySchemeStorage.h"
32
33
34
// ===========================================================================
35
// class declarations
36
// ===========================================================================
37
class BaseSchemeInfoSource;
38
class OutputDevice;
39
class GUIVisualizationSettings;
40
class GUIGlObject;
41
42
43
// ===========================================================================
44
// class definitions
45
// ===========================================================================
46
47
// cannot declare this as inner class because it needs to be used in forward
48
// declaration (@todo fix inclusion order by removing references to guisim!)
49
struct GUIVisualizationTextSettings {
50
51
/// @brief constructor
52
GUIVisualizationTextSettings(bool _show, double _size, RGBColor _color, RGBColor _bgColor = RGBColor(128, 0, 0, 0), bool _constSize = true, bool _onlySelected = false);
53
54
/// @brief equality comparator
55
bool operator==(const GUIVisualizationTextSettings& other);
56
57
/// @brief inequality comparator
58
bool operator!=(const GUIVisualizationTextSettings& other);
59
60
/// @brief print values in output device
61
void print(OutputDevice& dev, const std::string& name) const;
62
63
/// @brief get scale size
64
double scaledSize(double scale, double constFactor = 0.1) const;
65
66
/// @brief whether to show the text
67
bool show(const GUIGlObject* o) const;
68
69
/// @brief flag show
70
bool showText;
71
72
/// @brief text size
73
double size;
74
75
/// @brief text color
76
RGBColor color;
77
78
/// @brief background text color
79
RGBColor bgColor;
80
81
/// @brief flag to avoid size changes
82
bool constSize;
83
84
/// @brief whether only selected objects shall have text drawn
85
bool onlySelected;
86
};
87
88
89
struct GUIVisualizationRainbowSettings {
90
91
/// @brief constructor
92
GUIVisualizationRainbowSettings(bool _hideMin, double _minThreshold, bool _hideMax, double _maxThreshold, bool _setNeutral,
93
double _neutralThreshold, bool _fixRange, int _rainboScheme);
94
95
/// @brief equality comparator
96
bool operator==(const GUIVisualizationRainbowSettings& other);
97
98
/// @brief inequality comparator
99
bool operator!=(const GUIVisualizationRainbowSettings& other);
100
101
/// @brief print values in output device
102
void print(OutputDevice& dev, const std::string& name) const;
103
104
/// @brief whether data below threshold should not be colored
105
bool hideMin;
106
/// @brief threshold below which value should not be colored
107
double minThreshold;
108
/// @brief whether data above threshold should not be colored
109
bool hideMax;
110
/// @brief threshold above which value should not be colored
111
double maxThreshold;
112
/// @brief whether the scale should be centered at a specific value
113
bool setNeutral;
114
/// @brief neutral point of scale
115
double neutralThreshold;
116
/// @brief whether the color scale should be fixed to the given min/max values
117
bool fixRange;
118
/// @brief index in the list of color schemes
119
int rainbowScheme;
120
/// @brief color steps for the rainbow;
121
std::vector<RGBColor> colors;
122
};
123
124
125
/// @brief struct for size settings
126
struct GUIVisualizationSizeSettings {
127
128
/// @brief constructor
129
GUIVisualizationSizeSettings(double _minSize, double _exaggeration = 1.0, bool _constantSize = false, bool _constantSizeSelected = false);
130
131
/// @brief return the drawing size including exaggeration and constantSize values
132
double getExaggeration(const GUIVisualizationSettings& s, const GUIGlObject* o, double factor = 20) const;
133
134
/// @brief equality comparator
135
bool operator==(const GUIVisualizationSizeSettings& other);
136
137
/// @brief inequality comparator
138
bool operator!=(const GUIVisualizationSizeSettings& other);
139
140
/// @brief print values in output device
141
void print(OutputDevice& dev, const std::string& name) const;
142
143
/// @brief The minimum size to draw this object
144
double minSize;
145
146
/// @brief The size exaggeration (upscale)
147
double exaggeration;
148
149
/// @brief whether the object shall be drawn with constant size regardless of zoom
150
bool constantSize;
151
152
/// @brief whether only selected objects shall be drawn with constant
153
bool constantSizeSelected;
154
};
155
156
157
/// @brief struct for color settings
158
struct GUIVisualizationColorSettings {
159
160
/// @brief constructor
161
GUIVisualizationColorSettings();
162
163
/// @brief equality comparator
164
bool operator==(const GUIVisualizationColorSettings& other);
165
166
/// @brief inequality comparator
167
bool operator!=(const GUIVisualizationColorSettings& other);
168
169
/// @brief basic selection color
170
RGBColor selectionColor;
171
172
/// @brief edge selection color
173
RGBColor selectedEdgeColor;
174
175
/// @brief lane selection color
176
RGBColor selectedLaneColor;
177
178
/// @brief connection selection color
179
RGBColor selectedConnectionColor;
180
181
/// @brief prohibition selection color
182
RGBColor selectedProhibitionColor;
183
184
/// @brief crossings selection color
185
RGBColor selectedCrossingColor;
186
187
/// @brief additional selection color (busStops, Detectors...)
188
RGBColor selectedAdditionalColor;
189
190
/// @brief route selection color (used for routes and vehicle stops)
191
RGBColor selectedRouteColor;
192
193
/// @brief vehicle selection color
194
RGBColor selectedVehicleColor;
195
196
/// @brief person selection color
197
RGBColor selectedPersonColor;
198
199
/// @brief person plan selection color (Rides, Walks, stopPersons...)
200
RGBColor selectedPersonPlanColor;
201
202
/// @brief container selection color
203
RGBColor selectedContainerColor;
204
205
/// @brief container plan selection color (Rides, Walks, containerStops...)
206
RGBColor selectedContainerPlanColor;
207
208
/// @brief edge data selection color
209
RGBColor selectedEdgeDataColor;
210
211
/// @brief color for busStops
212
RGBColor busStopColor;
213
214
/// @brief color for busStops signs
215
RGBColor busStopColorSign;
216
217
/// @brief color for trainStops
218
RGBColor trainStopColor;
219
220
/// @brief color for trainStops signs
221
RGBColor trainStopColorSign;
222
223
/// @brief color for containerStops
224
RGBColor containerStopColor;
225
226
/// @brief color for containerStop signs
227
RGBColor containerStopColorSign;
228
229
/// @brief color for chargingStations
230
RGBColor chargingStationColor;
231
232
/// @brief color for chargingStation sign
233
RGBColor chargingStationColorSign;
234
235
/// @brief color for chargingStation during charging
236
RGBColor chargingStationColorCharge;
237
238
/// @brief color for parkingAreas
239
RGBColor parkingAreaColor;
240
241
/// @brief color for parkingArea sign
242
RGBColor parkingAreaColorSign;
243
244
/// @brief color for parkingSpace contour
245
RGBColor parkingSpaceColorContour;
246
247
/// @brief color for parkingSpace innen
248
RGBColor parkingSpaceColor;
249
250
/// @brief color for Stops
251
RGBColor stopColor;
252
253
/// @brief color for Waypoints
254
RGBColor waypointColor;
255
256
/// @brief color for vehicle trips
257
RGBColor vehicleTripColor;
258
259
/// @brief color for stopPersons
260
RGBColor stopPersonColor;
261
262
/// @brief color for stopPersons
263
RGBColor personTripColor;
264
265
/// @brief color for walks
266
RGBColor walkColor;
267
268
/// @brief color for rides
269
RGBColor rideColor;
270
271
/// @brief color for containerStops
272
RGBColor stopContainerColor;
273
274
/// @brief color for transport
275
RGBColor transportColor;
276
277
/// @brief color for tranships
278
RGBColor transhipColor;
279
280
/// @brief color for highlighthing deadends
281
static const RGBColor SUMO_color_DEADEND_SHOW;
282
283
/// @brief color for child connections between parents and child elements
284
static const RGBColor childConnectionColor;
285
286
/// @brief color for edited shapes (Junctions, crossings and connections)
287
static const RGBColor editShapeColor;
288
289
/// @brief color for crossings
290
static const RGBColor crossingColor;
291
292
/// @brief color for priority crossing
293
static const RGBColor crossingPriorityColor;
294
295
/// @brief color for invalid crossing
296
static const RGBColor crossingInvalidColor;
297
298
};
299
300
301
/// @brief struct for candidate color settings
302
struct GUIVisualizationCandidateColorSettings {
303
304
/// @brief color for possible candidate element
305
static const RGBColor possible;
306
307
/// @brief color for selected candidate source
308
static const RGBColor source;
309
310
/// @brief color for selected candidate target
311
static const RGBColor target;
312
313
/// @brief color for selected special candidate element (Usually selected using shift+click)
314
static const RGBColor special;
315
316
/// @brief color for selected conflict candidate element (Usually selected using ctrl+click)
317
static const RGBColor conflict;
318
319
/// @brief color for invalid elements
320
static const RGBColor invalid;
321
};
322
323
/// @brief struct for connection settings
324
struct GUIVisualizationNeteditSizeSettings {
325
326
/// @brief junction bubble radius
327
static const double junctionBubbleRadius;
328
329
/// @brief moving junction geometry point radius
330
static const double junctionGeometryPointRadius;
331
332
/// @brief moving edge geometry point radius
333
static const double edgeGeometryPointRadius;
334
335
/// @brief moving lane geometry point radius
336
static const double laneGeometryPointRadius;
337
338
/// @brief moving connection geometry point radius
339
static const double connectionGeometryPointRadius;
340
341
/// @brief moving crossing geometry point radius
342
static const double crossingGeometryPointRadius;
343
344
/// @brief moving geometry point radius
345
static const double polygonGeometryPointRadius;
346
347
/// @brief polygon contour width
348
static const double polygonContourWidth;
349
350
/// @brief poly line width
351
static const double polylineWidth;
352
353
/// @brief moving additional geometry point radius
354
static const double additionalGeometryPointRadius;
355
};
356
357
/// @brief struct for connection settings
358
struct GUIVisualizationConnectionSettings {
359
360
/// @brief connection width
361
static const double connectionWidth;
362
};
363
364
365
/// @brief struct for additional settings
366
struct GUIVisualizationAdditionalSettings {
367
368
/// @brief color for rerouters
369
static const RGBColor rerouterColor;
370
371
/// @brief rerouter size
372
static const double rerouterSize;
373
374
/// @brief color for VSS
375
static const RGBColor VSSColor;
376
377
/// @brief VSS size
378
static const double VSSSize;
379
380
/// @brief color for Calibrators
381
static const RGBColor calibratorColor;
382
383
/// @brief Calibrator width
384
static const double calibratorWidth;
385
386
/// @brief Calibrator height
387
static const double calibratorHeight;
388
389
/// @brief color for route probes
390
static const RGBColor routeProbeColor;
391
392
/// @brief RouteProbe size
393
static const double routeProbeSize;
394
395
/// @brief color for vaporizers
396
static const RGBColor vaporizerColor;
397
398
/// @brief Vaporizer size
399
static const double vaporizerSize;
400
401
/// @brief stopEdges size
402
static const double stopEdgeSize;
403
404
/// @brief connection color
405
static const RGBColor connectionColor;
406
407
/// @brief connection color selected
408
static const RGBColor connectionColorSelected;
409
410
/// @brief tractionSubstation size
411
static const double tractionSubstationSize;
412
413
/// @brief overhead wire color top
414
static const RGBColor overheadWireColorTop;
415
416
/// @brief overhead wire color bot
417
static const RGBColor overheadWireColorBot;
418
419
/// @brief overhead wire color selected
420
static const RGBColor overheadWireColorSelected;
421
422
/// @brief arrow width
423
static const double arrowWidth;
424
425
/// @brief arrow length
426
static const double arrowLength;
427
428
/// @brief arrow offset
429
static const double arrowOffset;
430
431
/// @brief connection color between E1/junctions and TLS
432
static const RGBColor TLSConnectionColor;
433
};
434
435
436
/// @brief struct for detector settings
437
struct GUIVisualizationDetectorSettings {
438
439
/// @brief color for E1 detectors
440
static const RGBColor E1Color;
441
442
/// @brief E1 detector widths
443
static const double E1Width;
444
445
/// @brief E1 Instant detector heights
446
static const double E1Height;
447
448
/// @brief color for E1 Instant detectors
449
static const RGBColor E1InstantColor;
450
451
/// @brief E1 Instant detector widths
452
static const double E1InstantWidth;
453
454
/// @brief E1 Instant detector heights
455
static const double E1InstantHeight;
456
457
/// @brief color for E2 detectors
458
static const RGBColor E2Color;
459
460
/// @brief E2 detector widths
461
static const double E2Width;
462
463
/// @brief E3 detector size
464
static const double E3Size;
465
466
/// @brief color for Entrys
467
static const RGBColor E3EntryColor;
468
469
/// @brief color for Exits
470
static const RGBColor E3ExitColor;
471
472
/// @brief E3 Entry/Exit detector width
473
static const double E3EntryExitWidth;
474
475
/// @brief E3 Entry/Exit detector height
476
static const double E3EntryExitHeight;
477
};
478
479
480
/// @brief struct for stoppingPlace settings
481
struct GUIVisualizationStoppingPlaceSettings {
482
/// @brief busStop offset
483
static const double stoppingPlaceSignOffset;
484
485
/// @brief busStop width
486
static const double busStopWidth;
487
488
/// @brief trainStop width
489
static const double trainStopWidth;
490
491
/// @brief containerStop width
492
static const double containerStopWidth;
493
494
/// @brief chargingStation width
495
static const double chargingStationWidth;
496
497
/// @brief symbol external radius
498
static const double symbolExternalRadius;
499
500
/// @brief symbol internal radius
501
static const double symbolInternalRadius;
502
503
/// @brief symbol internal text size
504
static const double symbolInternalTextSize;
505
};
506
507
508
/// @brief struct for dotted contour settings
509
struct GUIVisualizationDottedContourSettings {
510
511
/// @brief width of dotted contour segments
512
static const double segmentWidth;
513
514
/// @brief width of small dotted contour segments
515
static const double segmentWidthSmall;
516
517
/// @brief width of large dotted contour segments
518
static const double segmentWidthLarge;
519
520
/// @brief length of dotted contour segments
521
static const double segmentLength;
522
523
/// @brief first color of dotted inspected contour
524
static const RGBColor firstInspectedColor;
525
526
/// @brief second color of dotted inspectedcontour
527
static const RGBColor secondInspectedColor;
528
529
/// @brief first color of dotted front contour
530
static const RGBColor firstFrontColor;
531
532
/// @brief second color of dotted front contour
533
static const RGBColor secondFrontColor;
534
};
535
536
537
/// @brief struct for width settings
538
struct GUIVisualizationWidthSettings {
539
540
/// @brief constructor
541
GUIVisualizationWidthSettings();
542
543
/// @brief equality comparator
544
bool operator==(const GUIVisualizationWidthSettings& other);
545
546
/// @brief inequality comparator
547
bool operator!=(const GUIVisualizationWidthSettings& other);
548
549
/// @brief width for trips
550
double tripWidth;
551
552
/// @brief width for person trips
553
double personTripWidth;
554
555
/// @brief width for walks
556
double walkWidth;
557
558
/// @brief width for rides
559
double rideWidth;
560
561
/// @brief width for rides
562
double transportWidth;
563
564
/// @brief width for rides
565
double transhipWidth;
566
567
/// @brief width for routes
568
static const double routeWidth;
569
570
/// @brief width for embeddedroutes
571
static const double embeddedRouteWidth;
572
};
573
574
575
/// @brief struct for detail settings
576
struct GUIVisualizationDetailSettings {
577
578
/// @brief draw connections in demand mode
579
static const double tmp;
580
};
581
582
583
/**
584
* @class GUIVisualizationSettings
585
* @brief Stores the information about how to visualize structures
586
*/
587
class GUIVisualizationSettings {
588
589
public:
590
591
enum class Detail : int {
592
Level0 = 0,
593
CircleResolution32 = 0, // circle resolution = 32
594
DrawPolygonTesselation = 0, // draw polygons tesselated
595
LaneDetails = 0, // offset, icons, indicators...
596
Text = 0, // draw text (E2, routes...)
597
VehiclePoly = 0, // draw vehicles as polygons
598
JunctionElementDetails = 0, // draw junction elements with high detail (crossings, connections..)
599
LockedIcons = 0, // draw lock icons
600
601
Level1 = 1,
602
CircleResolution16 = 1, // circle resolution = 16
603
VehicleBox = 1, // vehicles as boxes
604
AdditionalDetails = 1, // stoppingPlace signs, EntryExit arrows...
605
GeometryPoint = 1, // draw geometry points
606
JunctionElement = 1, // crossings, walking area, connections and internal lanes
607
DottedContoursResampled = 1, // resample dotted contours
608
PreciseSelection = 1, // precise selection using boundaries
609
DottedContours = 1, // draw dotted contours
610
611
Level2 = 2,
612
CircleResolution8 = 2, // circle resolution = 8
613
DrawPolygonSquare = 2, // draw polygons as squares
614
VehicleTriangle = 2, // draw vehicles as triangles
615
Additionals = 2, // draw additional elements
616
GeometryBoxLines = 2, // draw lines instead boxes in GUIGeometry::drawGeometry
617
618
Level3 = 3,
619
CircleResolution4 = 3, // draw circle resolution as squares
620
TLSIcon = 3, // draw TLS icons
621
622
Level4 = 4,
623
GeometryBoxSimpleLine = 4, // draw lines with width = 1 instead boxes in GUIGeometry::drawGeometry
624
};
625
626
/// @brief constructor
627
GUIVisualizationSettings(const std::string& _name, bool _netedit = false);
628
629
/// @brief check if draw junction
630
bool checkDrawJunction(const Boundary& b, const bool selected) const;
631
632
/// @brief check if draw edge
633
bool checkDrawEdge(const Boundary& b) const;
634
635
/// @brief update ignore hide by zoom (call BEFORE drawing all elements).
636
void updateIgnoreHideByZoom();
637
638
/// @brief check if draw additionals
639
bool checkDrawAdditional(Detail d, const bool selected) const;
640
641
/// @brief check if draw polygon
642
bool checkDrawPoly(const Boundary& b, const bool selected) const;
643
644
/// @brief check if draw POI
645
bool checkDrawPOI(const double w, const double h, const Detail d, const bool selected) const;
646
647
/// @brief check if draw vehicle
648
bool checkDrawVehicle(Detail d, const bool selected) const;
649
650
/// @brief check if draw person
651
bool checkDrawPerson(Detail d, const bool selected) const;
652
653
/// @brief check if draw container
654
bool checkDrawContainer(Detail d, const bool selected) const;
655
656
/// @brief copy all content from another GUIVisualizationSettings (note: DON'T USE in DrawGL functions!)
657
void copy(const GUIVisualizationSettings& s);
658
659
/// @brief init default settings
660
void initNeteditDefaults();
661
void initSumoGuiDefaults();
662
663
/** @brief Writes the settings into an output device
664
* @param[in] dev The device to write the settings into
665
*/
666
void save(OutputDevice& dev) const;
667
668
/** @brief Returns the number of the active lane (edge) coloring scheme
669
* @return number of the active scheme
670
*/
671
int getLaneEdgeMode() const;
672
673
/** @brief Returns the number of the active lane (edge) scaling scheme
674
* @return number of the active scheme
675
*/
676
int getLaneEdgeScaleMode() const;
677
678
/** @brief Returns the current lane (edge) coloring scheme
679
* @return current scheme
680
*/
681
GUIColorScheme& getLaneEdgeScheme();
682
683
/** @brief Returns the current lane (edge) scaling scheme
684
* @return current scheme
685
*/
686
GUIScaleScheme& getLaneEdgeScaleScheme();
687
688
/// @brief Comparison operator
689
bool operator==(const GUIVisualizationSettings& vs2);
690
691
/// @brief map from LinkState to color constants
692
static const RGBColor& getLinkColor(const LinkState& ls, bool realistic = false);
693
694
/// @brief return an angle that is suitable for reading text aligned with the given angle (degrees)
695
double getTextAngle(double objectAngle) const;
696
697
/// @brief return wether the text was flipped for reading at the given angle
698
bool flippedTextAngle(double objectAngle) const;
699
700
/// @brief return the detail level
701
Detail getDetailLevel(const double exaggeration) const;
702
703
/// @brief check if details can be drawn for the given GUIVisualizationDetailSettings and current scale and exaggeration
704
bool drawDetail(const double detail, const double exaggeration) const;
705
706
/// @brief check if moving geometry point can be draw
707
bool drawMovingGeometryPoint(const double exaggeration, const double radius) const;
708
709
/// @brief The name of this setting
710
std::string name;
711
712
/// @brief Whether the settings are for Netedit
713
bool netedit;
714
715
/// @brief The current view rotation angle
716
double angle;
717
718
/// @brief Information whether dithering shall be enabled
719
bool dither;
720
721
/// @brief Information whether frames-per-second should be drawn
722
bool fps;
723
724
/// @brief drawl all objects according to their z data
725
bool trueZ;
726
727
/// @name Background visualization settings
728
/// @{
729
730
/// @brief The background color to use
731
RGBColor backgroundColor;
732
733
/// @brief Information whether a grid shall be shown
734
bool showGrid;
735
736
/// @brief Information about the grid spacings
737
double gridXSize, gridYSize;
738
/// @}
739
740
/// @name lane visualization settings
741
/// @{
742
743
/// @brief The mesoscopic edge colorer
744
GUIColorer edgeColorer;
745
746
/// @brief The mesoscopic edge scaler
747
GUIScaler edgeScaler;
748
749
/// @brief this should be set at the same time as MSGlobals::gUseMesoSim
750
static bool UseMesoSim;
751
752
/// @brief The lane colorer
753
GUIColorer laneColorer;
754
755
/// @brief The lane scaler
756
GUIScaler laneScaler;
757
758
/// @brief Information whether lane borders shall be drawn
759
bool laneShowBorders;
760
761
/// @brief Information whether bicycle lane marking shall be drawn
762
bool showBikeMarkings;
763
764
/// @brief Information whether link textures (arrows) shall be drawn
765
bool showLinkDecals;
766
767
/// @brief Information whether link rules (colored bars) shall be drawn with a realistic color scheme
768
bool realisticLinkRules;
769
770
/// @brief Information whether link rules (colored bars) shall be drawn
771
bool showLinkRules;
772
773
/// @brief Information whether rails shall be drawn
774
bool showRails;
775
776
/// @brief Setting bundles for optional drawing names with size and color
777
GUIVisualizationTextSettings edgeName, internalEdgeName, cwaEdgeName, streetName, edgeValue, edgeScaleValue;
778
779
/// @brief flag to show or hide connectors
780
bool hideConnectors;
781
782
/// @brief The lane exaggeration (upscale thickness)
783
double laneWidthExaggeration;
784
785
/// @brief The minimum visual lane width for drawing
786
double laneMinSize;
787
788
/// @brief Whether to show direction indicators for lanes
789
bool showLaneDirection;
790
791
/// @brief Whether to show sublane boundaries
792
bool showSublanes;
793
794
/// @brief Whether to improve visualisation of superposed (rail) edges
795
bool spreadSuperposed;
796
797
/// @brief disable hide by zoom
798
bool disableHideByZoom;
799
800
/// @brief key for coloring by edge parameter
801
std::string edgeParam, laneParam;
802
/// @brief key for coloring by vehicle parameter
803
std::string vehicleParam;
804
/// @brief key for scaling by vehicle parameter
805
std::string vehicleScaleParam;
806
/// @brief key for rendering vehicle textual parameter
807
std::string vehicleTextParam;
808
809
/// @brief key for coloring by edgeData
810
std::string edgeData;
811
/// @brief id for coloring by live edgeData
812
std::string edgeDataID;
813
/// @brief key for scaling by edgeData
814
std::string edgeDataScaling;
815
816
/// @brief checks and thresholds for rainbow coloring
817
GUIVisualizationRainbowSettings edgeValueRainBow;
818
/// @}
819
820
/// @name vehicle visualization settings
821
/// @{
822
823
/// @brief The vehicle colorer
824
GUIColorer vehicleColorer;
825
826
/// @brief The size scaling settings for vehicles
827
GUIScaler vehicleScaler;
828
829
/// @brief The quality of vehicle drawing
830
int vehicleQuality;
831
832
/// @brief Information whether vehicle blinkers shall be drawn
833
bool showBlinker;
834
835
/// @brief Information whether the lane change preference shall be drawn
836
bool drawLaneChangePreference;
837
838
/// @brief Information whether the minimum gap shall be drawn
839
bool drawMinGap;
840
841
/// @brief Information whether the brake gap shall be drawn
842
bool drawBrakeGap;
843
844
/// @brief Information whether the communication range shall be drawn
845
bool showBTRange;
846
847
/// @brief Information whether the route index should be shown
848
bool showRouteIndex;
849
850
/// @brief Whether vehicle length shall be scaled with length/geometry factor
851
bool scaleLength;
852
853
/// @brief Whether to draw reversed vehicles in their reversed state
854
bool drawReversed;
855
856
/// @brief Set whether parking related information should be shown
857
bool showParkingInfo;
858
859
/// @brief Set whether the charging search related information should be shown
860
bool showChargingInfo;
861
862
// Setting bundles for controling the size of the drawn vehicles
863
GUIVisualizationSizeSettings vehicleSize;
864
865
// Setting bundles for optional drawing vehicle names or color value
866
GUIVisualizationTextSettings vehicleName, vehicleValue, vehicleScaleValue, vehicleText;
867
868
GUIVisualizationRainbowSettings vehicleValueRainBow;
869
/// @}
870
871
872
/// @name person visualization settings
873
/// @{
874
875
/// @brief The person colorer
876
GUIColorer personColorer;
877
878
/// @brief The quality of person drawing
879
int personQuality;
880
881
// Setting bundles for controling the size of the drawn persons
882
GUIVisualizationSizeSettings personSize;
883
884
// Setting bundles for optional drawing person names
885
GUIVisualizationTextSettings personName, personValue;
886
887
/// @brief Flag for visualizing the pedestrian network generated for JuPedSim
888
bool showPedestrianNetwork;
889
890
/// @brief The color of the pedestrian network generated for JuPedSim
891
RGBColor pedestrianNetworkColor;
892
/// @}
893
894
895
/// @name container visualization settings
896
/// @{
897
898
/// @brief The container colorer
899
GUIColorer containerColorer;
900
901
/// @brief The quality of container drawing
902
int containerQuality;
903
904
// Setting bundles for controling the size of the drawn containers
905
GUIVisualizationSizeSettings containerSize;
906
907
// Setting bundles for optional drawing container names
908
GUIVisualizationTextSettings containerName;
909
/// @}
910
911
912
/// @name junction visualization settings
913
/// @{
914
915
/// @brief The junction colorer
916
GUIColorer junctionColorer;
917
918
// Setting bundles for optional drawing junction names and indices
919
GUIVisualizationTextSettings drawLinkTLIndex, drawLinkJunctionIndex, junctionID, junctionName, internalJunctionName, tlsPhaseIndex, tlsPhaseName;
920
921
/// @brief Information whether lane-to-lane arrows shall be drawn
922
bool showLane2Lane;
923
/// @brief whether the shape of the junction should be drawn
924
bool drawJunctionShape;
925
/// @brief whether crossings and walkingareas shall be drawn
926
bool drawCrossingsAndWalkingareas;
927
// Setting bundles for controling the size of the drawn junction
928
GUIVisualizationSizeSettings junctionSize;
929
930
GUIVisualizationRainbowSettings junctionValueRainBow;
931
/// @}
932
933
934
/// @name Additional structures visualization settings
935
/// @{
936
937
/// @brief The additional structures visualization scheme
938
// @todo decouple addExaggeration for POIs, Polygons, Triggers etc
939
int addMode;
940
// Setting bundles for controling the size of additional items
941
GUIVisualizationSizeSettings addSize;
942
// Setting bundles for optional drawing additional names
943
GUIVisualizationTextSettings addName;
944
// Setting bundles for optional drawing additional full names
945
GUIVisualizationTextSettings addFullName;
946
/// @}
947
948
949
/// @name shapes visualization settings
950
/// @{
951
952
/// @brief The POI colorer
953
GUIColorer poiColorer;
954
955
// Setting bundles for controling the size of the drawn POIs
956
GUIVisualizationSizeSettings poiSize;
957
958
/// @brief The detail level for drawing POIs
959
int poiDetail;
960
961
// Setting bundles for optional drawing poi names
962
GUIVisualizationTextSettings poiName;
963
964
// Setting bundles for optional drawing poi types
965
GUIVisualizationTextSettings poiType;
966
967
// Setting bundles for optional drawing poi text
968
GUIVisualizationTextSettings poiText;
969
970
/// @brief key for rendering poi textual parameter
971
std::string poiTextParam;
972
973
/// @brief whether the rendering layer of POIs should be overriden
974
bool poiUseCustomLayer;
975
976
/// @brief the custom layer for POIs
977
double poiCustomLayer;
978
979
/// @brief The polygon colorer
980
GUIColorer polyColorer;
981
982
// Setting bundles for controling the size of the drawn polygons
983
GUIVisualizationSizeSettings polySize;
984
985
// Setting bundles for optional drawing polygon names
986
GUIVisualizationTextSettings polyName;
987
988
// Setting bundles for optional drawing polygon types
989
GUIVisualizationTextSettings polyType;
990
991
/// @brief whether the rendering layer of polygons should be overriden
992
bool polyUseCustomLayer;
993
994
/// @brief the custom layer for polygons
995
double polyCustomLayer;
996
/// @}
997
998
999
/// @name data mode visualization settings
1000
/// @{
1001
/// @brief the edgeRelation / tazRelation colorer
1002
GUIColorer dataColorer;
1003
GUIVisualizationTextSettings dataValue;
1004
1005
/// @brief The tazRelation exaggeration (upscale thickness)
1006
double tazRelWidthExaggeration;
1007
1008
/// @brief The edgeRelation exaggeration (upscale thickness)
1009
double edgeRelWidthExaggeration;
1010
1011
/// @brief key for coloring by edgeRelation / tazRelation attribute
1012
std::string relDataAttr;
1013
1014
/// @brief value below which edgeData and edgeRelation data value should not be rendered
1015
GUIVisualizationRainbowSettings dataValueRainBow;
1016
/// @}
1017
1018
1019
/// @name 3D visualization settings
1020
/// @{
1021
/// @brief whether the coloring schemes of vehicles should be ignored
1022
bool ignoreColorSchemeFor3DVehicles;
1023
1024
/// @brief whether the TLS link markers should be drawn
1025
bool show3DTLSLinkMarkers;
1026
1027
/// @brief whether the semi-transparent domes around 3D TL models should be drawn
1028
bool show3DTLSDomes;
1029
1030
/// @brief whether 3D TLS models should be generated automatically
1031
bool generate3DTLSModels;
1032
1033
/// @brief whether to draw the head up display items
1034
bool show3DHeadUpDisplay;
1035
1036
/// @brief 3D material light components
1037
RGBColor ambient3DLight;
1038
RGBColor diffuse3DLight;
1039
1040
/// @brief sky background color
1041
RGBColor skyColor;
1042
1043
/// @}
1044
1045
1046
/// @brief Information whether the size legend shall be drawn
1047
bool showSizeLegend;
1048
1049
/// @brief Information whether the edge color legend shall be drawn
1050
bool showColorLegend;
1051
1052
/// @brief Information whether the vehicle color legend shall be drawn
1053
bool showVehicleColorLegend;
1054
1055
/// @brief information about a lane's width (temporary, used for a single view)
1056
double scale;
1057
1058
/// @brief whether the application is in gaming mode or not
1059
bool gaming;
1060
1061
/// @brief enable or disable draw boundaries
1062
bool drawBoundaries;
1063
1064
/// @brief the current selection scaling in netedit (set in SelectorFrame)
1065
double selectorFrameScale;
1066
1067
/// @brief whether drawing is performed for the purpose of selecting objects in view using ViewObjectsHandler
1068
bool drawForViewObjectsHandler;
1069
1070
/// @brief whether drawing is performed for the purpose of selecting objects using a rectangle
1071
bool drawForRectangleSelection;
1072
1073
/// @brief flag to force draw for rectangle selection (see drawForRectangleSelection)
1074
bool forceDrawForRectangleSelection;
1075
1076
/// @brief flag for disable dotted contours in netedit
1077
bool disableDottedContours;
1078
1079
// Setting bundles for optional drawing geometry point indices
1080
GUIVisualizationTextSettings geometryIndices;
1081
1082
/// @brief whether secondary lane shape shall be drawn
1083
bool secondaryShape;
1084
1085
/**@brief whether drawing is performed in left-hand networks
1086
* @note used to avoid calls to OptionsCont::getOptions() in every drawgl(...) function, and
1087
* updated in every doPaintGL(int mode, const Boundary& bound) call
1088
*/
1089
bool lefthand;
1090
1091
/**@brief whether drawing is performed in left-hand networks
1092
* @note used to avoid calls to OptionsCont::getOptions() in every drawgl(...) function, and
1093
* updated in every doPaintGL(int mode, const Boundary& bound) call
1094
*/
1095
bool disableLaneIcons;
1096
1097
/// @brief scheme names
1098
static const std::string SCHEME_NAME_EDGE_PARAM_NUMERICAL;
1099
static const std::string SCHEME_NAME_LANE_PARAM_NUMERICAL;
1100
static const std::string SCHEME_NAME_PARAM_NUMERICAL;
1101
static const std::string SCHEME_NAME_EDGEDATA_NUMERICAL;
1102
static const std::string SCHEME_NAME_DATA_ATTRIBUTE_NUMERICAL;
1103
static const std::string SCHEME_NAME_SELECTION;
1104
static const std::string SCHEME_NAME_TYPE;
1105
static const std::string SCHEME_NAME_PERMISSION_CODE;
1106
static const std::string SCHEME_NAME_EDGEDATA_LIVE;
1107
1108
static const double MISSING_DATA;
1109
static RGBColor COL_MISSING_DATA;
1110
1111
static std::map<std::string, std::vector<RGBColor> > RAINBOW_SCHEMES;
1112
1113
/// @brief color settings
1114
GUIVisualizationColorSettings colorSettings;
1115
1116
/// @brief candidate color settings
1117
GUIVisualizationCandidateColorSettings candidateColorSettings;
1118
1119
/// @brief netedit size settings
1120
GUIVisualizationNeteditSizeSettings neteditSizeSettings;
1121
1122
/// @brief connection settings
1123
GUIVisualizationConnectionSettings connectionSettings;
1124
1125
/// @brief Additional settings
1126
GUIVisualizationAdditionalSettings additionalSettings;
1127
1128
/// @brief Detector settings
1129
GUIVisualizationDetectorSettings detectorSettings;
1130
1131
/// @brief StoppingPlace settings
1132
GUIVisualizationStoppingPlaceSettings stoppingPlaceSettings;
1133
1134
/// @brief dotted contour settings
1135
GUIVisualizationDottedContourSettings dottedContourSettings;
1136
1137
/// @brief width settings
1138
GUIVisualizationWidthSettings widthSettings;
1139
1140
/// @brief detail settings
1141
GUIVisualizationDetailSettings detailSettings;
1142
1143
/// @brief constant for boundary size drawing (20 for slow computers, 10 for quick computers)
1144
double BoundarySizeDrawing = 15;
1145
1146
protected:
1147
/// @brief flag for ignore hide by zoom (used if we're drawing elements with constant size, their ID/name/etc. texts, etc.)
1148
bool myIgnoreHideByZoom;
1149
1150
private:
1151
/// @brief set copy constructor private
1152
GUIVisualizationSettings(const GUIVisualizationSettings&) = default;
1153
1154
/// @brief set assignment operator private
1155
GUIVisualizationSettings& operator=(const GUIVisualizationSettings&) = default;
1156
};
1157
1158