Eclipse SUMO - Simulation of Urban MObility
GUIVisualizationSettings.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
17 // Stores the information about how to visualize structures
18 /****************************************************************************/
19 
20 
21 // ===========================================================================
22 // included modules
23 // ===========================================================================
24 #include <config.h>
25 
26 #include <map>
27 #include <vector>
29 
31 #include "GUIPropertyScheme.h"
32 
33 // ===========================================================================
34 // static members
35 // ===========================================================================
36 
38 
39 // -------------------------------------------------------------------------
40 // color constants for link states
41 // -------------------------------------------------------------------------
42 
43 const RGBColor SUMO_color_TL_GREEN_MAJOR(0, 255, 0);
44 const RGBColor SUMO_color_TL_GREEN_MINOR(0, 179, 0);
45 const RGBColor SUMO_color_TL_RED(255, 0, 0);
46 const RGBColor SUMO_color_TL_REDYELLOW(255, 128, 0);
47 const RGBColor SUMO_color_TL_YELLOW_MAJOR(255, 255, 0);
48 const RGBColor SUMO_color_TL_YELLOW_MINOR(255, 255, 0);
49 const RGBColor SUMO_color_TL_OFF_BLINKING(128, 64, 0);
50 const RGBColor SUMO_color_TL_OFF_NOSIGNAL(0, 255, 255);
51 const RGBColor SUMO_color_MAJOR(255, 255, 255);
52 const RGBColor SUMO_color_MINOR(51, 51, 51);
53 const RGBColor SUMO_color_EQUAL(128, 128, 128);
54 const RGBColor SUMO_color_STOP(128, 0, 128);
55 const RGBColor SUMO_color_ALLWAY_STOP(0, 0, 192);
56 const RGBColor SUMO_color_ZIPPER(192, 128, 64);
57 const RGBColor SUMO_color_DEADEND(0, 0, 0);
58 
59 // -------------------------------------------------------------------------
60 // color constants for other objects
61 // -------------------------------------------------------------------------
62 
92 
93 // -------------------------------------------------------------------------
94 // widths of certain NETEDIT objects
95 // -------------------------------------------------------------------------
96 
99 const double GUIVisualizationWidthSettings::route(0.66);
100 const double GUIVisualizationWidthSettings::trip(0.2);
102 const double GUIVisualizationWidthSettings::walk(0.25);
103 const double GUIVisualizationWidthSettings::ride(0.25);
104 
105 // -------------------------------------------------------------------------
106 // details of certain NETEDIT objects (0 = drawn always)
107 // -------------------------------------------------------------------------
108 
110 const double GUIVisualizationDetailSettings::laneTextures(20); // originally 10
112 const double GUIVisualizationDetailSettings::additionalTextures(20); // originally 10
129 
130 // -------------------------------------------------------------------------
131 // scheme names
132 // -------------------------------------------------------------------------
133 
134 const std::string GUIVisualizationSettings::SCHEME_NAME_EDGE_PARAM_NUMERICAL("by param (numerical, streetwise)");
135 const std::string GUIVisualizationSettings::SCHEME_NAME_LANE_PARAM_NUMERICAL("by param (numerical, lanewise)");
136 const std::string GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_NUMERICAL("by edgeData (numerical, streetwise)");
137 const std::string GUIVisualizationSettings::SCHEME_NAME_SELECTION("by selection");
138 const std::string GUIVisualizationSettings::SCHEME_NAME_TYPE("by type");
139 const std::string GUIVisualizationSettings::SCHEME_NAME_PERMISSION_CODE("by permission code");
140 
141 // color constants for scheme background
142 #define COL_SCHEME_EMISSION RGBColor(255,255,210)
143 #define COL_SCHEME_MISC RGBColor(210,220,255)
144 #define COL_SCHEME_STATIC RGBColor(230,230,230)
145 #define COL_SCHEME_DYNAMIC RGBColor(220,255,220)
146 
147 // ===========================================================================
148 // member method definitions
149 // ===========================================================================
150 
151 // ---------------------------------------------------------------------------
152 // GUIVisualizationTextSettings - methods
153 // ---------------------------------------------------------------------------
154 
155 GUIVisualizationTextSettings::GUIVisualizationTextSettings(bool _show, double _size, RGBColor _color, RGBColor _bgColor, bool _constSize) :
156  show(_show),
157  size(_size),
158  color(_color),
159  bgColor(_bgColor),
160  constSize(_constSize) {
161 }
162 
163 
164 bool
166  return (show == other.show) &&
167  (size == other.size) &&
168  (color == other.color) &&
169  (bgColor == other.bgColor) &&
170  (constSize == other.constSize);
171 }
172 
173 
174 bool
176  return (show != other.show) ||
177  (size != other.size) ||
178  (color != other.color) ||
179  (bgColor != other.bgColor) ||
180  (constSize != other.constSize);
181 }
182 
183 
184 void
185 GUIVisualizationTextSettings::print(OutputDevice& dev, const std::string& name) const {
186  dev.writeAttr(name + "_show", show);
187  dev.writeAttr(name + "_size", size);
188  dev.writeAttr(name + "_color", color);
189  dev.writeAttr(name + "_bgColor", bgColor);
190  dev.writeAttr(name + "_constantSize", constSize);
191 }
192 
193 
194 double
195 GUIVisualizationTextSettings::scaledSize(double scale, double constFactor) const {
196  return constSize ? (size / scale) : (size * constFactor);
197 }
198 
199 // ---------------------------------------------------------------------------
200 // GUIVisualizationSizeSettings - methods
201 // ---------------------------------------------------------------------------
202 
203 GUIVisualizationSizeSettings::GUIVisualizationSizeSettings(double _minSize, double _exaggeration, bool _constantSize, bool _constantSizeSelected) :
204  minSize(_minSize),
205  exaggeration(_exaggeration),
206  constantSize(_constantSize),
207  constantSizeSelected(_constantSizeSelected) {
208 }
209 
210 
211 double
214  if (constantSize && (!constantSizeSelected || (o == nullptr) || gSelected.isSelected(o))) {
215  return MAX2((double)exaggeration, exaggeration * factor / s.scale);
216  } else if (!constantSizeSelected || (o == nullptr) || gSelected.isSelected(o)) {
217  return exaggeration;
218  } else {
219  return 1;
220  }
221 }
222 
223 
224 bool
226  return (constantSize == other.constantSize) &&
228  (minSize == other.minSize) &&
229  (exaggeration == other.exaggeration);
230 }
231 
232 
233 bool
235  return (constantSize != other.constantSize) ||
237  (minSize != other.minSize) ||
238  (exaggeration != other.exaggeration);
239 }
240 
241 
242 void
243 GUIVisualizationSizeSettings::print(OutputDevice& dev, const std::string& name) const {
244  dev.writeAttr(name + "_minSize", minSize);
245  dev.writeAttr(name + "_exaggeration", exaggeration);
246  dev.writeAttr(name + "_constantSize", constantSize);
247  dev.writeAttr(name + "_constantSizeSelected", constantSizeSelected);
248 }
249 
250 // ---------------------------------------------------------------------------
251 // GUIVisualizationColorSettings - methods
252 // ---------------------------------------------------------------------------
253 
255  selectionColor(0, 0, 204, 255),
256  selectedEdgeColor(0, 0, 204, 255),
257  selectedLaneColor(0, 0, 128, 255),
258  selectedConnectionColor(0, 0, 100, 255),
259  selectedProhibitionColor(0, 0, 120, 255),
260  selectedCrossingColor(0, 100, 196, 255),
261  selectedAdditionalColor(0, 0, 150, 255),
262  selectedRouteColor(0, 0, 150, 255),
263  selectedVehicleColor(0, 0, 100, 255),
264  selectedPersonColor(0, 0, 120, 255),
265  selectedPersonPlanColor(0, 0, 130, 255) {
266 }
267 
268 
269 bool
271  return (selectionColor == v2.selectionColor) &&
282 }
283 
284 
285 bool
287  return (selectionColor != v2.selectionColor) ||
298 }
299 
300 // ---------------------------------------------------------------------------
301 // GUIVisualizationSettings - methods
302 // ---------------------------------------------------------------------------
303 
305  name(""),
306  netedit(_netedit),
307  angle(0),
308  dither(false),
309  fps(false),
310  backgroundColor(RGBColor::WHITE),
311  showGrid(false), gridXSize(100), gridYSize(100),
312  laneShowBorders(false), showBikeMarkings(true), showLinkDecals(true),
313  showLinkRules(true), showRails(true),
314  edgeName(false, 60, RGBColor(255, 128, 0, 255)),
315  internalEdgeName(false, 45, RGBColor(128, 64, 0, 255)),
316  cwaEdgeName(false, 60, RGBColor::MAGENTA),
317  streetName(false, 60, RGBColor::YELLOW),
318  edgeValue(false, 100, RGBColor::CYAN),
319  hideConnectors(false),
320  laneWidthExaggeration(1),
321  laneMinSize(0),
322  showLaneDirection(false),
323  showSublanes(true),
324  spreadSuperposed(false),
325  edgeParam("EDGE_KEY"),
326  laneParam("LANE_KEY"),
327  edgeData("speed"),
328  vehicleQuality(0), showBlinker(true),
329  drawLaneChangePreference(false),
330  drawMinGap(false),
331  drawBrakeGap(false),
332  showBTRange(false), vehicleSize(1),
333  vehicleName(false, 60, RGBColor(204, 153, 0, 255)),
334  vehicleValue(false, 80, RGBColor::CYAN),
335  personQuality(0),
336  personSize(1),
337  personName(false, 60, RGBColor(0, 153, 204, 255)),
338  personValue(false, 80, RGBColor::CYAN),
339  containerQuality(0),
340  containerSize(1),
341  containerName(false, 60, RGBColor(0, 153, 204, 255)),
342  drawLinkTLIndex(false, 50, RGBColor(128, 128, 255, 255)),
343  drawLinkJunctionIndex(false, 50, RGBColor(128, 128, 255, 255)),
344  junctionName(false, 60, RGBColor(0, 255, 128, 255)),
345  internalJunctionName(false, 50, RGBColor(0, 204, 128, 255)),
346  tlsPhaseIndex(false, 150, RGBColor(255, 255, 0, 255)),
347  showLane2Lane(false),
348  drawJunctionShape(true),
349  drawCrossingsAndWalkingareas(true),
350  junctionSize(1),
351  addMode(0),
352  addSize(1),
353  addName(false, 60, RGBColor(255, 0, 128, 255)),
354  addFullName(false, 60, RGBColor(255, 0, 128, 255)),
355  poiSize(0), poiName(false, 50, RGBColor(255, 0, 128, 255)),
356  poiType(false, 60, RGBColor(255, 0, 128, 255)),
357  polySize(0), polyName(false, 50, RGBColor(255, 0, 128, 255)),
358  polyType(false, 60, RGBColor(255, 0, 128, 255)),
359  showSizeLegend(true),
360  showColorLegend(false),
361  gaming(false),
362  drawBoundaries(false),
363  selectionScale(1.),
364  drawForSelecting(false),
365  forceDrawForSelecting(false) {
366 
367  if (netedit) {
369  } else {
371  }
372 }
373 
374 
375 void
378  GUIColorScheme scheme = GUIColorScheme("uniform", RGBColor::BLACK, "road", true, 0);
379  scheme.addColor(RGBColor::GREY, 1, "sidewalk");
380  scheme.addColor(RGBColor(192, 66, 44), 2, "bike lane");
381  scheme.addColor(RGBColor(0, 0, 0, 0), 3, "green verge");
382  scheme.addColor(RGBColor(150, 200, 200), 4, "waterway");
383  scheme.addColor(RGBColor::BLACK, 5, "railway");
384  scheme.addColor(RGBColor(92, 92, 92), 6, "no passenger"); // paths, service roads etc
385  scheme.addColor(RGBColor::RED, 7, "closed"); // road closing
386  scheme.addColor(RGBColor::GREEN, 8, "connector"); // macro-connector
387  scheme.addColor(RGBColor::ORANGE, 9, "forbidden"); // forbidden road
388  laneColorer.addScheme(scheme);
389  scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
390  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
391  laneColorer.addScheme(scheme);
392  scheme = GUIColorScheme(SCHEME_NAME_PERMISSION_CODE, RGBColor(240, 240, 240), "nobody");
393  scheme.addColor(RGBColor(10, 10, 10), (double)SVC_PASSENGER, "passenger");
394  scheme.addColor(RGBColor(128, 128, 128), (double)SVC_PEDESTRIAN, "pedestrian");
395  scheme.addColor(RGBColor(80, 80, 80), (double)(SVC_PEDESTRIAN | SVC_DELIVERY), "pedestrian_delivery");
396  scheme.addColor(RGBColor(192, 66, 44), (double)SVC_BICYCLE, "bicycle");
397  scheme.addColor(RGBColor(40, 100, 40), (double)SVC_BUS, "bus");
398  scheme.addColor(RGBColor(166, 147, 26), (double)SVC_TAXI, "taxi");
399  scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~SVC_NON_ROAD), "normal_road");
400  scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_NON_ROAD)), "disallow_pedestrian");
401  scheme.addColor(RGBColor(255, 206, 0), (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_BICYCLE | SVC_MOPED | SVC_NON_ROAD)), "motorway");
402  scheme.addColor(RGBColor(150, 200, 200), (double)SVC_SHIP, "waterway");
403  scheme.addColor(RGBColor::GREEN, (double)SVCAll, "all");
404  laneColorer.addScheme(scheme);
405  // ... traffic states ...
406  scheme = GUIColorScheme("by allowed speed (lanewise)", RGBColor::RED);
407  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
408  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
409  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
410  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
411  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
412  laneColorer.addScheme(scheme);
413  scheme = GUIColorScheme("by current occupancy (lanewise, brutto)", RGBColor(235, 235, 235), "", false, 0, COL_SCHEME_DYNAMIC);
414  scheme.addColor(RGBColor::GREEN, 0.25);
415  scheme.addColor(RGBColor::YELLOW, 0.5);
416  scheme.addColor(RGBColor::ORANGE, 0.75);
417  scheme.addColor(RGBColor::RED, 1.0);
418  laneColorer.addScheme(scheme);
419  scheme = GUIColorScheme("by current occupancy (lanewise, netto)", RGBColor(235, 235, 235), "", false, 0, COL_SCHEME_DYNAMIC);
420  scheme.addColor(RGBColor::GREEN, 0.25);
421  scheme.addColor(RGBColor::YELLOW, 0.5);
422  scheme.addColor(RGBColor::ORANGE, 0.75);
423  scheme.addColor(RGBColor::RED, 1.0);
424  laneColorer.addScheme(scheme);
425  scheme = GUIColorScheme("by first vehicle waiting time (lanewise)", RGBColor(235, 235, 235), "", false, 0, COL_SCHEME_DYNAMIC);
426  scheme.addColor(RGBColor::CYAN, (double)30);
427  scheme.addColor(RGBColor::GREEN, (double)100);
428  scheme.addColor(RGBColor::YELLOW, (double)200);
429  scheme.addColor(RGBColor::RED, (double)300);
430  laneColorer.addScheme(scheme);
431  scheme = GUIColorScheme("by lane number (streetwise)", RGBColor::RED);
432  scheme.addColor(RGBColor::BLUE, (double)5);
433  laneColorer.addScheme(scheme);
434  // ... emissions ...
435  scheme = GUIColorScheme("by CO2 emissions", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
436  scheme.addColor(RGBColor::RED, (double)(10. / 7.5 / 5.));
437  laneColorer.addScheme(scheme);
438  scheme = GUIColorScheme("by CO emissions", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
439  scheme.addColor(RGBColor::RED, (double)(0.05 / 7.5 / 2.));
440  laneColorer.addScheme(scheme);
441  scheme = GUIColorScheme("by PMx emissions", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
442  scheme.addColor(RGBColor::RED, (double)(.005 / 7.5 / 5.));
443  laneColorer.addScheme(scheme);
444  scheme = GUIColorScheme("by NOx emissions", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
445  scheme.addColor(RGBColor::RED, (double)(.125 / 7.5 / 5.));
446  laneColorer.addScheme(scheme);
447  scheme = GUIColorScheme("by HC emissions", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
448  scheme.addColor(RGBColor::RED, (double)(.02 / 7.5 / 4.));
449  laneColorer.addScheme(scheme);
450  scheme = GUIColorScheme("by fuel consumption", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
451  scheme.addColor(RGBColor::RED, (double)(.005 / 7.5 * 100.));
452  laneColorer.addScheme(scheme);
453  scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
454  scheme.addColor(RGBColor::RED, (double)100);
455  laneColorer.addScheme(scheme);
456  // ... weights (experimental) ...
457  scheme = GUIColorScheme("by global travel time", RGBColor::GREEN);
458  scheme.addColor(RGBColor::RED, (double)100);
459  scheme.setAllowsNegativeValues(true);
460  laneColorer.addScheme(scheme);
461  scheme = GUIColorScheme("by global speed percentage", RGBColor::RED);
462  scheme.addColor(RGBColor::YELLOW, (double)50);
463  scheme.addColor(RGBColor::GREEN, (double)100);
464  scheme.setAllowsNegativeValues(true);
465  laneColorer.addScheme(scheme);
466  scheme = GUIColorScheme("by given length/geometrical length", RGBColor::BLACK);
467  scheme.addColor(RGBColor::RED, 0.25);
468  scheme.addColor(RGBColor::YELLOW, 0.5);
469  scheme.addColor(RGBColor(179, 179, 179, 255), (double)1.0);
470  scheme.addColor(RGBColor::GREEN, (double)2.0);
471  scheme.addColor(RGBColor::BLUE, (double)4.0);
472  laneColorer.addScheme(scheme);
473  laneColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
474  scheme = GUIColorScheme("by loaded weight", RGBColor::GREEN);
475  scheme.addColor(RGBColor::RED, (double)100);
476  scheme.setAllowsNegativeValues(true);
477  laneColorer.addScheme(scheme);
478  scheme = GUIColorScheme("by priority", RGBColor::YELLOW);
479  scheme.addColor(RGBColor::RED, (double) - 20);
480  scheme.addColor(RGBColor::GREEN, (double)20);
481  scheme.setAllowsNegativeValues(true);
482  laneColorer.addScheme(scheme);
483  scheme = GUIColorScheme("by height at start", RGBColor::GREY);
484  scheme.addColor(RGBColor::BLUE, (double) - 10);
485  scheme.addColor(RGBColor::RED, (double)10);
486  scheme.addColor(RGBColor::YELLOW, (double)50);
487  scheme.addColor(RGBColor::GREEN, (double)100);
488  scheme.addColor(RGBColor::MAGENTA, (double)200);
489  scheme.setAllowsNegativeValues(true);
490  laneColorer.addScheme(scheme);
491  scheme = GUIColorScheme("by height at geometry-segment start", RGBColor::GREY);
492  scheme.addColor(RGBColor::BLUE, (double) - 10);
493  scheme.addColor(RGBColor::RED, (double)10);
494  scheme.addColor(RGBColor::YELLOW, (double)50);
495  scheme.addColor(RGBColor::GREEN, (double)100);
496  scheme.addColor(RGBColor::MAGENTA, (double)200);
497  scheme.setAllowsNegativeValues(true);
498  laneColorer.addScheme(scheme);
499  scheme = GUIColorScheme("by inclination", RGBColor::GREY);
500  scheme.addColor(RGBColor::YELLOW, (double) .1);
501  scheme.addColor(RGBColor::RED, (double) .3);
502  scheme.addColor(RGBColor::GREEN, (double) - .1);
503  scheme.addColor(RGBColor::BLUE, (double) - .3);
504  scheme.setAllowsNegativeValues(true);
505  laneColorer.addScheme(scheme);
506  scheme = GUIColorScheme("by geometry-segment inclination", RGBColor::GREY);
507  scheme.addColor(RGBColor::YELLOW, (double) .1);
508  scheme.addColor(RGBColor::RED, (double) .3);
509  scheme.addColor(RGBColor::GREEN, (double) - .1);
510  scheme.addColor(RGBColor::BLUE, (double) - .3);
511  scheme.setAllowsNegativeValues(true);
512  laneColorer.addScheme(scheme);
513  scheme = GUIColorScheme("by average speed", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
514  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
515  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
516  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
517  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
518  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
519  laneColorer.addScheme(scheme);
520  scheme = GUIColorScheme("by average relative speed ", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
521  scheme.addColor(RGBColor::YELLOW, (double)(0.25));
522  scheme.addColor(RGBColor::GREEN, (double)(0.5));
523  scheme.addColor(RGBColor::CYAN, (double)(0.75));
524  scheme.addColor(RGBColor::BLUE, (double)(1));
525  scheme.addColor(RGBColor::MAGENTA, (double)(1.25));
526  laneColorer.addScheme(scheme);
527  scheme = GUIColorScheme("by routing device assumed speed ", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
528  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
529  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
530  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
531  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
532  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
533  laneColorer.addScheme(scheme);
534  scheme = GUIColorScheme("by electricity consumption", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
535  scheme.addColor(RGBColor::RED, (double)(1 / 7.5 / 5.));
536  laneColorer.addScheme(scheme);
537  scheme = GUIColorScheme("by insertion-backlog (streetwise)", RGBColor(204, 204, 204), "", false, 0, COL_SCHEME_DYNAMIC);
538  scheme.addColor(RGBColor::GREEN, (double)1);
539  scheme.addColor(RGBColor::YELLOW, (double)10);
540  scheme.addColor(RGBColor::RED, (double)100);
541  laneColorer.addScheme(scheme);
542  scheme = GUIColorScheme("by TAZ (streetwise)", RGBColor(204, 204, 204), "no TAZ", true);
543  laneColorer.addScheme(scheme);
544  scheme = GUIColorScheme(SCHEME_NAME_EDGE_PARAM_NUMERICAL, RGBColor(204, 204, 204));
545  scheme.setAllowsNegativeValues(true);
546  laneColorer.addScheme(scheme);
547  scheme = GUIColorScheme(SCHEME_NAME_LANE_PARAM_NUMERICAL, RGBColor(204, 204, 204));
548  scheme.setAllowsNegativeValues(true);
549  laneColorer.addScheme(scheme);
550  scheme = GUIColorScheme(SCHEME_NAME_EDGEDATA_NUMERICAL, RGBColor(204, 204, 204));
551  scheme.setAllowsNegativeValues(true);
552  laneColorer.addScheme(scheme);
553  scheme = GUIColorScheme("by distance (kilometrage)", RGBColor(204, 204, 204));
554  scheme.addColor(RGBColor(255, 204, 204), (double)1);
555  scheme.addColor(RGBColor::RED, (double)10000);
556  scheme.addColor(RGBColor(204, 204, 255), (double) -1);
557  scheme.addColor(RGBColor::BLUE, (double) -10000);
558  scheme.setAllowsNegativeValues(true);
559  laneColorer.addScheme(scheme);
560  scheme = GUIColorScheme("by abs distance (kilometrage)", RGBColor(204, 204, 204));
561  scheme.addColor(RGBColor::RED, (double)1);
562  scheme.setAllowsNegativeValues(false);
563  laneColorer.addScheme(scheme);
564 
566  vehicleColorer.addScheme(GUIColorScheme("given vehicle/type/route color", RGBColor::YELLOW, "", true));
568  vehicleColorer.addScheme(GUIColorScheme("given/assigned vehicle color", RGBColor::YELLOW, "", true));
569  vehicleColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
570  vehicleColorer.addScheme(GUIColorScheme("given/assigned route color", RGBColor::YELLOW, "", true));
571  vehicleColorer.addScheme(GUIColorScheme("depart position as HSV", RGBColor::YELLOW, "", true));
572  vehicleColorer.addScheme(GUIColorScheme("arrival position as HSV", RGBColor::YELLOW, "", true));
573  vehicleColorer.addScheme(GUIColorScheme("direction/distance as HSV", RGBColor::YELLOW, "", true));
574  scheme = GUIColorScheme("by speed", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
575  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
576  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
577  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
578  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
579  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
580  vehicleColorer.addScheme(scheme);
581  scheme = GUIColorScheme("by action step", RGBColor::GREY, "no action", true, 0, COL_SCHEME_DYNAMIC);
582  scheme.addColor(RGBColor(0, 255, 0, 255), 1., "action in next step");
583  scheme.addColor(RGBColor(80, 160, 80, 255), 2., "had action step");
584  vehicleColorer.addScheme(scheme);
585  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
586  scheme.addColor(RGBColor::CYAN, (double)30);
587  scheme.addColor(RGBColor::GREEN, (double)100);
588  scheme.addColor(RGBColor::YELLOW, (double)200);
589  scheme.addColor(RGBColor::RED, (double)300);
590  vehicleColorer.addScheme(scheme);
591  scheme = GUIColorScheme("by accumulated waiting time", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
592  scheme.addColor(RGBColor::CYAN, (double)25);
593  scheme.addColor(RGBColor::GREEN, (double)50);
594  scheme.addColor(RGBColor::YELLOW, (double)75);
595  scheme.addColor(RGBColor::RED, (double)100);
596  vehicleColorer.addScheme(scheme);
597  scheme = GUIColorScheme("by time since lane change", RGBColor(179, 179, 179, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
598  scheme.addColor(RGBColor(189, 189, 179, 255), -180);
599  scheme.addColor(RGBColor(255, 255, 0, 255), -20);
600  scheme.addColor(RGBColor(255, 0, 0, 255), -0.001);
601  scheme.addColor(RGBColor(0, 0, 255, 255), 0.001);
602  scheme.addColor(RGBColor(0, 255, 255, 255), 20);
603  scheme.addColor(RGBColor(179, 189, 189, 255), 180);
604  scheme.setAllowsNegativeValues(true);
605  vehicleColorer.addScheme(scheme);
606  scheme = GUIColorScheme("by max speed", RGBColor::RED);
607  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
608  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
609  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
610  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
611  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
612  vehicleColorer.addScheme(scheme);
613  // ... emissions ...
614  scheme = GUIColorScheme("by CO2 emissions", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
615  scheme.addColor(RGBColor::RED, (double)5.);
616  vehicleColorer.addScheme(scheme);
617  scheme = GUIColorScheme("by CO emissions", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
618  scheme.addColor(RGBColor::RED, 0.05);
619  vehicleColorer.addScheme(scheme);
620  scheme = GUIColorScheme("by PMx emissions", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
621  scheme.addColor(RGBColor::RED, (double).005);
622  vehicleColorer.addScheme(scheme);
623  scheme = GUIColorScheme("by NOx emissions", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
624  scheme.addColor(RGBColor::RED, (double).125);
625  vehicleColorer.addScheme(scheme);
626  scheme = GUIColorScheme("by HC emissions", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
627  scheme.addColor(RGBColor::RED, (double).02);
628  vehicleColorer.addScheme(scheme);
629  scheme = GUIColorScheme("by fuel consumption", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
630  scheme.addColor(RGBColor::RED, (double).005);
631  vehicleColorer.addScheme(scheme);
632  scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
633  scheme.addColor(RGBColor::RED, (double)100.);
634  vehicleColorer.addScheme(scheme);
635  scheme = GUIColorScheme("by reroute number", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
636  scheme.addColor(RGBColor::YELLOW, (double)1.);
637  scheme.addColor(RGBColor::WHITE, (double)10.);
638  vehicleColorer.addScheme(scheme);
639  scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
640  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
641  vehicleColorer.addScheme(scheme);
642  scheme = GUIColorScheme("by offset from best lane", RGBColor(179, 179, 179, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
643  scheme.addColor(RGBColor(255, 0, 255, 255), -100, "opposite lane");
644  scheme.addColor(RGBColor(255, 0, 0, 255), -3, "-3");
645  scheme.addColor(RGBColor(255, 255, 0, 255), -1, "-1");
646  scheme.addColor(RGBColor(0, 255, 255, 255), 1, "1");
647  scheme.addColor(RGBColor(0, 0, 255, 255), 3, "3");
648  scheme.setAllowsNegativeValues(true);
649  vehicleColorer.addScheme(scheme);
650  scheme = GUIColorScheme("by acceleration", RGBColor(179, 179, 179, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
651  scheme.addColor(RGBColor(64, 0, 0, 255), -9.0);
652  scheme.addColor(RGBColor(255, 0, 0, 255), -4.5 /* -SUMOVTypeParameter::getDefaultDecel() */);
653  scheme.addColor(RGBColor(255, 255, 0, 255), -0.1);
654  scheme.addColor(RGBColor(0, 255, 255, 255), 0.1);
655  scheme.addColor(RGBColor(0, 0, 255, 255), 2.6 /* SUMOVTypeParameter::getDefaultAccel() */);
656  scheme.addColor(RGBColor(255, 0, 255, 255), 5.2);
657  scheme.setAllowsNegativeValues(true);
658  vehicleColorer.addScheme(scheme);
659  scheme = GUIColorScheme("by time gap on lane", RGBColor(255, 255, 0, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
660  scheme.addColor(RGBColor(179, 179, 179, 255), -1);
661  scheme.addColor(RGBColor(0, 255, 255, 255), 1);
662  scheme.addColor(RGBColor(0, 0, 255, 255), 2);
663  scheme.setAllowsNegativeValues(true);
664  vehicleColorer.addScheme(scheme);
665  scheme = GUIColorScheme("by depart delay", RGBColor::BLUE);
666  scheme.addColor(RGBColor::CYAN, (double)30);
667  scheme.addColor(RGBColor::GREEN, (double)100);
668  scheme.addColor(RGBColor::YELLOW, (double)200);
669  scheme.addColor(RGBColor::RED, (double)300);
670  vehicleColorer.addScheme(scheme);
671  scheme = GUIColorScheme("by electricity consumption", RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
672  scheme.addColor(RGBColor::RED, (double)5);
673  vehicleColorer.addScheme(scheme);
674  scheme = GUIColorScheme("by time loss", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
675  scheme.addColor(RGBColor::CYAN, (double)10);
676  scheme.addColor(RGBColor::GREEN, (double)60);
677  scheme.addColor(RGBColor::YELLOW, (double)180);
678  scheme.addColor(RGBColor::RED, (double)900);
679  vehicleColorer.addScheme(scheme);
680  scheme = GUIColorScheme("by lateral speed", RGBColor(179, 179, 179, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
681  scheme.addColor(RGBColor(255, 0, 0, 255), -3, "-1.5");
682  scheme.addColor(RGBColor(255, 255, 0, 255), -1, "-0.5");
683  scheme.addColor(RGBColor(0, 255, 255, 255), 1, "0.5");
684  scheme.addColor(RGBColor(0, 0, 255, 255), 3, "1.5");
685  scheme.setAllowsNegativeValues(true);
686  vehicleColorer.addScheme(scheme);
688 
690  personColorer.addScheme(GUIColorScheme("given person/type color", RGBColor::BLUE, "", true));
691  personColorer.addScheme(GUIColorScheme("uniform", RGBColor::BLUE, "", true));
692  personColorer.addScheme(GUIColorScheme("given/assigned person color", RGBColor::BLUE, "", true));
693  personColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::BLUE, "", true));
694  scheme = GUIColorScheme("by speed", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
695  scheme.addColor(RGBColor::YELLOW, (double)(2.5 / 3.6));
696  scheme.addColor(RGBColor::GREEN, (double)(5 / 3.6));
697  scheme.addColor(RGBColor::BLUE, (double)(10 / 3.6));
698  personColorer.addScheme(scheme);
699  scheme = GUIColorScheme("by mode", RGBColor::GREY, "waiting for insertion", true, 0, COL_SCHEME_DYNAMIC);
700  scheme.addColor(RGBColor::RED, (double)(1), "stopped");
701  scheme.addColor(RGBColor::GREEN, (double)(2), "walking");
702  scheme.addColor(RGBColor::BLUE, (double)(3), "riding");
703  scheme.addColor(RGBColor::CYAN, (double)(4), "accessing trainStop");
704  scheme.addColor(RGBColor::YELLOW, (double)(5), "waiting for ride");
705  personColorer.addScheme(scheme);
706  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
707  scheme.addColor(RGBColor::CYAN, (double)30);
708  scheme.addColor(RGBColor::GREEN, (double)100);
709  scheme.addColor(RGBColor::YELLOW, (double)200);
710  scheme.addColor(RGBColor::RED, (double)300);
711  personColorer.addScheme(scheme);
712  scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
713  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
714  personColorer.addScheme(scheme);
715  personColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
717 
719  containerColorer.addScheme(GUIColorScheme("given container/type color", RGBColor::YELLOW, "", true));
721  containerColorer.addScheme(GUIColorScheme("given/assigned container color", RGBColor::YELLOW, "", true));
722  containerColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
723  scheme = GUIColorScheme("by speed", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
724  scheme.addColor(RGBColor::YELLOW, (double)(2.5 / 3.6));
725  scheme.addColor(RGBColor::GREEN, (double)(5 / 3.6));
726  scheme.addColor(RGBColor::BLUE, (double)(10 / 3.6));
727  containerColorer.addScheme(scheme);
728  scheme = GUIColorScheme("by mode", RGBColor::GREY, "waiting for insertion", true, 0, COL_SCHEME_DYNAMIC);
729  scheme.addColor(RGBColor::RED, (double)(1), "stopped");
730  scheme.addColor(RGBColor::GREEN, (double)(2), "tranship"); // walking
731  scheme.addColor(RGBColor::BLUE, (double)(3), "transport");
732  scheme.addColor(RGBColor::CYAN, (double)(4), "accessing trainStop");
733  scheme.addColor(RGBColor::YELLOW, (double)(5), "waiting for transport");
734  containerColorer.addScheme(scheme);
735  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
736  scheme.addColor(RGBColor::CYAN, (double)30);
737  scheme.addColor(RGBColor::GREEN, (double)100);
738  scheme.addColor(RGBColor::YELLOW, (double)200);
739  scheme.addColor(RGBColor::RED, (double)300);
740  containerColorer.addScheme(scheme);
741  scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
742  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
743  containerColorer.addScheme(scheme);
745 
747  scheme = GUIColorScheme("uniform", RGBColor::BLACK, "", true);
748  scheme.addColor(RGBColor(150, 200, 200), 1, "waterway");
749  scheme.addColor(RGBColor(0, 0, 0, 0), 2, "railway");
750  junctionColorer.addScheme(scheme);
751  scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
752  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
753  junctionColorer.addScheme(scheme);
754  scheme = GUIColorScheme(SCHEME_NAME_TYPE, RGBColor::GREEN, "traffic_light", true);
755  scheme.addColor(RGBColor(0, 128, 0), 1, "traffic_light_unregulated");
756  scheme.addColor(RGBColor::YELLOW, 2, "priority");
757  scheme.addColor(RGBColor::RED, 3, "priority_stop");
758  scheme.addColor(RGBColor::BLUE, 4, "right_before_left");
759  scheme.addColor(RGBColor::CYAN, 5, "allway_stop");
760  scheme.addColor(RGBColor::GREY, 6, "district");
761  scheme.addColor(RGBColor::MAGENTA, 7, "unregulated");
762  scheme.addColor(RGBColor::BLACK, 8, "dead_end");
763  scheme.addColor(RGBColor::ORANGE, 9, "rail_signal");
764  scheme.addColor(RGBColor(172, 108, 44), 10, "zipper"); // brown, darker than the zipper link rule
765  scheme.addColor(RGBColor(192, 255, 192), 11, "traffic_light_right_on_red"); // light green
766  scheme.addColor(RGBColor(128, 0, 128), 12, "rail_crossing"); // dark purple
767  junctionColorer.addScheme(scheme);
768  scheme = GUIColorScheme("by height", RGBColor::GREY);
769  scheme.addColor(RGBColor::BLUE, (double) - 10);
770  scheme.addColor(RGBColor::RED, (double)10);
771  scheme.addColor(RGBColor::YELLOW, (double)50);
772  scheme.addColor(RGBColor::GREEN, (double)100);
773  scheme.addColor(RGBColor::MAGENTA, (double)200);
774  scheme.setAllowsNegativeValues(true);
775  junctionColorer.addScheme(scheme);
776 
778  poiColorer.addScheme(GUIColorScheme("given POI color", RGBColor::RED, "", true));
779  scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
780  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
781  poiColorer.addScheme(scheme);
782  poiColorer.addScheme(GUIColorScheme("uniform", RGBColor::RED, "", true));
783 
785  polyColorer.addScheme(GUIColorScheme("given polygon color", RGBColor::ORANGE, "", true));
786  scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
787  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
788  polyColorer.addScheme(scheme);
789  polyColorer.addScheme(GUIColorScheme("uniform", RGBColor::ORANGE, "", true));
790 
792  {
793  GUIScaleScheme laneScheme = GUIScaleScheme("default", 1, "uniform", true);
794  laneScaler.addScheme(laneScheme);
795  laneScheme = GUIScaleScheme(SCHEME_NAME_SELECTION, 0.5, "unselected", true, 0, COL_SCHEME_MISC);
796  laneScheme.addColor(5, 1, "selected");
797  laneScaler.addScheme(laneScheme);
798  // ... traffic states ...
799  laneScheme = GUIScaleScheme("by allowed speed (lanewise)", 0);
800  laneScheme.addColor(10, (double)(150.0 / 3.6));
801  laneScaler.addScheme(laneScheme);
802  laneScheme = GUIScaleScheme("by current occupancy (lanewise, brutto)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
803  laneScheme.addColor(10, 0.95);
804  laneScaler.addScheme(laneScheme);
805  laneScheme = GUIScaleScheme("by current occupancy (lanewise, netto)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
806  laneScheme.addColor(10, 0.95);
807  laneScaler.addScheme(laneScheme);
808  laneScheme = GUIScaleScheme("by first vehicle waiting time (lanewise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
809  laneScheme.addColor(10, (double)300);
810  laneScaler.addScheme(laneScheme);
811  laneScheme = GUIScaleScheme("by lane number (streetwise)", 1);
812  laneScheme.addColor(10, (double)5);
813  laneScaler.addScheme(laneScheme);
814  // ... emissions ...
815  laneScheme = GUIScaleScheme("by CO2 emissions", 0, "", false, 0, COL_SCHEME_EMISSION);
816  laneScheme.addColor(10, (double)(10. / 7.5 / 5.));
817  laneScaler.addScheme(laneScheme);
818  laneScheme = GUIScaleScheme("by CO emissions", 0, "", false, 0, COL_SCHEME_EMISSION);
819  laneScheme.addColor(10, (double)(0.05 / 7.5 / 2.));
820  laneScaler.addScheme(laneScheme);
821  laneScheme = GUIScaleScheme("by PMx emissions", 0, "", false, 0, COL_SCHEME_EMISSION);
822  laneScheme.addColor(10, (double)(.005 / 7.5 / 5.));
823  laneScaler.addScheme(laneScheme);
824  laneScheme = GUIScaleScheme("by NOx emissions", 0, "", false, 0, COL_SCHEME_EMISSION);
825  laneScheme.addColor(10, (double)(.125 / 7.5 / 5.));
826  laneScaler.addScheme(laneScheme);
827  laneScheme = GUIScaleScheme("by HC emissions", 0, "", false, 0, COL_SCHEME_EMISSION);
828  laneScheme.addColor(10, (double)(.02 / 7.5 / 4.));
829  laneScaler.addScheme(laneScheme);
830  laneScheme = GUIScaleScheme("by fuel consumption", 0, "", false, 0, COL_SCHEME_EMISSION);
831  laneScheme.addColor(10, (double)(.005 / 7.5 * 100.));
832  laneScaler.addScheme(laneScheme);
833  laneScheme = GUIScaleScheme("by noise emissions (Harmonoise)", 0, "", false, 0, COL_SCHEME_EMISSION);
834  laneScheme.addColor(10, (double)100);
835  laneScaler.addScheme(laneScheme);
836  // ... weights (experimental) ...
837  laneScheme = GUIScaleScheme("by global travel time", 0);
838  laneScheme.addColor(10, (double)100);
839  laneScheme.setAllowsNegativeValues(true);
840  laneScaler.addScheme(laneScheme);
841  laneScheme = GUIScaleScheme("by global speed percentage", 0);
842  laneScheme.addColor(10, (double)100);
843  laneScheme.setAllowsNegativeValues(true);
844  laneScaler.addScheme(laneScheme);
845  laneScheme = GUIScaleScheme("by given length/geometrical length", 0);
846  laneScheme.addColor(10, (double)10.0);
847  laneScaler.addScheme(laneScheme);
848  laneScheme = GUIScaleScheme("by loaded weight", 0);
849  laneScheme.addColor(-1000, (double) - 1000);
850  laneScheme.addColor(1000, (double)1000);
851  laneScheme.setAllowsNegativeValues(true);
852  laneScaler.addScheme(laneScheme);
853  laneScheme = GUIScaleScheme("by priority", 1);
854  laneScheme.addColor(0.5, (double) - 20);
855  laneScheme.addColor(5, (double)20);
856  laneScheme.setAllowsNegativeValues(true);
857  laneScaler.addScheme(laneScheme);
858  laneScheme = GUIScaleScheme("by average speed", 0, "", false, 0, COL_SCHEME_DYNAMIC);
859  laneScheme.addColor(10, (double)(150.0 / 3.6));
860  laneScaler.addScheme(laneScheme);
861  laneScheme = GUIScaleScheme("by average relative speed", 0, "", false, 0, COL_SCHEME_DYNAMIC);
862  laneScheme.addColor(0.5, (double)(0.5));
863  laneScheme.addColor(2, (double)(1));
864  laneScheme.addColor(10, (double)(2));
865  laneScaler.addScheme(laneScheme);
866  laneScheme = GUIScaleScheme("by electricity consumption", 0, "", false, 0, COL_SCHEME_EMISSION);
867  laneScheme.addColor(10, (double)(1 / 7.5 / 5.));
868  laneScaler.addScheme(laneScheme);
869  laneScheme = GUIScaleScheme("by insertion-backlog (streetwise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
870  laneScheme.addColor(1, (double)1);
871  laneScheme.addColor(10, (double)10);
872  laneScheme.addColor(50, (double)100);
873  laneScaler.addScheme(laneScheme);
874  }
875 
877  edgeColorer.addScheme(GUIColorScheme("uniform", RGBColor(0, 0, 0, 0), "", true));
878  scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
879  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
880  edgeColorer.addScheme(scheme);
881  scheme = GUIColorScheme("by purpose (streetwise)", RGBColor(), "normal", true);
882  scheme.addColor(RGBColor(128, 0, 128, 255), 1, "connector"); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_CONNECTOR
883  scheme.addColor(RGBColor::BLUE, 2, "internal"); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_INTERNAL
884  edgeColorer.addScheme(scheme);
885  scheme = GUIColorScheme("by allowed speed (streetwise)", RGBColor::RED);
886  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
887  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
888  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
889  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
890  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
891  edgeColorer.addScheme(scheme);
892  scheme = GUIColorScheme("by current occupancy (streetwise, brutto)", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
893  scheme.addColor(RGBColor::RED, 0.95);
894  edgeColorer.addScheme(scheme);
895  scheme = GUIColorScheme("by current speed (streetwise)", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
896  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
897  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
898  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
899  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
900  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
901  edgeColorer.addScheme(scheme);
902  scheme = GUIColorScheme("by current flow (streetwise)", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
903  scheme.addColor(RGBColor::RED, (double)5000);
904  edgeColorer.addScheme(scheme);
905  scheme = GUIColorScheme("by relative speed (streetwise)", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
906  scheme.addColor(RGBColor::YELLOW, (double)(0.25));
907  scheme.addColor(RGBColor::GREEN, (double)(0.5));
908  scheme.addColor(RGBColor::CYAN, (double)(0.75));
909  scheme.addColor(RGBColor::BLUE, (double)(1));
910  scheme.addColor(RGBColor::MAGENTA, (double)(1.25));
911  edgeColorer.addScheme(scheme);
912  scheme = GUIColorScheme("by routing device assumed speed", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
913  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
914  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
915  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
916  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
917  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
918  edgeColorer.addScheme(scheme);
919  edgeColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
920  scheme = GUIColorScheme("by segments (alternating)", RGBColor::BLUE, "odd", true);
921  scheme.addColor(RGBColor::RED, 1, "even");
922  edgeColorer.addScheme(scheme);
923  scheme = GUIColorScheme("by jammed state (segmentwise)", RGBColor::GREEN, "free", true, 0, COL_SCHEME_DYNAMIC);
924  scheme.addColor(RGBColor::RED, 1, "jammed");
925  edgeColorer.addScheme(scheme);
926  scheme = GUIColorScheme("by current occupancy (segmentwise, brutto)", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
927  scheme.addColor(RGBColor::RED, 0.95);
928  edgeColorer.addScheme(scheme);
929  scheme = GUIColorScheme("by current speed (segmentwise)", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
930  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
931  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
932  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
933  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
934  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
935  edgeColorer.addScheme(scheme);
936  scheme = GUIColorScheme("by current flow (segmentwise)", RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
937  scheme.addColor(RGBColor::RED, (double)5000);
938  edgeColorer.addScheme(scheme);
939  scheme = GUIColorScheme("by relative speed (segmentwise)", RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
940  scheme.addColor(RGBColor::YELLOW, (double)(0.25));
941  scheme.addColor(RGBColor::GREEN, (double)(0.5));
942  scheme.addColor(RGBColor::CYAN, (double)(0.75));
943  scheme.addColor(RGBColor::BLUE, (double)(1));
944  scheme.addColor(RGBColor::MAGENTA, (double)(1.25));
945  edgeColorer.addScheme(scheme);
946  scheme = GUIColorScheme("by insertion-backlog (streetwise)", RGBColor::GREY, "", false, 0, COL_SCHEME_DYNAMIC);
947  scheme.addColor(RGBColor::GREEN, (double)1);
948  scheme.addColor(RGBColor::YELLOW, (double)10);
949  scheme.addColor(RGBColor::RED, (double)100);
950  edgeColorer.addScheme(scheme);
951  scheme = GUIColorScheme("by TAZ (streetwise)", RGBColor(204, 204, 204), "no TAZ", true);
952  edgeColorer.addScheme(scheme);
953 
955  {
956  edgeScaler.addScheme(GUIScaleScheme("uniform", 1, "", true));
957  GUIScaleScheme edgeScheme = GUIScaleScheme(SCHEME_NAME_SELECTION, 0.5, "unselected", true, 0, COL_SCHEME_MISC);
958  edgeScheme.addColor(5, 1, "selected");
959  edgeScaler.addScheme(edgeScheme);
960  edgeScheme = GUIScaleScheme("by allowed speed (streetwise)", 0);
961  edgeScheme.addColor(10, (double)(150.0 / 3.6));
962  edgeScaler.addScheme(edgeScheme);
963  edgeScheme = GUIScaleScheme("by current occupancy (streetwise, brutto)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
964  edgeScheme.addColor(10, 0.95);
965  edgeScaler.addScheme(edgeScheme);
966  edgeScheme = GUIScaleScheme("by current speed (streetwise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
967  edgeScheme.addColor(10, (double)(150.0 / 3.6));
968  edgeScaler.addScheme(edgeScheme);
969  edgeScheme = GUIScaleScheme("by current flow (streetwise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
970  edgeScheme.addColor(20, (double)5000);
971  edgeScaler.addScheme(edgeScheme);
972  edgeScheme = GUIScaleScheme("by relative speed (streetwise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
973  edgeScheme.addColor(20, (double)1);
974  edgeScaler.addScheme(edgeScheme);
975  edgeScheme = GUIScaleScheme("by insertion-backlog (streetwise)", 0, "", false, 0, COL_SCHEME_DYNAMIC);
976  edgeScheme.addColor(1, (double)1);
977  edgeScheme.addColor(10, (double)10);
978  edgeScheme.addColor(50, (double)100);
979  edgeScaler.addScheme(edgeScheme);
980  }
981 
982 }
983 
984 
985 void
987  // init color schemes
988  GUIColorScheme scheme = GUIColorScheme("uniform", RGBColor::BLACK, "road", true);
989  scheme.addColor(RGBColor::GREY, 1, "Sidewalk");
990  scheme.addColor(RGBColor(192, 66, 44), 2, "bike lane");
991  scheme.addColor(RGBColor(200, 255, 200), 3, "green verge");
992  scheme.addColor(RGBColor(150, 200, 200), 4, "waterway");
993  scheme.addColor(RGBColor::BLACK, 5, "railway");
994  scheme.addColor(RGBColor(92, 92, 92), 6, "no passenger"); // paths, service roads etc
995  laneColorer.addScheme(scheme);
996  scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
997  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
998  laneColorer.addScheme(scheme);
999  scheme = GUIColorScheme("by permission code", RGBColor(240, 240, 240), "nobody");
1000  scheme.addColor(RGBColor(10, 10, 10), (double)SVC_PASSENGER, "passenger");
1001  scheme.addColor(RGBColor(128, 128, 128), (double)SVC_PEDESTRIAN, "pedestrian");
1002  scheme.addColor(RGBColor(80, 80, 80), (double)(SVC_PEDESTRIAN | SVC_DELIVERY), "pedestrian_delivery");
1003  scheme.addColor(RGBColor(192, 66, 44), (double)SVC_BICYCLE, "bicycle");
1004  scheme.addColor(RGBColor(40, 100, 40), (double)SVC_BUS, "bus");
1005  scheme.addColor(RGBColor(166, 147, 26), (double)SVC_TAXI, "taxi");
1006  scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~SVC_NON_ROAD), "normal_road");
1007  scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_NON_ROAD)), "disallow_pedestrian");
1008  scheme.addColor(RGBColor(255, 206, 0), (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_BICYCLE | SVC_MOPED | SVC_NON_ROAD)), "motorway");
1009  scheme.addColor(RGBColor(150, 200, 200), (double)SVC_SHIP, "waterway");
1010  scheme.addColor(RGBColor::GREEN, (double)SVCAll, "all");
1011  laneColorer.addScheme(scheme);
1012 
1013  scheme = GUIColorScheme("by allowed speed (lanewise)", RGBColor::RED);
1014  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
1015  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
1016  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
1017  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
1018  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
1019  laneColorer.addScheme(scheme);
1020 
1021  scheme = GUIColorScheme("by lane number (streetwise)", RGBColor::RED);
1022  scheme.addColor(RGBColor::BLUE, (double)5);
1023  laneColorer.addScheme(scheme);
1024 
1025  scheme = GUIColorScheme("by given length/geometrical length", RGBColor::BLACK);
1026  scheme.addColor(RGBColor::RED, 0.25);
1027  scheme.addColor(RGBColor::YELLOW, 0.5);
1028  scheme.addColor(RGBColor(179, 179, 179, 255), (double)1.0);
1029  scheme.addColor(RGBColor::GREEN, (double)2.0);
1030  scheme.addColor(RGBColor::BLUE, (double)4.0);
1031  laneColorer.addScheme(scheme);
1032  laneColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
1033 
1034  scheme = GUIColorScheme("by priority", RGBColor::YELLOW);
1035  scheme.addColor(RGBColor::RED, (double) - 20);
1036  scheme.addColor(RGBColor::GREEN, (double)20);
1037  scheme.setAllowsNegativeValues(true);
1038  laneColorer.addScheme(scheme);
1039  scheme = GUIColorScheme("by height at start", RGBColor::RED);
1040  scheme.addColor(RGBColor::BLUE, (double) - 10);
1041  scheme.addColor(RGBColor::YELLOW, (double)50);
1042  scheme.addColor(RGBColor::GREEN, (double)100);
1043  scheme.addColor(RGBColor::MAGENTA, (double)200);
1044  scheme.setAllowsNegativeValues(true);
1045  laneColorer.addScheme(scheme);
1046  scheme = GUIColorScheme("by height at segment start", RGBColor::RED);
1047  scheme.addColor(RGBColor::BLUE, (double) - 10);
1048  scheme.addColor(RGBColor::YELLOW, (double)50);
1049  scheme.addColor(RGBColor::GREEN, (double)100);
1050  scheme.addColor(RGBColor::MAGENTA, (double)200);
1051  scheme.setAllowsNegativeValues(true);
1052  laneColorer.addScheme(scheme);
1053  scheme = GUIColorScheme("by inclination", RGBColor::GREY);
1054  scheme.addColor(RGBColor::YELLOW, (double) .1);
1055  scheme.addColor(RGBColor::RED, (double) .3);
1056  scheme.addColor(RGBColor::GREEN, (double) - .1);
1057  scheme.addColor(RGBColor::BLUE, (double) - .3);
1058  scheme.setAllowsNegativeValues(true);
1059  laneColorer.addScheme(scheme);
1060  scheme = GUIColorScheme("by segment inclination", RGBColor::GREY);
1061  scheme.addColor(RGBColor::YELLOW, (double) .1);
1062  scheme.addColor(RGBColor::RED, (double) .3);
1063  scheme.addColor(RGBColor::GREEN, (double) - .1);
1064  scheme.addColor(RGBColor::BLUE, (double) - .3);
1065  scheme.setAllowsNegativeValues(true);
1066  laneColorer.addScheme(scheme);
1067  scheme = GUIColorScheme(SCHEME_NAME_EDGE_PARAM_NUMERICAL, RGBColor(204, 204, 204));
1068  scheme.setAllowsNegativeValues(true);
1069  laneColorer.addScheme(scheme);
1070  scheme = GUIColorScheme(SCHEME_NAME_LANE_PARAM_NUMERICAL, RGBColor(204, 204, 204));
1071  scheme.setAllowsNegativeValues(true);
1072  laneColorer.addScheme(scheme);
1073  scheme = GUIColorScheme("by distance (kilometrage)", RGBColor(204, 204, 204));
1074  scheme.addColor(RGBColor::RED, (double)1);
1075  scheme.addColor(RGBColor::RED, (double) -1);
1076  scheme.setAllowsNegativeValues(true);
1077  laneColorer.addScheme(scheme);
1078  scheme = GUIColorScheme("by abs distance (kilometrage)", RGBColor(204, 204, 204));
1079  scheme.addColor(RGBColor::RED, (double)1);
1080  scheme.setAllowsNegativeValues(false);
1081  laneColorer.addScheme(scheme);
1082 
1083  scheme = GUIColorScheme("uniform", RGBColor(102, 0, 0), "", true);
1084  scheme.addColor(RGBColor(204, 0, 0), 1, "shape not computed");
1085  scheme.addColor(RGBColor(153, 0, 0), 2, "geometry points");
1086  scheme.addColor(RGBColor::GREEN, 3, "custom shape");
1087  junctionColorer.addScheme(scheme);
1088  scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), "unselected", true, 0, COL_SCHEME_MISC);
1089  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
1090  junctionColorer.addScheme(scheme);
1091  scheme = GUIColorScheme(SCHEME_NAME_TYPE, RGBColor::GREEN, "traffic_light", true);
1092  scheme.addColor(RGBColor(0, 128, 0), 1, "traffic_light_unregulated");
1093  scheme.addColor(RGBColor::YELLOW, 2, "priority");
1094  scheme.addColor(RGBColor::RED, 3, "priority_stop");
1095  scheme.addColor(RGBColor::BLUE, 4, "right_before_left");
1096  scheme.addColor(RGBColor::CYAN, 5, "allway_stop");
1097  scheme.addColor(RGBColor::GREY, 6, "district");
1098  scheme.addColor(RGBColor::MAGENTA, 7, "unregulated");
1099  scheme.addColor(RGBColor::BLACK, 8, "dead_end");
1100  scheme.addColor(RGBColor::ORANGE, 9, "rail_signal");
1101  scheme.addColor(RGBColor(172, 108, 44), 10, "zipper"); // brown, darker than the zipper link rule
1102  scheme.addColor(RGBColor(192, 255, 192), 11, "traffic_light_right_on_red");
1103  scheme.addColor(RGBColor(128, 0, 128), 12, "rail_crossing"); // dark purple
1104  junctionColorer.addScheme(scheme);
1105  scheme = GUIColorScheme("by height", RGBColor::GREY);
1106  scheme.addColor(RGBColor::BLUE, (double) - 10);
1107  scheme.addColor(RGBColor::RED, (double)10);
1108  scheme.addColor(RGBColor::YELLOW, (double)50);
1109  scheme.addColor(RGBColor::GREEN, (double)100);
1110  scheme.addColor(RGBColor::MAGENTA, (double)200);
1111  scheme.setAllowsNegativeValues(true);
1112  junctionColorer.addScheme(scheme);
1113 
1115  poiColorer.addScheme(GUIColorScheme("given POI color", RGBColor::RED, "", true));
1116  scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
1117  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
1118  poiColorer.addScheme(scheme);
1119  poiColorer.addScheme(GUIColorScheme("uniform", RGBColor::RED, "", true));
1120 
1122  polyColorer.addScheme(GUIColorScheme("given polygon color", RGBColor::ORANGE, "", true));
1123  scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), "unselected", true, 0, COL_SCHEME_MISC);
1124  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
1125  polyColorer.addScheme(scheme);
1126  polyColorer.addScheme(GUIColorScheme("uniform", RGBColor::ORANGE, "", true));
1127 
1129  {
1130  GUIScaleScheme edgeScheme = GUIScaleScheme("default", 1, "uniform", true);
1131  laneScaler.addScheme(edgeScheme);
1132  }
1133 
1134  // dummy schemes
1136  personColorer.addScheme(GUIColorScheme("uniform", RGBColor::YELLOW, "", true));
1138 }
1139 
1140 
1141 int
1143  if (UseMesoSim) {
1144  return edgeColorer.getActive();
1145  }
1146  return laneColorer.getActive();
1147 }
1148 
1149 
1150 int
1152  if (UseMesoSim) {
1153  return edgeScaler.getActive();
1154  }
1155  return laneScaler.getActive();
1156 }
1157 
1158 
1161  if (UseMesoSim) {
1162  return edgeColorer.getScheme();
1163  }
1164  return laneColorer.getScheme();
1165 }
1166 
1167 
1170  if (UseMesoSim) {
1171  return edgeScaler.getScheme();
1172  }
1173  return laneScaler.getScheme();
1174 }
1175 
1176 
1177 void
1182  dev.writeAttr("dither", dither);
1183  dev.writeAttr("fps", fps);
1184  dev.writeAttr("drawBoundaries", drawBoundaries);
1185  dev.writeAttr("forceDrawSelecting", forceDrawForSelecting);
1186  dev.closeTag();
1188  dev.writeAttr("backgroundColor", backgroundColor);
1189  dev.writeAttr("showGrid", showGrid);
1190  dev.writeAttr("gridXSize", gridXSize);
1191  dev.writeAttr("gridYSize", gridYSize);
1192  dev.closeTag();
1193  // edges
1195  dev.writeAttr("laneEdgeMode", getLaneEdgeMode());
1196  dev.writeAttr("scaleMode", getLaneEdgeScaleMode());
1197  dev.writeAttr("laneShowBorders", laneShowBorders);
1198  dev.writeAttr("showBikeMarkings", showBikeMarkings);
1199  dev.writeAttr("showLinkDecals", showLinkDecals);
1200  dev.writeAttr("showLinkRules", showLinkRules);
1201  dev.writeAttr("showRails", showRails);
1202  dev.writeAttr("hideConnectors", hideConnectors);
1203  dev.writeAttr("widthExaggeration", laneWidthExaggeration);
1204  dev.writeAttr("minSize", laneMinSize);
1205  dev.writeAttr("showDirection", showLaneDirection);
1206  dev.writeAttr("showSublanes", showSublanes);
1207  dev.writeAttr("spreadSuperposed", spreadSuperposed);
1208  dev.writeAttr("edgeParam", edgeParam);
1209  dev.writeAttr("laneParam", laneParam);
1210  dev.writeAttr("edgeData", edgeData);
1211  dev.lf();
1212  dev << " ";
1213  edgeName.print(dev, "edgeName");
1214  dev.lf();
1215  dev << " ";
1216  internalEdgeName.print(dev, "internalEdgeName");
1217  dev.lf();
1218  dev << " ";
1219  cwaEdgeName.print(dev, "cwaEdgeName");
1220  dev.lf();
1221  dev << " ";
1222  streetName.print(dev, "streetName");
1223  dev.lf();
1224  dev << " ";
1225  edgeValue.print(dev, "edgeValue");
1226  laneColorer.save(dev);
1227  laneScaler.save(dev);
1228  edgeColorer.save(dev);
1229  edgeScaler.save(dev);
1230  dev.closeTag();
1231  // vehicles
1233  dev.writeAttr("vehicleMode", vehicleColorer.getActive());
1234  dev.writeAttr("vehicleQuality", vehicleQuality);
1235  vehicleSize.print(dev, "vehicle");
1236  dev.writeAttr("showBlinker", showBlinker);
1237  dev.writeAttr("drawMinGap", drawMinGap);
1238  dev.writeAttr("drawBrakeGap", drawBrakeGap);
1239  dev.lf();
1240  dev << " ";
1241  vehicleName.print(dev, "vehicleName");
1242  dev.lf();
1243  dev << " ";
1244  vehicleValue.print(dev, "vehicleValue");
1245  vehicleColorer.save(dev);
1246  dev.closeTag();
1247  // persons
1249  dev.writeAttr("personMode", personColorer.getActive());
1250  dev.writeAttr("personQuality", personQuality);
1251  personSize.print(dev, "person");
1252  dev.lf();
1253  dev << " ";
1254  personName.print(dev, "personName");
1255  dev.lf();
1256  dev << " ";
1257  personValue.print(dev, "personValue");
1258  personColorer.save(dev);
1259  dev.closeTag();
1260  // containers
1262  dev.writeAttr("containerMode", containerColorer.getActive());
1263  dev.writeAttr("containerQuality", containerQuality);
1264  containerSize.print(dev, "container");
1265  dev.lf();
1266  dev << " ";
1267  containerName.print(dev, "containerName");
1268  containerColorer.save(dev);
1269  dev.closeTag();
1270  // junctions
1272  dev.writeAttr("junctionMode", junctionColorer.getActive());
1273  dev.lf();
1274  dev << " ";
1275  drawLinkTLIndex.print(dev, "drawLinkTLIndex");
1276  dev.lf();
1277  dev << " ";
1278  drawLinkJunctionIndex.print(dev, "drawLinkJunctionIndex");
1279  dev.lf();
1280  dev << " ";
1281  junctionName.print(dev, "junctionName");
1282  dev.lf();
1283  dev << " ";
1284  internalJunctionName.print(dev, "internalJunctionName");
1285  dev.lf();
1286  dev << " ";
1287  tlsPhaseIndex.print(dev, "tlsPhaseIndex");
1288  dev.lf();
1289  dev << " ";
1290  dev.writeAttr("showLane2Lane", showLane2Lane);
1291  dev.writeAttr("drawShape", drawJunctionShape);
1292  dev.writeAttr("drawCrossingsAndWalkingareas", drawCrossingsAndWalkingareas);
1293  junctionSize.print(dev, "junction");
1294  junctionColorer.save(dev);
1295  dev.closeTag();
1296  // additionals
1298  dev.writeAttr("addMode", addMode);
1299  addSize.print(dev, "add");
1300  addName.print(dev, "addName");
1301  addFullName.print(dev, "addFullName");
1302  dev.closeTag();
1303  // pois
1305  poiSize.print(dev, "poi");
1306  poiName.print(dev, "poiName");
1307  poiType.print(dev, "poiType");
1308  poiColorer.save(dev);
1309  dev.closeTag();
1310  // polys
1312  polySize.print(dev, "poly");
1313  polyName.print(dev, "polyName");
1314  polyType.print(dev, "polyType");
1315  polyColorer.save(dev);
1316  dev.closeTag();
1317  // legend
1319  dev.writeAttr("showSizeLegend", showSizeLegend);
1320  dev.writeAttr("showColorLegend", showColorLegend);
1321  dev.closeTag();
1322 
1323  dev.closeTag();
1324 }
1325 
1326 
1327 bool
1329  if (dither != v2.dither) {
1330  return false;
1331  }
1332  if (fps != v2.fps) {
1333  return false;
1334  }
1335  if (drawBoundaries != v2.drawBoundaries) {
1336  return false;
1337  }
1339  return false;
1340  }
1341  if (backgroundColor != v2.backgroundColor) {
1342  return false;
1343  }
1344  if (colorSettings != v2.colorSettings) {
1345  return false;
1346  }
1347  if (showGrid != v2.showGrid) {
1348  return false;
1349  }
1350  if (gridXSize != v2.gridXSize) {
1351  return false;
1352  }
1353  if (gridYSize != v2.gridYSize) {
1354  return false;
1355  }
1356 
1357  if (!(edgeColorer == v2.edgeColorer)) {
1358  return false;
1359  }
1360  if (!(edgeScaler == v2.edgeScaler)) {
1361  return false;
1362  }
1363  if (!(laneColorer == v2.laneColorer)) {
1364  return false;
1365  }
1366  if (!(laneScaler == v2.laneScaler)) {
1367  return false;
1368  }
1369  if (laneShowBorders != v2.laneShowBorders) {
1370  return false;
1371  }
1372  if (showBikeMarkings != v2.showBikeMarkings) {
1373  return false;
1374  }
1375  if (showLinkDecals != v2.showLinkDecals) {
1376  return false;
1377  }
1378  if (showLinkRules != v2.showLinkRules) {
1379  return false;
1380  }
1381  if (showRails != v2.showRails) {
1382  return false;
1383  }
1384  if (edgeName != v2.edgeName) {
1385  return false;
1386  }
1387  if (internalEdgeName != v2.internalEdgeName) {
1388  return false;
1389  }
1390  if (cwaEdgeName != v2.cwaEdgeName) {
1391  return false;
1392  }
1393  if (streetName != v2.streetName) {
1394  return false;
1395  }
1396  if (edgeValue != v2.edgeValue) {
1397  return false;
1398  }
1399  if (hideConnectors != v2.hideConnectors) {
1400  return false;
1401  }
1403  return false;
1404  }
1405  if (laneMinSize != v2.laneMinSize) {
1406  return false;
1407  }
1409  return false;
1410  }
1411  if (showSublanes != v2.showSublanes) {
1412  return false;
1413  }
1414  if (spreadSuperposed != v2.spreadSuperposed) {
1415  return false;
1416  }
1417  if (edgeParam != v2.edgeParam) {
1418  return false;
1419  }
1420  if (laneParam != v2.laneParam) {
1421  return false;
1422  }
1423  if (edgeData != v2.edgeData) {
1424  return false;
1425  }
1426  if (!(vehicleColorer == v2.vehicleColorer)) {
1427  return false;
1428  }
1429  if (vehicleQuality != v2.vehicleQuality) {
1430  return false;
1431  }
1432  if (vehicleSize != v2.vehicleSize) {
1433  return false;
1434  }
1435  if (showBlinker != v2.showBlinker) {
1436  return false;
1437  }
1439  return false;
1440  }
1441  if (drawMinGap != v2.drawMinGap) {
1442  return false;
1443  }
1444  if (drawBrakeGap != v2.drawBrakeGap) {
1445  return false;
1446  }
1447  if (showBTRange != v2.showBTRange) {
1448  return false;
1449  }
1450  if (vehicleName != v2.vehicleName) {
1451  return false;
1452  }
1453  if (vehicleValue != v2.vehicleValue) {
1454  return false;
1455  }
1456  if (!(personColorer == v2.personColorer)) {
1457  return false;
1458  }
1459  if (personQuality != v2.personQuality) {
1460  return false;
1461  }
1462  if (personSize != v2.personSize) {
1463  return false;
1464  }
1465  if (personName != v2.personName) {
1466  return false;
1467  }
1468  if (personValue != v2.personValue) {
1469  return false;
1470  }
1471  if (!(containerColorer == v2.containerColorer)) {
1472  return false;
1473  }
1474  if (containerQuality != v2.containerQuality) {
1475  return false;
1476  }
1477  if (containerSize != v2.containerSize) {
1478  return false;
1479  }
1480  if (containerName != v2.containerName) {
1481  return false;
1482  }
1483  if (!(junctionColorer == v2.junctionColorer)) {
1484  return false;
1485  }
1486  if (!(poiColorer == v2.poiColorer)) {
1487  return false;
1488  }
1489  if (!(polyColorer == v2.polyColorer)) {
1490  return false;
1491  }
1492  if (drawLinkTLIndex != v2.drawLinkTLIndex) {
1493  return false;
1494  }
1496  return false;
1497  }
1498  if (junctionName != v2.junctionName) {
1499  return false;
1500  }
1502  return false;
1503  }
1504  if (tlsPhaseIndex != v2.tlsPhaseIndex) {
1505  return false;
1506  }
1507 
1508  if (showLane2Lane != v2.showLane2Lane) {
1509  return false;
1510  }
1511 
1513  return false;
1514  }
1515 
1517  return false;
1518  }
1519  if (junctionSize != v2.junctionSize) {
1520  return false;
1521  }
1522 
1523  if (addMode != v2.addMode) {
1524  return false;
1525  }
1526  if (addSize != v2.addSize) {
1527  return false;
1528  }
1529  if (addName != v2.addName) {
1530  return false;
1531  }
1532  if (addFullName != v2.addFullName) {
1533  return false;
1534  }
1535  if (poiSize != v2.poiSize) {
1536  return false;
1537  }
1538  if (poiName != v2.poiName) {
1539  return false;
1540  }
1541  if (poiType != v2.poiType) {
1542  return false;
1543  }
1544  if (polySize != v2.polySize) {
1545  return false;
1546  }
1547  if (polyName != v2.polyName) {
1548  return false;
1549  }
1550  if (polyType != v2.polyType) {
1551  return false;
1552  }
1553 
1554  if (showSizeLegend != v2.showSizeLegend) {
1555  return false;
1556  }
1557  if (showColorLegend != v2.showColorLegend) {
1558  return false;
1559  }
1560 
1561  return true;
1562 }
1563 
1564 
1565 const RGBColor&
1567  switch (ls) {
1572  case LINKSTATE_TL_RED:
1573  return SUMO_color_TL_RED;
1575  return SUMO_color_TL_REDYELLOW;
1584  case LINKSTATE_MAJOR:
1585  return SUMO_color_MAJOR;
1586  case LINKSTATE_MINOR:
1587  return SUMO_color_MINOR;
1588  case LINKSTATE_EQUAL:
1589  return SUMO_color_EQUAL;
1590  case LINKSTATE_STOP:
1591  return SUMO_color_STOP;
1592  case LINKSTATE_ALLWAY_STOP:
1593  return SUMO_color_ALLWAY_STOP;
1594  case LINKSTATE_ZIPPER:
1595  return SUMO_color_ZIPPER;
1596  case LINKSTATE_DEADEND:
1597  return SUMO_color_DEADEND;
1598  default:
1599  throw ProcessError("No color defined for LinkState '" + std::string(ls, 1) + "'");
1600  }
1601 }
1602 
1603 
1604 double
1605 GUIVisualizationSettings::getTextAngle(double objectAngle) const {
1606  double viewAngle = objectAngle - angle;
1607  while (viewAngle < 0) {
1608  viewAngle += 360;
1609  }
1610  // fmod round towards zero which is not want we want for negative numbers
1611  viewAngle = fmod(viewAngle, 360);
1612  if (viewAngle > 90 && viewAngle < 270) {
1613  // avoid reading text on it's head
1614  objectAngle -= 180;
1615  }
1616  return objectAngle;
1617 }
1618 
1619 
1620 bool
1621 GUIVisualizationSettings::drawDetail(const double detail, const double exaggeration) const {
1622  if (detail <= 0) {
1623  return true;
1624  } else {
1625  return ((scale * exaggeration) >= detail);
1626  }
1627 }
1628 
1629 
1630 int
1632  if (drawForSelecting) {
1633  return 8;
1634  } else if (scale >= 10) {
1635  return 32;
1636  } else if (scale >= 2) {
1637  return 16;
1638  } else {
1639  return 8;
1640  }
1641 }
1642 
1643 /****************************************************************************/
1644 
1645 
RGBColor::GREY
static const RGBColor GREY
Definition: RGBColor.h:199
GUIVisualizationDetailSettings::vehicleBoxes
static const double vehicleBoxes
details for draw person as boxes
Definition: GUIVisualizationSettings.h:323
GUIVisualizationSettings::polySize
GUIVisualizationSizeSettings polySize
Definition: GUIVisualizationSettings.h:607
GUIVisualizationSettings::name
std::string name
The name of this setting.
Definition: GUIVisualizationSettings.h:397
GUIVisualizationSettings::edgeColorer
GUIColorer edgeColorer
The mesoscopic edge colorer.
Definition: GUIVisualizationSettings.h:429
GUIVisualizationSettings::getLaneEdgeScaleMode
int getLaneEdgeScaleMode() const
Returns the number of the active lane (edge) scaling schme.
Definition: GUIVisualizationSettings.cpp:1151
GUIVisualizationSettings::fps
bool fps
Information whether frames-per-second should be drawn.
Definition: GUIVisualizationSettings.h:409
SVC_PEDESTRIAN
pedestrian
Definition: SUMOVehicleClass.h:157
GUIVisualizationColorSettings::selectedEdgeColor
RGBColor selectedEdgeColor
edge selection color
Definition: GUIVisualizationSettings.h:133
GUIVisualizationSettings::UseMesoSim
static bool UseMesoSim
this should be set at the same time as MSGlobals::gUseMesoSim
Definition: GUIVisualizationSettings.h:435
GUIVisualizationSettings::hideConnectors
bool hideConnectors
flag to show or hidde connectors
Definition: GUIVisualizationSettings.h:462
LINKSTATE_EQUAL
This is an uncontrolled, right-before-left link.
Definition: SUMOXMLDefinitions.h:1154
GUIVisualizationColorSettings::busStop
static const RGBColor busStop
color for busStops
Definition: GUIVisualizationSettings.h:175
GUIVisualizationColorSettings::operator==
bool operator==(const GUIVisualizationColorSettings &other)
equality comparator
Definition: GUIVisualizationSettings.cpp:270
GUIVisualizationDetailSettings::personShapes
static const double personShapes
details for draw person as person shapes
Definition: GUIVisualizationSettings.h:335
GUIVisualizationSettings::laneShowBorders
bool laneShowBorders
Information whether lane borders shall be drawn.
Definition: GUIVisualizationSettings.h:444
GUIPropertyScheme.h
GUIVisualizationSettings::edgeParam
std::string edgeParam
key for coloring by edge parameter
Definition: GUIVisualizationSettings.h:480
GUIVisualizationSettings::SCHEME_NAME_LANE_PARAM_NUMERICAL
static const std::string SCHEME_NAME_LANE_PARAM_NUMERICAL
Definition: GUIVisualizationSettings.h:642
GUIVisualizationSizeSettings::GUIVisualizationSizeSettings
GUIVisualizationSizeSettings(double _minSize, double _exaggeration=1.0, bool _constantSize=false, bool _constantSizeSelected=false)
constructor
Definition: GUIVisualizationSettings.cpp:203
SUMO_color_TL_GREEN_MINOR
const RGBColor SUMO_color_TL_GREEN_MINOR(0, 179, 0)
GUIVisualizationSettings::laneMinSize
double laneMinSize
The minimum visual lane width for drawing.
Definition: GUIVisualizationSettings.h:468
GUIVisualizationDetailSettings::stoppingPlaceDetails
static const double stoppingPlaceDetails
details for stopping places
Definition: GUIVisualizationSettings.h:299
GUIVisualizationSettings::junctionSize
GUIVisualizationSizeSettings junctionSize
Definition: GUIVisualizationSettings.h:569
GUIVisualizationSettings::vehicleValue
GUIVisualizationTextSettings vehicleValue
Definition: GUIVisualizationSettings.h:514
LINKSTATE_TL_OFF_BLINKING
The link is controlled by a tls which is off and blinks, has to brake.
Definition: SUMOXMLDefinitions.h:1146
GUIVisualizationSettings::tlsPhaseIndex
GUIVisualizationTextSettings tlsPhaseIndex
Definition: GUIVisualizationSettings.h:560
GUIVisualizationSettings::getTextAngle
double getTextAngle(double objectAngle) const
return an angle that is suitable for reading text aligned with the given angle (degrees)
Definition: GUIVisualizationSettings.cpp:1605
SUMO_TAG_VIEWSETTINGS_OPENGL
Definition: SUMOXMLDefinitions.h:245
GUIVisualizationTextSettings::bgColor
RGBColor bgColor
background text color
Definition: GUIVisualizationSettings.h:78
GUIVisualizationSettings::gridYSize
double gridYSize
Definition: GUIVisualizationSettings.h:421
GUIVisualizationSettings::getLaneEdgeMode
int getLaneEdgeMode() const
Returns the number of the active lane (edge) coloring schme.
Definition: GUIVisualizationSettings.cpp:1142
OutputDevice
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:64
GUIVisualizationSizeSettings::operator==
bool operator==(const GUIVisualizationSizeSettings &other)
equality comparator
Definition: GUIVisualizationSettings.cpp:225
GUIVisualizationTextSettings::operator!=
bool operator!=(const GUIVisualizationTextSettings &other)
inequality comparator
Definition: GUIVisualizationSettings.cpp:175
GUIVisualizationSettings::angle
double angle
The current view rotation angle.
Definition: GUIVisualizationSettings.h:403
RGBColor::BLACK
static const RGBColor BLACK
Definition: RGBColor.h:198
SUMO_TAG_VIEWSETTINGS_SCHEME
Definition: SUMOXMLDefinitions.h:244
LINKSTATE_TL_OFF_NOSIGNAL
The link is controlled by a tls which is off, not blinking, may pass.
Definition: SUMOXMLDefinitions.h:1148
GUIVisualizationSettings::drawBoundaries
bool drawBoundaries
enable or disable draw boundaries
Definition: GUIVisualizationSettings.h:629
GUIVisualizationSizeSettings::constantSizeSelected
bool constantSizeSelected
whether only selected objects shall be drawn with constant
Definition: GUIVisualizationSettings.h:113
GUIVisualizationSettings::containerName
GUIVisualizationTextSettings containerName
Definition: GUIVisualizationSettings.h:549
SUMO_TAG_VIEWSETTINGS_LEGEND
Definition: SUMOXMLDefinitions.h:255
GUIVisualizationWidthSettings::route
static const double route
width for routes
Definition: GUIVisualizationSettings.h:261
GUIVisualizationColorSettings::E2
static const RGBColor E2
color for E2 detectors
Definition: GUIVisualizationSettings.h:214
GUIScaleScheme
GUIPropertyScheme< double > GUIScaleScheme
Definition: GUIPropertyScheme.h:245
GUIVisualizationSettings::SCHEME_NAME_PERMISSION_CODE
static const std::string SCHEME_NAME_PERMISSION_CODE
Definition: GUIVisualizationSettings.h:646
GUIVisualizationTextSettings::color
RGBColor color
text color
Definition: GUIVisualizationSettings.h:75
GUIVisualizationDetailSettings::stopsText
static const double stopsText
details for stop texts
Definition: GUIVisualizationSettings.h:317
GUIVisualizationSettings::showGrid
bool showGrid
Information whether a grid shall be shown.
Definition: GUIVisualizationSettings.h:418
SUMO_TAG_VIEWSETTINGS_POIS
Definition: SUMOXMLDefinitions.h:253
RGBColor::YELLOW
static const RGBColor YELLOW
Definition: RGBColor.h:193
GUIColorScheme
GUIPropertyScheme< RGBColor > GUIColorScheme
Definition: GUIPropertyScheme.h:244
GUIVisualizationSettings::forceDrawForSelecting
bool forceDrawForSelecting
flag to force draw to selecting (see drawForSelecting)
Definition: GUIVisualizationSettings.h:638
GUIGlobalSelection.h
RGBColor::CYAN
static const RGBColor CYAN
Definition: RGBColor.h:194
GUIVisualizationDetailSettings::personTriangles
static const double personTriangles
details for draw person as triangles
Definition: GUIVisualizationSettings.h:329
GUIVisualizationSettings::GUIVisualizationSettings
GUIVisualizationSettings(bool _netedit=false)
constructor
Definition: GUIVisualizationSettings.cpp:304
GUIVisualizationSettings::netedit
bool netedit
Whether the settings are for Netedit.
Definition: GUIVisualizationSettings.h:400
GUIVisualizationWidthSettings::ride
static const double ride
width for rides
Definition: GUIVisualizationSettings.h:273
GUIVisualizationSettings::personColorer
GUIColorer personColorer
The person colorer.
Definition: GUIVisualizationSettings.h:523
SVC_BICYCLE
vehicle is a bicycle
Definition: SUMOVehicleClass.h:180
SVC_DELIVERY
vehicle is a small delivery vehicle
Definition: SUMOVehicleClass.h:170
LINKSTATE_TL_GREEN_MINOR
The link has green light, has to brake.
Definition: SUMOXMLDefinitions.h:1136
GUIVisualizationColorSettings::crossing
static const RGBColor crossing
color for crossings
Definition: GUIVisualizationSettings.h:166
GUIVisualizationColorSettings::selectedRouteColor
RGBColor selectedRouteColor
route selection color (used for routes and vehicle stops)
Definition: GUIVisualizationSettings.h:151
GUIVisualizationTextSettings
Definition: GUIVisualizationSettings.h:51
GUIVisualizationSettings.h
SVC_NON_ROAD
classes which (normally) do not drive on normal roads
Definition: SUMOVehicleClass.h:210
GUIVisualizationSettings::containerSize
GUIVisualizationSizeSettings containerSize
Definition: GUIVisualizationSettings.h:546
GUIVisualizationColorSettings::childConnections
static const RGBColor childConnections
color for child connections between parents and child elements
Definition: GUIVisualizationSettings.h:163
GUIVisualizationSettings::drawLinkJunctionIndex
GUIVisualizationTextSettings drawLinkJunctionIndex
Definition: GUIVisualizationSettings.h:560
GUIVisualizationSettings::vehicleSize
GUIVisualizationSizeSettings vehicleSize
Definition: GUIVisualizationSettings.h:511
GUIVisualizationSettings::showRails
bool showRails
Information whether rails shall be drawn.
Definition: GUIVisualizationSettings.h:456
GUIVisualizationSettings::vehicleColorer
GUIColorer vehicleColorer
The vehicle colorer.
Definition: GUIVisualizationSettings.h:490
GUIVisualizationDetailSettings::additionalTextures
static const double additionalTextures
details for additional textures
Definition: GUIVisualizationSettings.h:290
SUMO_TAG_VIEWSETTINGS_VEHICLES
Definition: SUMOXMLDefinitions.h:248
LINKSTATE_TL_GREEN_MAJOR
The link has green light, may pass.
Definition: SUMOXMLDefinitions.h:1134
SUMO_color_MINOR
const RGBColor SUMO_color_MINOR(51, 51, 51)
GUIVisualizationColorSettings::selectedConnectionColor
RGBColor selectedConnectionColor
connection selection color
Definition: GUIVisualizationSettings.h:139
GUIVisualizationSettings::edgeScaler
GUIScaler edgeScaler
The mesoscopic edge scaler.
Definition: GUIVisualizationSettings.h:432
GUIVisualizationColorSettings::containerStop
static const RGBColor containerStop
color for containerStops
Definition: GUIVisualizationSettings.h:181
LINKSTATE_MAJOR
This is an uncontrolled, major link, may pass.
Definition: SUMOXMLDefinitions.h:1150
SUMO_TAG_VIEWSETTINGS_BACKGROUND
Definition: SUMOXMLDefinitions.h:246
GUIVisualizationSettings::polyName
GUIVisualizationTextSettings polyName
Definition: GUIVisualizationSettings.h:610
GUIVisualizationSizeSettings::print
void print(OutputDevice &dev, const std::string &name) const
print values in output device
Definition: GUIVisualizationSettings.cpp:243
GUIVisualizationSettings::drawMinGap
bool drawMinGap
Information whether the minimum gap shall be drawn.
Definition: GUIVisualizationSettings.h:502
GUIVisualizationSettings::polyColorer
GUIColorer polyColorer
The polygon colorer.
Definition: GUIVisualizationSettings.h:604
GUIVisualizationColorSettings::crossingPriority
static const RGBColor crossingPriority
color for priority crossing
Definition: GUIVisualizationSettings.h:169
GUIVisualizationDetailSettings::vehicleShapes
static const double vehicleShapes
details for draw person as shapes
Definition: GUIVisualizationSettings.h:326
SUMO_color_EQUAL
const RGBColor SUMO_color_EQUAL(128, 128, 128)
GUIVisualizationColorSettings::chargingStation
static const RGBColor chargingStation
color for chargingStations
Definition: GUIVisualizationSettings.h:187
GUIVisualizationDetailSettings::detectorDetails
static const double detectorDetails
details for detectors
Definition: GUIVisualizationSettings.h:305
GUIVisualizationSettings::initNeteditDefaults
void initNeteditDefaults()
init default settings
Definition: GUIVisualizationSettings.cpp:986
COL_SCHEME_DYNAMIC
#define COL_SCHEME_DYNAMIC
Definition: GUIVisualizationSettings.cpp:145
GUIVisualizationDetailSettings::geometryPointsText
static const double geometryPointsText
details for Geometry Points Texts
Definition: GUIVisualizationSettings.h:296
GUIVisualizationTextSettings::scaledSize
double scaledSize(double scale, double constFactor=0.1) const
get scale size
Definition: GUIVisualizationSettings.cpp:195
SUMO_TAG_VIEWSETTINGS_PERSONS
Definition: SUMOXMLDefinitions.h:249
SUMO_color_ZIPPER
const RGBColor SUMO_color_ZIPPER(192, 128, 64)
GUIVisualizationColorSettings::selectedProhibitionColor
RGBColor selectedProhibitionColor
prohibition selection color
Definition: GUIVisualizationSettings.h:142
OutputDevice::closeTag
bool closeTag(const std::string &comment="")
Closes the most recently opened tag and optionally adds a comment.
Definition: OutputDevice.cpp:254
GUIVisualizationSettings::junctionName
GUIVisualizationTextSettings junctionName
Definition: GUIVisualizationSettings.h:560
GUIVisualizationSettings::initSumoGuiDefaults
void initSumoGuiDefaults()
Definition: GUIVisualizationSettings.cpp:376
GUIVisualizationTextSettings::GUIVisualizationTextSettings
GUIVisualizationTextSettings(bool _show, double _size, RGBColor _color, RGBColor _bgColor=RGBColor(128, 0, 0, 0), bool _constSize=true)
constructor
Definition: GUIVisualizationSettings.cpp:155
GUIVisualizationSettings::getLaneEdgeScheme
GUIColorScheme & getLaneEdgeScheme()
Returns the current lane (edge) coloring schme.
Definition: GUIVisualizationSettings.cpp:1160
GUIVisualizationSettings::junctionColorer
GUIColorer junctionColorer
The junction colorer.
Definition: GUIVisualizationSettings.h:557
MAX2
T MAX2(T a, T b)
Definition: StdDefs.h:80
GUIVisualizationSettings::polyType
GUIVisualizationTextSettings polyType
Definition: GUIVisualizationSettings.h:613
GUIVisualizationColorSettings::containerStop_sign
static const RGBColor containerStop_sign
color for containerStop signs
Definition: GUIVisualizationSettings.h:184
GUIVisualizationSettings::drawCrossingsAndWalkingareas
bool drawCrossingsAndWalkingareas
whether crosings and walkingareas shall be drawn
Definition: GUIVisualizationSettings.h:567
OutputDevice::writeAttr
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
Definition: OutputDevice.h:256
GUIVisualizationColorSettings::E1Instant
static const RGBColor E1Instant
color for E1 Instant detectors
Definition: GUIVisualizationSettings.h:211
RGBColor
Definition: RGBColor.h:40
GUIVisualizationSettings::gridXSize
double gridXSize
Information about the grid spacings.
Definition: GUIVisualizationSettings.h:421
LinkState
LinkState
The right-of-way state of a link between two lanes used when constructing a NBTrafficLightLogic,...
Definition: SUMOXMLDefinitions.h:1132
GUIVisualizationSettings::backgroundColor
RGBColor backgroundColor
The background color to use.
Definition: GUIVisualizationSettings.h:415
GUIVisualizationSettings::internalEdgeName
GUIVisualizationTextSettings internalEdgeName
Definition: GUIVisualizationSettings.h:459
GUIVisualizationSettings::addName
GUIVisualizationTextSettings addName
Definition: GUIVisualizationSettings.h:582
SUMO_color_STOP
const RGBColor SUMO_color_STOP(128, 0, 128)
GUIVisualizationDetailSettings::lockIcon
static const double lockIcon
lock icons
Definition: GUIVisualizationSettings.h:287
GUIVisualizationSettings::save
void save(OutputDevice &dev) const
Writes the settings into an output device.
Definition: GUIVisualizationSettings.cpp:1178
RGBColor::MAGENTA
static const RGBColor MAGENTA
Definition: RGBColor.h:195
GUIVisualizationSettings::showBikeMarkings
bool showBikeMarkings
Information whether bicycle lane marking shall be drawn.
Definition: GUIVisualizationSettings.h:447
GUIVisualizationSettings::poiSize
GUIVisualizationSizeSettings poiSize
Definition: GUIVisualizationSettings.h:595
LINKSTATE_TL_YELLOW_MINOR
The link has yellow light, has to brake anyway.
Definition: SUMOXMLDefinitions.h:1144
GUIPropertySchemeStorage::save
void save(OutputDevice &dev) const
Definition: GUIPropertySchemeStorage.h:110
COL_SCHEME_EMISSION
#define COL_SCHEME_EMISSION
Definition: GUIVisualizationSettings.cpp:142
GUIVisualizationTextSettings::constSize
bool constSize
@brif flag to avoid size changes
Definition: GUIVisualizationSettings.h:81
GUIVisualizationColorSettings::selectedAdditionalColor
RGBColor selectedAdditionalColor
additional selection color (busStops, Detectors...)
Definition: GUIVisualizationSettings.h:148
GUIVisualizationSettings::showLinkDecals
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
Definition: GUIVisualizationSettings.h:450
COL_SCHEME_MISC
#define COL_SCHEME_MISC
Definition: GUIVisualizationSettings.cpp:143
GUIVisualizationColorSettings::parkingAreaSign
static const RGBColor parkingAreaSign
color for parkingArea sign
Definition: GUIVisualizationSettings.h:199
GUIVisualizationSettings::laneWidthExaggeration
double laneWidthExaggeration
The lane exaggeration (upscale thickness)
Definition: GUIVisualizationSettings.h:465
GUIVisualizationDetailSettings::calibratorText
static const double calibratorText
details for calibrator text
Definition: GUIVisualizationSettings.h:311
GUIVisualizationSettings::showColorLegend
bool showColorLegend
Information whether the colo legend shall be drawn.
Definition: GUIVisualizationSettings.h:620
GUIVisualizationSizeSettings
struct for size settings
Definition: GUIVisualizationSettings.h:86
RGBColor::ORANGE
static const RGBColor ORANGE
Definition: RGBColor.h:196
LINKSTATE_TL_REDYELLOW
The link has red light (must brake) but indicates upcoming green.
Definition: SUMOXMLDefinitions.h:1140
GUIPropertySchemeStorage::getScheme
T & getScheme()
Definition: GUIPropertySchemeStorage.h:80
GUIVisualizationSettings::laneScaler
GUIScaler laneScaler
The lane scaler.
Definition: GUIVisualizationSettings.h:441
GUIVisualizationSettings::SCHEME_NAME_SELECTION
static const std::string SCHEME_NAME_SELECTION
Definition: GUIVisualizationSettings.h:644
GUIVisualizationSizeSettings::constantSize
bool constantSize
whether the object shall be drawn with constant size regardless of zoom
Definition: GUIVisualizationSettings.h:110
GUIVisualizationDetailSettings::geometryPointsDetails
static const double geometryPointsDetails
details for Geometry Points
Definition: GUIVisualizationSettings.h:293
GUIVisualizationSettings::vehicleQuality
int vehicleQuality
The quality of vehicle drawing.
Definition: GUIVisualizationSettings.h:493
SUMO_TAG_VIEWSETTINGS_JUNCTIONS
Definition: SUMOXMLDefinitions.h:251
GUIVisualizationColorSettings::E3Entry
static const RGBColor E3Entry
color for Entrys
Definition: GUIVisualizationSettings.h:217
SVC_PASSENGER
vehicle is a passenger car (a "normal" car)
Definition: SUMOVehicleClass.h:160
GUIVisualizationSettings::showSublanes
bool showSublanes
Whether to show sublane boundaries.
Definition: GUIVisualizationSettings.h:474
SUMO_color_TL_OFF_BLINKING
const RGBColor SUMO_color_TL_OFF_BLINKING(128, 64, 0)
GUIVisualizationColorSettings::routeProbe
static const RGBColor routeProbe
color for route probes
Definition: GUIVisualizationSettings.h:226
LINKSTATE_ZIPPER
This is an uncontrolled, zipper-merge link.
Definition: SUMOXMLDefinitions.h:1160
GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_NUMERICAL
static const std::string SCHEME_NAME_EDGEDATA_NUMERICAL
Definition: GUIVisualizationSettings.h:643
GUIVisualizationColorSettings::selectedPersonColor
RGBColor selectedPersonColor
person selection color
Definition: GUIVisualizationSettings.h:157
GUIVisualizationWidthSettings::personTrip
static const double personTrip
width for person trips
Definition: GUIVisualizationSettings.h:267
RGBColor::BLUE
static const RGBColor BLUE
Definition: RGBColor.h:192
GUIVisualizationColorSettings::personTrip
static const RGBColor personTrip
color for personStops
Definition: GUIVisualizationSettings.h:241
GUIVisualizationSettings::scale
double scale
information about a lane's width (temporary, used for a single view)
Definition: GUIVisualizationSettings.h:623
ProcessError
Definition: UtilExceptions.h:40
SUMO_color_MAJOR
const RGBColor SUMO_color_MAJOR(255, 255, 255)
GUIVisualizationSettings::vehicleName
GUIVisualizationTextSettings vehicleName
Definition: GUIVisualizationSettings.h:514
GUIVisualizationDetailSettings::personExaggeration
static const double personExaggeration
Exaggeration for persons (only used in NETEDIT)
Definition: GUIVisualizationSettings.h:338
GUIVisualizationColorSettings::vaporizer
static const RGBColor vaporizer
color for vaporizers
Definition: GUIVisualizationSettings.h:229
GUIVisualizationSettings::containerQuality
int containerQuality
The quality of container drawing.
Definition: GUIVisualizationSettings.h:543
GUIVisualizationWidthSettings::trip
static const double trip
width for trips
Definition: GUIVisualizationSettings.h:264
GUIVisualizationSettings::dither
bool dither
Information whether dithering shall be enabled.
Definition: GUIVisualizationSettings.h:406
GUIVisualizationColorSettings::operator!=
bool operator!=(const GUIVisualizationColorSettings &other)
inequality comparator
Definition: GUIVisualizationSettings.cpp:286
LINKSTATE_DEADEND
This is a dead end link.
Definition: SUMOXMLDefinitions.h:1162
RGBColor::RED
static const RGBColor RED
named colors
Definition: RGBColor.h:190
GUIVisualizationSettings::addFullName
GUIVisualizationTextSettings addFullName
Definition: GUIVisualizationSettings.h:584
GUIVisualizationSettings::drawLinkTLIndex
GUIVisualizationTextSettings drawLinkTLIndex
Definition: GUIVisualizationSettings.h:560
GUIVisualizationSettings::personSize
GUIVisualizationSizeSettings personSize
Definition: GUIVisualizationSettings.h:529
SUMO_color_TL_REDYELLOW
const RGBColor SUMO_color_TL_REDYELLOW(255, 128, 0)
GUIVisualizationTextSettings::show
bool show
flag show
Definition: GUIVisualizationSettings.h:69
GUIGlObject
Definition: GUIGlObject.h:66
LINKSTATE_MINOR
This is an uncontrolled, minor link, has to brake.
Definition: SUMOXMLDefinitions.h:1152
GUIVisualizationDetailSettings::laneTextures
static const double laneTextures
details for lane textures
Definition: GUIVisualizationSettings.h:284
GUIVisualizationSettings::SCHEME_NAME_EDGE_PARAM_NUMERICAL
static const std::string SCHEME_NAME_EDGE_PARAM_NUMERICAL
scheme names
Definition: GUIVisualizationSettings.h:641
GUIVisualizationColorSettings::parkingArea
static const RGBColor parkingArea
color for parkingAreas
Definition: GUIVisualizationSettings.h:196
GUIVisualizationSettings::laneParam
std::string laneParam
Definition: GUIVisualizationSettings.h:480
SVC_SHIP
is an arbitrary ship
Definition: SUMOVehicleClass.h:196
GUIVisualizationSettings::internalJunctionName
GUIVisualizationTextSettings internalJunctionName
Definition: GUIVisualizationSettings.h:560
GUIVisualizationColorSettings::crossingInvalid
static const RGBColor crossingInvalid
color for invalid crossing
Definition: GUIVisualizationSettings.h:172
SUMO_color_TL_YELLOW_MAJOR
const RGBColor SUMO_color_TL_YELLOW_MAJOR(255, 255, 0)
GUIVisualizationSizeSettings::minSize
double minSize
The minimum size to draw this object.
Definition: GUIVisualizationSettings.h:104
GUIVisualizationSettings::getLaneEdgeScaleScheme
GUIScaleScheme & getLaneEdgeScaleScheme()
Returns the current lane (edge) scaling schme.
Definition: GUIVisualizationSettings.cpp:1169
GUIVisualizationColorSettings::calibrator
static const RGBColor calibrator
color for Calibrators
Definition: GUIVisualizationSettings.h:223
GUIVisualizationSettings::streetName
GUIVisualizationTextSettings streetName
Definition: GUIVisualizationSettings.h:459
GUIVisualizationSettings::colorSettings
GUIVisualizationColorSettings colorSettings
color settings
Definition: GUIVisualizationSettings.h:649
GUIPropertySchemeStorage::addScheme
void addScheme(T scheme)
Definition: GUIPropertySchemeStorage.h:121
GUIVisualizationSettings::SCHEME_NAME_TYPE
static const std::string SCHEME_NAME_TYPE
Definition: GUIVisualizationSettings.h:645
GUIVisualizationColorSettings::selectionColor
RGBColor selectionColor
basic selection color
Definition: GUIVisualizationSettings.h:130
GUIVisualizationSettings::getCircleResolution
int getCircleResolution() const
function to calculate circle resolution for all circles drawn in drawGL(...) functions
Definition: GUIVisualizationSettings.cpp:1631
GUIVisualizationSettings::getLinkColor
static const RGBColor & getLinkColor(const LinkState &ls)
map from LinkState to color constants
Definition: GUIVisualizationSettings.cpp:1566
GUIVisualizationColorSettings::chargingStation_sign
static const RGBColor chargingStation_sign
color for chargingStation sign
Definition: GUIVisualizationSettings.h:190
SUMO_TAG_VIEWSETTINGS_ADDITIONALS
Definition: SUMOXMLDefinitions.h:252
GUIVisualizationDetailSettings::vehicleTriangles
static const double vehicleTriangles
details for draw person as triangles
Definition: GUIVisualizationSettings.h:320
GUIVisualizationSettings::showSizeLegend
bool showSizeLegend
Information whether the size legend shall be drawn.
Definition: GUIVisualizationSettings.h:617
GUIVisualizationColorSettings::E3Exit
static const RGBColor E3Exit
color for Exits
Definition: GUIVisualizationSettings.h:220
GUIVisualizationSettings::cwaEdgeName
GUIVisualizationTextSettings cwaEdgeName
Definition: GUIVisualizationSettings.h:459
OutputDevice::openTag
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
Definition: OutputDevice.cpp:240
SUMO_color_ALLWAY_STOP
const RGBColor SUMO_color_ALLWAY_STOP(0, 0, 192)
GUIVisualizationSettings::poiType
GUIVisualizationTextSettings poiType
Definition: GUIVisualizationSettings.h:601
GUIVisualizationSettings::poiName
GUIVisualizationTextSettings poiName
Definition: GUIVisualizationSettings.h:598
GUIVisualizationSettings::showLaneDirection
bool showLaneDirection
Whether to show direction indicators for lanes.
Definition: GUIVisualizationSettings.h:471
GUIVisualizationSettings::drawLaneChangePreference
bool drawLaneChangePreference
Information whether the lane change preference shall be drawn.
Definition: GUIVisualizationSettings.h:499
SVC_MOPED
vehicle is a moped
Definition: SUMOVehicleClass.h:178
SUMO_TAG_VIEWSETTINGS_CONTAINERS
Definition: SUMOXMLDefinitions.h:250
GUIVisualizationSettings::addMode
int addMode
The additional structures visualization scheme.
Definition: GUIVisualizationSettings.h:578
GUIVisualizationSettings::showLane2Lane
bool showLane2Lane
Information whether lane-to-lane arrows shall be drawn.
Definition: GUIVisualizationSettings.h:563
LINKSTATE_TL_YELLOW_MAJOR
The link has yellow light, may pass.
Definition: SUMOXMLDefinitions.h:1142
GUIVisualizationDetailSettings::detectorText
static const double detectorText
details for detector texts
Definition: GUIVisualizationSettings.h:308
SVC_TAXI
vehicle is a taxi
Definition: SUMOVehicleClass.h:164
GUIVisualizationSettings::showBlinker
bool showBlinker
Information whether vehicle blinkers shall be drawn.
Definition: GUIVisualizationSettings.h:496
GUIVisualizationColorSettings::chargingStation_charge
static const RGBColor chargingStation_charge
color for chargingStation during charging
Definition: GUIVisualizationSettings.h:193
SVCAll
const SVCPermissions SVCAll
all VClasses are allowed
Definition: SUMOVehicleClass.cpp:147
GUIVisualizationColorSettings::busStop_sign
static const RGBColor busStop_sign
color for busStops signs
Definition: GUIVisualizationSettings.h:178
SUMO_color_TL_YELLOW_MINOR
const RGBColor SUMO_color_TL_YELLOW_MINOR(255, 255, 0)
OutputDevice::lf
void lf()
writes a line feed if applicable
Definition: OutputDevice.h:234
GUIVisualizationDetailSettings::stoppingPlaceText
static const double stoppingPlaceText
details for stopping place texts
Definition: GUIVisualizationSettings.h:302
gSelected
GUISelectedStorage gSelected
A global holder of selected objects.
Definition: GUIGlobalSelection.cpp:34
GUIVisualizationSizeSettings::operator!=
bool operator!=(const GUIVisualizationSizeSettings &other)
inequality comparator
Definition: GUIVisualizationSettings.cpp:234
GUIPropertyScheme::setAllowsNegativeValues
void setAllowsNegativeValues(bool value)
Definition: GUIPropertyScheme.h:166
GUIVisualizationColorSettings::ride
static const RGBColor ride
color for rides
Definition: GUIVisualizationSettings.h:247
GUIVisualizationTextSettings::size
double size
text size
Definition: GUIVisualizationSettings.h:72
GUIVisualizationColorSettings::parkingSpaceInnen
static const RGBColor parkingSpaceInnen
color for parkingArea innen
Definition: GUIVisualizationSettings.h:205
GUIVisualizationColorSettings::GUIVisualizationColorSettings
GUIVisualizationColorSettings()
constructor
Definition: GUIVisualizationSettings.cpp:254
GUIVisualizationSettings::personQuality
int personQuality
The quality of person drawing.
Definition: GUIVisualizationSettings.h:526
GUIPropertyScheme::addColor
int addColor(const T &color, const double threshold, const std::string &name="")
Definition: GUIPropertyScheme.h:81
GUIVisualizationColorSettings::selectedPersonPlanColor
RGBColor selectedPersonPlanColor
person plan selection color (Rides, Walks, personStops...)
Definition: GUIVisualizationSettings.h:160
LINKSTATE_ALLWAY_STOP
This is an uncontrolled, all-way stop link.
Definition: SUMOXMLDefinitions.h:1158
config.h
GUIVisualizationColorSettings::E1
static const RGBColor E1
color for E1 detectors
Definition: GUIVisualizationSettings.h:208
GUIVisualizationSettings::addSize
GUIVisualizationSizeSettings addSize
Definition: GUIVisualizationSettings.h:580
GUIVisualizationSettings::personValue
GUIVisualizationTextSettings personValue
Definition: GUIVisualizationSettings.h:532
GUIVisualizationSettings::personName
GUIVisualizationTextSettings personName
Definition: GUIVisualizationSettings.h:532
GUIVisualizationSettings::laneColorer
GUIColorer laneColorer
The lane colorer.
Definition: GUIVisualizationSettings.h:438
SVC_BUS
vehicle is a bus
Definition: SUMOVehicleClass.h:166
GUIVisualizationTextSettings::print
void print(OutputDevice &dev, const std::string &name) const
print values in output device
Definition: GUIVisualizationSettings.cpp:185
SUMO_color_TL_OFF_NOSIGNAL
const RGBColor SUMO_color_TL_OFF_NOSIGNAL(0, 255, 255)
GUIVisualizationSettings::containerColorer
GUIColorer containerColorer
The container colorer.
Definition: GUIVisualizationSettings.h:540
GUIVisualizationSettings::showLinkRules
bool showLinkRules
Information whether link rules (colored bars) shall be drawn.
Definition: GUIVisualizationSettings.h:453
GUIVisualizationColorSettings::stops
static const RGBColor stops
color for Stops
Definition: GUIVisualizationSettings.h:232
GUIVisualizationColorSettings::selectedCrossingColor
RGBColor selectedCrossingColor
crossings selection color
Definition: GUIVisualizationSettings.h:145
GUIVisualizationSettings::spreadSuperposed
bool spreadSuperposed
Whether to improve visualisation of superposed (rail) edges.
Definition: GUIVisualizationSettings.h:477
SUMO_color_DEADEND
const RGBColor SUMO_color_DEADEND(0, 0, 0)
GUIVisualizationWidthSettings::dottedContour
static const float dottedContour
width of dotted contours (note: must be float)
Definition: GUIVisualizationSettings.h:255
LINKSTATE_TL_RED
The link has red light (must brake)
Definition: SUMOXMLDefinitions.h:1138
RGBColor::GREEN
static const RGBColor GREEN
Definition: RGBColor.h:191
GUIVisualizationColorSettings::walk
static const RGBColor walk
color for walks
Definition: GUIVisualizationSettings.h:244
GUIVisualizationSettings::drawDetail
bool drawDetail(const double detail, const double exaggeration) const
check if details can be drawn for the given GUIVisualizationDetailSettings and current scale and exxa...
Definition: GUIVisualizationSettings.cpp:1621
GUIVisualizationSettings::drawBrakeGap
bool drawBrakeGap
Information whether the brake gap shall be drawn.
Definition: GUIVisualizationSettings.h:505
GUIVisualizationSettings::drawJunctionShape
bool drawJunctionShape
whether the shape of the junction should be drawn
Definition: GUIVisualizationSettings.h:565
GUIVisualizationDetailSettings::stopsDetails
static const double stopsDetails
details for stops
Definition: GUIVisualizationSettings.h:314
GUIVisualizationColorSettings
struct for color settings
Definition: GUIVisualizationSettings.h:118
SUMO_ATTR_NAME
Definition: SUMOXMLDefinitions.h:381
GUIVisualizationDetailSettings::connectionsDemandMode
static const double connectionsDemandMode
draw connections in demand mode
Definition: GUIVisualizationSettings.h:281
GUIVisualizationSettings::poiColorer
GUIColorer poiColorer
The POI colorer.
Definition: GUIVisualizationSettings.h:592
GUIVisualizationColorSettings::parkingSpace
static const RGBColor parkingSpace
color for parkingArea sign
Definition: GUIVisualizationSettings.h:202
GUIVisualizationSettings
Stores the information about how to visualize structures.
Definition: GUIVisualizationSettings.h:346
GUIVisualizationColorSettings::vehicleTrips
static const RGBColor vehicleTrips
color for vehicle trips
Definition: GUIVisualizationSettings.h:235
GUIVisualizationColorSettings::personStops
static const RGBColor personStops
color for personStops
Definition: GUIVisualizationSettings.h:238
GUIVisualizationSettings::operator==
bool operator==(const GUIVisualizationSettings &vs2)
Comparison operator.
Definition: GUIVisualizationSettings.cpp:1328
GUIVisualizationColorSettings::selectedVehicleColor
RGBColor selectedVehicleColor
vehicle selection color
Definition: GUIVisualizationSettings.h:154
GUIVisualizationColorSettings::selectedLaneColor
RGBColor selectedLaneColor
lane selection color
Definition: GUIVisualizationSettings.h:136
SUMO_TAG_VIEWSETTINGS_EDGES
Definition: SUMOXMLDefinitions.h:247
GUIVisualizationSettings::edgeName
GUIVisualizationTextSettings edgeName
Definition: GUIVisualizationSettings.h:459
GUIVisualizationSettings::edgeValue
GUIVisualizationTextSettings edgeValue
Definition: GUIVisualizationSettings.h:459
GUIVisualizationSettings::edgeData
std::string edgeData
key for coloring by edgeData
Definition: GUIVisualizationSettings.h:483
GUIPropertyScheme
Definition: GUIPropertyScheme.h:46
GUIPropertySchemeStorage::getActive
int getActive() const
Definition: GUIPropertySchemeStorage.h:76
GUIVisualizationSettings::showBTRange
bool showBTRange
Information whether the communication range shall be drawn.
Definition: GUIVisualizationSettings.h:508
GUIVisualizationSizeSettings::getExaggeration
double getExaggeration(const GUIVisualizationSettings &s, const GUIGlObject *o, double factor=20) const
return the drawing size including exaggeration and constantSize values
Definition: GUIVisualizationSettings.cpp:212
SUMO_TAG_VIEWSETTINGS_POLYS
Definition: SUMOXMLDefinitions.h:254
GUIVisualizationWidthSettings::dottedContourSegmentLenght
static const double dottedContourSegmentLenght
lenght of dotted contour segments
Definition: GUIVisualizationSettings.h:258
SUMO_color_TL_RED
const RGBColor SUMO_color_TL_RED(255, 0, 0)
RGBColor::WHITE
static const RGBColor WHITE
Definition: RGBColor.h:197
GUIVisualizationDetailSettings::personCircles
static const double personCircles
details for draw person as circles
Definition: GUIVisualizationSettings.h:332
SUMO_color_TL_GREEN_MAJOR
const RGBColor SUMO_color_TL_GREEN_MAJOR(0, 255, 0)
GUIVisualizationSizeSettings::exaggeration
double exaggeration
The size exaggeration (upscale)
Definition: GUIVisualizationSettings.h:107
GUIVisualizationTextSettings::operator==
bool operator==(const GUIVisualizationTextSettings &other)
equality comparator
Definition: GUIVisualizationSettings.cpp:165
GUIVisualizationSettings::drawForSelecting
bool drawForSelecting
whether drawing is performed for the purpose of selecting objects
Definition: GUIVisualizationSettings.h:635
GUIVisualizationWidthSettings::walk
static const double walk
width for walks
Definition: GUIVisualizationSettings.h:270
LINKSTATE_STOP
This is an uncontrolled, minor link, has to stop.
Definition: SUMOXMLDefinitions.h:1156
GUISelectedStorage::isSelected
bool isSelected(GUIGlObjectType type, GUIGlID id)
Returns the information whether the object with the given type and id is selected.
Definition: GUISelectedStorage.cpp:95