Eclipse SUMO - Simulation of Urban MObility
GUIVisualizationSettings.cpp
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3// Copyright (C) 2001-2022 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
78
79// -------------------------------------------------------------------------
80// Netedit size values
81// -------------------------------------------------------------------------
82
93
94// -------------------------------------------------------------------------
95// additional values
96// -------------------------------------------------------------------------
97
99
100// -------------------------------------------------------------------------
101// additional values
102// -------------------------------------------------------------------------
103
125
126// -------------------------------------------------------------------------
127// detector values
128// -------------------------------------------------------------------------
129
143
144// -------------------------------------------------------------------------
145// StoppingPlace values
146// -------------------------------------------------------------------------
147
153
154// -------------------------------------------------------------------------
155// Dotted contour values
156// -------------------------------------------------------------------------
157
165
166// -------------------------------------------------------------------------
167// 3D light presets
168// -------------------------------------------------------------------------
169const RGBColor OSG_color_AMBIENT(32, 32, 32, 255);
170const RGBColor OSG_color_DIFFUSE(64, 64, 64, 255);
171const RGBColor OSG_color_SKY(51, 51, 102, 255);
172
173// -------------------------------------------------------------------------
174// widths of certain NETEDIT objects
175// -------------------------------------------------------------------------
176
179
180// -------------------------------------------------------------------------
181// details of certain NETEDIT objects (0 = drawn always)
182// -------------------------------------------------------------------------
183
185const double GUIVisualizationDetailSettings::laneTextures(20); // originally 10
187const double GUIVisualizationDetailSettings::additionalTextures(20); // originally 10
204
205// -------------------------------------------------------------------------
206// scheme names
207// -------------------------------------------------------------------------
208
209const std::string GUIVisualizationSettings::SCHEME_NAME_EDGE_PARAM_NUMERICAL("by param (numerical, streetwise)");
210const std::string GUIVisualizationSettings::SCHEME_NAME_LANE_PARAM_NUMERICAL("by param (numerical, lanewise)");
211const std::string GUIVisualizationSettings::SCHEME_NAME_PARAM_NUMERICAL("by param (numerical)");
212const std::string GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_NUMERICAL("by edgeData (numerical, streetwise)");
213const std::string GUIVisualizationSettings::SCHEME_NAME_DATA_ATTRIBUTE_NUMERICAL("by attribute (numerical)");
214const std::string GUIVisualizationSettings::SCHEME_NAME_SELECTION("by selection");
215const std::string GUIVisualizationSettings::SCHEME_NAME_TYPE("by type");
216const std::string GUIVisualizationSettings::SCHEME_NAME_PERMISSION_CODE("by permission code");
217const std::string GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_LIVE("by live edgeData");
218
219const double GUIVisualizationSettings::MISSING_DATA(std::numeric_limits<double>::max());
221
222// color constants for scheme background
223#define COL_SCHEME_EMISSION RGBColor(255,255,210)
224#define COL_SCHEME_MISC RGBColor(210,220,255)
225#define COL_SCHEME_STATIC RGBColor(230,230,230)
226#define COL_SCHEME_DYNAMIC RGBColor(220,255,220)
227
228// ===========================================================================
229// member method definitions
230// ===========================================================================
231
232// ---------------------------------------------------------------------------
233// GUIVisualizationTextSettings - methods
234// ---------------------------------------------------------------------------
235
236GUIVisualizationTextSettings::GUIVisualizationTextSettings(bool _showText, double _size, RGBColor _color, RGBColor _bgColor, bool _constSize, bool _onlySelected) :
237 showText(_showText),
238 size(_size),
239 color(_color),
240 bgColor(_bgColor),
241 constSize(_constSize),
242 onlySelected(_onlySelected) {
243}
244
245
246bool
248 return (showText == other.showText) &&
249 (size == other.size) &&
250 (color == other.color) &&
251 (bgColor == other.bgColor) &&
252 (constSize == other.constSize) &&
253 (onlySelected == other.onlySelected);
254}
255
256
257bool
259 return (showText != other.showText) ||
260 (size != other.size) ||
261 (color != other.color) ||
262 (bgColor != other.bgColor) ||
263 (constSize != other.constSize) ||
264 (onlySelected != other.onlySelected);
265}
266
267
268void
269GUIVisualizationTextSettings::print(OutputDevice& dev, const std::string& name) const {
270 dev.writeAttr(name + "_show", showText);
271 dev.writeAttr(name + "_size", size);
272 dev.writeAttr(name + "_color", color);
273 dev.writeAttr(name + "_bgColor", bgColor);
274 dev.writeAttr(name + "_constantSize", constSize);
275 dev.writeAttr(name + "_onlySelected", onlySelected);
276}
277
278
279double
280GUIVisualizationTextSettings::scaledSize(double scale, double constFactor) const {
281 return constSize ? (size / scale) : (size * constFactor);
282}
283
284
285bool
287 return showText && (!onlySelected || o == nullptr || gSelected.isSelected(o));
288}
289
290// ---------------------------------------------------------------------------
291// GUIVisualizationSizeSettings - methods
292// ---------------------------------------------------------------------------
293
294GUIVisualizationSizeSettings::GUIVisualizationSizeSettings(double _minSize, double _exaggeration, bool _constantSize, bool _constantSizeSelected) :
295 minSize(_minSize),
296 exaggeration(_exaggeration),
297 constantSize(_constantSize),
298 constantSizeSelected(_constantSizeSelected) {
299}
300
301
302double
304 // declare exaggeration final
305 double exaggerationFinal;
307 if (constantSize && (!constantSizeSelected || (o == nullptr) || gSelected.isSelected(o))) {
308 exaggerationFinal = MAX2(exaggeration, exaggeration * factor / s.scale);
309 } else if (!constantSizeSelected || (o == nullptr) || gSelected.isSelected(o)) {
310 exaggerationFinal = exaggeration;
311 } else {
312 exaggerationFinal = 1;
313 }
314 // add selectorFrameScale
315 if ((o != nullptr) && gSelected.isSelected(o)) {
316 return (exaggerationFinal * s.selectorFrameScale);
317 } else {
318 return exaggerationFinal;
319 }
320}
321
322
323bool
325 return (constantSize == other.constantSize) &&
327 (minSize == other.minSize) &&
328 (exaggeration == other.exaggeration);
329}
330
331
332bool
334 return (constantSize != other.constantSize) ||
336 (minSize != other.minSize) ||
337 (exaggeration != other.exaggeration);
338}
339
340
341void
342GUIVisualizationSizeSettings::print(OutputDevice& dev, const std::string& name) const {
343 dev.writeAttr(name + "_minSize", minSize);
344 dev.writeAttr(name + "_exaggeration", exaggeration);
345 dev.writeAttr(name + "_constantSize", constantSize);
346 dev.writeAttr(name + "_constantSizeSelected", constantSizeSelected);
347}
348
349// ---------------------------------------------------------------------------
350// GUIVisualizationColorSettings - methods
351// ---------------------------------------------------------------------------
352
354 selectionColor(0, 0, 204, 255),
355 selectedEdgeColor(0, 0, 204, 255),
356 selectedLaneColor(0, 0, 128, 255),
357 selectedConnectionColor(0, 0, 100, 255),
358 selectedProhibitionColor(0, 0, 120, 255),
359 selectedCrossingColor(0, 100, 196, 255),
360 selectedAdditionalColor(0, 0, 150, 255),
361 selectedRouteColor(0, 0, 150, 255),
362 selectedVehicleColor(0, 0, 100, 255),
363 selectedPersonColor(0, 0, 120, 255),
364 selectedPersonPlanColor(0, 0, 130, 255),
365 selectedContainerColor(0, 0, 120, 255),
366 selectedContainerPlanColor(0, 0, 130, 255),
367 selectedEdgeDataColor(0, 0, 150, 255),
368 busStopColor(76, 170, 50),
369 busStopColorSign(255, 235, 0),
370 trainStopColor(76, 170, 50),
371 trainStopColorSign(255, 235, 0),
372 containerStopColor(83, 89, 172),
373 containerStopColorSign(177, 184, 186, 171),
374 chargingStationColor(114, 210, 252),
375 chargingStationColorSign(255, 235, 0),
376 chargingStationColorCharge(255, 180, 0),
377 parkingAreaColor(83, 89, 172),
378 parkingAreaColorSign(177, 184, 186),
379 parkingSpaceColorContour(0, 255, 0),
380 parkingSpaceColor(255, 200, 200),
381 stopColor(220, 20, 30),
382 waypointColor(0, 127, 14),
383 vehicleTripColor(255, 128, 0),
384 stopPersonColor(255, 0, 0),
385 personTripColor(200, 0, 255),
386 walkColor(0, 255, 0),
387 rideColor(0, 0, 255),
388 stopContainerColor(255, 0, 0),
389 transportColor(100, 200, 0),
390 transhipColor(100, 0, 200) {
391}
392
393
394bool
396 return (selectionColor == v2.selectionColor) &&
409 (busStopColor == v2.busStopColor) &&
422 (stopColor == v2.stopColor) &&
427 (walkColor == v2.walkColor) &&
428 (rideColor == v2.rideColor) &&
432}
433
434
435bool
437 return (selectionColor != v2.selectionColor) ||
450 (busStopColor != v2.busStopColor) ||
463 (stopColor != v2.stopColor) ||
468 (walkColor != v2.walkColor) ||
469 (rideColor != v2.rideColor) ||
473}
474
475// ---------------------------------------------------------------------------
476// GUIVisualizationWidthSettings - methods
477// ---------------------------------------------------------------------------
478
480 tripWidth(0.2),
481 personTripWidth(0.25),
482 walkWidth(0.25),
483 rideWidth(0.25),
484 transportWidth(0.25),
485 transhipWidth(0.25) {
486}
487
488
489bool
491 return (tripWidth == v2.tripWidth) &&
493 (walkWidth == v2.walkWidth) &&
494 (rideWidth == v2.rideWidth) &&
497}
498
499
500bool
502 return (tripWidth != v2.tripWidth) ||
504 (walkWidth != v2.walkWidth) ||
505 (rideWidth != v2.rideWidth) ||
508}
509
510// ---------------------------------------------------------------------------
511// GUIVisualizationWidthSettings - methods
512// ---------------------------------------------------------------------------
513
514GUIVisualizationSettings::GUIVisualizationSettings(const std::string& _name, bool _netedit) :
515 name(_name),
516 netedit(_netedit),
517 angle(0),
518 dither(false),
519 fps(false),
520 backgroundColor(RGBColor::WHITE),
521 showGrid(false), gridXSize(100), gridYSize(100),
522 laneShowBorders(false), showBikeMarkings(true), showLinkDecals(true),
523 realisticLinkRules(false),
524 showLinkRules(true), showRails(true),
525 edgeName(false, 60, RGBColor(255, 128, 0, 255)),
526 internalEdgeName(false, 45, RGBColor(128, 64, 0, 255)),
527 cwaEdgeName(false, 60, RGBColor::MAGENTA),
528 streetName(false, 60, RGBColor::YELLOW),
529 edgeValue(false, 100, RGBColor::CYAN),
530 hideConnectors(false),
531 laneWidthExaggeration(1),
532 laneMinSize(0),
533 showLaneDirection(false),
534 showSublanes(true),
535 spreadSuperposed(false),
536 edgeParam("EDGE_KEY"),
537 laneParam("LANE_KEY"),
538 vehicleParam("PARAM_NUMERICAL"),
539 vehicleScaleParam("PARAM_NUMERICAL"),
540 vehicleTextParam("PARAM_TEXT"),
541 edgeData("speed"),
542 edgeDataID(""),
543 edgeValueHideCheck(false),
544 edgeValueHideThreshold(0),
545 edgeValueHideCheck2(false),
546 edgeValueHideThreshold2(200),
547 vehicleQuality(0), showBlinker(true),
548 drawLaneChangePreference(false),
549 drawMinGap(false),
550 drawBrakeGap(false),
551 showBTRange(false),
552 showRouteIndex(false),
553 scaleLength(true),
554 showParkingInfo(false),
555 vehicleSize(1),
556 vehicleName(false, 60, RGBColor(204, 153, 0, 255)),
557 vehicleValue(false, 80, RGBColor::CYAN),
558 vehicleScaleValue(false, 80, RGBColor::GREY),
559 vehicleText(false, 80, RGBColor::RED),
560 personQuality(netedit ? 2 : 0),
561 personSize(1),
562 personName(false, 60, RGBColor(0, 153, 204, 255)),
563 personValue(false, 80, RGBColor::CYAN),
564 containerQuality(0),
565 containerSize(1),
566 containerName(false, 60, RGBColor(0, 153, 204, 255)),
567 drawLinkTLIndex(false, 65, RGBColor(128, 128, 255, 255), RGBColor::INVISIBLE, false),
568 drawLinkJunctionIndex(false, 65, RGBColor(128, 128, 255, 255), RGBColor::INVISIBLE, false),
569 junctionID(false, 60, RGBColor(0, 255, 128, 255)),
570 junctionName(false, 60, RGBColor(192, 255, 128, 255)),
571 internalJunctionName(false, 50, RGBColor(0, 204, 128, 255)),
572 tlsPhaseIndex(false, 150, RGBColor::YELLOW),
573 tlsPhaseName(false, 150, RGBColor::ORANGE),
574 showLane2Lane(false),
575 drawJunctionShape(true),
576 drawCrossingsAndWalkingareas(true),
577 junctionSize(1),
578 addMode(0),
579 addSize(1),
580 addName(false, 60, RGBColor(255, 0, 128, 255)),
581 addFullName(false, 60, RGBColor(255, 0, 128, 255)),
582 poiSize(0),
583 poiDetail(16),
584 poiName(false, 50, RGBColor(255, 0, 128, 255)),
585 poiType(false, 60, RGBColor(255, 0, 128, 255)),
586 poiText(false, 80, RGBColor(140, 0, 255, 255)),
587 poiTextParam("PARAM_TEXT"),
588 polySize(0), polyName(false, 50, RGBColor(255, 0, 128, 255)),
589 polyType(false, 60, RGBColor(255, 0, 128, 255)),
590 dataValue(false, 100, RGBColor::CYAN),
591 tazRelWidthExaggeration(1),
592 edgeRelWidthExaggeration(1),
593 relDataAttr("count"),
594 dataValueHideCheck(false),
595 dataValueHideThreshold(0),
596 show3DTLSLinkMarkers(true),
597 show3DTLSDomes(true),
598 generate3DTLSModels(false),
599 ambient3DLight(OSG_color_AMBIENT),
600 diffuse3DLight(OSG_color_DIFFUSE),
601 skyColor(OSG_color_SKY),
602 showSizeLegend(true),
603 showColorLegend(false),
604 showVehicleColorLegend(false),
605 gaming(false),
606 drawBoundaries(false),
607 selectorFrameScale(1.),
608 drawForPositionSelection(false),
609 drawForRectangleSelection(false),
610 forceDrawForPositionSelection(false),
611 forceDrawForRectangleSelection(false),
612 geometryIndices(false, 50, RGBColor(255, 0, 128, 255)),
613 lefthand(false),
614 disableLaneIcons(false) {
615 // init defaults depending of NETEDIT or SUMO-GUI
616 if (netedit) {
618 } else {
620 }
621}
622
623
624void
626 // just copy. Note: By default = operator is disabled to avoid accidental copies)
627 *this = s;
628}
629
630
631void
634 GUIColorScheme scheme = GUIColorScheme("uniform", RGBColor::BLACK, "road", true, 0);
635 scheme.addColor(RGBColor::GREY, 1, "sidewalk");
636 scheme.addColor(RGBColor(192, 66, 44), 2, "bike lane");
637 scheme.addColor(RGBColor(0, 0, 0, 0), 3, "green verge");
638 scheme.addColor(RGBColor(150, 200, 200), 4, "waterway");
639 scheme.addColor(RGBColor::BLACK, 5, "railway");
640 scheme.addColor(RGBColor(64, 0, 64), 6, "rails on road");
641 scheme.addColor(RGBColor(92, 92, 92), 7, "no passenger"); // paths, service roads etc
642 scheme.addColor(RGBColor::RED, 8, "closed"); // road closing
643 scheme.addColor(RGBColor::GREEN, 9, "connector"); // macro-connector
644 scheme.addColor(RGBColor::ORANGE, 10, "forbidden"); // forbidden road
645 laneColorer.addScheme(scheme);
646 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
647 scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
648 laneColorer.addScheme(scheme);
649 scheme = GUIColorScheme(SCHEME_NAME_PERMISSION_CODE, RGBColor(240, 240, 240), "nobody");
650 scheme.addColor(RGBColor(10, 10, 10), (double)SVC_PASSENGER, "passenger");
651 scheme.addColor(RGBColor(128, 128, 128), (double)SVC_PEDESTRIAN, "pedestrian");
652 scheme.addColor(RGBColor(80, 80, 80), (double)(SVC_PEDESTRIAN | SVC_DELIVERY), "pedestrian_delivery");
653 scheme.addColor(RGBColor(192, 66, 44), (double)SVC_BICYCLE, "bicycle");
654 scheme.addColor(RGBColor(40, 100, 40), (double)SVC_BUS, "bus");
655 scheme.addColor(RGBColor(166, 147, 26), (double)SVC_TAXI, "taxi");
656 scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~SVC_NON_ROAD), "normal_road");
657 scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_NON_ROAD)), "disallow_pedestrian");
658 scheme.addColor(RGBColor(255, 206, 0), (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_BICYCLE | SVC_MOPED | SVC_NON_ROAD)), "motorway");
659 scheme.addColor(RGBColor(150, 200, 200), (double)SVC_SHIP, "waterway");
660 scheme.addColor(RGBColor::GREEN, (double)SVCAll, "all");
661 laneColorer.addScheme(scheme);
662 // ... traffic states ...
663 scheme = GUIColorScheme("by allowed speed (lanewise)", RGBColor::RED);
664 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
665 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
666 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
667 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
668 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
669 laneColorer.addScheme(scheme);
670 scheme = GUIColorScheme("by current occupancy (lanewise, brutto)", RGBColor(235, 235, 235), "", false, 0, COL_SCHEME_DYNAMIC);
671 scheme.addColor(RGBColor::GREEN, 0.25);
672 scheme.addColor(RGBColor::YELLOW, 0.5);
673 scheme.addColor(RGBColor::ORANGE, 0.75);
674 scheme.addColor(RGBColor::RED, 1.0);
675 laneColorer.addScheme(scheme);
676 scheme = GUIColorScheme("by current occupancy (lanewise, netto)", RGBColor(235, 235, 235), "", false, 0, COL_SCHEME_DYNAMIC);
677 scheme.addColor(RGBColor::GREEN, 0.25);
678 scheme.addColor(RGBColor::YELLOW, 0.5);
679 scheme.addColor(RGBColor::ORANGE, 0.75);
680 scheme.addColor(RGBColor::RED, 1.0);
681 laneColorer.addScheme(scheme);
682 scheme = GUIColorScheme("by first vehicle waiting time (lanewise)", RGBColor(235, 235, 235), "", false, 0, COL_SCHEME_DYNAMIC);
683 scheme.addColor(RGBColor::CYAN, 30.);
684 scheme.addColor(RGBColor::GREEN, 100.);
685 scheme.addColor(RGBColor::YELLOW, 200.);
686 scheme.addColor(RGBColor::RED, 300.);
687 laneColorer.addScheme(scheme);
688 scheme = GUIColorScheme("by lane number (streetwise)", RGBColor::RED);
689 scheme.addColor(RGBColor::BLUE, 5.);
690 laneColorer.addScheme(scheme);
691 // ... emissions ...
692 scheme = GUIColorScheme("by CO2 emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
693 scheme.addColor(RGBColor::CYAN, 450);
694 scheme.addColor(RGBColor::GREEN, 900);
695 scheme.addColor(RGBColor::YELLOW, 1350);
696 scheme.addColor(RGBColor::ORANGE, 1800);
697 scheme.addColor(RGBColor::RED, 2250);
698 scheme.addColor(RGBColor::MAGENTA, 3000);
699 laneColorer.addScheme(scheme);
700 scheme = GUIColorScheme("by CO emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
701 scheme.addColor(RGBColor::CYAN, 30);
702 scheme.addColor(RGBColor::GREEN, 60);
703 scheme.addColor(RGBColor::YELLOW, 90);
704 scheme.addColor(RGBColor::ORANGE, 120);
705 scheme.addColor(RGBColor::RED, 150);
706 scheme.addColor(RGBColor::MAGENTA, 200);
707 laneColorer.addScheme(scheme);
708 scheme = GUIColorScheme("by PMx emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
709 scheme.addColor(RGBColor::CYAN, 0.3);
710 scheme.addColor(RGBColor::GREEN, 0.5);
711 scheme.addColor(RGBColor::YELLOW, 0.8);
712 scheme.addColor(RGBColor::ORANGE, 1);
713 scheme.addColor(RGBColor::RED, 1.3);
714 scheme.addColor(RGBColor::MAGENTA, 1.6);
715 laneColorer.addScheme(scheme);
716 scheme = GUIColorScheme("by NOx emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
717 scheme.addColor(RGBColor::CYAN, 6);
718 scheme.addColor(RGBColor::GREEN, 12);
719 scheme.addColor(RGBColor::YELLOW, 18);
720 scheme.addColor(RGBColor::ORANGE, 24);
721 scheme.addColor(RGBColor::RED, 30);
722 scheme.addColor(RGBColor::MAGENTA, 40);
723 laneColorer.addScheme(scheme);
724 scheme = GUIColorScheme("by HC emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
725 scheme.addColor(RGBColor::CYAN, 8);
726 scheme.addColor(RGBColor::GREEN, 16);
727 scheme.addColor(RGBColor::YELLOW, 24);
728 scheme.addColor(RGBColor::ORANGE, 32);
729 scheme.addColor(RGBColor::RED, 40);
730 scheme.addColor(RGBColor::MAGENTA, 50);
731 laneColorer.addScheme(scheme);
732 scheme = GUIColorScheme("by fuel consumption", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
733 scheme.addColor(RGBColor::CYAN, 0.2);
734 scheme.addColor(RGBColor::GREEN, 0.4);
735 scheme.addColor(RGBColor::YELLOW, 0.6);
736 scheme.addColor(RGBColor::ORANGE, 0.8);
737 scheme.addColor(RGBColor::RED, 1);
738 scheme.addColor(RGBColor::MAGENTA, 1.3);
739 laneColorer.addScheme(scheme);
740 scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
741 scheme.addColor(RGBColor::CYAN, 1.3);
742 scheme.addColor(RGBColor::GREEN, 1.4);
743 scheme.addColor(RGBColor::YELLOW, 1.6);
744 scheme.addColor(RGBColor::ORANGE, 1.7);
745 scheme.addColor(RGBColor::RED, 1.9);
746 scheme.addColor(RGBColor::MAGENTA, 2.4);
747 laneColorer.addScheme(scheme);
748 // ... weights (experimental) ...
749 scheme = GUIColorScheme("by global travel time", RGBColor::GREEN);
750 scheme.addColor(RGBColor::RED, 100.);
751 scheme.setAllowsNegativeValues(true);
752 laneColorer.addScheme(scheme);
753 scheme = GUIColorScheme("by global speed percentage", RGBColor::RED);
754 scheme.addColor(RGBColor::YELLOW, 50.);
755 scheme.addColor(RGBColor::GREEN, 100.);
756 scheme.setAllowsNegativeValues(true);
757 laneColorer.addScheme(scheme);
758 scheme = GUIColorScheme("by given length/geometrical length", RGBColor::RED);
759 scheme.addColor(RGBColor::ORANGE, 0.25);
760 scheme.addColor(RGBColor::YELLOW, 0.5);
761 scheme.addColor(RGBColor(179, 179, 179, 255), 1.);
762 scheme.addColor(RGBColor::GREEN, 2.);
763 scheme.addColor(RGBColor::CYAN, 4.);
764 scheme.addColor(RGBColor::BLUE, 100.);
765 laneColorer.addScheme(scheme);
767 scheme = GUIColorScheme("by loaded weight", RGBColor::GREEN);
768 scheme.addColor(RGBColor::RED, 100.);
769 scheme.setAllowsNegativeValues(true);
770 laneColorer.addScheme(scheme);
771 scheme = GUIColorScheme("by priority", RGBColor::YELLOW);
772 scheme.addColor(RGBColor::RED, -20.);
773 scheme.addColor(RGBColor::GREEN, 20.);
774 scheme.setAllowsNegativeValues(true);
775 laneColorer.addScheme(scheme);
776 scheme = GUIColorScheme("by height at start", RGBColor::GREY);
777 scheme.addColor(RGBColor::BLUE, -10.);
778 scheme.addColor(RGBColor::RED, 10.);
779 scheme.addColor(RGBColor::YELLOW, 50.);
780 scheme.addColor(RGBColor::GREEN, 100.);
781 scheme.addColor(RGBColor::MAGENTA, 200.);
782 scheme.setAllowsNegativeValues(true);
783 laneColorer.addScheme(scheme);
784 scheme = GUIColorScheme("by height at geometry-segment 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 inclination", RGBColor::GREY);
793 scheme.addColor(RGBColor::YELLOW, 0.1);
794 scheme.addColor(RGBColor::RED, 0.3);
795 scheme.addColor(RGBColor::GREEN, -0.1);
796 scheme.addColor(RGBColor::BLUE, -0.3);
797 scheme.setAllowsNegativeValues(true);
798 laneColorer.addScheme(scheme);
799 scheme = GUIColorScheme("by geometry-segment inclination", RGBColor::GREY);
800 scheme.addColor(RGBColor::YELLOW, 0.1);
801 scheme.addColor(RGBColor::RED, 0.3);
802 scheme.addColor(RGBColor::GREEN, -0.1);
803 scheme.addColor(RGBColor::BLUE, -0.3);
804 scheme.setAllowsNegativeValues(true);
805 laneColorer.addScheme(scheme);
806 scheme = GUIColorScheme("by average speed", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
807 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
808 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
809 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
810 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
811 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
812 laneColorer.addScheme(scheme);
813 scheme = GUIColorScheme("by average relative speed ", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
814 scheme.addColor(RGBColor::YELLOW, 0.25);
815 scheme.addColor(RGBColor::GREEN, 0.5);
816 scheme.addColor(RGBColor::CYAN, 0.75);
817 scheme.addColor(RGBColor::BLUE, 1.);
818 scheme.addColor(RGBColor::MAGENTA, 1.25);
819 laneColorer.addScheme(scheme);
820 scheme = GUIColorScheme("by routing device assumed speed ", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
821 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
822 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
823 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
824 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
825 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
826 laneColorer.addScheme(scheme);
827 scheme = GUIColorScheme("by electricity consumption", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
828 scheme.addColor(RGBColor::CYAN, 0.2);
829 scheme.addColor(RGBColor::GREEN, 0.4);
830 scheme.addColor(RGBColor::YELLOW, 0.6);
831 scheme.addColor(RGBColor::ORANGE, 0.8);
832 scheme.addColor(RGBColor::RED, 1.0);
833 scheme.addColor(RGBColor::MAGENTA, 2.0);
834 laneColorer.addScheme(scheme);
835 scheme = GUIColorScheme("by insertion-backlog (streetwise)", RGBColor(204, 204, 204), "", false, 0, COL_SCHEME_DYNAMIC);
836 scheme.addColor(RGBColor::GREEN, 1.);
837 scheme.addColor(RGBColor::YELLOW, 10.);
838 scheme.addColor(RGBColor::RED, 100.);
839 laneColorer.addScheme(scheme);
840 scheme = GUIColorScheme("by TAZ (streetwise)", RGBColor(204, 204, 204), "no TAZ", true);
841 laneColorer.addScheme(scheme);
843 scheme.setAllowsNegativeValues(true);
844 laneColorer.addScheme(scheme);
846 scheme.setAllowsNegativeValues(true);
847 laneColorer.addScheme(scheme);
849 scheme.setAllowsNegativeValues(true);
850 laneColorer.addScheme(scheme);
851 scheme = GUIColorScheme("by distance (kilometrage)", RGBColor(204, 204, 204));
852 scheme.addColor(RGBColor(255, 204, 204), 1.);
853 scheme.addColor(RGBColor::RED, 10000.);
854 scheme.addColor(RGBColor(204, 204, 255), -1.);
855 scheme.addColor(RGBColor::BLUE, -10000.);
856 scheme.setAllowsNegativeValues(true);
857 laneColorer.addScheme(scheme);
858 scheme = GUIColorScheme("by abs distance (kilometrage)", RGBColor(204, 204, 204));
859 scheme.addColor(RGBColor::RED, 1.);
860 scheme.setAllowsNegativeValues(false);
861 laneColorer.addScheme(scheme);
862 scheme = GUIColorScheme("by reachability (traveltime)", RGBColor(204, 204, 204));
863 scheme.addColor(RGBColor::RED, 1.);
864 scheme.setAllowsNegativeValues(true);
865 laneColorer.addScheme(scheme);
866 scheme = GUIColorScheme("by thread index", RGBColor(204, 204, 204));
867 scheme.addColor(RGBColor::RED, 1.);
868 laneColorer.addScheme(scheme);
869 scheme = GUIColorScheme("free parking spaces", RGBColor(204, 204, 204), "", false, 0, COL_SCHEME_DYNAMIC);
870 scheme.addColor(RGBColor::RED, 1.);
871 scheme.addColor(RGBColor::YELLOW, 10.);
872 scheme.addColor(RGBColor::GREEN, 100.);
873 scheme.addColor(RGBColor::BLUE, 1000.);
874 laneColorer.addScheme(scheme);
876 scheme.setAllowsNegativeValues(true);
877 laneColorer.addScheme(scheme);
878
880 vehicleColorer.addScheme(GUIColorScheme("given vehicle/type/route color", RGBColor::YELLOW, "", true));
882 vehicleColorer.addScheme(GUIColorScheme("given/assigned vehicle color", RGBColor::YELLOW, "", true));
883 vehicleColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
884 vehicleColorer.addScheme(GUIColorScheme("given/assigned route color", RGBColor::YELLOW, "", true));
885 vehicleColorer.addScheme(GUIColorScheme("depart position as HSV", RGBColor::YELLOW, "", true));
886 vehicleColorer.addScheme(GUIColorScheme("arrival position as HSV", RGBColor::YELLOW, "", true));
887 vehicleColorer.addScheme(GUIColorScheme("direction/distance as HSV", RGBColor::YELLOW, "", true));
888 scheme = GUIColorScheme("by speed", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
889 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
890 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
891 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
892 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
893 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
894 scheme.setAllowsNegativeValues(true); // negative speed indicates stopped
895 scheme.addColor(RGBColor::RED, -1); // stopped on road
896 scheme.addColor(RGBColor::GREY, -2); // stopped off-road (parking)
898 scheme = GUIColorScheme("by action step", RGBColor::GREY, "no action", true, 0, COL_SCHEME_DYNAMIC);
899 scheme.addColor(RGBColor(0, 255, 0, 255), 1., "action in next step");
900 scheme.addColor(RGBColor(80, 160, 80, 255), 2., "had action step");
902 scheme = GUIColorScheme("by waiting time", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
903 scheme.addColor(RGBColor::CYAN, 30.);
904 scheme.addColor(RGBColor::GREEN, 100.);
905 scheme.addColor(RGBColor::YELLOW, 200.);
906 scheme.addColor(RGBColor::RED, 300.);
908 scheme = GUIColorScheme("by accumulated waiting time", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
909 scheme.addColor(RGBColor::CYAN, 25.);
910 scheme.addColor(RGBColor::GREEN, 50.);
911 scheme.addColor(RGBColor::YELLOW, 75.);
912 scheme.addColor(RGBColor::RED, 100.);
914 scheme = GUIColorScheme("by time since lane change", RGBColor(179, 179, 179, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
915 scheme.addColor(RGBColor(189, 189, 179, 255), -180);
916 scheme.addColor(RGBColor(255, 255, 0, 255), -20);
917 scheme.addColor(RGBColor(255, 0, 0, 255), -0.01);
918 scheme.addColor(RGBColor(0, 0, 255, 255), 0.01);
919 scheme.addColor(RGBColor(0, 255, 255, 255), 20);
920 scheme.addColor(RGBColor(179, 189, 189, 255), 180);
921 scheme.setAllowsNegativeValues(true);
923 scheme = GUIColorScheme("by max speed", RGBColor::RED);
924 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
925 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
926 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
927 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
928 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
930 // ... emissions ...
931 scheme = GUIColorScheme("by CO2 emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
932 scheme.addColor(RGBColor::CYAN, 23000);
933 scheme.addColor(RGBColor::GREEN, 46000);
934 scheme.addColor(RGBColor::YELLOW, 69000);
935 scheme.addColor(RGBColor::ORANGE, 92000);
936 scheme.addColor(RGBColor::RED, 115000);
937 scheme.addColor(RGBColor::MAGENTA, 150000);
939 scheme = GUIColorScheme("by CO emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
940 scheme.addColor(RGBColor::CYAN, 1500);
941 scheme.addColor(RGBColor::GREEN, 3000);
942 scheme.addColor(RGBColor::YELLOW, 4500);
943 scheme.addColor(RGBColor::ORANGE, 6000);
944 scheme.addColor(RGBColor::RED, 7500);
945 scheme.addColor(RGBColor::MAGENTA, 10000);
947 scheme = GUIColorScheme("by PMx emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
948 scheme.addColor(RGBColor::CYAN, 12);
949 scheme.addColor(RGBColor::GREEN, 24);
950 scheme.addColor(RGBColor::YELLOW, 36);
951 scheme.addColor(RGBColor::ORANGE, 48);
952 scheme.addColor(RGBColor::RED, 60);
953 scheme.addColor(RGBColor::MAGENTA, 80);
955 scheme = GUIColorScheme("by NOx emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
956 scheme.addColor(RGBColor::CYAN, 300);
957 scheme.addColor(RGBColor::GREEN, 600);
958 scheme.addColor(RGBColor::YELLOW, 900);
959 scheme.addColor(RGBColor::ORANGE, 1200);
960 scheme.addColor(RGBColor::RED, 1500);
961 scheme.addColor(RGBColor::MAGENTA, 2000);
963 scheme = GUIColorScheme("by HC emissions", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
964 scheme.addColor(RGBColor::CYAN, 400);
965 scheme.addColor(RGBColor::GREEN, 800);
966 scheme.addColor(RGBColor::YELLOW, 1200);
967 scheme.addColor(RGBColor::ORANGE, 1600);
968 scheme.addColor(RGBColor::RED, 2000);
969 scheme.addColor(RGBColor::MAGENTA, 2500);
971 scheme = GUIColorScheme("by fuel consumption", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
972 scheme.addColor(RGBColor::CYAN, 10);
973 scheme.addColor(RGBColor::GREEN, 20);
974 scheme.addColor(RGBColor::YELLOW, 30);
975 scheme.addColor(RGBColor::ORANGE, 40);
976 scheme.addColor(RGBColor::RED, 50);
977 scheme.addColor(RGBColor::MAGENTA, 60);
979 scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
980 scheme.addColor(RGBColor::CYAN, 60);
981 scheme.addColor(RGBColor::GREEN, 70);
982 scheme.addColor(RGBColor::YELLOW, 80);
983 scheme.addColor(RGBColor::ORANGE, 90);
984 scheme.addColor(RGBColor::RED, 100);
985 scheme.addColor(RGBColor::MAGENTA, 120);
987 scheme = GUIColorScheme("by reroute number", RGBColor::GREY, "", false, 0, COL_SCHEME_DYNAMIC);
988 scheme.addColor(RGBColor::YELLOW, 1.);
989 scheme.addColor(RGBColor::RED, 10.);
991 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
992 scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
994 scheme = GUIColorScheme("by offset from best lane", RGBColor(179, 179, 179, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
995 scheme.addColor(RGBColor(255, 0, 255, 255), -100, "opposite lane");
996 scheme.addColor(RGBColor(255, 0, 0, 255), -3, "-3");
997 scheme.addColor(RGBColor(255, 255, 0, 255), -1, "-1");
998 scheme.addColor(RGBColor(0, 255, 255, 255), 1, "1");
999 scheme.addColor(RGBColor(0, 0, 255, 255), 3, "3");
1000 scheme.setAllowsNegativeValues(true);
1001 vehicleColorer.addScheme(scheme);
1002 scheme = GUIColorScheme("by acceleration", RGBColor(179, 179, 179, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
1003 scheme.addColor(RGBColor(64, 0, 0, 255), -9.0);
1004 scheme.addColor(RGBColor(255, 0, 0, 255), -4.5 /* -SUMOVTypeParameter::getDefaultDecel() */);
1005 scheme.addColor(RGBColor(255, 255, 0, 255), -0.1);
1006 scheme.addColor(RGBColor(0, 255, 255, 255), 0.1);
1007 scheme.addColor(RGBColor(0, 0, 255, 255), 2.6 /* SUMOVTypeParameter::getDefaultAccel() */);
1008 scheme.addColor(RGBColor(255, 0, 255, 255), 5.2);
1009 scheme.setAllowsNegativeValues(true);
1010 vehicleColorer.addScheme(scheme);
1011 scheme = GUIColorScheme("by time gap on lane", RGBColor(255, 255, 0, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
1012 scheme.addColor(RGBColor(179, 179, 179, 255), -1);
1013 scheme.addColor(RGBColor(0, 255, 255, 255), 1);
1014 scheme.addColor(RGBColor(0, 0, 255, 255), 2);
1015 scheme.setAllowsNegativeValues(true);
1016 vehicleColorer.addScheme(scheme);
1017 scheme = GUIColorScheme("by depart delay", RGBColor::BLUE);
1018 scheme.addColor(RGBColor::CYAN, 30.);
1019 scheme.addColor(RGBColor::GREEN, 100.);
1020 scheme.addColor(RGBColor::YELLOW, 200.);
1021 scheme.addColor(RGBColor::RED, 300.);
1022 vehicleColorer.addScheme(scheme);
1023 scheme = GUIColorScheme("by electricity consumption", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1024 scheme.addColor(RGBColor::CYAN, 10);
1025 scheme.addColor(RGBColor::GREEN, 20);
1026 scheme.addColor(RGBColor::YELLOW, 30);
1027 scheme.addColor(RGBColor::ORANGE, 40);
1028 scheme.addColor(RGBColor::RED, 60);
1029 scheme.addColor(RGBColor::MAGENTA, 100);
1030 vehicleColorer.addScheme(scheme);
1031 scheme = GUIColorScheme("by time loss", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1032 scheme.addColor(RGBColor::CYAN, 10.);
1033 scheme.addColor(RGBColor::GREEN, 60.);
1034 scheme.addColor(RGBColor::YELLOW, 180.);
1035 scheme.addColor(RGBColor::RED, 900.);
1036 vehicleColorer.addScheme(scheme);
1037 scheme = GUIColorScheme("by stop delay", RGBColor::GREY, "", false, -1, COL_SCHEME_DYNAMIC);
1038 scheme.addColor(RGBColor::BLUE, 0.);
1039 scheme.addColor(RGBColor::CYAN, 10.);
1040 scheme.addColor(RGBColor::GREEN, 60.);
1041 scheme.addColor(RGBColor::YELLOW, 120.);
1042 scheme.addColor(RGBColor::ORANGE, 300.);
1043 scheme.addColor(RGBColor::RED, 900.);
1044 scheme.setAllowsNegativeValues(true);
1045 vehicleColorer.addScheme(scheme);
1046 scheme = GUIColorScheme("by stop arrival delay", RGBColor::GREY, "", false, INVALID_DOUBLE, COL_SCHEME_DYNAMIC);
1047 scheme.addColor(RGBColor::MAGENTA, -10.);
1048 scheme.addColor(RGBColor::BLUE, 0.);
1049 scheme.addColor(RGBColor::CYAN, 10.);
1050 scheme.addColor(RGBColor::GREEN, 60.);
1051 scheme.addColor(RGBColor::YELLOW, 120.);
1052 scheme.addColor(RGBColor::ORANGE, 300.);
1053 scheme.addColor(RGBColor::RED, 900.);
1054 scheme.setAllowsNegativeValues(true);
1055 vehicleColorer.addScheme(scheme);
1056 scheme = GUIColorScheme("by lateral speed", RGBColor(179, 179, 179, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
1057 scheme.addColor(RGBColor(255, 0, 0, 255), -3, "-1.5");
1058 scheme.addColor(RGBColor(255, 255, 0, 255), -1, "-0.5");
1059 scheme.addColor(RGBColor(0, 255, 255, 255), 1, "0.5");
1060 scheme.addColor(RGBColor(0, 0, 255, 255), 3, "1.5");
1061 scheme.setAllowsNegativeValues(true);
1062 vehicleColorer.addScheme(scheme);
1063 scheme = GUIColorScheme(SCHEME_NAME_PARAM_NUMERICAL, RGBColor(204, 204, 204));
1064 scheme.setAllowsNegativeValues(true);
1065 vehicleColorer.addScheme(scheme);
1068
1070 personColorer.addScheme(GUIColorScheme("given person/type color", RGBColor::BLUE, "", true));
1072 personColorer.addScheme(GUIColorScheme("given/assigned person color", RGBColor::BLUE, "", true));
1073 personColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::BLUE, "", true));
1074 scheme = GUIColorScheme("by speed", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1075 scheme.addColor(RGBColor::YELLOW, 2.5 / 3.6);
1076 scheme.addColor(RGBColor::GREEN, 5. / 3.6);
1077 scheme.addColor(RGBColor::BLUE, 10. / 3.6);
1078 scheme.setAllowsNegativeValues(true); // negative speed indicates stopped
1079 scheme.addColor(RGBColor::GREY, -1.); // stop stage
1080 scheme.addColor(RGBColor::GREY, -2.); // stop stage (departure)
1081 personColorer.addScheme(scheme);
1082 scheme = GUIColorScheme("by mode", RGBColor::GREY, "waiting for insertion", true, 0, COL_SCHEME_DYNAMIC);
1083 scheme.addColor(RGBColor::RED, 1., "stopped");
1084 scheme.addColor(RGBColor::GREEN, 2., "walking");
1085 scheme.addColor(RGBColor::BLUE, 3., "riding");
1086 scheme.addColor(RGBColor::CYAN, 4., "accessing trainStop");
1087 scheme.addColor(RGBColor::YELLOW, 5., "waiting for ride");
1088 personColorer.addScheme(scheme);
1089 scheme = GUIColorScheme("by waiting time", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1090 scheme.addColor(RGBColor::CYAN, 30.);
1091 scheme.addColor(RGBColor::GREEN, 100.);
1092 scheme.addColor(RGBColor::YELLOW, 200.);
1093 scheme.addColor(RGBColor::RED, 300.);
1094 personColorer.addScheme(scheme);
1095 scheme = GUIColorScheme("by jammed state", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1096 scheme.addColor(RGBColor::RED, 1.);
1097 personColorer.addScheme(scheme);
1098 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
1099 scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
1100 personColorer.addScheme(scheme);
1103
1105 containerColorer.addScheme(GUIColorScheme("given container/type color", RGBColor::YELLOW, "", true));
1107 containerColorer.addScheme(GUIColorScheme("given/assigned container color", RGBColor::YELLOW, "", true));
1108 containerColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
1109 scheme = GUIColorScheme("by speed", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1110 scheme.addColor(RGBColor::YELLOW, 2.5 / 3.6);
1111 scheme.addColor(RGBColor::GREEN, 5. / 3.6);
1112 scheme.addColor(RGBColor::BLUE, 10. / 3.6);
1114 scheme = GUIColorScheme("by mode", RGBColor::GREY, "waiting for insertion", true, 0, COL_SCHEME_DYNAMIC);
1115 scheme.addColor(RGBColor::RED, 1., "stopped");
1116 scheme.addColor(RGBColor::BLUE, 3., "transport");
1117 scheme.addColor(RGBColor::CYAN, 4., "accessing trainStop");
1118 scheme.addColor(RGBColor::YELLOW, 5., "waiting for transport");
1119 scheme.addColor(RGBColor::GREEN, 6., "tranship"); // (moving without vehicle)
1121 scheme = GUIColorScheme("by waiting time", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1122 scheme.addColor(RGBColor::CYAN, 30.);
1123 scheme.addColor(RGBColor::GREEN, 100.);
1124 scheme.addColor(RGBColor::YELLOW, 200.);
1125 scheme.addColor(RGBColor::RED, 300.);
1127 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
1128 scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
1132
1134 scheme = GUIColorScheme("uniform", RGBColor::BLACK, "", true);
1135 scheme.addColor(RGBColor(150, 200, 200), 1, "waterway");
1136 scheme.addColor(RGBColor(0, 0, 0, 0), 2, "railway");
1137 junctionColorer.addScheme(scheme);
1138 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
1139 scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
1140 junctionColorer.addScheme(scheme);
1141 scheme = GUIColorScheme(SCHEME_NAME_TYPE, RGBColor::GREEN, "traffic_light", true);
1142 scheme.addColor(RGBColor(0, 128, 0), 1, "traffic_light_unregulated");
1143 scheme.addColor(RGBColor::YELLOW, 2, "priority");
1144 scheme.addColor(RGBColor::RED, 3, "priority_stop");
1145 scheme.addColor(RGBColor::BLUE, 4, "right_before_left");
1146 scheme.addColor(RGBColor::CYAN, 5, "allway_stop");
1147 scheme.addColor(RGBColor::GREY, 6, "district");
1148 scheme.addColor(RGBColor::MAGENTA, 7, "unregulated");
1149 scheme.addColor(RGBColor::BLACK, 8, "dead_end");
1150 scheme.addColor(RGBColor::ORANGE, 9, "rail_signal");
1151 scheme.addColor(RGBColor(172, 108, 44), 10, "zipper"); // brown, darker than the zipper link rule
1152 scheme.addColor(RGBColor(192, 255, 192), 11, "traffic_light_right_on_red"); // light green
1153 scheme.addColor(RGBColor(128, 0, 128), 12, "rail_crossing"); // dark purple
1154 scheme.addColor(RGBColor(0, 0, 128), 13, "left_before_right"); // dark blue
1155 junctionColorer.addScheme(scheme);
1156 scheme = GUIColorScheme("by height", RGBColor::GREY);
1157 scheme.addColor(RGBColor::BLUE, -10.);
1158 scheme.addColor(RGBColor::RED, 10.);
1159 scheme.addColor(RGBColor::YELLOW, 50.);
1160 scheme.addColor(RGBColor::GREEN, 100.);
1161 scheme.addColor(RGBColor::MAGENTA, 200.);
1162 scheme.setAllowsNegativeValues(true);
1163 junctionColorer.addScheme(scheme);
1164
1166 poiColorer.addScheme(GUIColorScheme("given POI color", RGBColor::RED, "", true));
1167 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
1168 scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
1169 poiColorer.addScheme(scheme);
1170 poiColorer.addScheme(GUIColorScheme("uniform", RGBColor::RED, "", true));
1171
1173 polyColorer.addScheme(GUIColorScheme("given polygon color", RGBColor::ORANGE, "", true));
1174 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
1175 scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
1176 polyColorer.addScheme(scheme);
1179
1181 {
1182 GUIScaleScheme laneScheme = GUIScaleScheme("default", 1, "uniform", true);
1183 laneScaler.addScheme(laneScheme);
1184 laneScheme = GUIScaleScheme(SCHEME_NAME_SELECTION, 0.5, "unselected", true, 0, COL_SCHEME_MISC);
1185 laneScheme.addColor(5, 1, "selected");
1186 laneScaler.addScheme(laneScheme);
1187 // ... traffic states ...
1188 laneScheme = GUIScaleScheme("by allowed speed (lanewise)", 0);
1189 laneScheme.addColor(10, 150. / 3.6);
1190 laneScaler.addScheme(laneScheme);
1191 laneScheme = GUIScaleScheme("by current occupancy (lanewise, brutto)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1192 laneScheme.addColor(10, 0.95);
1193 laneScaler.addScheme(laneScheme);
1194 laneScheme = GUIScaleScheme("by current occupancy (lanewise, netto)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1195 laneScheme.addColor(10, 0.95);
1196 laneScaler.addScheme(laneScheme);
1197 laneScheme = GUIScaleScheme("by first vehicle waiting time (lanewise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1198 laneScheme.addColor(10, 300.);
1199 laneScaler.addScheme(laneScheme);
1200 laneScheme = GUIScaleScheme("by lane number (streetwise)", 1);
1201 laneScheme.addColor(10, 5.);
1202 laneScaler.addScheme(laneScheme);
1203 // ... emissions ...
1204 laneScheme = GUIScaleScheme("by CO2 emissions", 0, "", false, 0, COL_SCHEME_EMISSION);
1205 laneScheme.addColor(10, 10. / 7.5 / 5.);
1206 laneScaler.addScheme(laneScheme);
1207 laneScheme = GUIScaleScheme("by CO emissions", 0, "", false, 0, COL_SCHEME_EMISSION);
1208 laneScheme.addColor(10, 0.05 / 7.5 / 2.);
1209 laneScaler.addScheme(laneScheme);
1210 laneScheme = GUIScaleScheme("by PMx emissions", 0, "", false, 0, COL_SCHEME_EMISSION);
1211 laneScheme.addColor(10, .005 / 7.5 / 5.);
1212 laneScaler.addScheme(laneScheme);
1213 laneScheme = GUIScaleScheme("by NOx emissions", 0, "", false, 0, COL_SCHEME_EMISSION);
1214 laneScheme.addColor(10, .125 / 7.5 / 5.);
1215 laneScaler.addScheme(laneScheme);
1216 laneScheme = GUIScaleScheme("by HC emissions", 0, "", false, 0, COL_SCHEME_EMISSION);
1217 laneScheme.addColor(10, .02 / 7.5 / 4.);
1218 laneScaler.addScheme(laneScheme);
1219 laneScheme = GUIScaleScheme("by fuel consumption", 0, "", false, 0, COL_SCHEME_EMISSION);
1220 laneScheme.addColor(10, .005 / 7.5 * 100.);
1221 laneScaler.addScheme(laneScheme);
1222 laneScheme = GUIScaleScheme("by noise emissions (Harmonoise)", 0, "", false, 0, COL_SCHEME_EMISSION);
1223 laneScheme.addColor(10, 100.);
1224 laneScaler.addScheme(laneScheme);
1225 // ... weights (experimental) ...
1226 laneScheme = GUIScaleScheme("by global travel time", 0);
1227 laneScheme.addColor(10, 100.);
1228 laneScheme.setAllowsNegativeValues(true);
1229 laneScaler.addScheme(laneScheme);
1230 laneScheme = GUIScaleScheme("by global speed percentage", 0);
1231 laneScheme.addColor(10, 100.);
1232 laneScheme.setAllowsNegativeValues(true);
1233 laneScaler.addScheme(laneScheme);
1234 laneScheme = GUIScaleScheme("by given length/geometrical length", 0);
1235 laneScheme.addColor(10, 10.);
1236 laneScaler.addScheme(laneScheme);
1237 laneScheme = GUIScaleScheme("by loaded weight", 0);
1238 laneScheme.addColor(-1000, -1000.);
1239 laneScheme.addColor(1000, 1000.);
1240 laneScheme.setAllowsNegativeValues(true);
1241 laneScaler.addScheme(laneScheme);
1242 laneScheme = GUIScaleScheme("by priority", 1);
1243 laneScheme.addColor(0.5, -20.);
1244 laneScheme.addColor(5, 20.);
1245 laneScheme.setAllowsNegativeValues(true);
1246 laneScaler.addScheme(laneScheme);
1247 laneScheme = GUIScaleScheme("by average speed", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1248 laneScheme.addColor(10, 150. / 3.6);
1249 laneScaler.addScheme(laneScheme);
1250 laneScheme = GUIScaleScheme("by average relative speed", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1251 laneScheme.addColor(0.5, 0.5);
1252 laneScheme.addColor(2, 1.);
1253 laneScheme.addColor(10, 2.);
1254 laneScaler.addScheme(laneScheme);
1255 laneScheme = GUIScaleScheme("by electricity consumption", 0, "", false, 0, COL_SCHEME_EMISSION);
1256 laneScheme.addColor(10, 1. / 7.5 / 5.);
1257 laneScaler.addScheme(laneScheme);
1258 laneScheme = GUIScaleScheme("by insertion-backlog (streetwise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1259 laneScheme.addColor(1, 1.);
1260 laneScheme.addColor(10, 10.);
1261 laneScheme.addColor(50, 100.);
1262 laneScaler.addScheme(laneScheme);
1263 }
1264
1266 edgeColorer.addScheme(GUIColorScheme("uniform", RGBColor(0, 0, 0, 0), "", true));
1267 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
1268 scheme.addColor(RGBColor(0, 80, 180, 255), 1., "selected");
1269 edgeColorer.addScheme(scheme);
1270 scheme = GUIColorScheme("by purpose (streetwise)", RGBColor(), "normal", true);
1271 scheme.addColor(RGBColor(128, 0, 128, 255), 1., "connector"); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_CONNECTOR
1272 scheme.addColor(RGBColor::BLUE, 2., "internal"); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_INTERNAL
1273 edgeColorer.addScheme(scheme);
1274 scheme = GUIColorScheme("by allowed speed (streetwise)", RGBColor::RED);
1275 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1276 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1277 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1278 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
1279 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1280 edgeColorer.addScheme(scheme);
1281 scheme = GUIColorScheme("by current occupancy (streetwise, brutto)", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1282 scheme.addColor(RGBColor::RED, 0.95);
1283 edgeColorer.addScheme(scheme);
1284 scheme = GUIColorScheme("by current speed (streetwise)", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1285 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1286 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1287 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1288 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
1289 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1290 edgeColorer.addScheme(scheme);
1291 scheme = GUIColorScheme("by current flow (streetwise)", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1292 scheme.addColor(RGBColor::RED, 5000.);
1293 edgeColorer.addScheme(scheme);
1294 scheme = GUIColorScheme("by relative speed (streetwise)", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1295 scheme.addColor(RGBColor::YELLOW, 0.25);
1296 scheme.addColor(RGBColor::GREEN, 0.5);
1297 scheme.addColor(RGBColor::CYAN, 0.75);
1298 scheme.addColor(RGBColor::BLUE, 1.);
1299 scheme.addColor(RGBColor::MAGENTA, 1.25);
1300 edgeColorer.addScheme(scheme);
1301 scheme = GUIColorScheme("by routing device assumed speed", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1302 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1303 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1304 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1305 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
1306 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1307 edgeColorer.addScheme(scheme);
1308 edgeColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
1309 scheme = GUIColorScheme("by segments (alternating)", RGBColor::BLUE, "odd", true);
1310 scheme.addColor(RGBColor::RED, 1., "even");
1311 edgeColorer.addScheme(scheme);
1312 scheme = GUIColorScheme("by jammed state (segmentwise)", RGBColor::GREEN, "free", true, 0, COL_SCHEME_DYNAMIC);
1313 scheme.addColor(RGBColor::YELLOW, 1., "limitedControl");
1314 scheme.addColor(RGBColor::RED, 2., "jammed");
1315 edgeColorer.addScheme(scheme);
1316 scheme = GUIColorScheme("by current occupancy (segmentwise, brutto)", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1317 scheme.addColor(RGBColor::RED, 0.95);
1318 edgeColorer.addScheme(scheme);
1319 scheme = GUIColorScheme("by current speed (segmentwise)", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1320 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1321 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1322 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1323 scheme.addColor(RGBColor::BLUE, 120 / 3.6);
1324 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1325 edgeColorer.addScheme(scheme);
1326 scheme = GUIColorScheme("by current flow (segmentwise)", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1327 scheme.addColor(RGBColor::RED, 5000.);
1328 edgeColorer.addScheme(scheme);
1329 scheme = GUIColorScheme("by relative speed (segmentwise)", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1330 scheme.addColor(RGBColor::YELLOW, 0.25);
1331 scheme.addColor(RGBColor::GREEN, 0.5);
1332 scheme.addColor(RGBColor::CYAN, 0.75);
1333 scheme.addColor(RGBColor::BLUE, 1.);
1334 scheme.addColor(RGBColor::MAGENTA, 1.25);
1335 edgeColorer.addScheme(scheme);
1336 scheme = GUIColorScheme("by insertion-backlog (streetwise)", RGBColor::GREY, "", false, 0, COL_SCHEME_DYNAMIC);
1337 scheme.addColor(RGBColor::GREEN, 1.);
1338 scheme.addColor(RGBColor::YELLOW, 10.);
1339 scheme.addColor(RGBColor::RED, 100.);
1340 edgeColorer.addScheme(scheme);
1341 scheme = GUIColorScheme("by TAZ (streetwise)", RGBColor(204, 204, 204), "no TAZ", true);
1342 edgeColorer.addScheme(scheme);
1344 scheme.setAllowsNegativeValues(true);
1345 edgeColorer.addScheme(scheme);
1347 scheme.setAllowsNegativeValues(true);
1348 edgeColorer.addScheme(scheme);
1349
1351 {
1352 edgeScaler.addScheme(GUIScaleScheme("uniform", 1, "", true));
1353 GUIScaleScheme edgeScheme = GUIScaleScheme(SCHEME_NAME_SELECTION, 0.5, "unselected", true, 0, COL_SCHEME_MISC);
1354 edgeScheme.addColor(5, 1., "selected");
1355 edgeScaler.addScheme(edgeScheme);
1356 edgeScheme = GUIScaleScheme("by allowed speed (streetwise)", 0);
1357 edgeScheme.addColor(10, 150. / 3.6);
1358 edgeScaler.addScheme(edgeScheme);
1359 edgeScheme = GUIScaleScheme("by current occupancy (streetwise, brutto)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1360 edgeScheme.addColor(10, 0.95);
1361 edgeScaler.addScheme(edgeScheme);
1362 edgeScheme = GUIScaleScheme("by current speed (streetwise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1363 edgeScheme.addColor(10, 150. / 3.6);
1364 edgeScaler.addScheme(edgeScheme);
1365 edgeScheme = GUIScaleScheme("by current flow (streetwise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1366 edgeScheme.addColor(20, 5000.);
1367 edgeScaler.addScheme(edgeScheme);
1368 edgeScheme = GUIScaleScheme("by relative speed (streetwise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1369 edgeScheme.addColor(20, 1.);
1370 edgeScaler.addScheme(edgeScheme);
1371 edgeScheme = GUIScaleScheme("by insertion-backlog (streetwise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
1372 edgeScheme.addColor(1, 1.);
1373 edgeScheme.addColor(10, 10.);
1374 edgeScheme.addColor(50, 100.);
1375 edgeScaler.addScheme(edgeScheme);
1376 }
1377
1379 {
1380 vehicleScaler.addScheme(GUIScaleScheme("uniform", 1, "", true));
1381 GUIScaleScheme vehScheme = GUIScaleScheme(SCHEME_NAME_SELECTION, 1, "unselected", true, 0, COL_SCHEME_MISC);
1382 vehScheme.addColor(5, 1., "selected");
1383 vehicleScaler.addScheme(vehScheme);
1384 vehScheme = GUIScaleScheme("by speed", 1, "", false, 1, COL_SCHEME_DYNAMIC);
1385 vehScheme.addColor(5, 150. / 3.6);
1386 vehScheme.setAllowsNegativeValues(true); // negative speed indicates stopped
1387 vehScheme.addColor(1, -1.); // stopped on road
1388 vehScheme.addColor(0.5, -2.); // stopped off-road (parking)
1389 vehicleScaler.addScheme(vehScheme);
1390 vehScheme = GUIScaleScheme("by waiting time", 1, "", false, 1, COL_SCHEME_DYNAMIC);
1391 vehScheme.addColor(1, 30.);
1392 vehScheme.addColor(2, 100.);
1393 vehScheme.addColor(4, 200.);
1394 vehScheme.addColor(10, 300.);
1395 vehicleScaler.addScheme(vehScheme);
1396 vehScheme = GUIScaleScheme("by accumulated waiting time", 1, "", false, 1, COL_SCHEME_DYNAMIC);
1397 vehScheme.addColor(5, 100.);
1398 vehicleScaler.addScheme(vehScheme);
1399 vehScheme = GUIScaleScheme("by max speed", 1);
1400 vehScheme.addColor(1, 30. / 3.6);
1401 vehScheme.addColor(1, 55. / 3.6);
1402 vehScheme.addColor(1, 80. / 3.6);
1403 vehScheme.addColor(1, 120. / 3.6);
1404 vehScheme.addColor(1, 150. / 3.6);
1405 vehicleScaler.addScheme(vehScheme);
1406 vehScheme = GUIScaleScheme("by reroute number", 1, "", false, 0, COL_SCHEME_DYNAMIC);
1407 vehScheme.addColor(1, 1.);
1408 vehScheme.addColor(5, 10.);
1409 vehicleScaler.addScheme(vehScheme);
1410 vehScheme = GUIScaleScheme("by offset from best lane", 0.8, "0", false, 0, COL_SCHEME_DYNAMIC);
1411 vehScheme.addColor(5, -100, "opposite lane");
1412 vehScheme.addColor(3, -3, "-3");
1413 vehScheme.addColor(1.5, -1, "-1");
1414 vehScheme.addColor(1.5, 1, "1");
1415 vehScheme.addColor(3, 3, "3");
1416 vehScheme.setAllowsNegativeValues(true);
1417 vehicleScaler.addScheme(vehScheme);
1418 vehScheme = GUIScaleScheme("by acceleration", 0.8, "0", false, 0, COL_SCHEME_DYNAMIC);
1419 vehScheme.addColor(4, -9.0);
1420 vehScheme.addColor(2, -4.5 /* -SUMOVTypeParameter::getDefaultDecel() */);
1421 vehScheme.addColor(1, -0.1);
1422 vehScheme.addColor(1, 0.1);
1423 vehScheme.addColor(1, 2.6 /* SUMOVTypeParameter::getDefaultAccel() */);
1424 vehScheme.addColor(3, 5.2);
1425 vehScheme.setAllowsNegativeValues(true);
1426 vehicleScaler.addScheme(vehScheme);
1427 vehScheme = GUIScaleScheme("by time gap on lane", 5, "0", false, 0, COL_SCHEME_DYNAMIC);
1428 vehScheme.addColor(1, -1);
1429 vehScheme.addColor(1, 1);
1430 vehScheme.addColor(0.5, 2);
1431 vehScheme.setAllowsNegativeValues(true);
1432 vehicleScaler.addScheme(vehScheme);
1433 vehScheme = GUIScaleScheme("by depart delay", 0.8);
1434 vehScheme.addColor(1, 10.);
1435 vehScheme.addColor(2, 100.);
1436 vehScheme.addColor(3, 200.);
1437 vehScheme.addColor(5, 300.);
1438 vehicleScaler.addScheme(vehScheme);
1439 vehScheme = GUIScaleScheme("by time loss", 1, "", false, 0, COL_SCHEME_DYNAMIC);
1440 vehScheme.addColor(1, 10.);
1441 vehScheme.addColor(2, 60.);
1442 vehScheme.addColor(3, 180.);
1443 vehScheme.addColor(10, 900.);
1444 vehicleScaler.addScheme(vehScheme);
1445 vehScheme = GUIScaleScheme("by stop delay", 0.1, "", false, -1, COL_SCHEME_DYNAMIC);
1446 vehScheme.addColor(1, 0.);
1447 vehScheme.addColor(2, 10.);
1448 vehScheme.addColor(3, 60.);
1449 vehScheme.addColor(4, 120.);
1450 vehScheme.addColor(5, 300.);
1451 vehScheme.addColor(10, 900.);
1452 vehScheme.setAllowsNegativeValues(true);
1453 vehicleScaler.addScheme(vehScheme);
1454 vehScheme = GUIScaleScheme("by stop arrival delay", 0.1, "", false, INVALID_DOUBLE, COL_SCHEME_DYNAMIC);
1455 vehScheme.addColor(0.5, -10.);
1456 vehScheme.addColor(1, 0.);
1457 vehScheme.addColor(2, 10.);
1458 vehScheme.addColor(3, 60.);
1459 vehScheme.addColor(4, 120.);
1460 vehScheme.addColor(5, 300.);
1461 vehScheme.addColor(10, 900.);
1462 vehScheme.setAllowsNegativeValues(true);
1463 vehicleScaler.addScheme(vehScheme);
1465 vehScheme.setAllowsNegativeValues(true);
1466 vehicleScaler.addScheme(vehScheme);
1467 }
1468}
1469
1470
1471void
1473 // init color schemes
1474 GUIColorScheme scheme = GUIColorScheme("uniform", RGBColor::BLACK, "road", true);
1475 scheme.addColor(RGBColor::GREY, 1, "sidewalk");
1476 scheme.addColor(RGBColor(192, 66, 44), 2, "bike lane");
1477 scheme.addColor(RGBColor(200, 255, 200), 3, "green verge");
1478 scheme.addColor(RGBColor(150, 200, 200), 4, "waterway");
1479 scheme.addColor(RGBColor::BLACK, 5, "railway");
1480 scheme.addColor(RGBColor(64, 0, 64), 6, "rails on road");
1481 scheme.addColor(RGBColor(92, 92, 92), 7, "no passenger"); // paths, service roads etc
1482 scheme.addColor(RGBColor::RED, 8, "closed"); // road closing
1483 scheme.addColor(RGBColor::GREEN, 9, "connector"); // macro-connector
1484 scheme.addColor(RGBColor::ORANGE, 10, "forbidden"); // forbidden road
1485 scheme.addColor(RGBColor(145, 145, 145), 11., "data mode");
1486 laneColorer.addScheme(scheme);
1487 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
1488 scheme.addColor(RGBColor(0, 80, 180, 255), 1., "selected");
1489 laneColorer.addScheme(scheme);
1490 scheme = GUIColorScheme("by permission code", RGBColor(240, 240, 240), "nobody");
1491 scheme.addColor(RGBColor(10, 10, 10), (double)SVC_PASSENGER, "passenger");
1492 scheme.addColor(RGBColor(128, 128, 128), (double)SVC_PEDESTRIAN, "pedestrian");
1493 scheme.addColor(RGBColor(80, 80, 80), (double)(SVC_PEDESTRIAN | SVC_DELIVERY), "pedestrian_delivery");
1494 scheme.addColor(RGBColor(192, 66, 44), (double)SVC_BICYCLE, "bicycle");
1495 scheme.addColor(RGBColor(40, 100, 40), (double)SVC_BUS, "bus");
1496 scheme.addColor(RGBColor(166, 147, 26), (double)SVC_TAXI, "taxi");
1497 scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~SVC_NON_ROAD), "normal_road");
1498 scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_NON_ROAD)), "disallow_pedestrian");
1499 scheme.addColor(RGBColor(255, 206, 0), (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_BICYCLE | SVC_MOPED | SVC_NON_ROAD)), "motorway");
1500 scheme.addColor(RGBColor(150, 200, 200), (double)SVC_SHIP, "waterway");
1501 scheme.addColor(RGBColor::GREEN, (double)SVCAll, "all");
1502 laneColorer.addScheme(scheme);
1503
1504 scheme = GUIColorScheme("by allowed speed (lanewise)", RGBColor::RED);
1505 scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1506 scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1507 scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1508 scheme.addColor(RGBColor::BLUE, 120. / 3.6);
1509 scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1510 laneColorer.addScheme(scheme);
1511
1512 scheme = GUIColorScheme("by lane number (streetwise)", RGBColor::RED);
1513 scheme.addColor(RGBColor::BLUE, 5.);
1514 laneColorer.addScheme(scheme);
1515
1516 scheme = GUIColorScheme("by given length/geometrical length", RGBColor::RED);
1517 scheme.addColor(RGBColor::ORANGE, 0.25);
1518 scheme.addColor(RGBColor::YELLOW, 0.5);
1519 scheme.addColor(RGBColor(179, 179, 179, 255), 1.);
1520 scheme.addColor(RGBColor::GREEN, 2.);
1521 scheme.addColor(RGBColor::CYAN, 4.);
1522 scheme.addColor(RGBColor::BLUE, 100.);
1523 laneColorer.addScheme(scheme);
1524 laneColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
1525
1526 scheme = GUIColorScheme("by priority", RGBColor::YELLOW);
1527 scheme.addColor(RGBColor::RED, -20.);
1528 scheme.addColor(RGBColor::GREEN, 20.);
1529 scheme.setAllowsNegativeValues(true);
1530 laneColorer.addScheme(scheme);
1531 scheme = GUIColorScheme("by height at start", RGBColor::RED);
1532 scheme.addColor(RGBColor::BLUE, -10.);
1533 scheme.addColor(RGBColor::YELLOW, 50.);
1534 scheme.addColor(RGBColor::GREEN, 100.);
1535 scheme.addColor(RGBColor::MAGENTA, 200.);
1536 scheme.setAllowsNegativeValues(true);
1537 laneColorer.addScheme(scheme);
1538 scheme = GUIColorScheme("by height at segment start", RGBColor::RED);
1539 scheme.addColor(RGBColor::BLUE, -10.);
1540 scheme.addColor(RGBColor::YELLOW, 50.);
1541 scheme.addColor(RGBColor::GREEN, 100.);
1542 scheme.addColor(RGBColor::MAGENTA, 200.);
1543 scheme.setAllowsNegativeValues(true);
1544 laneColorer.addScheme(scheme);
1545 scheme = GUIColorScheme("by inclination", RGBColor::GREY);
1546 scheme.addColor(RGBColor::YELLOW, 0.1);
1547 scheme.addColor(RGBColor::RED, 0.3);
1548 scheme.addColor(RGBColor::GREEN, -0.1);
1549 scheme.addColor(RGBColor::BLUE, -0.3);
1550 scheme.setAllowsNegativeValues(true);
1551 laneColorer.addScheme(scheme);
1552 scheme = GUIColorScheme("by segment inclination", RGBColor::GREY);
1553 scheme.addColor(RGBColor::YELLOW, 0.1);
1554 scheme.addColor(RGBColor::RED, 0.3);
1555 scheme.addColor(RGBColor::GREEN, -0.1);
1556 scheme.addColor(RGBColor::BLUE, -0.3);
1557 scheme.setAllowsNegativeValues(true);
1558 laneColorer.addScheme(scheme);
1560 scheme.setAllowsNegativeValues(true);
1561 laneColorer.addScheme(scheme);
1563 scheme.setAllowsNegativeValues(true);
1564 laneColorer.addScheme(scheme);
1565 scheme = GUIColorScheme("by distance (kilometrage)", RGBColor(204, 204, 204));
1566 scheme.addColor(RGBColor::RED, 1.);
1567 scheme.addColor(RGBColor::RED, -1.);
1568 scheme.setAllowsNegativeValues(true);
1569 laneColorer.addScheme(scheme);
1570 scheme = GUIColorScheme("by abs distance (kilometrage)", RGBColor(204, 204, 204));
1571 scheme.addColor(RGBColor::RED, 1.);
1572 scheme.setAllowsNegativeValues(false);
1573 laneColorer.addScheme(scheme);
1575 scheme.setAllowsNegativeValues(true);
1576 laneColorer.addScheme(scheme);
1577
1578 scheme = GUIColorScheme("uniform", RGBColor(102, 0, 0), "", true);
1579 scheme.addColor(RGBColor(204, 0, 0), 1, "junction bubble");
1580 scheme.addColor(RGBColor(230, 100, 115), 2, "geometry points");
1581 scheme.addColor(GUIVisualizationColorSettings::SUMO_color_DEADEND_SHOW, 3, "connections missing");
1582 scheme.addColor(RGBColor::GREEN, 3, "custom shape");
1583 scheme.addColor(RGBColor(205, 180, 180), 4, "data mode");
1584 junctionColorer.addScheme(scheme);
1585 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
1586 scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
1587 junctionColorer.addScheme(scheme);
1588 scheme = GUIColorScheme(SCHEME_NAME_TYPE, RGBColor::GREEN, "traffic_light", true);
1589 scheme.addColor(RGBColor(0, 128, 0), 1, "traffic_light_unregulated");
1590 scheme.addColor(RGBColor::YELLOW, 2, "priority");
1591 scheme.addColor(RGBColor::RED, 3, "priority_stop");
1592 scheme.addColor(RGBColor::BLUE, 4, "right_before_left");
1593 scheme.addColor(RGBColor::CYAN, 5, "allway_stop");
1594 scheme.addColor(RGBColor::GREY, 6, "district");
1595 scheme.addColor(RGBColor::MAGENTA, 7, "unregulated");
1596 scheme.addColor(RGBColor::BLACK, 8, "dead_end");
1597 scheme.addColor(RGBColor::ORANGE, 9, "rail_signal");
1598 scheme.addColor(RGBColor(172, 108, 44), 10, "zipper"); // brown, darker than the zipper link rule
1599 scheme.addColor(RGBColor(192, 255, 192), 11, "traffic_light_right_on_red");
1600 scheme.addColor(RGBColor(128, 0, 128), 12, "rail_crossing"); // dark purple
1601 scheme.addColor(RGBColor(0, 0, 128), 13, "left_before_right"); // dark blue
1602 junctionColorer.addScheme(scheme);
1603 scheme = GUIColorScheme("by height", RGBColor::GREY);
1604 scheme.addColor(RGBColor::BLUE, -10.);
1605 scheme.addColor(RGBColor::RED, 10.);
1606 scheme.addColor(RGBColor::YELLOW, 50.);
1607 scheme.addColor(RGBColor::GREEN, 100.);
1608 scheme.addColor(RGBColor::MAGENTA, 200.);
1609 scheme.setAllowsNegativeValues(true);
1610 junctionColorer.addScheme(scheme);
1611
1613 poiColorer.addScheme(GUIColorScheme("given POI color", RGBColor::RED, "", true));
1614 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
1615 scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
1616 poiColorer.addScheme(scheme);
1617 poiColorer.addScheme(GUIColorScheme("uniform", RGBColor::RED, "", true));
1618
1620 polyColorer.addScheme(GUIColorScheme("given polygon color", RGBColor::ORANGE, "", true));
1621 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
1622 scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
1623 polyColorer.addScheme(scheme);
1626
1628 {
1629 GUIScaleScheme edgeScheme = GUIScaleScheme("default", 1, "uniform", true);
1630 laneScaler.addScheme(edgeScheme);
1631 }
1632
1635 scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
1636 scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
1637 dataColorer.addScheme(scheme);
1638 dataColorer.addScheme(GUIColorScheme("by origin taz", RGBColor::ORANGE, "", true));
1639 dataColorer.addScheme(GUIColorScheme("by destination taz", RGBColor::ORANGE, "", true));
1641 scheme.setAllowsNegativeValues(true);
1642 dataColorer.addScheme(scheme);
1643
1644 // dummy schemes
1648 vehicleScaler.addScheme(GUIScaleScheme("uniform", 1, "", true));
1649}
1650
1651
1652int
1654 if (UseMesoSim) {
1655 return edgeColorer.getActive();
1656 }
1657 return laneColorer.getActive();
1658}
1659
1660
1661int
1663 if (UseMesoSim) {
1664 return edgeScaler.getActive();
1665 }
1666 return laneScaler.getActive();
1667}
1668
1669
1672 if (UseMesoSim) {
1673 return edgeColorer.getScheme();
1674 }
1675 return laneColorer.getScheme();
1676}
1677
1678
1681 if (UseMesoSim) {
1682 return edgeScaler.getScheme();
1683 }
1684 return laneScaler.getScheme();
1685}
1686
1687
1688void
1693 dev.writeAttr("dither", dither);
1694 dev.writeAttr("fps", fps);
1695 dev.writeAttr("drawBoundaries", drawBoundaries);
1696 dev.writeAttr("forceDrawPositionSelection", forceDrawForPositionSelection);
1697 dev.writeAttr("forceDrawRectangleSelection", forceDrawForRectangleSelection);
1698 geometryIndices.print(dev, "geometryIndices");
1699 dev.closeTag();
1701 dev.writeAttr("backgroundColor", backgroundColor);
1702 dev.writeAttr("showGrid", showGrid);
1703 dev.writeAttr("gridXSize", gridXSize);
1704 dev.writeAttr("gridYSize", gridYSize);
1705 dev.closeTag();
1706 // edges
1708 dev.writeAttr("laneEdgeMode", getLaneEdgeMode());
1709 dev.writeAttr("scaleMode", getLaneEdgeScaleMode());
1710 dev.writeAttr("laneShowBorders", laneShowBorders);
1711 dev.writeAttr("showBikeMarkings", showBikeMarkings);
1712 dev.writeAttr("showLinkDecals", showLinkDecals);
1713 dev.writeAttr("realisticLinkRules", realisticLinkRules);
1714 dev.writeAttr("showLinkRules", showLinkRules);
1715 dev.writeAttr("showRails", showRails);
1716 dev.writeAttr("hideConnectors", hideConnectors);
1717 dev.writeAttr("widthExaggeration", laneWidthExaggeration);
1718 dev.writeAttr("minSize", laneMinSize);
1719 dev.writeAttr("showDirection", showLaneDirection);
1720 dev.writeAttr("showSublanes", showSublanes);
1721 dev.writeAttr("spreadSuperposed", spreadSuperposed);
1722 dev.writeAttr("edgeParam", edgeParam);
1723 dev.writeAttr("laneParam", laneParam);
1724 dev.writeAttr("vehicleParam", vehicleParam);
1725 dev.writeAttr("vehicleScaleParam", vehicleScaleParam);
1726 dev.writeAttr("vehicleTextParam", vehicleTextParam);
1727 dev.writeAttr("edgeData", edgeData);
1728 dev.writeAttr("edgeDataID", edgeDataID);
1729 dev.writeAttr("edgeValueHideCheck", edgeValueHideCheck);
1730 dev.writeAttr("edgeValueHideThreshold", edgeValueHideThreshold);
1731 dev.writeAttr("edgeValueHideCheck2", edgeValueHideCheck2);
1732 dev.writeAttr("edgeValueHideThreshold2", edgeValueHideThreshold2);
1733 dev.lf();
1734 dev << " ";
1735 edgeName.print(dev, "edgeName");
1736 dev.lf();
1737 dev << " ";
1738 internalEdgeName.print(dev, "internalEdgeName");
1739 dev.lf();
1740 dev << " ";
1741 cwaEdgeName.print(dev, "cwaEdgeName");
1742 dev.lf();
1743 dev << " ";
1744 streetName.print(dev, "streetName");
1745 dev.lf();
1746 dev << " ";
1747 edgeValue.print(dev, "edgeValue");
1748 laneColorer.save(dev);
1749 laneScaler.save(dev);
1750 edgeColorer.save(dev, "meso:");
1751 edgeScaler.save(dev);
1752 dev.closeTag();
1753 // vehicles
1755 dev.writeAttr("vehicleMode", vehicleColorer.getActive());
1756 dev.writeAttr("vehicleScaleMode", vehicleScaler.getActive());
1757 dev.writeAttr("vehicleQuality", vehicleQuality);
1758 vehicleSize.print(dev, "vehicle");
1759 dev.writeAttr("showBlinker", showBlinker);
1760 dev.writeAttr("drawMinGap", drawMinGap);
1761 dev.writeAttr("drawBrakeGap", drawBrakeGap);
1762 dev.writeAttr("showBTRange", showBTRange);
1763 dev.writeAttr("showRouteIndex", showRouteIndex);
1764 dev.writeAttr("scaleLength", scaleLength);
1765 dev.writeAttr("showParkingInfo", showParkingInfo);
1766 dev.lf();
1767 dev << " ";
1768 vehicleName.print(dev, "vehicleName");
1769 dev.lf();
1770 dev << " ";
1771 vehicleValue.print(dev, "vehicleValue");
1772 dev.lf();
1773 dev << " ";
1774 vehicleScaleValue.print(dev, "vehicleScaleValue");
1775 dev.lf();
1776 dev << " ";
1777 vehicleText.print(dev, "vehicleText");
1778 vehicleColorer.save(dev);
1779 vehicleScaler.save(dev);
1780 dev.closeTag();
1781 // persons
1783 dev.writeAttr("personMode", personColorer.getActive());
1784 dev.writeAttr("personQuality", personQuality);
1785 personSize.print(dev, "person");
1786 dev.lf();
1787 dev << " ";
1788 personName.print(dev, "personName");
1789 dev.lf();
1790 dev << " ";
1791 personValue.print(dev, "personValue");
1792 personColorer.save(dev);
1793 dev.closeTag();
1794 // containers
1796 dev.writeAttr("containerMode", containerColorer.getActive());
1797 dev.writeAttr("containerQuality", containerQuality);
1798 containerSize.print(dev, "container");
1799 dev.lf();
1800 dev << " ";
1801 containerName.print(dev, "containerName");
1803 dev.closeTag();
1804 // junctions
1806 dev.writeAttr("junctionMode", junctionColorer.getActive());
1807 dev.lf();
1808 dev << " ";
1809 drawLinkTLIndex.print(dev, "drawLinkTLIndex");
1810 dev.lf();
1811 dev << " ";
1812 drawLinkJunctionIndex.print(dev, "drawLinkJunctionIndex");
1813 dev.lf();
1814 dev << " ";
1815 junctionID.print(dev, "junctionID");
1816 dev.lf();
1817 dev << " ";
1818 junctionName.print(dev, "junctionName");
1819 dev.lf();
1820 dev << " ";
1821 internalJunctionName.print(dev, "internalJunctionName");
1822 dev.lf();
1823 dev << " ";
1824 tlsPhaseIndex.print(dev, "tlsPhaseIndex");
1825 tlsPhaseName.print(dev, "tlsPhaseName");
1826 dev.lf();
1827 dev << " ";
1828 dev.writeAttr("showLane2Lane", showLane2Lane);
1829 dev.writeAttr("drawShape", drawJunctionShape);
1830 dev.writeAttr("drawCrossingsAndWalkingareas", drawCrossingsAndWalkingareas);
1831 junctionSize.print(dev, "junction");
1832 junctionColorer.save(dev);
1833 dev.closeTag();
1834 // additionals
1836 dev.writeAttr("addMode", addMode);
1837 addSize.print(dev, "add");
1838 addName.print(dev, "addName");
1839 addFullName.print(dev, "addFullName");
1840 // temporal (will be integrated in a schema)
1841 dev.writeAttr("busStopColor", colorSettings.busStopColor);
1842 dev.writeAttr("busStopColorSign", colorSettings.busStopColorSign);
1843 dev.writeAttr("chargingStationColor", colorSettings.chargingStationColor);
1844 dev.writeAttr("chargingStationColorCharge", colorSettings.chargingStationColorCharge);
1845 dev.writeAttr("chargingStationColorSign", colorSettings.chargingStationColorSign);
1846 dev.writeAttr("containerStopColor", colorSettings.containerStopColor);
1847 dev.writeAttr("containerStopColorSign", colorSettings.containerStopColorSign);
1848 dev.writeAttr("parkingAreaColor", colorSettings.parkingAreaColor);
1849 dev.writeAttr("parkingAreaColorSign", colorSettings.parkingAreaColorSign);
1850 dev.writeAttr("parkingSpaceColor", colorSettings.parkingSpaceColor);
1851 dev.writeAttr("parkingSpaceColorContour", colorSettings.parkingSpaceColorContour);
1852 dev.writeAttr("personTripColor", colorSettings.personTripColor);
1853 dev.writeAttr("personTripWidth", widthSettings.personTripWidth);
1854 dev.writeAttr("rideColor", colorSettings.rideColor);
1855 dev.writeAttr("rideWidth", widthSettings.rideWidth);
1856 dev.writeAttr("selectedAdditionalColor", colorSettings.selectedAdditionalColor);
1857 dev.writeAttr("selectedConnectionColor", colorSettings.selectedConnectionColor);
1858 dev.writeAttr("selectedContainerColor", colorSettings.selectedContainerColor);
1859 dev.writeAttr("selectedContainerPlanColor", colorSettings.selectedContainerPlanColor);
1860 dev.writeAttr("selectedCrossingColor", colorSettings.selectedCrossingColor);
1861 dev.writeAttr("selectedEdgeColor", colorSettings.selectedEdgeColor);
1862 dev.writeAttr("selectedEdgeDataColor", colorSettings.selectedEdgeDataColor);
1863 dev.writeAttr("selectedLaneColor", colorSettings.selectedLaneColor);
1864 dev.writeAttr("selectedPersonColor", colorSettings.selectedPersonColor);
1865 dev.writeAttr("selectedPersonPlanColor", colorSettings.selectedPersonPlanColor);
1866 dev.writeAttr("selectedProhibitionColor", colorSettings.selectedProhibitionColor);
1867 dev.writeAttr("selectedRouteColor", colorSettings.selectedRouteColor);
1868 dev.writeAttr("selectedVehicleColor", colorSettings.selectedVehicleColor);
1869 dev.writeAttr("selectionColor", colorSettings.selectionColor);
1870 dev.writeAttr("stopColor", colorSettings.stopColor);
1871 dev.writeAttr("waypointColor", colorSettings.waypointColor);
1872 dev.writeAttr("stopContainerColor", colorSettings.stopContainerColor);
1873 dev.writeAttr("stopPersonColor", colorSettings.stopPersonColor);
1874 dev.writeAttr("trainStopColor", colorSettings.trainStopColor);
1875 dev.writeAttr("trainStopColorSign", colorSettings.trainStopColorSign);
1876 dev.writeAttr("transhipColor", colorSettings.transhipColor);
1877 dev.writeAttr("transhipWidth", widthSettings.transhipWidth);
1878 dev.writeAttr("transportColor", colorSettings.transportColor);
1879 dev.writeAttr("transportWidth", widthSettings.transportWidth);
1880 dev.writeAttr("tripWidth", widthSettings.tripWidth);
1881 dev.writeAttr("vehicleTripColor", colorSettings.personTripColor);
1882 dev.writeAttr("walkColor", colorSettings.walkColor);
1883 dev.writeAttr("walkWidth", widthSettings.walkWidth);
1884 dev.closeTag();
1885 // pois
1887 dev.writeAttr("poiTextParam", poiTextParam);
1888 poiSize.print(dev, "poi");
1889 dev.writeAttr("poiDetail", poiDetail);
1890 poiName.print(dev, "poiName");
1891 poiType.print(dev, "poiType");
1892 poiText.print(dev, "poiText");
1893 poiColorer.save(dev);
1894 dev.closeTag();
1895 // polys
1897 polySize.print(dev, "poly");
1898 polyName.print(dev, "polyName");
1899 polyType.print(dev, "polyType");
1900 polyColorer.save(dev);
1901 dev.closeTag();
1902 // 3D
1904 dev.writeAttr("show3DTLSLinkMarkers", show3DTLSLinkMarkers);
1905 dev.writeAttr("show3DTLSDomes", show3DTLSDomes);
1906 dev.writeAttr("generate3DTLSModels", generate3DTLSModels);
1907 dev.writeAttr("ambient3DLight", ambient3DLight);
1908 dev.writeAttr("diffuse3DLight", diffuse3DLight);
1909 dev.closeTag();
1910 // legend
1912 dev.writeAttr("showSizeLegend", showSizeLegend);
1913 dev.writeAttr("showColorLegend", showColorLegend);
1914 dev.writeAttr("showVehicleColorLegend", showVehicleColorLegend);
1915 dev.closeTag();
1916
1917 dev.closeTag();
1918}
1919
1920
1921bool
1923 if (show3DTLSDomes != v2.show3DTLSDomes) {
1924 return false;
1925 }
1927 return false;
1928 }
1930 return false;
1931 }
1932 if (ambient3DLight != v2.ambient3DLight) {
1933 return false;
1934 }
1935 if (diffuse3DLight != v2.diffuse3DLight) {
1936 return false;
1937 }
1938 if (skyColor != v2.skyColor) {
1939 return false;
1940 }
1941 if (dither != v2.dither) {
1942 return false;
1943 }
1944 if (fps != v2.fps) {
1945 return false;
1946 }
1947 if (drawBoundaries != v2.drawBoundaries) {
1948 return false;
1949 }
1951 return false;
1952 }
1954 return false;
1955 }
1956 if (geometryIndices != v2.geometryIndices) {
1957 return false;
1958 }
1959 if (backgroundColor != v2.backgroundColor) {
1960 return false;
1961 }
1962 if (colorSettings != v2.colorSettings) {
1963 return false;
1964 }
1965 if (showGrid != v2.showGrid) {
1966 return false;
1967 }
1968 if (gridXSize != v2.gridXSize) {
1969 return false;
1970 }
1971 if (gridYSize != v2.gridYSize) {
1972 return false;
1973 }
1974
1975 if (!(edgeColorer == v2.edgeColorer)) {
1976 return false;
1977 }
1978 if (!(edgeScaler == v2.edgeScaler)) {
1979 return false;
1980 }
1981 if (!(laneColorer == v2.laneColorer)) {
1982 return false;
1983 }
1984 if (!(laneScaler == v2.laneScaler)) {
1985 return false;
1986 }
1987 if (laneShowBorders != v2.laneShowBorders) {
1988 return false;
1989 }
1991 return false;
1992 }
1993 if (showLinkDecals != v2.showLinkDecals) {
1994 return false;
1995 }
1997 return false;
1998 }
1999 if (showLinkRules != v2.showLinkRules) {
2000 return false;
2001 }
2002 if (showRails != v2.showRails) {
2003 return false;
2004 }
2005 if (edgeName != v2.edgeName) {
2006 return false;
2007 }
2009 return false;
2010 }
2011 if (cwaEdgeName != v2.cwaEdgeName) {
2012 return false;
2013 }
2014 if (streetName != v2.streetName) {
2015 return false;
2016 }
2017 if (edgeValue != v2.edgeValue) {
2018 return false;
2019 }
2020 if (hideConnectors != v2.hideConnectors) {
2021 return false;
2022 }
2024 return false;
2025 }
2026 if (laneMinSize != v2.laneMinSize) {
2027 return false;
2028 }
2030 return false;
2031 }
2032 if (showSublanes != v2.showSublanes) {
2033 return false;
2034 }
2036 return false;
2037 }
2038 if (edgeParam != v2.edgeParam) {
2039 return false;
2040 }
2041 if (laneParam != v2.laneParam) {
2042 return false;
2043 }
2044 if (vehicleParam != v2.vehicleParam) {
2045 return false;
2046 }
2048 return false;
2049 }
2051 return false;
2052 }
2053 if (edgeData != v2.edgeData) {
2054 return false;
2055 }
2056 if (edgeDataID != v2.edgeDataID) {
2057 return false;
2058 }
2060 return false;
2061 }
2063 return false;
2064 }
2066 return false;
2067 }
2069 return false;
2070 }
2071 if (!(vehicleColorer == v2.vehicleColorer)) {
2072 return false;
2073 }
2074 if (!(vehicleScaler == v2.vehicleScaler)) {
2075 return false;
2076 }
2077 if (vehicleQuality != v2.vehicleQuality) {
2078 return false;
2079 }
2080 if (vehicleSize != v2.vehicleSize) {
2081 return false;
2082 }
2083 if (showBlinker != v2.showBlinker) {
2084 return false;
2085 }
2087 return false;
2088 }
2089 if (drawMinGap != v2.drawMinGap) {
2090 return false;
2091 }
2092 if (drawBrakeGap != v2.drawBrakeGap) {
2093 return false;
2094 }
2095 if (showBTRange != v2.showBTRange) {
2096 return false;
2097 }
2098 if (showRouteIndex != v2.showRouteIndex) {
2099 return false;
2100 }
2101 if (scaleLength != v2.scaleLength) {
2102 return false;
2103 }
2104 if (showParkingInfo != v2.showParkingInfo) {
2105 return false;
2106 }
2107 if (vehicleName != v2.vehicleName) {
2108 return false;
2109 }
2110 if (vehicleValue != v2.vehicleValue) {
2111 return false;
2112 }
2114 return false;
2115 }
2116 if (vehicleText != v2.vehicleText) {
2117 return false;
2118 }
2119 if (!(personColorer == v2.personColorer)) {
2120 return false;
2121 }
2122 if (personQuality != v2.personQuality) {
2123 return false;
2124 }
2125 if (personSize != v2.personSize) {
2126 return false;
2127 }
2128 if (personName != v2.personName) {
2129 return false;
2130 }
2131 if (personValue != v2.personValue) {
2132 return false;
2133 }
2134 if (!(containerColorer == v2.containerColorer)) {
2135 return false;
2136 }
2138 return false;
2139 }
2140 if (containerSize != v2.containerSize) {
2141 return false;
2142 }
2143 if (containerName != v2.containerName) {
2144 return false;
2145 }
2146 if (!(junctionColorer == v2.junctionColorer)) {
2147 return false;
2148 }
2149 if (!(poiColorer == v2.poiColorer)) {
2150 return false;
2151 }
2152 if (!(polyColorer == v2.polyColorer)) {
2153 return false;
2154 }
2155 if (drawLinkTLIndex != v2.drawLinkTLIndex) {
2156 return false;
2157 }
2159 return false;
2160 }
2161 if (junctionID != v2.junctionID) {
2162 return false;
2163 }
2164 if (junctionName != v2.junctionName) {
2165 return false;
2166 }
2168 return false;
2169 }
2170 if (tlsPhaseIndex != v2.tlsPhaseIndex) {
2171 return false;
2172 }
2173 if (tlsPhaseName != v2.tlsPhaseName) {
2174 return false;
2175 }
2176
2177 if (showLane2Lane != v2.showLane2Lane) {
2178 return false;
2179 }
2180
2182 return false;
2183 }
2184
2186 return false;
2187 }
2188 if (junctionSize != v2.junctionSize) {
2189 return false;
2190 }
2191
2192 if (addMode != v2.addMode) {
2193 return false;
2194 }
2195 if (addSize != v2.addSize) {
2196 return false;
2197 }
2198 if (addName != v2.addName) {
2199 return false;
2200 }
2201 if (addFullName != v2.addFullName) {
2202 return false;
2203 }
2204 if (poiSize != v2.poiSize) {
2205 return false;
2206 }
2207 if (poiDetail != v2.poiDetail) {
2208 return false;
2209 }
2210 if (poiName != v2.poiName) {
2211 return false;
2212 }
2213 if (poiType != v2.poiType) {
2214 return false;
2215 }
2216 if (poiText != v2.poiText) {
2217 return false;
2218 }
2219 if (poiTextParam != v2.poiTextParam) {
2220 return false;
2221 }
2222 if (polySize != v2.polySize) {
2223 return false;
2224 }
2225 if (polyName != v2.polyName) {
2226 return false;
2227 }
2228 if (polyType != v2.polyType) {
2229 return false;
2230 }
2231
2232 if (showSizeLegend != v2.showSizeLegend) {
2233 return false;
2234 }
2235 if (showColorLegend != v2.showColorLegend) {
2236 return false;
2237 }
2239 return false;
2240 }
2241 if (!(dataColorer == v2.dataColorer)) {
2242 return false;
2243 }
2244 if (!(dataValue == v2.dataValue)) {
2245 return false;
2246 }
2248 return false;
2249 }
2251 return false;
2252 }
2253 if (!(relDataAttr == v2.relDataAttr)) {
2254 return false;
2255 }
2257 return false;
2258 }
2260 return false;
2261 }
2262
2263 return true;
2264}
2265
2266
2267const RGBColor&
2269 switch (ls) {
2274 case LINKSTATE_TL_RED:
2275 return SUMO_color_TL_RED;
2286 case LINKSTATE_MAJOR:
2287 return realistic ? RGBColor::INVISIBLE : SUMO_color_MAJOR;
2288 case LINKSTATE_MINOR:
2289 return realistic ? SUMO_color_MAJOR : SUMO_color_MINOR;
2290 case LINKSTATE_EQUAL:
2291 return SUMO_color_EQUAL;
2292 case LINKSTATE_STOP:
2293 return realistic ? SUMO_color_MAJOR : SUMO_color_STOP;
2295 return realistic ? SUMO_color_MAJOR : SUMO_color_ALLWAY_STOP;
2296 case LINKSTATE_ZIPPER:
2297 return realistic ? RGBColor::INVISIBLE : SUMO_color_ZIPPER;
2298 case LINKSTATE_DEADEND:
2299 return SUMO_color_DEADEND;
2300 default:
2301 throw ProcessError("No color defined for LinkState '" + std::string(ls, 1) + "'");
2302 }
2303}
2304
2305
2306double
2308 double viewAngle = objectAngle - angle;
2309 while (viewAngle < 0) {
2310 viewAngle += 360;
2311 }
2312 // fmod round towards zero which is not want we want for negative numbers
2313 viewAngle = fmod(viewAngle, 360);
2314 if (viewAngle > 90 && viewAngle < 270) {
2315 // avoid reading text on it's head
2316 objectAngle -= 180;
2317 }
2318 return objectAngle;
2319}
2320
2321bool
2323 double viewAngle = objectAngle - angle;
2324 while (viewAngle < 0) {
2325 viewAngle += 360;
2326 }
2327 // fmod round towards zero which is not want we want for negative numbers
2328 viewAngle = fmod(viewAngle, 360);
2329 return (viewAngle > 90 && viewAngle < 270);
2330}
2331
2332
2333
2334bool
2335GUIVisualizationSettings::drawAdditionals(const double exaggeration) const {
2336 return (scale * exaggeration) > 1.;
2337}
2338
2339
2340bool
2341GUIVisualizationSettings::drawDetail(const double detail, const double exaggeration) const {
2342 if (detail <= 0) {
2343 return true;
2344 } else {
2345 return ((scale * exaggeration) >= detail);
2346 }
2347}
2348
2349
2350int
2353 return 8;
2354 } else if (scale >= 10) {
2355 return 32;
2356 } else if (scale >= 5) {
2357 return 16;
2358 } else {
2359 return 8;
2360 }
2361}
2362
2363
2364bool
2365GUIVisualizationSettings::drawDottedContour(const double exaggeration) const {
2367 return false;
2368 } else {
2369 return (scale * exaggeration) > 3.;
2370 }
2371}
2372
2373
2374bool
2375GUIVisualizationSettings::drawMovingGeometryPoint(const double exaggeration, const double radius) const {
2376 return (scale * radius * exaggeration > 10);
2377}
2378
2379/****************************************************************************/
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)
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
Definition: StdDefs.h:60
T MAX2(T a, T b)
Definition: StdDefs.h:77
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.
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
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
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.
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)
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.
double angle
The current view rotation angle.
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:61
void lf()
writes a line feed if applicable
Definition: OutputDevice.h:239
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
Definition: OutputDevice.h:251
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 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