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