Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
GUIVisualizationSettings.cpp
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2001-2023 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/****************************************************************************/
20// Stores the information about how to visualize structures
21/****************************************************************************/
22#include <config.h>
23
24#include <map>
25#include <vector>
27
29#include "GUIPropertyScheme.h"
30
31// ===========================================================================
32// static members
33// ===========================================================================
34
36
37// -------------------------------------------------------------------------
38// color constants for link states
39// -------------------------------------------------------------------------
40
43const RGBColor SUMO_color_TL_RED(255, 0, 0);
49const RGBColor SUMO_color_MAJOR(255, 255, 255);
50const RGBColor SUMO_color_MINOR(51, 51, 51);
51const RGBColor SUMO_color_EQUAL(128, 128, 128);
52const RGBColor SUMO_color_STOP(128, 0, 128);
54const RGBColor SUMO_color_ZIPPER(192, 128, 64);
56
57// -------------------------------------------------------------------------
58// color constants for other objects
59// -------------------------------------------------------------------------
60
67
68
69// -------------------------------------------------------------------------
70// color constants for other objects
71// -------------------------------------------------------------------------
72
74const RGBColor GUIVisualizationCandidateColorSettings::source(0, 255, 255, 255); // Cyan
75const RGBColor GUIVisualizationCandidateColorSettings::target(0, 255, 0, 255); // Green
76const RGBColor GUIVisualizationCandidateColorSettings::special(255, 0, 255, 255); // Magenta
77const RGBColor GUIVisualizationCandidateColorSettings::conflict(255, 255, 0, 255); // Yellow
78const RGBColor GUIVisualizationCandidateColorSettings::invalid(128, 128, 128, 255); // Yellow
79
80// -------------------------------------------------------------------------
81// Netedit size values
82// -------------------------------------------------------------------------
83
94
95// -------------------------------------------------------------------------
96// additional values
97// -------------------------------------------------------------------------
98
100
101// -------------------------------------------------------------------------
102// additional values
103// -------------------------------------------------------------------------
104
126
127// -------------------------------------------------------------------------
128// detector values
129// -------------------------------------------------------------------------
130
144
145// -------------------------------------------------------------------------
146// StoppingPlace values
147// -------------------------------------------------------------------------
148
154
155// -------------------------------------------------------------------------
156// Dotted contour values
157// -------------------------------------------------------------------------
158
166
167// -------------------------------------------------------------------------
168// 3D light presets
169// -------------------------------------------------------------------------
170const RGBColor OSG_color_AMBIENT(32, 32, 32, 255);
171const RGBColor OSG_color_DIFFUSE(64, 64, 64, 255);
172const RGBColor OSG_color_SKY(51, 51, 102, 255);
173
174// -------------------------------------------------------------------------
175// widths of certain netedit objects
176// -------------------------------------------------------------------------
177
180
181// -------------------------------------------------------------------------
182// details of certain netedit objects (0 = drawn always)
183// -------------------------------------------------------------------------
184
186const double GUIVisualizationDetailSettings::laneTextures(20); // originally 10
188const double GUIVisualizationDetailSettings::additionalTextures(20); // originally 10
205
206// -------------------------------------------------------------------------
207// scheme names
208// -------------------------------------------------------------------------
209
210const std::string GUIVisualizationSettings::SCHEME_NAME_EDGE_PARAM_NUMERICAL("by param (numerical, streetwise)");
211const std::string GUIVisualizationSettings::SCHEME_NAME_LANE_PARAM_NUMERICAL("by param (numerical, lanewise)");
212const std::string GUIVisualizationSettings::SCHEME_NAME_PARAM_NUMERICAL("by param (numerical)");
213const std::string GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_NUMERICAL("by edgeData (numerical, streetwise)");
214const std::string GUIVisualizationSettings::SCHEME_NAME_DATA_ATTRIBUTE_NUMERICAL("by attribute (numerical)");
215const std::string GUIVisualizationSettings::SCHEME_NAME_SELECTION("by selection");
216const std::string GUIVisualizationSettings::SCHEME_NAME_TYPE("by type");
217const std::string GUIVisualizationSettings::SCHEME_NAME_PERMISSION_CODE("by permission code");
218const std::string GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_LIVE("by live edgeData");
219
220const double GUIVisualizationSettings::MISSING_DATA(std::numeric_limits<double>::max());
222
223// color constants for scheme background
224#define COL_SCHEME_EMISSION RGBColor(255,255,210)
225#define COL_SCHEME_MISC RGBColor(210,220,255)
226#define COL_SCHEME_STATIC RGBColor(230,230,230)
227#define COL_SCHEME_DYNAMIC RGBColor(220,255,220)
228
229// ===========================================================================
230// member method definitions
231// ===========================================================================
232
233// ---------------------------------------------------------------------------
234// GUIVisualizationTextSettings - methods
235// ---------------------------------------------------------------------------
236
237GUIVisualizationTextSettings::GUIVisualizationTextSettings(bool _showText, double _size, RGBColor _color, RGBColor _bgColor, bool _constSize, bool _onlySelected) :
238 showText(_showText),
239 size(_size),
240 color(_color),
241 bgColor(_bgColor),
242 constSize(_constSize),
243 onlySelected(_onlySelected) {
244}
245
246
247bool
249 return (showText == other.showText) &&
250 (size == other.size) &&
251 (color == other.color) &&
252 (bgColor == other.bgColor) &&
253 (constSize == other.constSize) &&
254 (onlySelected == other.onlySelected);
255}
256
257
258bool
260 return (showText != other.showText) ||
261 (size != other.size) ||
262 (color != other.color) ||
263 (bgColor != other.bgColor) ||
264 (constSize != other.constSize) ||
265 (onlySelected != other.onlySelected);
266}
267
268
269void
270GUIVisualizationTextSettings::print(OutputDevice& dev, const std::string& name) const {
271 dev.writeAttr(name + "_show", showText);
272 dev.writeAttr(name + "_size", size);
273 dev.writeAttr(name + "_color", color);
274 dev.writeAttr(name + "_bgColor", bgColor);
275 dev.writeAttr(name + "_constantSize", constSize);
276 dev.writeAttr(name + "_onlySelected", onlySelected);
277}
278
279
280double
281GUIVisualizationTextSettings::scaledSize(double scale, double constFactor) const {
282 return constSize ? (size / scale) : (size * constFactor);
283}
284
285
286bool
288 return showText && (!onlySelected || o == nullptr || gSelected.isSelected(o));
289}
290
291// ---------------------------------------------------------------------------
292// GUIVisualizationSizeSettings - methods
293// ---------------------------------------------------------------------------
294
295GUIVisualizationSizeSettings::GUIVisualizationSizeSettings(double _minSize, double _exaggeration, bool _constantSize, bool _constantSizeSelected) :
296 minSize(_minSize),
297 exaggeration(_exaggeration),
298 constantSize(_constantSize),
299 constantSizeSelected(_constantSizeSelected) {
300}
301
302
303double
305 // declare exaggeration final
306 double exaggerationFinal;
308 if (constantSize && (!constantSizeSelected || (o == nullptr) || gSelected.isSelected(o))) {
309 exaggerationFinal = MAX2(exaggeration, exaggeration * factor / s.scale);
310 } else if (!constantSizeSelected || (o == nullptr) || gSelected.isSelected(o)) {
311 exaggerationFinal = exaggeration;
312 } else {
313 exaggerationFinal = 1;
314 }
315 // add selectorFrameScale
316 if ((o != nullptr) && gSelected.isSelected(o)) {
317 return (exaggerationFinal * s.selectorFrameScale);
318 } else {
319 return exaggerationFinal;
320 }
321}
322
323
324bool
331
332
333bool
340
341
342void
343GUIVisualizationSizeSettings::print(OutputDevice& dev, const std::string& name) const {
344 dev.writeAttr(name + "_minSize", minSize);
345 dev.writeAttr(name + "_exaggeration", exaggeration);
346 dev.writeAttr(name + "_constantSize", constantSize);
347 dev.writeAttr(name + "_constantSizeSelected", constantSizeSelected);
348}
349
350// ---------------------------------------------------------------------------
351// GUIVisualizationColorSettings - methods
352// ---------------------------------------------------------------------------
353
355 selectionColor(0, 0, 204, 255),
356 selectedEdgeColor(0, 0, 204, 255),
357 selectedLaneColor(0, 0, 128, 255),
358 selectedConnectionColor(0, 0, 100, 255),
359 selectedProhibitionColor(0, 0, 120, 255),
360 selectedCrossingColor(0, 100, 196, 255),
361 selectedAdditionalColor(0, 0, 150, 255),
362 selectedRouteColor(0, 0, 150, 255),
363 selectedVehicleColor(0, 0, 100, 255),
364 selectedPersonColor(0, 0, 120, 255),
365 selectedPersonPlanColor(0, 0, 130, 255),
366 selectedContainerColor(0, 0, 120, 255),
367 selectedContainerPlanColor(0, 0, 130, 255),
368 selectedEdgeDataColor(0, 0, 150, 255),
369 busStopColor(76, 170, 50),
370 busStopColorSign(255, 235, 0),
371 trainStopColor(76, 170, 50),
372 trainStopColorSign(255, 235, 0),
373 containerStopColor(83, 89, 172),
374 containerStopColorSign(177, 184, 186, 171),
375 chargingStationColor(114, 210, 252),
376 chargingStationColorSign(255, 235, 0),
377 chargingStationColorCharge(255, 180, 0),
378 parkingAreaColor(83, 89, 172),
379 parkingAreaColorSign(177, 184, 186),
380 parkingSpaceColorContour(0, 255, 0),
381 parkingSpaceColor(255, 200, 200),
382 stopColor(220, 20, 30),
383 waypointColor(0, 127, 14),
384 vehicleTripColor(255, 128, 0),
385 stopPersonColor(255, 0, 0),
386 personTripColor(200, 0, 255),
387 walkColor(0, 255, 0),
388 rideColor(0, 0, 255),
389 stopContainerColor(255, 0, 0),
390 transportColor(100, 200, 0),
391 transhipColor(100, 0, 200) {
392}
393
394
395bool
397 return (selectionColor == v2.selectionColor) &&
410 (busStopColor == v2.busStopColor) &&
423 (stopColor == v2.stopColor) &&
428 (walkColor == v2.walkColor) &&
429 (rideColor == v2.rideColor) &&
433}
434
435
436bool
438 return (selectionColor != v2.selectionColor) ||
451 (busStopColor != v2.busStopColor) ||
464 (stopColor != v2.stopColor) ||
469 (walkColor != v2.walkColor) ||
470 (rideColor != v2.rideColor) ||
474}
475
476// ---------------------------------------------------------------------------
477// GUIVisualizationWidthSettings - methods
478// ---------------------------------------------------------------------------
479
481 tripWidth(0.2),
482 personTripWidth(0.25),
483 walkWidth(0.25),
484 rideWidth(0.25),
485 transportWidth(0.25),
486 transhipWidth(0.25) {
487}
488
489
490bool
499
500
501bool
510
511// ---------------------------------------------------------------------------
512// GUIVisualizationWidthSettings - methods
513// ---------------------------------------------------------------------------
514
515GUIVisualizationSettings::GUIVisualizationSettings(const std::string& _name, bool _netedit) :
516 name(_name),
517 netedit(_netedit),
518 angle(0),
519 dither(false),
520 fps(false),
521 backgroundColor(RGBColor::WHITE),
522 showGrid(false), gridXSize(100), gridYSize(100),
523 laneShowBorders(false), showBikeMarkings(true), showLinkDecals(true),
524 realisticLinkRules(false),
525 showLinkRules(true),
526 showRails(true),
527 edgeName(false, 60, RGBColor::ORANGE),
528 internalEdgeName(false, 45, RGBColor(128, 64, 0, 255)),
529 cwaEdgeName(false, 60, RGBColor::MAGENTA),
530 streetName(false, 60, RGBColor::YELLOW),
531 edgeValue(false, 100, RGBColor::CYAN),
532 edgeScaleValue(false, 100, RGBColor::BLUE),
533 hideConnectors(false),
534 laneWidthExaggeration(1),
535 laneMinSize(0),
536 showLaneDirection(false),
537 showSublanes(true),
538 spreadSuperposed(false),
539 edgeParam("EDGE_KEY"),
540 laneParam("LANE_KEY"),
541 vehicleParam("PARAM_NUMERICAL"),
542 vehicleScaleParam("PARAM_NUMERICAL"),
543 vehicleTextParam("PARAM_TEXT"),
544 edgeData("speed"),
545 edgeDataID(""),
546 edgeDataScaling(""),
547 edgeValueHideCheck(false),
548 edgeValueHideThreshold(0),
549 edgeValueHideCheck2(false),
550 edgeValueHideThreshold2(200),
551 vehicleQuality(0), showBlinker(true),
552 drawLaneChangePreference(false),
553 drawMinGap(false),
554 drawBrakeGap(false),
555 showBTRange(false),
556 showRouteIndex(false),
557 scaleLength(true),
558 drawReversed(false),
559 showParkingInfo(false),
560 vehicleSize(1),
561 vehicleName(false, 60, RGBColor(204, 153, 0, 255)),
562 vehicleValue(false, 80, RGBColor::CYAN),
563 vehicleScaleValue(false, 80, RGBColor::GREY),
564 vehicleText(false, 80, RGBColor::RED),
565 personQuality(netedit ? 2 : 0),
566 personSize(1),
567 personName(false, 60, RGBColor(0, 153, 204, 255)),
568 personValue(false, 80, RGBColor::CYAN),
569 containerQuality(0),
570 containerSize(1),
571 containerName(false, 60, RGBColor(0, 153, 204, 255)),
572 drawLinkTLIndex(false, 65, RGBColor(128, 128, 255, 255), RGBColor::INVISIBLE, false),
573 drawLinkJunctionIndex(false, 65, RGBColor(128, 128, 255, 255), RGBColor::INVISIBLE, false),
574 junctionID(false, 60, RGBColor(0, 255, 128, 255)),
575 junctionName(false, 60, RGBColor(192, 255, 128, 255)),
576 internalJunctionName(false, 50, RGBColor(0, 204, 128, 255)),
577 tlsPhaseIndex(false, 150, RGBColor::YELLOW),
578 tlsPhaseName(false, 150, RGBColor::ORANGE),
579 showLane2Lane(false),
580 drawJunctionShape(true),
581 drawCrossingsAndWalkingareas(true),
582 junctionSize(1),
583 addMode(0),
584 addSize(1),
585 addName(false, 60, RGBColor(255, 0, 128, 255)),
586 addFullName(false, 60, RGBColor(255, 0, 128, 255)),
587 poiSize(0),
588 poiDetail(16),
589 poiName(false, 50, RGBColor(255, 0, 128, 255)),
590 poiType(false, 60, RGBColor(255, 0, 128, 255)),
591 poiText(false, 80, RGBColor(140, 0, 255, 255)),
592 poiTextParam("PARAM_TEXT"),
593 polySize(0), polyName(false, 50, RGBColor(255, 0, 128, 255)),
594 polyType(false, 60, RGBColor(255, 0, 128, 255)),
595 dataValue(false, 100, RGBColor::CYAN),
596 tazRelWidthExaggeration(1),
597 edgeRelWidthExaggeration(1),
598 relDataAttr("count"),
599 dataValueHideCheck(false),
600 dataValueHideThreshold(0),
601 show3DTLSLinkMarkers(true),
602 show3DTLSDomes(true),
603 generate3DTLSModels(false),
604 show3DHeadUpDisplay(true),
605 ambient3DLight(OSG_color_AMBIENT),
606 diffuse3DLight(OSG_color_DIFFUSE),
607 skyColor(OSG_color_SKY),
608 showSizeLegend(true),
609 showColorLegend(false),
610 showVehicleColorLegend(false),
611 gaming(false),
612 drawBoundaries(false),
613 selectorFrameScale(1.),
614 drawForPositionSelection(false),
615 drawForRectangleSelection(false),
616 forceDrawForPositionSelection(false),
617 forceDrawForRectangleSelection(false),
618 disableDottedContours(false),
619 geometryIndices(false, 50, RGBColor(255, 0, 128, 255)),
620 secondaryShape(false),
621 lefthand(false),
622 disableLaneIcons(false) {
623 // init defaults depending of netedit or SUMO-GUI
624 if (netedit) {
626 } else {
628 }
629}
630
631
632void
634 // just copy. Note: By default = operator is disabled to avoid accidental copies)
635 *this = s;
636}
637
638
639void
642 GUIColorScheme scheme = GUIColorScheme("uniform", RGBColor::BLACK, "road", true, 0);
643 scheme.addColor(RGBColor::GREY, 1, "sidewalk");
644 scheme.addColor(RGBColor(192, 66, 44), 2, "bike lane");
645 scheme.addColor(RGBColor(0, 0, 0, 0), 3, "green verge");
646 scheme.addColor(RGBColor(150, 200, 200), 4, "waterway");
647 scheme.addColor(RGBColor::BLACK, 5, "railway");
648 scheme.addColor(RGBColor(64, 0, 64), 6, "rails on road");
649 scheme.addColor(RGBColor(92, 92, 92), 7, "no passenger"); // paths, service roads etc
650 scheme.addColor(RGBColor::RED, 8, "closed"); // road closing
651 scheme.addColor(RGBColor::GREEN, 9, "connector"); // macro-connector
652 scheme.addColor(RGBColor::ORANGE, 10, "forbidden"); // forbidden road
653 laneColorer.addScheme(scheme);
654 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
655 scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
656 laneColorer.addScheme(scheme);
657 scheme = GUIColorScheme(SCHEME_NAME_PERMISSION_CODE, RGBColor(240, 240, 240), "nobody");
658 scheme.addColor(RGBColor(10, 10, 10), (double)SVC_PASSENGER, "passenger");
659 scheme.addColor(RGBColor(128, 128, 128), (double)SVC_PEDESTRIAN, "pedestrian");
660 scheme.addColor(RGBColor(80, 80, 80), (double)(SVC_PEDESTRIAN | SVC_DELIVERY), "pedestrian_delivery");
661 scheme.addColor(RGBColor(192, 66, 44), (double)SVC_BICYCLE, "bicycle");
662 scheme.addColor(RGBColor(40, 100, 40), (double)SVC_BUS, "bus");
663 scheme.addColor(RGBColor(166, 147, 26), (double)SVC_TAXI, "taxi");
664 scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~SVC_NON_ROAD), "normal_road");
665 scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_NON_ROAD)), "disallow_pedestrian");
666 scheme.addColor(RGBColor(255, 206, 0), (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_BICYCLE | SVC_MOPED | SVC_NON_ROAD)), "motorway");
667 scheme.addColor(RGBColor(150, 200, 200), (double)SVC_SHIP, "waterway");
668 scheme.addColor(RGBColor::GREEN, (double)SVCAll, "all");
669 laneColorer.addScheme(scheme);
670 // ... traffic states ...
671 scheme = GUIColorScheme("by allowed speed (lanewise)", RGBColor::RED);
672 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
673 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
674 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
675 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
676 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
677 laneColorer.addScheme(scheme);
678 scheme = GUIColorScheme("by current occupancy (lanewise, brutto)", RGBColor(235, 235, 235), "", false, 0, COL_SCHEME_DYNAMIC);
679 scheme.addColor(RGBColor::GREEN, 0.25);
680 scheme.addColor(RGBColor::YELLOW, 0.5);
681 scheme.addColor(RGBColor::ORANGE, 0.75);
682 scheme.addColor(RGBColor::RED, 1.0);
683 laneColorer.addScheme(scheme);
684 scheme = GUIColorScheme("by current occupancy (lanewise, netto)", RGBColor(235, 235, 235), "", false, 0, COL_SCHEME_DYNAMIC);
685 scheme.addColor(RGBColor::GREEN, 0.25);
686 scheme.addColor(RGBColor::YELLOW, 0.5);
687 scheme.addColor(RGBColor::ORANGE, 0.75);
688 scheme.addColor(RGBColor::RED, 1.0);
689 laneColorer.addScheme(scheme);
690 scheme = GUIColorScheme("by first vehicle waiting time (lanewise)", RGBColor(235, 235, 235), "", false, 0, COL_SCHEME_DYNAMIC);
691 scheme.addColor(RGBColor::CYAN, 30.);
692 scheme.addColor(RGBColor::GREEN, 100.);
693 scheme.addColor(RGBColor::YELLOW, 200.);
694 scheme.addColor(RGBColor::RED, 300.);
695 laneColorer.addScheme(scheme);
696 scheme = GUIColorScheme("by lane number (streetwise)", RGBColor::RED);
697 scheme.addColor(RGBColor::BLUE, 5.);
698 laneColorer.addScheme(scheme);
699 // ... emissions ...
700 scheme = GUIColorScheme("by CO2 emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
701 scheme.addColor(RGBColor::CYAN, 450);
702 scheme.addColor(RGBColor::GREEN, 900);
703 scheme.addColor(RGBColor::YELLOW, 1350);
704 scheme.addColor(RGBColor::ORANGE, 1800);
705 scheme.addColor(RGBColor::RED, 2250);
706 scheme.addColor(RGBColor::MAGENTA, 3000);
707 laneColorer.addScheme(scheme);
708 scheme = GUIColorScheme("by CO emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
709 scheme.addColor(RGBColor::CYAN, 30);
710 scheme.addColor(RGBColor::GREEN, 60);
711 scheme.addColor(RGBColor::YELLOW, 90);
712 scheme.addColor(RGBColor::ORANGE, 120);
713 scheme.addColor(RGBColor::RED, 150);
714 scheme.addColor(RGBColor::MAGENTA, 200);
715 laneColorer.addScheme(scheme);
716 scheme = GUIColorScheme("by PMx emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
717 scheme.addColor(RGBColor::CYAN, 0.3);
718 scheme.addColor(RGBColor::GREEN, 0.5);
719 scheme.addColor(RGBColor::YELLOW, 0.8);
720 scheme.addColor(RGBColor::ORANGE, 1);
721 scheme.addColor(RGBColor::RED, 1.3);
722 scheme.addColor(RGBColor::MAGENTA, 1.6);
723 laneColorer.addScheme(scheme);
724 scheme = GUIColorScheme("by NOx emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
725 scheme.addColor(RGBColor::CYAN, 6);
726 scheme.addColor(RGBColor::GREEN, 12);
727 scheme.addColor(RGBColor::YELLOW, 18);
728 scheme.addColor(RGBColor::ORANGE, 24);
729 scheme.addColor(RGBColor::RED, 30);
730 scheme.addColor(RGBColor::MAGENTA, 40);
731 laneColorer.addScheme(scheme);
732 scheme = GUIColorScheme("by HC emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
733 scheme.addColor(RGBColor::CYAN, 8);
734 scheme.addColor(RGBColor::GREEN, 16);
735 scheme.addColor(RGBColor::YELLOW, 24);
736 scheme.addColor(RGBColor::ORANGE, 32);
737 scheme.addColor(RGBColor::RED, 40);
738 scheme.addColor(RGBColor::MAGENTA, 50);
739 laneColorer.addScheme(scheme);
740 scheme = GUIColorScheme("by fuel consumption", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
741 scheme.addColor(RGBColor::CYAN, 0.2);
742 scheme.addColor(RGBColor::GREEN, 0.4);
743 scheme.addColor(RGBColor::YELLOW, 0.6);
744 scheme.addColor(RGBColor::ORANGE, 0.8);
745 scheme.addColor(RGBColor::RED, 1);
746 scheme.addColor(RGBColor::MAGENTA, 1.3);
747 laneColorer.addScheme(scheme);
748 scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
749 scheme.addColor(RGBColor::CYAN, 1.3);
750 scheme.addColor(RGBColor::GREEN, 1.4);
751 scheme.addColor(RGBColor::YELLOW, 1.6);
752 scheme.addColor(RGBColor::ORANGE, 1.7);
753 scheme.addColor(RGBColor::RED, 1.9);
754 scheme.addColor(RGBColor::MAGENTA, 2.4);
755 laneColorer.addScheme(scheme);
756 // ... weights (experimental) ...
757 scheme = GUIColorScheme("by global travel time", RGBColor::GREEN);
758 scheme.addColor(RGBColor::RED, 100.);
759 scheme.setAllowsNegativeValues(true);
760 laneColorer.addScheme(scheme);
761 scheme = GUIColorScheme("by global speed percentage", RGBColor::RED);
762 scheme.addColor(RGBColor::YELLOW, 50.);
763 scheme.addColor(RGBColor::GREEN, 100.);
764 scheme.setAllowsNegativeValues(true);
765 laneColorer.addScheme(scheme);
766 scheme = GUIColorScheme("by given length/geometrical length", RGBColor::RED);
767 scheme.addColor(RGBColor::ORANGE, 0.25);
768 scheme.addColor(RGBColor::YELLOW, 0.5);
769 scheme.addColor(RGBColor(179, 179, 179, 255), 1.);
770 scheme.addColor(RGBColor::GREEN, 2.);
771 scheme.addColor(RGBColor::CYAN, 4.);
772 scheme.addColor(RGBColor::BLUE, 100.);
773 laneColorer.addScheme(scheme);
775 scheme = GUIColorScheme("by loaded weight", RGBColor::GREEN);
776 scheme.addColor(RGBColor::RED, 100.);
777 scheme.setAllowsNegativeValues(true);
778 laneColorer.addScheme(scheme);
779 scheme = GUIColorScheme("by priority", RGBColor::YELLOW);
780 scheme.addColor(RGBColor::RED, -20.);
781 scheme.addColor(RGBColor::GREEN, 20.);
782 scheme.setAllowsNegativeValues(true);
783 laneColorer.addScheme(scheme);
784 scheme = GUIColorScheme("by height at start", RGBColor::GREY);
785 scheme.addColor(RGBColor::BLUE, -10.);
786 scheme.addColor(RGBColor::RED, 10.);
787 scheme.addColor(RGBColor::YELLOW, 50.);
788 scheme.addColor(RGBColor::GREEN, 100.);
789 scheme.addColor(RGBColor::MAGENTA, 200.);
790 scheme.setAllowsNegativeValues(true);
791 laneColorer.addScheme(scheme);
792 scheme = GUIColorScheme("by height at geometry-segment start", RGBColor::GREY);
793 scheme.addColor(RGBColor::BLUE, -10.);
794 scheme.addColor(RGBColor::RED, 10.);
795 scheme.addColor(RGBColor::YELLOW, 50.);
796 scheme.addColor(RGBColor::GREEN, 100.);
797 scheme.addColor(RGBColor::MAGENTA, 200.);
798 scheme.setAllowsNegativeValues(true);
799 laneColorer.addScheme(scheme);
800 scheme = GUIColorScheme("by inclination", RGBColor::GREY);
801 scheme.addColor(RGBColor::YELLOW, 0.1);
802 scheme.addColor(RGBColor::RED, 0.3);
803 scheme.addColor(RGBColor::GREEN, -0.1);
804 scheme.addColor(RGBColor::BLUE, -0.3);
805 scheme.setAllowsNegativeValues(true);
806 laneColorer.addScheme(scheme);
807 scheme = GUIColorScheme("by geometry-segment inclination", RGBColor::GREY);
808 scheme.addColor(RGBColor::YELLOW, 0.1);
809 scheme.addColor(RGBColor::RED, 0.3);
810 scheme.addColor(RGBColor::GREEN, -0.1);
811 scheme.addColor(RGBColor::BLUE, -0.3);
812 scheme.setAllowsNegativeValues(true);
813 laneColorer.addScheme(scheme);
814 scheme = GUIColorScheme("by average speed", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
815 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
816 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
817 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
818 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
819 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
820 laneColorer.addScheme(scheme);
821 scheme = GUIColorScheme("by average relative speed ", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
822 scheme.addColor(RGBColor::YELLOW, 0.25);
823 scheme.addColor(RGBColor::GREEN, 0.5);
824 scheme.addColor(RGBColor::CYAN, 0.75);
825 scheme.addColor(RGBColor::BLUE, 1.);
826 scheme.addColor(RGBColor::MAGENTA, 1.25);
827 laneColorer.addScheme(scheme);
828 scheme = GUIColorScheme("by routing device assumed speed ", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
829 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
830 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
831 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
832 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
833 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
834 laneColorer.addScheme(scheme);
835 scheme = GUIColorScheme("by electricity consumption", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
836 scheme.addColor(RGBColor::CYAN, 0.2);
837 scheme.addColor(RGBColor::GREEN, 0.4);
838 scheme.addColor(RGBColor::YELLOW, 0.6);
839 scheme.addColor(RGBColor::ORANGE, 0.8);
840 scheme.addColor(RGBColor::RED, 1.0);
841 scheme.addColor(RGBColor::MAGENTA, 2.0);
842 laneColorer.addScheme(scheme);
843 scheme = GUIColorScheme("by insertion-backlog (streetwise)", RGBColor(204, 204, 204), "", false, 0, COL_SCHEME_DYNAMIC);
844 scheme.addColor(RGBColor::GREEN, 1.);
845 scheme.addColor(RGBColor::YELLOW, 10.);
846 scheme.addColor(RGBColor::RED, 100.);
847 laneColorer.addScheme(scheme);
848 scheme = GUIColorScheme("by TAZ (streetwise)", RGBColor(204, 204, 204), "no TAZ", true);
849 laneColorer.addScheme(scheme);
851 scheme.setAllowsNegativeValues(true);
852 laneColorer.addScheme(scheme);
854 scheme.setAllowsNegativeValues(true);
855 laneColorer.addScheme(scheme);
857 scheme.setAllowsNegativeValues(true);
858 laneColorer.addScheme(scheme);
859 scheme = GUIColorScheme("by distance (kilometrage)", RGBColor(204, 204, 204));
860 scheme.addColor(RGBColor(255, 204, 204), 1.);
861 scheme.addColor(RGBColor::RED, 10000.);
862 scheme.addColor(RGBColor(204, 204, 255), -1.);
863 scheme.addColor(RGBColor::BLUE, -10000.);
864 scheme.setAllowsNegativeValues(true);
865 laneColorer.addScheme(scheme);
866 scheme = GUIColorScheme("by abs distance (kilometrage)", RGBColor(204, 204, 204));
867 scheme.addColor(RGBColor::RED, 1.);
868 scheme.setAllowsNegativeValues(false);
869 laneColorer.addScheme(scheme);
870 scheme = GUIColorScheme("by reachability (traveltime)", RGBColor::RED);
871 scheme.addColor(RGBColor::GREY, INVALID_DOUBLE, "unreachable");
872 scheme.setAllowsNegativeValues(true);
873 laneColorer.addScheme(scheme);
874 scheme = GUIColorScheme("by thread index", RGBColor(204, 204, 204));
875 scheme.addColor(RGBColor::RED, 1.);
876 laneColorer.addScheme(scheme);
877 scheme = GUIColorScheme("free parking spaces", RGBColor(204, 204, 204), "", false, 0, COL_SCHEME_DYNAMIC);
878 scheme.addColor(RGBColor::RED, 1.);
879 scheme.addColor(RGBColor::YELLOW, 10.);
880 scheme.addColor(RGBColor::GREEN, 100.);
881 scheme.addColor(RGBColor::BLUE, 1000.);
882 laneColorer.addScheme(scheme);
884 scheme.setAllowsNegativeValues(true);
885 laneColorer.addScheme(scheme);
886
888 vehicleColorer.addScheme(GUIColorScheme("given vehicle/type/route color", RGBColor::YELLOW, "", true));
890 vehicleColorer.addScheme(GUIColorScheme("given/assigned vehicle color", RGBColor::YELLOW, "", true));
891 vehicleColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
892 vehicleColorer.addScheme(GUIColorScheme("given/assigned route color", RGBColor::YELLOW, "", true));
893 vehicleColorer.addScheme(GUIColorScheme("depart position as HSV", RGBColor::YELLOW, "", true));
894 vehicleColorer.addScheme(GUIColorScheme("arrival position as HSV", RGBColor::YELLOW, "", true));
895 vehicleColorer.addScheme(GUIColorScheme("direction/distance as HSV", RGBColor::YELLOW, "", true));
896 scheme = GUIColorScheme("by speed", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
897 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
898 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
899 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
900 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
901 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
902 scheme.setAllowsNegativeValues(true); // negative speed indicates stopped
903 scheme.addColor(RGBColor::RED, -1); // stopped on road
904 scheme.addColor(RGBColor::GREY, -2); // stopped off-road (parking)
906 scheme = GUIColorScheme("by action step", RGBColor::GREY, "no action", true, 0, COL_SCHEME_DYNAMIC);
907 scheme.addColor(RGBColor(0, 255, 0, 255), 1., "action in next step");
908 scheme.addColor(RGBColor(80, 160, 80, 255), 2., "had action step");
910 scheme = GUIColorScheme("by waiting time", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
911 scheme.addColor(RGBColor::CYAN, 30.);
912 scheme.addColor(RGBColor::GREEN, 100.);
913 scheme.addColor(RGBColor::YELLOW, 200.);
914 scheme.addColor(RGBColor::RED, 300.);
916 scheme = GUIColorScheme("by accumulated waiting time", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
917 scheme.addColor(RGBColor::CYAN, 25.);
918 scheme.addColor(RGBColor::GREEN, 50.);
919 scheme.addColor(RGBColor::YELLOW, 75.);
920 scheme.addColor(RGBColor::RED, 100.);
922 scheme = GUIColorScheme("by time since lane change", RGBColor(179, 179, 179, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
923 scheme.addColor(RGBColor(189, 189, 179, 255), -180);
924 scheme.addColor(RGBColor(255, 255, 0, 255), -20);
925 scheme.addColor(RGBColor(255, 0, 0, 255), -0.01);
926 scheme.addColor(RGBColor(0, 0, 255, 255), 0.01);
927 scheme.addColor(RGBColor(0, 255, 255, 255), 20);
928 scheme.addColor(RGBColor(179, 189, 189, 255), 180);
929 scheme.setAllowsNegativeValues(true);
931 scheme = GUIColorScheme("by max speed", RGBColor::RED);
932 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
933 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
934 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
935 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
936 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
938 // ... emissions ...
939 scheme = GUIColorScheme("by CO2 emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
940 scheme.addColor(RGBColor::CYAN, 23000);
941 scheme.addColor(RGBColor::GREEN, 46000);
942 scheme.addColor(RGBColor::YELLOW, 69000);
943 scheme.addColor(RGBColor::ORANGE, 92000);
944 scheme.addColor(RGBColor::RED, 115000);
945 scheme.addColor(RGBColor::MAGENTA, 150000);
947 scheme = GUIColorScheme("by CO emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
948 scheme.addColor(RGBColor::CYAN, 1500);
949 scheme.addColor(RGBColor::GREEN, 3000);
950 scheme.addColor(RGBColor::YELLOW, 4500);
951 scheme.addColor(RGBColor::ORANGE, 6000);
952 scheme.addColor(RGBColor::RED, 7500);
953 scheme.addColor(RGBColor::MAGENTA, 10000);
955 scheme = GUIColorScheme("by PMx emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
956 scheme.addColor(RGBColor::CYAN, 12);
957 scheme.addColor(RGBColor::GREEN, 24);
958 scheme.addColor(RGBColor::YELLOW, 36);
959 scheme.addColor(RGBColor::ORANGE, 48);
960 scheme.addColor(RGBColor::RED, 60);
961 scheme.addColor(RGBColor::MAGENTA, 80);
963 scheme = GUIColorScheme("by NOx emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
964 scheme.addColor(RGBColor::CYAN, 300);
965 scheme.addColor(RGBColor::GREEN, 600);
966 scheme.addColor(RGBColor::YELLOW, 900);
967 scheme.addColor(RGBColor::ORANGE, 1200);
968 scheme.addColor(RGBColor::RED, 1500);
969 scheme.addColor(RGBColor::MAGENTA, 2000);
971 scheme = GUIColorScheme("by HC emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
972 scheme.addColor(RGBColor::CYAN, 400);
973 scheme.addColor(RGBColor::GREEN, 800);
974 scheme.addColor(RGBColor::YELLOW, 1200);
975 scheme.addColor(RGBColor::ORANGE, 1600);
976 scheme.addColor(RGBColor::RED, 2000);
977 scheme.addColor(RGBColor::MAGENTA, 2500);
979 scheme = GUIColorScheme("by fuel consumption", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
980 scheme.addColor(RGBColor::CYAN, 10);
981 scheme.addColor(RGBColor::GREEN, 20);
982 scheme.addColor(RGBColor::YELLOW, 30);
983 scheme.addColor(RGBColor::ORANGE, 40);
984 scheme.addColor(RGBColor::RED, 50);
985 scheme.addColor(RGBColor::MAGENTA, 60);
987 scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
988 scheme.addColor(RGBColor::CYAN, 60);
989 scheme.addColor(RGBColor::GREEN, 70);
990 scheme.addColor(RGBColor::YELLOW, 80);
991 scheme.addColor(RGBColor::ORANGE, 90);
992 scheme.addColor(RGBColor::RED, 100);
993 scheme.addColor(RGBColor::MAGENTA, 120);
995 scheme = GUIColorScheme("by reroute number", RGBColor::GREY, "", false, 0, COL_SCHEME_DYNAMIC);
996 scheme.addColor(RGBColor::YELLOW, 1.);
997 scheme.addColor(RGBColor::RED, 10.);
999 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
1000 scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
1001 vehicleColorer.addScheme(scheme);
1002 scheme = GUIColorScheme("by offset from best lane", RGBColor(179, 179, 179, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
1003 scheme.addColor(RGBColor(255, 0, 255, 255), -100, "opposite lane");
1004 scheme.addColor(RGBColor(255, 0, 0, 255), -3, "-3");
1005 scheme.addColor(RGBColor(255, 255, 0, 255), -1, "-1");
1006 scheme.addColor(RGBColor(0, 255, 255, 255), 1, "1");
1007 scheme.addColor(RGBColor(0, 0, 255, 255), 3, "3");
1008 scheme.setAllowsNegativeValues(true);
1009 vehicleColorer.addScheme(scheme);
1010 scheme = GUIColorScheme("by acceleration", RGBColor(179, 179, 179, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
1011 scheme.addColor(RGBColor(64, 0, 0, 255), -9.0);
1012 scheme.addColor(RGBColor(255, 0, 0, 255), -4.5 /* -SUMOVTypeParameter::getDefaultDecel() */);
1013 scheme.addColor(RGBColor(255, 255, 0, 255), -0.1);
1014 scheme.addColor(RGBColor(0, 255, 255, 255), 0.1);
1015 scheme.addColor(RGBColor(0, 0, 255, 255), 2.6 /* SUMOVTypeParameter::getDefaultAccel() */);
1016 scheme.addColor(RGBColor(255, 0, 255, 255), 5.2);
1017 scheme.setAllowsNegativeValues(true);
1018 vehicleColorer.addScheme(scheme);
1019 scheme = GUIColorScheme("by time gap on lane", RGBColor(255, 255, 0, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
1020 scheme.addColor(RGBColor(179, 179, 179, 255), -1);
1021 scheme.addColor(RGBColor(0, 255, 255, 255), 1);
1022 scheme.addColor(RGBColor(0, 0, 255, 255), 2);
1023 scheme.setAllowsNegativeValues(true);
1024 vehicleColorer.addScheme(scheme);
1025 scheme = GUIColorScheme("by depart delay", RGBColor::BLUE);
1026 scheme.addColor(RGBColor::CYAN, 30.);
1027 scheme.addColor(RGBColor::GREEN, 100.);
1028 scheme.addColor(RGBColor::YELLOW, 200.);
1029 scheme.addColor(RGBColor::RED, 300.);
1030 vehicleColorer.addScheme(scheme);
1031 scheme = GUIColorScheme("by electricity consumption", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1032 scheme.addColor(RGBColor::CYAN, 10);
1033 scheme.addColor(RGBColor::GREEN, 20);
1034 scheme.addColor(RGBColor::YELLOW, 30);
1035 scheme.addColor(RGBColor::ORANGE, 40);
1036 scheme.addColor(RGBColor::RED, 60);
1037 scheme.addColor(RGBColor::MAGENTA, 100);
1038 vehicleColorer.addScheme(scheme);
1039 scheme = GUIColorScheme("by time loss", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1040 scheme.addColor(RGBColor::CYAN, 10.);
1041 scheme.addColor(RGBColor::GREEN, 60.);
1042 scheme.addColor(RGBColor::YELLOW, 180.);
1043 scheme.addColor(RGBColor::RED, 900.);
1044 vehicleColorer.addScheme(scheme);
1045 scheme = GUIColorScheme("by stop delay", RGBColor::GREY, "", false, -1, COL_SCHEME_DYNAMIC);
1046 scheme.addColor(RGBColor::BLUE, 0.);
1047 scheme.addColor(RGBColor::CYAN, 10.);
1048 scheme.addColor(RGBColor::GREEN, 60.);
1049 scheme.addColor(RGBColor::YELLOW, 120.);
1050 scheme.addColor(RGBColor::ORANGE, 300.);
1051 scheme.addColor(RGBColor::RED, 900.);
1052 scheme.setAllowsNegativeValues(true);
1053 vehicleColorer.addScheme(scheme);
1054 scheme = GUIColorScheme("by stop arrival delay", RGBColor::GREY, "", false, INVALID_DOUBLE, COL_SCHEME_DYNAMIC);
1055 scheme.addColor(RGBColor::MAGENTA, -10.);
1056 scheme.addColor(RGBColor::BLUE, 0.);
1057 scheme.addColor(RGBColor::CYAN, 10.);
1058 scheme.addColor(RGBColor::GREEN, 60.);
1059 scheme.addColor(RGBColor::YELLOW, 120.);
1060 scheme.addColor(RGBColor::ORANGE, 300.);
1061 scheme.addColor(RGBColor::RED, 900.);
1062 scheme.setAllowsNegativeValues(true);
1063 vehicleColorer.addScheme(scheme);
1064 scheme = GUIColorScheme("by lateral speed", RGBColor(179, 179, 179, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
1065 scheme.addColor(RGBColor(255, 0, 0, 255), -3, "-1.5");
1066 scheme.addColor(RGBColor(255, 255, 0, 255), -1, "-0.5");
1067 scheme.addColor(RGBColor(0, 255, 255, 255), 1, "0.5");
1068 scheme.addColor(RGBColor(0, 0, 255, 255), 3, "1.5");
1069 scheme.setAllowsNegativeValues(true);
1070 vehicleColorer.addScheme(scheme);
1071 scheme = GUIColorScheme(SCHEME_NAME_PARAM_NUMERICAL, RGBColor(204, 204, 204));
1072 scheme.setAllowsNegativeValues(true);
1073 vehicleColorer.addScheme(scheme);
1076
1078 personColorer.addScheme(GUIColorScheme("given person/type color", RGBColor::BLUE, "", true));
1080 personColorer.addScheme(GUIColorScheme("given/assigned person color", RGBColor::BLUE, "", true));
1081 personColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::BLUE, "", true));
1082 scheme = GUIColorScheme("by speed", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1083 scheme.addColor(RGBColor::YELLOW, 2.5 / 3.6);
1084 scheme.addColor(RGBColor::GREEN, 5. / 3.6);
1085 scheme.addColor(RGBColor::BLUE, 10. / 3.6);
1086 scheme.setAllowsNegativeValues(true); // negative speed indicates stopped
1087 scheme.addColor(RGBColor::GREY, -1.); // stop stage
1088 scheme.addColor(RGBColor::GREY, -2.); // stop stage (departure)
1089 personColorer.addScheme(scheme);
1090 scheme = GUIColorScheme("by mode", RGBColor::GREY, "waiting for insertion", true, 0, COL_SCHEME_DYNAMIC);
1091 scheme.addColor(RGBColor::RED, 1., "stopped");
1092 scheme.addColor(RGBColor::GREEN, 2., "walking");
1093 scheme.addColor(RGBColor::BLUE, 3., "riding");
1094 scheme.addColor(RGBColor::CYAN, 4., "accessing trainStop");
1095 scheme.addColor(RGBColor::YELLOW, 5., "waiting for ride");
1096 personColorer.addScheme(scheme);
1097 scheme = GUIColorScheme("by waiting time", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1098 scheme.addColor(RGBColor::CYAN, 30.);
1099 scheme.addColor(RGBColor::GREEN, 100.);
1100 scheme.addColor(RGBColor::YELLOW, 200.);
1101 scheme.addColor(RGBColor::RED, 300.);
1102 personColorer.addScheme(scheme);
1103 scheme = GUIColorScheme("by jammed state", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1104 scheme.addColor(RGBColor::RED, 1.);
1105 personColorer.addScheme(scheme);
1106 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
1107 scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
1108 personColorer.addScheme(scheme);
1111
1113 containerColorer.addScheme(GUIColorScheme("given container/type color", RGBColor::YELLOW, "", true));
1115 containerColorer.addScheme(GUIColorScheme("given/assigned container color", RGBColor::YELLOW, "", true));
1116 containerColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
1117 scheme = GUIColorScheme("by speed", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1118 scheme.addColor(RGBColor::YELLOW, 2.5 / 3.6);
1119 scheme.addColor(RGBColor::GREEN, 5. / 3.6);
1120 scheme.addColor(RGBColor::BLUE, 10. / 3.6);
1122 scheme = GUIColorScheme("by mode", RGBColor::GREY, "waiting for insertion", true, 0, COL_SCHEME_DYNAMIC);
1123 scheme.addColor(RGBColor::RED, 1., "stopped");
1124 scheme.addColor(RGBColor::BLUE, 3., "transport");
1125 scheme.addColor(RGBColor::CYAN, 4., "accessing trainStop");
1126 scheme.addColor(RGBColor::YELLOW, 5., "waiting for transport");
1127 scheme.addColor(RGBColor::GREEN, 6., "tranship"); // (moving without vehicle)
1129 scheme = GUIColorScheme("by waiting time", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1130 scheme.addColor(RGBColor::CYAN, 30.);
1131 scheme.addColor(RGBColor::GREEN, 100.);
1132 scheme.addColor(RGBColor::YELLOW, 200.);
1133 scheme.addColor(RGBColor::RED, 300.);
1135 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
1136 scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
1140
1142 scheme = GUIColorScheme("uniform", RGBColor::BLACK, "", true);
1143 scheme.addColor(RGBColor(150, 200, 200), 1, "waterway");
1144 scheme.addColor(RGBColor(0, 0, 0, 0), 2, "railway");
1145 junctionColorer.addScheme(scheme);
1146 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
1147 scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
1148 junctionColorer.addScheme(scheme);
1149 scheme = GUIColorScheme(SCHEME_NAME_TYPE, RGBColor::GREEN, "traffic_light", true);
1150 scheme.addColor(RGBColor(0, 128, 0), 1, "traffic_light_unregulated");
1151 scheme.addColor(RGBColor::YELLOW, 2, "priority");
1152 scheme.addColor(RGBColor::RED, 3, "priority_stop");
1153 scheme.addColor(RGBColor::BLUE, 4, "right_before_left");
1154 scheme.addColor(RGBColor::CYAN, 5, "allway_stop");
1155 scheme.addColor(RGBColor::GREY, 6, "district");
1156 scheme.addColor(RGBColor::MAGENTA, 7, "unregulated");
1157 scheme.addColor(RGBColor::BLACK, 8, "dead_end");
1158 scheme.addColor(RGBColor::ORANGE, 9, "rail_signal");
1159 scheme.addColor(RGBColor(172, 108, 44), 10, "zipper"); // brown, darker than the zipper link rule
1160 scheme.addColor(RGBColor(192, 255, 192), 11, "traffic_light_right_on_red"); // light green
1161 scheme.addColor(RGBColor(128, 0, 128), 12, "rail_crossing"); // dark purple
1162 scheme.addColor(RGBColor(0, 0, 128), 13, "left_before_right"); // dark blue
1163 junctionColorer.addScheme(scheme);
1164 scheme = GUIColorScheme("by height", RGBColor::GREY);
1165 scheme.addColor(RGBColor::BLUE, -10.);
1166 scheme.addColor(RGBColor::RED, 10.);
1167 scheme.addColor(RGBColor::YELLOW, 50.);
1168 scheme.addColor(RGBColor::GREEN, 100.);
1169 scheme.addColor(RGBColor::MAGENTA, 200.);
1170 scheme.setAllowsNegativeValues(true);
1171 junctionColorer.addScheme(scheme);
1172
1174 poiColorer.addScheme(GUIColorScheme("given POI color", RGBColor::RED, "", true));
1175 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
1176 scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
1177 poiColorer.addScheme(scheme);
1178 poiColorer.addScheme(GUIColorScheme("uniform", RGBColor::RED, "", true));
1179
1181 polyColorer.addScheme(GUIColorScheme("given polygon color", RGBColor::ORANGE, "", true));
1182 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
1183 scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
1184 polyColorer.addScheme(scheme);
1187
1189 {
1190 GUIScaleScheme laneScheme = GUIScaleScheme("default", 1, "uniform", true);
1191 laneScaler.addScheme(laneScheme);
1192 laneScheme = GUIScaleScheme(SCHEME_NAME_SELECTION, 0.5, "unselected", true, 0, COL_SCHEME_MISC);
1193 laneScheme.addColor(5, 1, "selected");
1194 laneScaler.addScheme(laneScheme);
1195 // ... traffic states ...
1196 laneScheme = GUIScaleScheme("by allowed speed (lanewise)", 0);
1197 laneScheme.addColor(10, 150. / 3.6);
1198 laneScaler.addScheme(laneScheme);
1199 laneScheme = GUIScaleScheme("by current occupancy (lanewise, brutto)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1200 laneScheme.addColor(10, 0.95);
1201 laneScaler.addScheme(laneScheme);
1202 laneScheme = GUIScaleScheme("by current occupancy (lanewise, netto)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1203 laneScheme.addColor(10, 0.95);
1204 laneScaler.addScheme(laneScheme);
1205 laneScheme = GUIScaleScheme("by first vehicle waiting time (lanewise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1206 laneScheme.addColor(10, 300.);
1207 laneScaler.addScheme(laneScheme);
1208 laneScheme = GUIScaleScheme("by lane number (streetwise)", 1);
1209 laneScheme.addColor(10, 5.);
1210 laneScaler.addScheme(laneScheme);
1211 // ... emissions ...
1212 laneScheme = GUIScaleScheme("by CO2 emissions", 0, "", false, 0, COL_SCHEME_EMISSION);
1213 laneScheme.addColor(10, 10. / 7.5 / 5.);
1214 laneScaler.addScheme(laneScheme);
1215 laneScheme = GUIScaleScheme("by CO emissions", 0, "", false, 0, COL_SCHEME_EMISSION);
1216 laneScheme.addColor(10, 0.05 / 7.5 / 2.);
1217 laneScaler.addScheme(laneScheme);
1218 laneScheme = GUIScaleScheme("by PMx emissions", 0, "", false, 0, COL_SCHEME_EMISSION);
1219 laneScheme.addColor(10, .005 / 7.5 / 5.);
1220 laneScaler.addScheme(laneScheme);
1221 laneScheme = GUIScaleScheme("by NOx emissions", 0, "", false, 0, COL_SCHEME_EMISSION);
1222 laneScheme.addColor(10, .125 / 7.5 / 5.);
1223 laneScaler.addScheme(laneScheme);
1224 laneScheme = GUIScaleScheme("by HC emissions", 0, "", false, 0, COL_SCHEME_EMISSION);
1225 laneScheme.addColor(10, .02 / 7.5 / 4.);
1226 laneScaler.addScheme(laneScheme);
1227 laneScheme = GUIScaleScheme("by fuel consumption", 0, "", false, 0, COL_SCHEME_EMISSION);
1228 laneScheme.addColor(10, .005 / 7.5 * 100.);
1229 laneScaler.addScheme(laneScheme);
1230 laneScheme = GUIScaleScheme("by noise emissions (Harmonoise)", 0, "", false, 0, COL_SCHEME_EMISSION);
1231 laneScheme.addColor(10, 100.);
1232 laneScaler.addScheme(laneScheme);
1233 // ... weights (experimental) ...
1234 laneScheme = GUIScaleScheme("by global travel time", 0);
1235 laneScheme.addColor(10, 100.);
1236 laneScheme.setAllowsNegativeValues(true);
1237 laneScaler.addScheme(laneScheme);
1238 laneScheme = GUIScaleScheme("by global speed percentage", 0);
1239 laneScheme.addColor(10, 100.);
1240 laneScheme.setAllowsNegativeValues(true);
1241 laneScaler.addScheme(laneScheme);
1242 laneScheme = GUIScaleScheme("by given length/geometrical length", 0);
1243 laneScheme.addColor(10, 10.);
1244 laneScaler.addScheme(laneScheme);
1245 laneScheme = GUIScaleScheme("by loaded weight", 0);
1246 laneScheme.addColor(-1000, -1000.);
1247 laneScheme.addColor(1000, 1000.);
1248 laneScheme.setAllowsNegativeValues(true);
1249 laneScaler.addScheme(laneScheme);
1250 laneScheme = GUIScaleScheme("by priority", 1);
1251 laneScheme.addColor(0.5, -20.);
1252 laneScheme.addColor(5, 20.);
1253 laneScheme.setAllowsNegativeValues(true);
1254 laneScaler.addScheme(laneScheme);
1255 laneScheme = GUIScaleScheme("by average speed", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1256 laneScheme.addColor(10, 150. / 3.6);
1257 laneScaler.addScheme(laneScheme);
1258 laneScheme = GUIScaleScheme("by average relative speed", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1259 laneScheme.addColor(0.5, 0.5);
1260 laneScheme.addColor(2, 1.);
1261 laneScheme.addColor(10, 2.);
1262 laneScaler.addScheme(laneScheme);
1263 laneScheme = GUIScaleScheme("by electricity consumption", 0, "", false, 0, COL_SCHEME_EMISSION);
1264 laneScheme.addColor(10, 1. / 7.5 / 5.);
1265 laneScaler.addScheme(laneScheme);
1266 laneScheme = GUIScaleScheme("by insertion-backlog (streetwise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1267 laneScheme.addColor(1, 1.);
1268 laneScheme.addColor(10, 10.);
1269 laneScheme.addColor(50, 100.);
1270 laneScaler.addScheme(laneScheme);
1271 laneScheme = GUIScaleScheme(SCHEME_NAME_EDGEDATA_NUMERICAL, 0.1, "missing data", false, MISSING_DATA);
1272 laneScheme.addColor(1, 1.);
1273 laneScheme.addColor(2, 10.);
1274 laneScheme.addColor(5, 100.);
1275 laneScheme.addColor(10, 1000.);
1276 laneScheme.setAllowsNegativeValues(true);
1277 laneScaler.addScheme(laneScheme);
1278 }
1279
1281 edgeColorer.addScheme(GUIColorScheme("uniform", RGBColor(0, 0, 0, 0), "", true));
1282 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
1283 scheme.addColor(RGBColor(0, 80, 180, 255), 1., "selected");
1284 edgeColorer.addScheme(scheme);
1285 scheme = GUIColorScheme("by purpose (streetwise)", RGBColor(), "normal", true);
1286 scheme.addColor(RGBColor(128, 0, 128, 255), 1., "connector"); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_CONNECTOR
1287 scheme.addColor(RGBColor::BLUE, 2., "internal"); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_INTERNAL
1288 edgeColorer.addScheme(scheme);
1289 scheme = GUIColorScheme("by allowed speed (streetwise)", RGBColor::RED);
1290 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1291 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1292 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1293 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
1294 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1295 edgeColorer.addScheme(scheme);
1296 scheme = GUIColorScheme("by current occupancy (streetwise, brutto)", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1297 scheme.addColor(RGBColor::RED, 0.95);
1298 edgeColorer.addScheme(scheme);
1299 scheme = GUIColorScheme("by current speed (streetwise)", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1300 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1301 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1302 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1303 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
1304 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1305 edgeColorer.addScheme(scheme);
1306 scheme = GUIColorScheme("by current flow (streetwise)", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1307 scheme.addColor(RGBColor::RED, 5000.);
1308 edgeColorer.addScheme(scheme);
1309 scheme = GUIColorScheme("by relative speed (streetwise)", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1310 scheme.addColor(RGBColor::YELLOW, 0.25);
1311 scheme.addColor(RGBColor::GREEN, 0.5);
1312 scheme.addColor(RGBColor::CYAN, 0.75);
1313 scheme.addColor(RGBColor::BLUE, 1.);
1314 scheme.addColor(RGBColor::MAGENTA, 1.25);
1315 edgeColorer.addScheme(scheme);
1316 scheme = GUIColorScheme("by routing device assumed speed", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1317 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1318 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1319 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1320 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
1321 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1322 edgeColorer.addScheme(scheme);
1323 edgeColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
1324 scheme = GUIColorScheme("by segments (alternating)", RGBColor::BLUE, "odd", true);
1325 scheme.addColor(RGBColor::RED, 1., "even");
1326 edgeColorer.addScheme(scheme);
1327 scheme = GUIColorScheme("by jammed state (segmentwise)", RGBColor::GREEN, "free", true, 0, COL_SCHEME_DYNAMIC);
1328 scheme.addColor(RGBColor::YELLOW, 1., "limitedControl");
1329 scheme.addColor(RGBColor::RED, 2., "jammed");
1330 edgeColorer.addScheme(scheme);
1331 scheme = GUIColorScheme("by current occupancy (segmentwise, brutto)", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1332 scheme.addColor(RGBColor::RED, 0.95);
1333 edgeColorer.addScheme(scheme);
1334 scheme = GUIColorScheme("by current speed (segmentwise)", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1335 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1336 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1337 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1338 scheme.addColor(RGBColor::BLUE, 120 / 3.6);
1339 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1340 edgeColorer.addScheme(scheme);
1341 scheme = GUIColorScheme("by current flow (segmentwise)", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1342 scheme.addColor(RGBColor::RED, 5000.);
1343 edgeColorer.addScheme(scheme);
1344 scheme = GUIColorScheme("by relative speed (segmentwise)", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1345 scheme.addColor(RGBColor::YELLOW, 0.25);
1346 scheme.addColor(RGBColor::GREEN, 0.5);
1347 scheme.addColor(RGBColor::CYAN, 0.75);
1348 scheme.addColor(RGBColor::BLUE, 1.);
1349 scheme.addColor(RGBColor::MAGENTA, 1.25);
1350 edgeColorer.addScheme(scheme);
1351 scheme = GUIColorScheme("by insertion-backlog (streetwise)", RGBColor::GREY, "", false, 0, COL_SCHEME_DYNAMIC);
1352 scheme.addColor(RGBColor::GREEN, 1.);
1353 scheme.addColor(RGBColor::YELLOW, 10.);
1354 scheme.addColor(RGBColor::RED, 100.);
1355 edgeColorer.addScheme(scheme);
1356 scheme = GUIColorScheme("by TAZ (streetwise)", RGBColor(204, 204, 204), "no TAZ", true);
1357 edgeColorer.addScheme(scheme);
1359 scheme.setAllowsNegativeValues(true);
1360 edgeColorer.addScheme(scheme);
1362 scheme.setAllowsNegativeValues(true);
1363 edgeColorer.addScheme(scheme);
1364
1366 {
1367 edgeScaler.addScheme(GUIScaleScheme("uniform", 1, "", true));
1368 GUIScaleScheme edgeScheme = GUIScaleScheme(SCHEME_NAME_SELECTION, 0.5, "unselected", true, 0, COL_SCHEME_MISC);
1369 edgeScheme.addColor(5, 1., "selected");
1370 edgeScaler.addScheme(edgeScheme);
1371 edgeScheme = GUIScaleScheme("by allowed speed (streetwise)", 0);
1372 edgeScheme.addColor(10, 150. / 3.6);
1373 edgeScaler.addScheme(edgeScheme);
1374 edgeScheme = GUIScaleScheme("by current occupancy (streetwise, brutto)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1375 edgeScheme.addColor(10, 0.95);
1376 edgeScaler.addScheme(edgeScheme);
1377 edgeScheme = GUIScaleScheme("by current speed (streetwise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1378 edgeScheme.addColor(10, 150. / 3.6);
1379 edgeScaler.addScheme(edgeScheme);
1380 edgeScheme = GUIScaleScheme("by current flow (streetwise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1381 edgeScheme.addColor(20, 5000.);
1382 edgeScaler.addScheme(edgeScheme);
1383 edgeScheme = GUIScaleScheme("by relative speed (streetwise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1384 edgeScheme.addColor(20, 1.);
1385 edgeScaler.addScheme(edgeScheme);
1386 edgeScheme = GUIScaleScheme("by insertion-backlog (streetwise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1387 edgeScheme.addColor(1, 1.);
1388 edgeScheme.addColor(10, 10.);
1389 edgeScheme.addColor(50, 100.);
1390 edgeScaler.addScheme(edgeScheme);
1391 edgeScheme = GUIScaleScheme(SCHEME_NAME_EDGEDATA_NUMERICAL, 0.1, "missing data", false, MISSING_DATA);
1392 edgeScheme.addColor(1, 1.);
1393 edgeScheme.addColor(2, 10.);
1394 edgeScheme.addColor(5, 100.);
1395 edgeScheme.addColor(10, 1000.);
1396 edgeScaler.addScheme(edgeScheme);
1397 edgeScheme.setAllowsNegativeValues(true);
1398 edgeScaler.addScheme(edgeScheme);
1399 }
1400
1402 {
1403 vehicleScaler.addScheme(GUIScaleScheme("uniform", 1, "", true));
1404 GUIScaleScheme vehScheme = GUIScaleScheme(SCHEME_NAME_SELECTION, 1, "unselected", true, 0, COL_SCHEME_MISC);
1405 vehScheme.addColor(5, 1., "selected");
1406 vehicleScaler.addScheme(vehScheme);
1407 vehScheme = GUIScaleScheme("by speed", 1, "", false, 1, COL_SCHEME_DYNAMIC);
1408 vehScheme.addColor(5, 150. / 3.6);
1409 vehScheme.setAllowsNegativeValues(true); // negative speed indicates stopped
1410 vehScheme.addColor(1, -1.); // stopped on road
1411 vehScheme.addColor(0.5, -2.); // stopped off-road (parking)
1412 vehicleScaler.addScheme(vehScheme);
1413 vehScheme = GUIScaleScheme("by waiting time", 1, "", false, 1, COL_SCHEME_DYNAMIC);
1414 vehScheme.addColor(1, 30.);
1415 vehScheme.addColor(2, 100.);
1416 vehScheme.addColor(4, 200.);
1417 vehScheme.addColor(10, 300.);
1418 vehicleScaler.addScheme(vehScheme);
1419 vehScheme = GUIScaleScheme("by accumulated waiting time", 1, "", false, 1, COL_SCHEME_DYNAMIC);
1420 vehScheme.addColor(5, 100.);
1421 vehicleScaler.addScheme(vehScheme);
1422 vehScheme = GUIScaleScheme("by max speed", 1);
1423 vehScheme.addColor(1, 30. / 3.6);
1424 vehScheme.addColor(1, 55. / 3.6);
1425 vehScheme.addColor(1, 80. / 3.6);
1426 vehScheme.addColor(1, 120. / 3.6);
1427 vehScheme.addColor(1, 150. / 3.6);
1428 vehicleScaler.addScheme(vehScheme);
1429 vehScheme = GUIScaleScheme("by reroute number", 1, "", false, 0, COL_SCHEME_DYNAMIC);
1430 vehScheme.addColor(1, 1.);
1431 vehScheme.addColor(5, 10.);
1432 vehicleScaler.addScheme(vehScheme);
1433 vehScheme = GUIScaleScheme("by offset from best lane", 0.8, "0", false, 0, COL_SCHEME_DYNAMIC);
1434 vehScheme.addColor(5, -100, "opposite lane");
1435 vehScheme.addColor(3, -3, "-3");
1436 vehScheme.addColor(1.5, -1, "-1");
1437 vehScheme.addColor(1.5, 1, "1");
1438 vehScheme.addColor(3, 3, "3");
1439 vehScheme.setAllowsNegativeValues(true);
1440 vehicleScaler.addScheme(vehScheme);
1441 vehScheme = GUIScaleScheme("by acceleration", 0.8, "0", false, 0, COL_SCHEME_DYNAMIC);
1442 vehScheme.addColor(4, -9.0);
1443 vehScheme.addColor(2, -4.5 /* -SUMOVTypeParameter::getDefaultDecel() */);
1444 vehScheme.addColor(1, -0.1);
1445 vehScheme.addColor(1, 0.1);
1446 vehScheme.addColor(1, 2.6 /* SUMOVTypeParameter::getDefaultAccel() */);
1447 vehScheme.addColor(3, 5.2);
1448 vehScheme.setAllowsNegativeValues(true);
1449 vehicleScaler.addScheme(vehScheme);
1450 vehScheme = GUIScaleScheme("by time gap on lane", 5, "0", false, 0, COL_SCHEME_DYNAMIC);
1451 vehScheme.addColor(1, -1);
1452 vehScheme.addColor(1, 1);
1453 vehScheme.addColor(0.5, 2);
1454 vehScheme.setAllowsNegativeValues(true);
1455 vehicleScaler.addScheme(vehScheme);
1456 vehScheme = GUIScaleScheme("by depart delay", 0.8);
1457 vehScheme.addColor(1, 10.);
1458 vehScheme.addColor(2, 100.);
1459 vehScheme.addColor(3, 200.);
1460 vehScheme.addColor(5, 300.);
1461 vehicleScaler.addScheme(vehScheme);
1462 vehScheme = GUIScaleScheme("by time loss", 1, "", false, 0, COL_SCHEME_DYNAMIC);
1463 vehScheme.addColor(1, 10.);
1464 vehScheme.addColor(2, 60.);
1465 vehScheme.addColor(3, 180.);
1466 vehScheme.addColor(10, 900.);
1467 vehicleScaler.addScheme(vehScheme);
1468 vehScheme = GUIScaleScheme("by stop delay", 0.1, "", false, -1, COL_SCHEME_DYNAMIC);
1469 vehScheme.addColor(1, 0.);
1470 vehScheme.addColor(2, 10.);
1471 vehScheme.addColor(3, 60.);
1472 vehScheme.addColor(4, 120.);
1473 vehScheme.addColor(5, 300.);
1474 vehScheme.addColor(10, 900.);
1475 vehScheme.setAllowsNegativeValues(true);
1476 vehicleScaler.addScheme(vehScheme);
1477 vehScheme = GUIScaleScheme("by stop arrival delay", 0.1, "", false, INVALID_DOUBLE, COL_SCHEME_DYNAMIC);
1478 vehScheme.addColor(0.5, -10.);
1479 vehScheme.addColor(1, 0.);
1480 vehScheme.addColor(2, 10.);
1481 vehScheme.addColor(3, 60.);
1482 vehScheme.addColor(4, 120.);
1483 vehScheme.addColor(5, 300.);
1484 vehScheme.addColor(10, 900.);
1485 vehScheme.setAllowsNegativeValues(true);
1486 vehicleScaler.addScheme(vehScheme);
1488 vehScheme.setAllowsNegativeValues(true);
1489 vehicleScaler.addScheme(vehScheme);
1490 }
1491}
1492
1493
1494void
1496 // init color schemes
1497 GUIColorScheme scheme = GUIColorScheme("uniform", RGBColor::BLACK, "road", true);
1498 scheme.addColor(RGBColor::GREY, 1, "sidewalk");
1499 scheme.addColor(RGBColor(192, 66, 44), 2, "bike lane");
1500 scheme.addColor(RGBColor(200, 255, 200), 3, "green verge");
1501 scheme.addColor(RGBColor(150, 200, 200), 4, "waterway");
1502 scheme.addColor(RGBColor::BLACK, 5, "railway");
1503 scheme.addColor(RGBColor(64, 0, 64), 6, "rails on road");
1504 scheme.addColor(RGBColor(92, 92, 92), 7, "no passenger"); // paths, service roads etc
1505 scheme.addColor(RGBColor::RED, 8, "closed"); // road closing
1506 scheme.addColor(RGBColor::GREEN, 9, "connector"); // macro-connector
1507 scheme.addColor(RGBColor::ORANGE, 10, "forbidden"); // forbidden road
1508 scheme.addColor(RGBColor(145, 145, 145), 11., "data mode");
1509 laneColorer.addScheme(scheme);
1510 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
1511 scheme.addColor(RGBColor(0, 80, 180, 255), 1., "selected");
1512 laneColorer.addScheme(scheme);
1513 scheme = GUIColorScheme("by permission code", RGBColor(240, 240, 240), "nobody");
1514 scheme.addColor(RGBColor(10, 10, 10), (double)SVC_PASSENGER, "passenger");
1515 scheme.addColor(RGBColor(128, 128, 128), (double)SVC_PEDESTRIAN, "pedestrian");
1516 scheme.addColor(RGBColor(80, 80, 80), (double)(SVC_PEDESTRIAN | SVC_DELIVERY), "pedestrian_delivery");
1517 scheme.addColor(RGBColor(192, 66, 44), (double)SVC_BICYCLE, "bicycle");
1518 scheme.addColor(RGBColor(40, 100, 40), (double)SVC_BUS, "bus");
1519 scheme.addColor(RGBColor(166, 147, 26), (double)SVC_TAXI, "taxi");
1520 scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~SVC_NON_ROAD), "normal_road");
1521 scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_NON_ROAD)), "disallow_pedestrian");
1522 scheme.addColor(RGBColor(255, 206, 0), (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_BICYCLE | SVC_MOPED | SVC_NON_ROAD)), "motorway");
1523 scheme.addColor(RGBColor(150, 200, 200), (double)SVC_SHIP, "waterway");
1524 scheme.addColor(RGBColor::GREEN, (double)SVCAll, "all");
1525 laneColorer.addScheme(scheme);
1526
1527 scheme = GUIColorScheme("by allowed speed (lanewise)", RGBColor::RED);
1528 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1529 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1530 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1531 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
1532 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1533 laneColorer.addScheme(scheme);
1534
1535 scheme = GUIColorScheme("by lane number (streetwise)", RGBColor::RED);
1536 scheme.addColor(RGBColor::BLUE, 5.);
1537 laneColorer.addScheme(scheme);
1538
1539 scheme = GUIColorScheme("by given length/geometrical length", RGBColor::RED);
1540 scheme.addColor(RGBColor::ORANGE, 0.25);
1541 scheme.addColor(RGBColor::YELLOW, 0.5);
1542 scheme.addColor(RGBColor(179, 179, 179, 255), 1.);
1543 scheme.addColor(RGBColor::GREEN, 2.);
1544 scheme.addColor(RGBColor::CYAN, 4.);
1545 scheme.addColor(RGBColor::BLUE, 100.);
1546 laneColorer.addScheme(scheme);
1547 laneColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
1548
1549 scheme = GUIColorScheme("by priority", RGBColor::YELLOW);
1550 scheme.addColor(RGBColor::RED, -20.);
1551 scheme.addColor(RGBColor::GREEN, 20.);
1552 scheme.setAllowsNegativeValues(true);
1553 laneColorer.addScheme(scheme);
1554 scheme = GUIColorScheme("by height at start", RGBColor::RED);
1555 scheme.addColor(RGBColor::BLUE, -10.);
1556 scheme.addColor(RGBColor::YELLOW, 50.);
1557 scheme.addColor(RGBColor::GREEN, 100.);
1558 scheme.addColor(RGBColor::MAGENTA, 200.);
1559 scheme.setAllowsNegativeValues(true);
1560 laneColorer.addScheme(scheme);
1561 scheme = GUIColorScheme("by height at segment start", RGBColor::RED);
1562 scheme.addColor(RGBColor::BLUE, -10.);
1563 scheme.addColor(RGBColor::YELLOW, 50.);
1564 scheme.addColor(RGBColor::GREEN, 100.);
1565 scheme.addColor(RGBColor::MAGENTA, 200.);
1566 scheme.setAllowsNegativeValues(true);
1567 laneColorer.addScheme(scheme);
1568 scheme = GUIColorScheme("by inclination", RGBColor::GREY);
1569 scheme.addColor(RGBColor::YELLOW, 0.1);
1570 scheme.addColor(RGBColor::RED, 0.3);
1571 scheme.addColor(RGBColor::GREEN, -0.1);
1572 scheme.addColor(RGBColor::BLUE, -0.3);
1573 scheme.setAllowsNegativeValues(true);
1574 laneColorer.addScheme(scheme);
1575 scheme = GUIColorScheme("by segment inclination", RGBColor::GREY);
1576 scheme.addColor(RGBColor::YELLOW, 0.1);
1577 scheme.addColor(RGBColor::RED, 0.3);
1578 scheme.addColor(RGBColor::GREEN, -0.1);
1579 scheme.addColor(RGBColor::BLUE, -0.3);
1580 scheme.setAllowsNegativeValues(true);
1581 laneColorer.addScheme(scheme);
1583 scheme.setAllowsNegativeValues(true);
1584 laneColorer.addScheme(scheme);
1586 scheme.setAllowsNegativeValues(true);
1587 laneColorer.addScheme(scheme);
1588 scheme = GUIColorScheme("by distance (kilometrage)", RGBColor(204, 204, 204));
1589 scheme.addColor(RGBColor::RED, 1.);
1590 scheme.addColor(RGBColor::RED, -1.);
1591 scheme.setAllowsNegativeValues(true);
1592 laneColorer.addScheme(scheme);
1593 scheme = GUIColorScheme("by abs distance (kilometrage)", RGBColor(204, 204, 204));
1594 scheme.addColor(RGBColor::RED, 1.);
1595 scheme.setAllowsNegativeValues(false);
1596 laneColorer.addScheme(scheme);
1598 scheme.setAllowsNegativeValues(true);
1599 laneColorer.addScheme(scheme);
1600
1601 scheme = GUIColorScheme("uniform", RGBColor(102, 0, 0), "", true);
1602 scheme.addColor(RGBColor(204, 0, 0), 1, "junction bubble");
1603 scheme.addColor(RGBColor(230, 100, 115), 2, "geometry points");
1604 scheme.addColor(GUIVisualizationColorSettings::SUMO_color_DEADEND_SHOW, 3, "connections missing");
1605 scheme.addColor(RGBColor::GREEN, 3, "custom shape");
1606 scheme.addColor(RGBColor(205, 180, 180), 4, "data mode");
1607 junctionColorer.addScheme(scheme);
1608 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
1609 scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
1610 junctionColorer.addScheme(scheme);
1611 scheme = GUIColorScheme(SCHEME_NAME_TYPE, RGBColor::GREEN, "traffic_light", true);
1612 scheme.addColor(RGBColor(0, 128, 0), 1, "traffic_light_unregulated");
1613 scheme.addColor(RGBColor::YELLOW, 2, "priority");
1614 scheme.addColor(RGBColor::RED, 3, "priority_stop");
1615 scheme.addColor(RGBColor::BLUE, 4, "right_before_left");
1616 scheme.addColor(RGBColor::CYAN, 5, "allway_stop");
1617 scheme.addColor(RGBColor::GREY, 6, "district");
1618 scheme.addColor(RGBColor::MAGENTA, 7, "unregulated");
1619 scheme.addColor(RGBColor::BLACK, 8, "dead_end");
1620 scheme.addColor(RGBColor::ORANGE, 9, "rail_signal");
1621 scheme.addColor(RGBColor(172, 108, 44), 10, "zipper"); // brown, darker than the zipper link rule
1622 scheme.addColor(RGBColor(192, 255, 192), 11, "traffic_light_right_on_red");
1623 scheme.addColor(RGBColor(128, 0, 128), 12, "rail_crossing"); // dark purple
1624 scheme.addColor(RGBColor(0, 0, 128), 13, "left_before_right"); // dark blue
1625 junctionColorer.addScheme(scheme);
1626 scheme = GUIColorScheme("by height", RGBColor::GREY);
1627 scheme.addColor(RGBColor::BLUE, -10.);
1628 scheme.addColor(RGBColor::RED, 10.);
1629 scheme.addColor(RGBColor::YELLOW, 50.);
1630 scheme.addColor(RGBColor::GREEN, 100.);
1631 scheme.addColor(RGBColor::MAGENTA, 200.);
1632 scheme.setAllowsNegativeValues(true);
1633 junctionColorer.addScheme(scheme);
1634
1636 poiColorer.addScheme(GUIColorScheme("given POI color", RGBColor::RED, "", true));
1637 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
1638 scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
1639 poiColorer.addScheme(scheme);
1640 poiColorer.addScheme(GUIColorScheme("uniform", RGBColor::RED, "", true));
1641
1643 polyColorer.addScheme(GUIColorScheme("given polygon color", RGBColor::ORANGE, "", true));
1644 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
1645 scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
1646 polyColorer.addScheme(scheme);
1649
1651 {
1652 GUIScaleScheme edgeScheme = GUIScaleScheme("default", 1, "uniform", true);
1653 laneScaler.addScheme(edgeScheme);
1654 }
1655
1658 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
1659 scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
1660 dataColorer.addScheme(scheme);
1661 dataColorer.addScheme(GUIColorScheme("by origin taz", RGBColor::ORANGE, "", true));
1662 dataColorer.addScheme(GUIColorScheme("by destination taz", RGBColor::ORANGE, "", true));
1664 scheme.setAllowsNegativeValues(true);
1665 dataColorer.addScheme(scheme);
1666
1667 // dummy schemes
1671 vehicleScaler.addScheme(GUIScaleScheme("uniform", 1, "", true));
1672}
1673
1674
1675int
1677 if (UseMesoSim) {
1678 return edgeColorer.getActive();
1679 }
1680 return laneColorer.getActive();
1681}
1682
1683
1684int
1686 if (UseMesoSim) {
1687 return edgeScaler.getActive();
1688 }
1689 return laneScaler.getActive();
1690}
1691
1692
1700
1701
1709
1710
1711void
1716 dev.writeAttr("dither", dither);
1717 dev.writeAttr("fps", fps);
1718 dev.writeAttr("drawBoundaries", drawBoundaries);
1719 dev.writeAttr("forceDrawPositionSelection", forceDrawForPositionSelection);
1720 dev.writeAttr("disableDottedContours", disableDottedContours);
1721 dev.writeAttr("forceDrawRectangleSelection", forceDrawForRectangleSelection);
1722 geometryIndices.print(dev, "geometryIndices");
1723 dev.closeTag();
1725 dev.writeAttr("backgroundColor", backgroundColor);
1726 dev.writeAttr("showGrid", showGrid);
1727 dev.writeAttr("gridXSize", gridXSize);
1728 dev.writeAttr("gridYSize", gridYSize);
1729 dev.closeTag();
1730 // edges
1732 dev.writeAttr("laneEdgeMode", getLaneEdgeMode());
1733 dev.writeAttr("scaleMode", getLaneEdgeScaleMode());
1734 dev.writeAttr("laneShowBorders", laneShowBorders);
1735 dev.writeAttr("showBikeMarkings", showBikeMarkings);
1736 dev.writeAttr("showLinkDecals", showLinkDecals);
1737 dev.writeAttr("realisticLinkRules", realisticLinkRules);
1738 dev.writeAttr("showLinkRules", showLinkRules);
1739 dev.writeAttr("showRails", showRails);
1740 dev.writeAttr("secondaryShape", secondaryShape);
1741 dev.writeAttr("hideConnectors", hideConnectors);
1742 dev.writeAttr("widthExaggeration", laneWidthExaggeration);
1743 dev.writeAttr("minSize", laneMinSize);
1744 dev.writeAttr("showDirection", showLaneDirection);
1745 dev.writeAttr("showSublanes", showSublanes);
1746 dev.writeAttr("spreadSuperposed", spreadSuperposed);
1747 dev.writeAttr("edgeParam", edgeParam);
1748 dev.writeAttr("laneParam", laneParam);
1749 dev.writeAttr("vehicleParam", vehicleParam);
1750 dev.writeAttr("vehicleScaleParam", vehicleScaleParam);
1751 dev.writeAttr("vehicleTextParam", vehicleTextParam);
1752 dev.writeAttr("edgeData", edgeData);
1753 dev.writeAttr("edgeDataID", edgeDataID);
1754 dev.writeAttr("edgeDataScaling", edgeDataScaling);
1755 dev.writeAttr("edgeValueHideCheck", edgeValueHideCheck);
1756 dev.writeAttr("edgeValueHideThreshold", edgeValueHideThreshold);
1757 dev.writeAttr("edgeValueHideCheck2", edgeValueHideCheck2);
1758 dev.writeAttr("edgeValueHideThreshold2", edgeValueHideThreshold2);
1759 dev.lf();
1760 dev << " ";
1761 edgeName.print(dev, "edgeName");
1762 dev.lf();
1763 dev << " ";
1764 internalEdgeName.print(dev, "internalEdgeName");
1765 dev.lf();
1766 dev << " ";
1767 cwaEdgeName.print(dev, "cwaEdgeName");
1768 dev.lf();
1769 dev << " ";
1770 streetName.print(dev, "streetName");
1771 dev.lf();
1772 dev << " ";
1773 edgeValue.print(dev, "edgeValue");
1774 edgeScaleValue.print(dev, "edgeScaleValue");
1775 laneColorer.save(dev);
1776 laneScaler.save(dev);
1777 edgeColorer.save(dev, "meso:");
1778 edgeScaler.save(dev);
1779 dev.closeTag();
1780 // vehicles
1782 dev.writeAttr("vehicleMode", vehicleColorer.getActive());
1783 dev.writeAttr("vehicleScaleMode", vehicleScaler.getActive());
1784 dev.writeAttr("vehicleQuality", vehicleQuality);
1785 vehicleSize.print(dev, "vehicle");
1786 dev.writeAttr("showBlinker", showBlinker);
1787 dev.writeAttr("drawMinGap", drawMinGap);
1788 dev.writeAttr("drawBrakeGap", drawBrakeGap);
1789 dev.writeAttr("showBTRange", showBTRange);
1790 dev.writeAttr("showRouteIndex", showRouteIndex);
1791 dev.writeAttr("scaleLength", scaleLength);
1792 dev.writeAttr("drawReversed", drawReversed);
1793 dev.writeAttr("showParkingInfo", showParkingInfo);
1794 dev.lf();
1795 dev << " ";
1796 vehicleName.print(dev, "vehicleName");
1797 dev.lf();
1798 dev << " ";
1799 vehicleValue.print(dev, "vehicleValue");
1800 dev.lf();
1801 dev << " ";
1802 vehicleScaleValue.print(dev, "vehicleScaleValue");
1803 dev.lf();
1804 dev << " ";
1805 vehicleText.print(dev, "vehicleText");
1806 vehicleColorer.save(dev);
1807 vehicleScaler.save(dev);
1808 dev.closeTag();
1809 // persons
1811 dev.writeAttr("personMode", personColorer.getActive());
1812 dev.writeAttr("personQuality", personQuality);
1813 personSize.print(dev, "person");
1814 dev.lf();
1815 dev << " ";
1816 personName.print(dev, "personName");
1817 dev.lf();
1818 dev << " ";
1819 personValue.print(dev, "personValue");
1820 personColorer.save(dev);
1821 dev.closeTag();
1822 // containers
1824 dev.writeAttr("containerMode", containerColorer.getActive());
1825 dev.writeAttr("containerQuality", containerQuality);
1826 containerSize.print(dev, "container");
1827 dev.lf();
1828 dev << " ";
1829 containerName.print(dev, "containerName");
1831 dev.closeTag();
1832 // junctions
1834 dev.writeAttr("junctionMode", junctionColorer.getActive());
1835 dev.lf();
1836 dev << " ";
1837 drawLinkTLIndex.print(dev, "drawLinkTLIndex");
1838 dev.lf();
1839 dev << " ";
1840 drawLinkJunctionIndex.print(dev, "drawLinkJunctionIndex");
1841 dev.lf();
1842 dev << " ";
1843 junctionID.print(dev, "junctionID");
1844 dev.lf();
1845 dev << " ";
1846 junctionName.print(dev, "junctionName");
1847 dev.lf();
1848 dev << " ";
1849 internalJunctionName.print(dev, "internalJunctionName");
1850 dev.lf();
1851 dev << " ";
1852 tlsPhaseIndex.print(dev, "tlsPhaseIndex");
1853 tlsPhaseName.print(dev, "tlsPhaseName");
1854 dev.lf();
1855 dev << " ";
1856 dev.writeAttr("showLane2Lane", showLane2Lane);
1857 dev.writeAttr("drawShape", drawJunctionShape);
1858 dev.writeAttr("drawCrossingsAndWalkingareas", drawCrossingsAndWalkingareas);
1859 junctionSize.print(dev, "junction");
1860 junctionColorer.save(dev);
1861 dev.closeTag();
1862 // additionals
1864 dev.writeAttr("addMode", addMode);
1865 addSize.print(dev, "add");
1866 addName.print(dev, "addName");
1867 addFullName.print(dev, "addFullName");
1868 // temporal (will be integrated in a schema)
1869 dev.writeAttr("busStopColor", colorSettings.busStopColor);
1870 dev.writeAttr("busStopColorSign", colorSettings.busStopColorSign);
1871 dev.writeAttr("chargingStationColor", colorSettings.chargingStationColor);
1872 dev.writeAttr("chargingStationColorCharge", colorSettings.chargingStationColorCharge);
1873 dev.writeAttr("chargingStationColorSign", colorSettings.chargingStationColorSign);
1874 dev.writeAttr("containerStopColor", colorSettings.containerStopColor);
1875 dev.writeAttr("containerStopColorSign", colorSettings.containerStopColorSign);
1876 dev.writeAttr("parkingAreaColor", colorSettings.parkingAreaColor);
1877 dev.writeAttr("parkingAreaColorSign", colorSettings.parkingAreaColorSign);
1878 dev.writeAttr("parkingSpaceColor", colorSettings.parkingSpaceColor);
1879 dev.writeAttr("parkingSpaceColorContour", colorSettings.parkingSpaceColorContour);
1880 dev.writeAttr("personTripColor", colorSettings.personTripColor);
1881 dev.writeAttr("personTripWidth", widthSettings.personTripWidth);
1882 dev.writeAttr("rideColor", colorSettings.rideColor);
1883 dev.writeAttr("rideWidth", widthSettings.rideWidth);
1884 dev.writeAttr("selectedAdditionalColor", colorSettings.selectedAdditionalColor);
1885 dev.writeAttr("selectedConnectionColor", colorSettings.selectedConnectionColor);
1886 dev.writeAttr("selectedContainerColor", colorSettings.selectedContainerColor);
1887 dev.writeAttr("selectedContainerPlanColor", colorSettings.selectedContainerPlanColor);
1888 dev.writeAttr("selectedCrossingColor", colorSettings.selectedCrossingColor);
1889 dev.writeAttr("selectedEdgeColor", colorSettings.selectedEdgeColor);
1890 dev.writeAttr("selectedEdgeDataColor", colorSettings.selectedEdgeDataColor);
1891 dev.writeAttr("selectedLaneColor", colorSettings.selectedLaneColor);
1892 dev.writeAttr("selectedPersonColor", colorSettings.selectedPersonColor);
1893 dev.writeAttr("selectedPersonPlanColor", colorSettings.selectedPersonPlanColor);
1894 dev.writeAttr("selectedProhibitionColor", colorSettings.selectedProhibitionColor);
1895 dev.writeAttr("selectedRouteColor", colorSettings.selectedRouteColor);
1896 dev.writeAttr("selectedVehicleColor", colorSettings.selectedVehicleColor);
1897 dev.writeAttr("selectionColor", colorSettings.selectionColor);
1898 dev.writeAttr("stopColor", colorSettings.stopColor);
1899 dev.writeAttr("waypointColor", colorSettings.waypointColor);
1900 dev.writeAttr("stopContainerColor", colorSettings.stopContainerColor);
1901 dev.writeAttr("stopPersonColor", colorSettings.stopPersonColor);
1902 dev.writeAttr("trainStopColor", colorSettings.trainStopColor);
1903 dev.writeAttr("trainStopColorSign", colorSettings.trainStopColorSign);
1904 dev.writeAttr("transhipColor", colorSettings.transhipColor);
1905 dev.writeAttr("transhipWidth", widthSettings.transhipWidth);
1906 dev.writeAttr("transportColor", colorSettings.transportColor);
1907 dev.writeAttr("transportWidth", widthSettings.transportWidth);
1908 dev.writeAttr("tripWidth", widthSettings.tripWidth);
1909 dev.writeAttr("vehicleTripColor", colorSettings.personTripColor);
1910 dev.writeAttr("walkColor", colorSettings.walkColor);
1911 dev.writeAttr("walkWidth", widthSettings.walkWidth);
1912 dev.closeTag();
1913 // pois
1915 dev.writeAttr("poiTextParam", poiTextParam);
1916 poiSize.print(dev, "poi");
1917 dev.writeAttr("poiDetail", poiDetail);
1918 poiName.print(dev, "poiName");
1919 poiType.print(dev, "poiType");
1920 poiText.print(dev, "poiText");
1921 poiColorer.save(dev);
1922 dev.closeTag();
1923 // polys
1925 polySize.print(dev, "poly");
1926 polyName.print(dev, "polyName");
1927 polyType.print(dev, "polyType");
1928 polyColorer.save(dev);
1929 dev.closeTag();
1930 // 3D
1932 dev.writeAttr("show3DTLSLinkMarkers", show3DTLSLinkMarkers);
1933 dev.writeAttr("show3DTLSDomes", show3DTLSDomes);
1934 dev.writeAttr("show3DHeadUpDisplay", show3DHeadUpDisplay);
1935 dev.writeAttr("generate3DTLSModels", generate3DTLSModels);
1936 dev.writeAttr("ambient3DLight", ambient3DLight);
1937 dev.writeAttr("diffuse3DLight", diffuse3DLight);
1938 dev.closeTag();
1939 // legend
1941 dev.writeAttr("showSizeLegend", showSizeLegend);
1942 dev.writeAttr("showColorLegend", showColorLegend);
1943 dev.writeAttr("showVehicleColorLegend", showVehicleColorLegend);
1944 dev.closeTag();
1945
1946 dev.closeTag();
1947}
1948
1949
1950bool
1952 if (show3DTLSDomes != v2.show3DTLSDomes) {
1953 return false;
1954 }
1956 return false;
1957 }
1959 return false;
1960 }
1962 return false;
1963 }
1964 if (ambient3DLight != v2.ambient3DLight) {
1965 return false;
1966 }
1967 if (diffuse3DLight != v2.diffuse3DLight) {
1968 return false;
1969 }
1970 if (skyColor != v2.skyColor) {
1971 return false;
1972 }
1973 if (dither != v2.dither) {
1974 return false;
1975 }
1976 if (fps != v2.fps) {
1977 return false;
1978 }
1979 if (drawBoundaries != v2.drawBoundaries) {
1980 return false;
1981 }
1983 return false;
1984 }
1986 return false;
1987 }
1989 return false;
1990 }
1991 if (geometryIndices != v2.geometryIndices) {
1992 return false;
1993 }
1994 if (backgroundColor != v2.backgroundColor) {
1995 return false;
1996 }
1997 if (colorSettings != v2.colorSettings) {
1998 return false;
1999 }
2000 if (showGrid != v2.showGrid) {
2001 return false;
2002 }
2003 if (gridXSize != v2.gridXSize) {
2004 return false;
2005 }
2006 if (gridYSize != v2.gridYSize) {
2007 return false;
2008 }
2009
2010 if (!(edgeColorer == v2.edgeColorer)) {
2011 return false;
2012 }
2013 if (!(edgeScaler == v2.edgeScaler)) {
2014 return false;
2015 }
2016 if (!(laneColorer == v2.laneColorer)) {
2017 return false;
2018 }
2019 if (!(laneScaler == v2.laneScaler)) {
2020 return false;
2021 }
2022 if (laneShowBorders != v2.laneShowBorders) {
2023 return false;
2024 }
2026 return false;
2027 }
2028 if (showLinkDecals != v2.showLinkDecals) {
2029 return false;
2030 }
2032 return false;
2033 }
2034 if (showLinkRules != v2.showLinkRules) {
2035 return false;
2036 }
2037 if (showRails != v2.showRails) {
2038 return false;
2039 }
2040 if (secondaryShape != v2.secondaryShape) {
2041 return false;
2042 }
2043 if (edgeName != v2.edgeName) {
2044 return false;
2045 }
2047 return false;
2048 }
2049 if (cwaEdgeName != v2.cwaEdgeName) {
2050 return false;
2051 }
2052 if (streetName != v2.streetName) {
2053 return false;
2054 }
2055 if (edgeValue != v2.edgeValue) {
2056 return false;
2057 }
2058 if (edgeScaleValue != v2.edgeScaleValue) {
2059 return false;
2060 }
2061 if (hideConnectors != v2.hideConnectors) {
2062 return false;
2063 }
2065 return false;
2066 }
2067 if (laneMinSize != v2.laneMinSize) {
2068 return false;
2069 }
2071 return false;
2072 }
2073 if (showSublanes != v2.showSublanes) {
2074 return false;
2075 }
2077 return false;
2078 }
2079 if (edgeParam != v2.edgeParam) {
2080 return false;
2081 }
2082 if (laneParam != v2.laneParam) {
2083 return false;
2084 }
2085 if (vehicleParam != v2.vehicleParam) {
2086 return false;
2087 }
2089 return false;
2090 }
2092 return false;
2093 }
2094 if (edgeData != v2.edgeData) {
2095 return false;
2096 }
2097 if (edgeDataID != v2.edgeDataID) {
2098 return false;
2099 }
2100 if (edgeDataScaling != v2.edgeDataScaling) {
2101 return false;
2102 }
2104 return false;
2105 }
2107 return false;
2108 }
2110 return false;
2111 }
2113 return false;
2114 }
2115 if (!(vehicleColorer == v2.vehicleColorer)) {
2116 return false;
2117 }
2118 if (!(vehicleScaler == v2.vehicleScaler)) {
2119 return false;
2120 }
2121 if (vehicleQuality != v2.vehicleQuality) {
2122 return false;
2123 }
2124 if (vehicleSize != v2.vehicleSize) {
2125 return false;
2126 }
2127 if (showBlinker != v2.showBlinker) {
2128 return false;
2129 }
2131 return false;
2132 }
2133 if (drawMinGap != v2.drawMinGap) {
2134 return false;
2135 }
2136 if (drawBrakeGap != v2.drawBrakeGap) {
2137 return false;
2138 }
2139 if (showBTRange != v2.showBTRange) {
2140 return false;
2141 }
2142 if (showRouteIndex != v2.showRouteIndex) {
2143 return false;
2144 }
2145 if (scaleLength != v2.scaleLength) {
2146 return false;
2147 }
2148 if (drawReversed != v2.drawReversed) {
2149 return false;
2150 }
2151 if (showParkingInfo != v2.showParkingInfo) {
2152 return false;
2153 }
2154 if (vehicleName != v2.vehicleName) {
2155 return false;
2156 }
2157 if (vehicleValue != v2.vehicleValue) {
2158 return false;
2159 }
2161 return false;
2162 }
2163 if (vehicleText != v2.vehicleText) {
2164 return false;
2165 }
2166 if (!(personColorer == v2.personColorer)) {
2167 return false;
2168 }
2169 if (personQuality != v2.personQuality) {
2170 return false;
2171 }
2172 if (personSize != v2.personSize) {
2173 return false;
2174 }
2175 if (personName != v2.personName) {
2176 return false;
2177 }
2178 if (personValue != v2.personValue) {
2179 return false;
2180 }
2181 if (!(containerColorer == v2.containerColorer)) {
2182 return false;
2183 }
2185 return false;
2186 }
2187 if (containerSize != v2.containerSize) {
2188 return false;
2189 }
2190 if (containerName != v2.containerName) {
2191 return false;
2192 }
2193 if (!(junctionColorer == v2.junctionColorer)) {
2194 return false;
2195 }
2196 if (!(poiColorer == v2.poiColorer)) {
2197 return false;
2198 }
2199 if (!(polyColorer == v2.polyColorer)) {
2200 return false;
2201 }
2202 if (drawLinkTLIndex != v2.drawLinkTLIndex) {
2203 return false;
2204 }
2206 return false;
2207 }
2208 if (junctionID != v2.junctionID) {
2209 return false;
2210 }
2211 if (junctionName != v2.junctionName) {
2212 return false;
2213 }
2215 return false;
2216 }
2217 if (tlsPhaseIndex != v2.tlsPhaseIndex) {
2218 return false;
2219 }
2220 if (tlsPhaseName != v2.tlsPhaseName) {
2221 return false;
2222 }
2223
2224 if (showLane2Lane != v2.showLane2Lane) {
2225 return false;
2226 }
2227
2229 return false;
2230 }
2231
2233 return false;
2234 }
2235 if (junctionSize != v2.junctionSize) {
2236 return false;
2237 }
2238
2239 if (addMode != v2.addMode) {
2240 return false;
2241 }
2242 if (addSize != v2.addSize) {
2243 return false;
2244 }
2245 if (addName != v2.addName) {
2246 return false;
2247 }
2248 if (addFullName != v2.addFullName) {
2249 return false;
2250 }
2251 if (poiSize != v2.poiSize) {
2252 return false;
2253 }
2254 if (poiDetail != v2.poiDetail) {
2255 return false;
2256 }
2257 if (poiName != v2.poiName) {
2258 return false;
2259 }
2260 if (poiType != v2.poiType) {
2261 return false;
2262 }
2263 if (poiText != v2.poiText) {
2264 return false;
2265 }
2266 if (poiTextParam != v2.poiTextParam) {
2267 return false;
2268 }
2269 if (polySize != v2.polySize) {
2270 return false;
2271 }
2272 if (polyName != v2.polyName) {
2273 return false;
2274 }
2275 if (polyType != v2.polyType) {
2276 return false;
2277 }
2278
2279 if (showSizeLegend != v2.showSizeLegend) {
2280 return false;
2281 }
2282 if (showColorLegend != v2.showColorLegend) {
2283 return false;
2284 }
2286 return false;
2287 }
2288 if (!(dataColorer == v2.dataColorer)) {
2289 return false;
2290 }
2291 if (!(dataValue == v2.dataValue)) {
2292 return false;
2293 }
2295 return false;
2296 }
2298 return false;
2299 }
2300 if (!(relDataAttr == v2.relDataAttr)) {
2301 return false;
2302 }
2304 return false;
2305 }
2307 return false;
2308 }
2309
2310 return true;
2311}
2312
2313
2314const RGBColor&
2316 switch (ls) {
2321 case LINKSTATE_TL_RED:
2322 return SUMO_color_TL_RED;
2333 case LINKSTATE_MAJOR:
2334 return realistic ? RGBColor::INVISIBLE : SUMO_color_MAJOR;
2335 case LINKSTATE_MINOR:
2336 return realistic ? SUMO_color_MAJOR : SUMO_color_MINOR;
2337 case LINKSTATE_EQUAL:
2338 return SUMO_color_EQUAL;
2339 case LINKSTATE_STOP:
2340 return realistic ? SUMO_color_MAJOR : SUMO_color_STOP;
2342 return realistic ? SUMO_color_MAJOR : SUMO_color_ALLWAY_STOP;
2343 case LINKSTATE_ZIPPER:
2344 return realistic ? RGBColor::INVISIBLE : SUMO_color_ZIPPER;
2345 case LINKSTATE_DEADEND:
2346 return SUMO_color_DEADEND;
2347 default:
2348 throw ProcessError(TLF("No color defined for LinkState '%'", std::string(ls, 1)));
2349 }
2350}
2351
2352
2353double
2355 double viewAngle = objectAngle - angle;
2356 while (viewAngle < 0) {
2357 viewAngle += 360;
2358 }
2359 // fmod round towards zero which is not want we want for negative numbers
2360 viewAngle = fmod(viewAngle, 360);
2361 if (viewAngle > 90 && viewAngle < 270) {
2362 // avoid reading text on it's head
2363 objectAngle -= 180;
2364 }
2365 return objectAngle;
2366}
2367
2368bool
2370 double viewAngle = objectAngle - angle;
2371 while (viewAngle < 0) {
2372 viewAngle += 360;
2373 }
2374 // fmod round towards zero which is not want we want for negative numbers
2375 viewAngle = fmod(viewAngle, 360);
2376 return (viewAngle > 90 && viewAngle < 270);
2377}
2378
2379
2380
2381bool
2382GUIVisualizationSettings::drawAdditionals(const double exaggeration) const {
2383 // if we're drawing for rectangle selection, draw always
2385 return true;
2386 } else {
2387 return (scale * exaggeration) > 1.;
2388 }
2389}
2390
2391
2392bool
2393GUIVisualizationSettings::drawDetail(const double detail, const double exaggeration) const {
2394 if (detail <= 0) {
2395 return true;
2396 } else {
2397 return ((scale * exaggeration) >= detail);
2398 }
2399}
2400
2401
2402int
2405 return 8;
2406 } else if (scale >= 10) {
2407 return 32;
2408 } else if (scale >= 5) {
2409 return 16;
2410 } else {
2411 return 8;
2412 }
2413}
2414
2415
2416bool
2417GUIVisualizationSettings::drawDottedContour(const double exaggeration) const {
2419 return false;
2420 } else {
2421 return (scale * exaggeration) > 3.;
2422 }
2423}
2424
2425
2426bool
2427GUIVisualizationSettings::drawMovingGeometryPoint(const double exaggeration, const double radius) const {
2428 return (scale * radius * exaggeration > 10);
2429}
2430
2431/****************************************************************************/
GUISelectedStorage gSelected
A global holder of selected objects.
GUIPropertyScheme< RGBColor > GUIColorScheme
GUIPropertyScheme< double > GUIScaleScheme
const RGBColor SUMO_color_EQUAL(128, 128, 128)
const RGBColor SUMO_color_TL_YELLOW_MAJOR(255, 255, 128)
#define COL_SCHEME_DYNAMIC
const RGBColor SUMO_color_ALLWAY_STOP(0, 0, 192)
const RGBColor SUMO_color_TL_YELLOW_MINOR(255, 255, 0)
const RGBColor SUMO_color_TL_OFF_NOSIGNAL(0, 255, 255)
const RGBColor OSG_color_SKY(51, 51, 102, 255)
const RGBColor SUMO_color_TL_REDYELLOW(255, 128, 0)
const RGBColor SUMO_color_TL_RED(255, 0, 0)
const RGBColor OSG_color_AMBIENT(32, 32, 32, 255)
const RGBColor SUMO_color_MAJOR(255, 255, 255)
const RGBColor OSG_color_DIFFUSE(64, 64, 64, 255)
const RGBColor SUMO_color_TL_GREEN_MINOR(0, 179, 0)
const RGBColor SUMO_color_ZIPPER(192, 128, 64)
#define COL_SCHEME_MISC
const RGBColor SUMO_color_TL_OFF_BLINKING(128, 64, 0)
#define COL_SCHEME_EMISSION
const RGBColor SUMO_color_DEADEND(0, 0, 0)
const RGBColor SUMO_color_MINOR(51, 51, 51)
const RGBColor SUMO_color_TL_GREEN_MAJOR(0, 255, 0)
const RGBColor SUMO_color_STOP(128, 0, 128)
#define TLF(string,...)
Definition MsgHandler.h:288
const SVCPermissions SVCAll
all VClasses are allowed
@ SVC_SHIP
is an arbitrary ship
@ SVC_PASSENGER
vehicle is a passenger car (a "normal" car)
@ SVC_BICYCLE
vehicle is a bicycle
@ SVC_NON_ROAD
classes which (normally) do not drive on normal roads
@ SVC_DELIVERY
vehicle is a small delivery vehicle
@ SVC_MOPED
vehicle is a moped
@ SVC_TAXI
vehicle is a taxi
@ SVC_BUS
vehicle is a bus
@ SVC_PEDESTRIAN
pedestrian
@ SUMO_TAG_VIEWSETTINGS_POIS
@ SUMO_TAG_VIEWSETTINGS_3D
@ SUMO_TAG_VIEWSETTINGS_BACKGROUND
@ SUMO_TAG_VIEWSETTINGS_LEGEND
@ SUMO_TAG_VIEWSETTINGS_OPENGL
@ SUMO_TAG_VIEWSETTINGS_ADDITIONALS
@ SUMO_TAG_VIEWSETTINGS_PERSONS
@ SUMO_TAG_VIEWSETTINGS_JUNCTIONS
@ SUMO_TAG_VIEWSETTINGS_VEHICLES
@ SUMO_TAG_VIEWSETTINGS_EDGES
@ SUMO_TAG_VIEWSETTINGS_SCHEME
@ SUMO_TAG_VIEWSETTINGS_POLYS
@ SUMO_TAG_VIEWSETTINGS_CONTAINERS
LinkState
The right-of-way state of a link between two lanes used when constructing a NBTrafficLightLogic,...
@ LINKSTATE_TL_REDYELLOW
The link has red light (must brake) but indicates upcoming green.
@ LINKSTATE_ALLWAY_STOP
This is an uncontrolled, all-way stop link.
@ LINKSTATE_MAJOR
This is an uncontrolled, major link, may pass.
@ LINKSTATE_STOP
This is an uncontrolled, minor link, has to stop.
@ LINKSTATE_TL_YELLOW_MAJOR
The link has yellow light, may pass.
@ LINKSTATE_TL_GREEN_MAJOR
The link has green light, may pass.
@ LINKSTATE_EQUAL
This is an uncontrolled, right-before-left link.
@ LINKSTATE_DEADEND
This is a dead end link.
@ LINKSTATE_ZIPPER
This is an uncontrolled, zipper-merge link.
@ LINKSTATE_TL_OFF_BLINKING
The link is controlled by a tls which is off and blinks, has to brake.
@ LINKSTATE_TL_YELLOW_MINOR
The link has yellow light, has to brake anyway.
@ LINKSTATE_TL_RED
The link has red light (must brake)
@ LINKSTATE_TL_GREEN_MINOR
The link has green light, has to brake.
@ LINKSTATE_MINOR
This is an uncontrolled, minor link, has to brake.
@ LINKSTATE_TL_OFF_NOSIGNAL
The link is controlled by a tls which is off, not blinking, may pass.
@ SUMO_ATTR_NAME
const double INVALID_DOUBLE
invalid double
Definition StdDefs.h:64
T MAX2(T a, T b)
Definition StdDefs.h:82
void setAllowsNegativeValues(bool value)
int addColor(const T &color, const double threshold, const std::string &name="")
void save(OutputDevice &dev, const std::string &prefix="") const
bool isSelected(GUIGlObjectType type, GUIGlID id)
Returns the information whether the object with the given type and id is selected.
Stores the information about how to visualize structures.
GUIVisualizationTextSettings addName
GUIVisualizationTextSettings tlsPhaseIndex
GUIVisualizationTextSettings vehicleName
GUIVisualizationTextSettings junctionName
void initNeteditDefaults()
init default settings
bool operator==(const GUIVisualizationSettings &vs2)
Comparison operator.
RGBColor backgroundColor
The background color to use.
GUIVisualizationSizeSettings vehicleSize
GUIVisualizationSizeSettings containerSize
bool showBlinker
Information whether vehicle blinkers shall be drawn.
GUIVisualizationTextSettings internalEdgeName
RGBColor skyColor
sky background color
GUIVisualizationSizeSettings junctionSize
static const std::string SCHEME_NAME_DATA_ATTRIBUTE_NUMERICAL
bool drawBoundaries
enable or disable draw boundaries
bool dataValueHideCheck
value below which relation data value should not be rendered
static const std::string SCHEME_NAME_EDGEDATA_NUMERICAL
bool showBikeMarkings
Information whether bicycle lane marking shall be drawn.
std::string edgeDataID
id for coloring by live edgeData
GUIScaler laneScaler
The lane scaler.
GUIVisualizationTextSettings edgeScaleValue
bool dither
Information whether dithering shall be enabled.
GUIColorer vehicleColorer
The vehicle colorer.
GUIVisualizationSettings(const std::string &_name, bool _netedit=false)
constructor
static const std::string SCHEME_NAME_EDGEDATA_LIVE
GUIVisualizationTextSettings personValue
bool drawForRectangleSelection
whether drawing is performed for the purpose of selecting objects using a rectangle
bool showLinkRules
Information whether link rules (colored bars) shall be drawn.
GUIVisualizationTextSettings poiType
GUIVisualizationSizeSettings addSize
static const std::string SCHEME_NAME_SELECTION
std::string name
The name of this setting.
GUIColorer edgeColorer
The mesoscopic edge colorer.
int containerQuality
The quality of container drawing.
GUIVisualizationTextSettings internalJunctionName
GUIVisualizationTextSettings vehicleScaleValue
GUIVisualizationSizeSettings poiSize
bool drawJunctionShape
whether the shape of the junction should be drawn
std::string edgeData
key for coloring by edgeData
GUIVisualizationTextSettings geometryIndices
GUIVisualizationTextSettings dataValue
bool show3DTLSDomes
whether the semi-transparent domes around 3D TL models should be drawn
bool flippedTextAngle(double objectAngle) const
return wether the text was flipped for reading at the given angle
bool realisticLinkRules
Information whether link rules (colored bars) shall be drawn with a realistic color scheme.
int personQuality
The quality of person drawing.
GUIColorer poiColorer
The POI colorer.
GUIVisualizationWidthSettings widthSettings
width settings
GUIVisualizationTextSettings poiName
std::string vehicleScaleParam
key for scaling by vehicle parameter
bool showParkingInfo
Set whether parking related information should be shown.
GUIVisualizationTextSettings vehicleValue
bool disableDottedContours
flag for disable dotted contours in netedit
GUIColorer polyColorer
The polygon colorer.
int vehicleQuality
The quality of vehicle drawing.
GUIVisualizationTextSettings drawLinkJunctionIndex
bool drawForPositionSelection
whether drawing is performed for the purpose of selecting objects with a single click
bool generate3DTLSModels
whether 3D TLS models should be generated automatically
static const std::string SCHEME_NAME_LANE_PARAM_NUMERICAL
GUIVisualizationTextSettings addFullName
GUIVisualizationTextSettings edgeValue
bool fps
Information whether frames-per-second should be drawn.
bool edgeValueHideCheck2
threshold above which edge data value should not be rendered
std::string vehicleParam
key for coloring by vehicle parameter
bool showRails
Information whether rails shall be drawn.
GUIVisualizationSizeSettings personSize
double laneWidthExaggeration
The lane exaggeration (upscale thickness)
GUIVisualizationTextSettings cwaEdgeName
GUIVisualizationTextSettings junctionID
std::string vehicleTextParam
key for rendering vehicle textual parameter
bool drawAdditionals(const double exaggeration) const
check if additionals must be drawn
bool drawMovingGeometryPoint(const double exaggeration, const double radius) const
check if moving geometry point can be draw
bool showLane2Lane
Information whether lane-to-lane arrows shall be drawn.
GUIVisualizationColorSettings colorSettings
color settings
bool showSublanes
Whether to show sublane boundaries.
bool showGrid
Information whether a grid shall be shown.
bool scaleLength
Whether vehicle length shall be scaled with length/geometry factor.
static const std::string SCHEME_NAME_TYPE
bool showVehicleColorLegend
Information whether the vehicle color legend shall be drawn.
double edgeRelWidthExaggeration
The edgeRelation exaggeration (upscale thickness)
bool hideConnectors
flag to show or hide connectors
GUIScaler vehicleScaler
The size scaling settings for vehicles.
static bool UseMesoSim
this should be set at the same time as MSGlobals::gUseMesoSim
bool drawDottedContour(const double exaggeration) const
check if dotted contour can be drawn
GUIColorer personColorer
The person colorer.
void save(OutputDevice &dev) const
Writes the settings into an output device.
GUIScaleScheme & getLaneEdgeScaleScheme()
Returns the current lane (edge) scaling schme.
static const RGBColor & getLinkColor(const LinkState &ls, bool realistic=false)
map from LinkState to color constants
int getLaneEdgeMode() const
Returns the number of the active lane (edge) coloring schme.
RGBColor ambient3DLight
3D material light components
double scale
information about a lane's width (temporary, used for a single view)
bool forceDrawForRectangleSelection
flag to force draw for rectangle selection (see drawForRectangleSelection)
bool netedit
Whether the settings are for Netedit.
bool showLaneDirection
Whether to show direction indicators for lanes.
bool edgeValueHideCheck
threshold below which edge data value should not be rendered
bool secondaryShape
whether secondary lane shape shall be drawn
GUIColorScheme & getLaneEdgeScheme()
Returns the current lane (edge) coloring schme.
GUIScaler edgeScaler
The mesoscopic edge scaler.
bool drawDetail(const double detail, const double exaggeration) const
check if details can be drawn for the given GUIVisualizationDetailSettings and current scale and exxa...
bool drawMinGap
Information whether the minimum gap shall be drawn.
GUIVisualizationTextSettings streetName
GUIVisualizationTextSettings poiText
GUIVisualizationTextSettings vehicleText
int getLaneEdgeScaleMode() const
Returns the number of the active lane (edge) scaling schme.
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
bool show3DHeadUpDisplay
whether to draw the head up display items
GUIColorer laneColorer
The lane colorer.
GUIVisualizationTextSettings polyName
double tazRelWidthExaggeration
The tazRelation exaggeration (upscale thickness)
bool laneShowBorders
Information whether lane borders shall be drawn.
GUIVisualizationTextSettings tlsPhaseName
GUIVisualizationTextSettings edgeName
bool showSizeLegend
Information whether the size legend shall be drawn.
double laneMinSize
The minimum visual lane width for drawing.
GUIVisualizationTextSettings drawLinkTLIndex
GUIVisualizationTextSettings containerName
GUIVisualizationSizeSettings polySize
GUIColorer containerColorer
The container colorer.
double gridXSize
Information about the grid spacings.
bool showBTRange
Information whether the communication range shall be drawn.
bool forceDrawForPositionSelection
flag to force draw for position selection (see drawForPositionSelection)
bool drawReversed
Whether to draw reversed vehicles in their reversed state.
GUIVisualizationTextSettings personName
bool showColorLegend
Information whether the edge color legend shall be drawn.
std::string poiTextParam
key for rendering poi textual parameter
int getCircleResolution() const
function to calculate circle resolution for all circles drawn in drawGL(...) functions
bool showRouteIndex
Information whether the route index should be shown.
bool drawCrossingsAndWalkingareas
whether crosings and walkingareas shall be drawn
static const std::string SCHEME_NAME_EDGE_PARAM_NUMERICAL
scheme names
double selectorFrameScale
the current selection scaling in netedit (set in SelectorFrame)
bool spreadSuperposed
Whether to improve visualisation of superposed (rail) edges.
int addMode
The additional structures visualization scheme.
std::string relDataAttr
key for coloring by edgeRelation / tazRelation attribute
GUIColorer junctionColorer
The junction colorer.
void copy(const GUIVisualizationSettings &s)
copy all content from another GUIVisualizationSettings (note: DON'T USE in DrawGL functions!...
static const std::string SCHEME_NAME_PERMISSION_CODE
static const std::string SCHEME_NAME_PARAM_NUMERICAL
std::string edgeParam
key for coloring by edge parameter
bool drawBrakeGap
Information whether the brake gap shall be drawn.
bool drawLaneChangePreference
Information whether the lane change preference shall be drawn.
double getTextAngle(double objectAngle) const
return an angle that is suitable for reading text aligned with the given angle (degrees)
GUIVisualizationTextSettings polyType
int poiDetail
The detail level for drawing POIs.
std::string edgeDataScaling
key for scaling by edgeData
double angle
The current view rotation angle.
Static storage of an output device and its base (abstract) implementation.
void lf()
writes a line feed if applicable
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
bool closeTag(const std::string &comment="")
Closes the most recently opened tag and optionally adds a comment.
static const RGBColor BLUE
Definition RGBColor.h:187
static const RGBColor GREY
Definition RGBColor.h:194
static const RGBColor YELLOW
Definition RGBColor.h:188
static const RGBColor INVISIBLE
Definition RGBColor.h:195
static const RGBColor ORANGE
Definition RGBColor.h:191
static const RGBColor CYAN
Definition RGBColor.h:189
static const RGBColor GREEN
Definition RGBColor.h:186
static const RGBColor BLACK
Definition RGBColor.h:193
static const RGBColor MAGENTA
Definition RGBColor.h:190
static const RGBColor RED
named colors
Definition RGBColor.h:185
static const double routeProbeSize
RouteProbe size.
static const RGBColor calibratorColor
color for Calibrators
static const double calibratorWidth
Calibrator width.
static const double vaporizerSize
Vaporizer size.
static const double arrowLength
arrow length
static const double rerouterSize
rerouter size
static const double calibratorHeight
Calibrator height.
static const RGBColor VSSColor
color for VSS
static const RGBColor overheadWireColorBot
overhead wire color bot
static const double arrowWidth
arrow width
static const RGBColor connectionColor
connection color
static const RGBColor overheadWireColorTop
overhead wire color top
static const double arrowOffset
arrow offset
static const RGBColor TLSConnectionColor
connection color between E1/junctions and TLS
static const double tractionSubstationSize
tractionSubstation size
static const RGBColor vaporizerColor
color for vaporizers
static const RGBColor overheadWireColorSelected
overhead wire color selected
static const RGBColor rerouterColor
color for rerouters
static const RGBColor connectionColorSelected
connection color selected
static const RGBColor routeProbeColor
color for route probes
static const RGBColor special
color for selected special candidate element (Usually selected using shift+click)
static const RGBColor conflict
color for selected conflict candidate element (Usually selected using ctrl+click)
static const RGBColor invalid
color for invalid elements
static const RGBColor target
color for selected candidate target
static const RGBColor possible
color for possible candidate element
static const RGBColor source
color for selected candidate source
RGBColor vehicleTripColor
color for vehicle trips
RGBColor parkingSpaceColorContour
color for parkingSpace contour
RGBColor selectionColor
basic selection color
static const RGBColor childConnectionColor
color for child connections between parents and child elements
RGBColor selectedEdgeColor
edge selection color
RGBColor selectedPersonPlanColor
person plan selection color (Rides, Walks, stopPersons...)
static const RGBColor SUMO_color_DEADEND_SHOW
color for highlighthing deadends
RGBColor stopPersonColor
color for stopPersons
RGBColor selectedCrossingColor
crossings selection color
static const RGBColor crossingPriorityColor
color for priority crossing
RGBColor chargingStationColor
color for chargingStations
RGBColor parkingSpaceColor
color for parkingSpace innen
RGBColor selectedLaneColor
lane selection color
static const RGBColor crossingInvalidColor
color for invalid crossing
RGBColor selectedRouteColor
route selection color (used for routes and vehicle stops)
RGBColor selectedEdgeDataColor
edge data selection color
bool operator==(const GUIVisualizationColorSettings &other)
equality comparator
RGBColor trainStopColorSign
color for trainStops signs
RGBColor transhipColor
color for tranships
RGBColor waypointColor
color for Waypoints
static const RGBColor crossingColor
color for crossings
static const RGBColor editShapeColor
color for edited shapes (Junctions, crossings and connections)
RGBColor containerStopColor
color for containerStops
RGBColor selectedProhibitionColor
prohibition selection color
RGBColor selectedConnectionColor
connection selection color
RGBColor busStopColorSign
color for busStops signs
RGBColor selectedContainerColor
container selection color
RGBColor containerStopColorSign
color for containerStop signs
RGBColor selectedAdditionalColor
additional selection color (busStops, Detectors...)
RGBColor parkingAreaColorSign
color for parkingArea sign
RGBColor transportColor
color for transport
RGBColor busStopColor
color for busStops
bool operator!=(const GUIVisualizationColorSettings &other)
inequality comparator
RGBColor selectedVehicleColor
vehicle selection color
RGBColor chargingStationColorCharge
color for chargingStation during charging
RGBColor parkingAreaColor
color for parkingAreas
RGBColor selectedPersonColor
person selection color
RGBColor selectedContainerPlanColor
container plan selection color (Rides, Walks, containerStops...)
RGBColor personTripColor
color for stopPersons
RGBColor stopContainerColor
color for containerStops
RGBColor trainStopColor
color for trainStops
RGBColor chargingStationColorSign
color for chargingStation sign
static const double connectionWidth
connection width
static const double laneTextures
details for lane textures
static const double additionalTextures
details for additional textures
static const double lockIcon
lock icons
static const double vehicleTriangles
details for draw person as triangles
static const double vehicleShapes
details for draw person as shapes
static const double detectorDetails
details for detectors
static const double personShapes
details for draw person as person shapes
static const double stoppingPlaceDetails
details for stopping places
static const double connectionsDemandMode
draw connections in demand mode
static const double detectorText
details for detector texts
static const double stoppingPlaceText
details for stopping place texts
static const double stopsText
details for stop texts
static const double personTriangles
details for draw person as triangles
static const double stopsDetails
details for stops
static const double geometryPointsDetails
details for Geometry Points
static const double vehicleBoxes
details for draw person as boxes
static const double calibratorText
details for calibrator text
static const double personCircles
details for draw person as circles
static const double personExaggeration
Exaggeration for persons (only used in netedit)
static const double geometryPointsText
details for Geometry Points Texts
static const double E3EntryExitWidth
E3 Entry/Exit detector width.
static const RGBColor E2Color
color for E2 detectors
static const double E1InstantHeight
E1 Instant detector heights.
static const double E2Width
E2 detector widths.
static const RGBColor E3ExitColor
color for Exits
static const double E3Size
E3 detector size.
static const RGBColor E1Color
color for E1 detectors
static const double E1Width
E1 detector widths.
static const RGBColor E3EntryColor
color for Entrys
static const double E1InstantWidth
E1 Instant detector widths.
static const double E3EntryExitHeight
E3 Entry/Exit detector height.
static const RGBColor E1InstantColor
color for E1 Instant detectors
static const double E1Height
E1 Instant detector heights.
static const double segmentWidthSmall
width of dotted contour segments
static const RGBColor firstFrontColor
first color of dotted front contour
static const RGBColor firstInspectedColor
first color of dotted inspected contour
static const RGBColor secondFrontColor
second color of dotted front contour
static const RGBColor secondInspectedColor
second color of dotted inspectedcontour
static const double segmentLength
length of dotted contour segments
static const double segmentWidthLarge
width of dotted contour segments
static const double crossingGeometryPointRadius
moving crossing geometry point radius
static const double polygonGeometryPointRadius
moving geometry point radius
static const double connectionGeometryPointRadius
moving connection geometry point radius
static const double additionalGeometryPointRadius
moving additional geometry point radius
static const double junctionGeometryPointRadius
moving junction geometry point radius
static const double laneGeometryPointRadius
moving lane geometry point radius
static const double junctionBubbleRadius
junction bubble radius
static const double polygonContourWidth
polygon contour width
static const double polylineWidth
poly line width
static const double edgeGeometryPointRadius
moving edge geometry point radius
bool operator!=(const GUIVisualizationSizeSettings &other)
inequality comparator
double getExaggeration(const GUIVisualizationSettings &s, const GUIGlObject *o, double factor=20) const
return the drawing size including exaggeration and constantSize values
GUIVisualizationSizeSettings(double _minSize, double _exaggeration=1.0, bool _constantSize=false, bool _constantSizeSelected=false)
constructor
double exaggeration
The size exaggeration (upscale)
bool constantSize
whether the object shall be drawn with constant size regardless of zoom
void print(OutputDevice &dev, const std::string &name) const
print values in output device
double minSize
The minimum size to draw this object.
bool operator==(const GUIVisualizationSizeSettings &other)
equality comparator
bool constantSizeSelected
whether only selected objects shall be drawn with constant
static const double stoppingPlaceSignOffset
busStop offset
static const double chargingStationWidth
chargingStation width
static const double busStopWidth
busStop width
static const double containerStopWidth
containerStop width
static const double trainStopWidth
trainStop width
void print(OutputDevice &dev, const std::string &name) const
print values in output device
bool operator==(const GUIVisualizationTextSettings &other)
equality comparator
bool show(const GUIGlObject *o) const
whether to show the text
RGBColor bgColor
background text color
bool operator!=(const GUIVisualizationTextSettings &other)
inequality comparator
GUIVisualizationTextSettings(bool _show, double _size, RGBColor _color, RGBColor _bgColor=RGBColor(128, 0, 0, 0), bool _constSize=true, bool _onlySelected=false)
constructor
bool onlySelected
whether only selected objects shall have text drawn
double scaledSize(double scale, double constFactor=0.1) const
get scale size
bool constSize
@brif flag to avoid size changes
bool operator!=(const GUIVisualizationWidthSettings &other)
inequality comparator
bool operator==(const GUIVisualizationWidthSettings &other)
equality comparator
double personTripWidth
width for person trips
static const double embeddedRouteWidth
width for embeddedroutes
static const double routeWidth
width for routes