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-2018 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>
30 #include "GUIPropertyScheme.h"
31 
32 // ===========================================================================
33 // static members
34 // ===========================================================================
36 
37 /* -------------------------------------------------------------------------
38  * color constants for link states
39  * ----------------------------------------------------------------------- */
40 const RGBColor SUMO_color_TL_GREEN_MAJOR(0, 255, 0);
41 const RGBColor SUMO_color_TL_GREEN_MINOR(0, 179, 0);
42 const RGBColor SUMO_color_TL_RED(255, 0, 0);
43 const RGBColor SUMO_color_TL_REDYELLOW(255, 128, 0);
44 const RGBColor SUMO_color_TL_YELLOW_MAJOR(255, 255, 0);
45 const RGBColor SUMO_color_TL_YELLOW_MINOR(255, 255, 0);
46 const RGBColor SUMO_color_TL_OFF_BLINKING(128, 64, 0);
47 const RGBColor SUMO_color_TL_OFF_NOSIGNAL(0, 255, 255);
48 const RGBColor SUMO_color_MAJOR(255, 255, 255);
49 const RGBColor SUMO_color_MINOR(51, 51, 51);
50 const RGBColor SUMO_color_EQUAL(128, 128, 128);
51 const RGBColor SUMO_color_STOP(128, 0, 128);
52 const RGBColor SUMO_color_ALLWAY_STOP(0, 0, 192);
53 const RGBColor SUMO_color_ZIPPER(192, 128, 64);
54 const RGBColor SUMO_color_DEADEND(0, 0, 0);
55 
56 // -------------------------------------------------------------------------
57 // color constants for other objects
58 // -------------------------------------------------------------------------
59 
72 
73 const std::string GUIVisualizationSettings::SCHEME_NAME_EDGE_PARAM_NUMERICAL("by param (numerical, streetwise)");
74 const std::string GUIVisualizationSettings::SCHEME_NAME_LANE_PARAM_NUMERICAL("by param (numerical, lanewise)");
75 
76 // ===========================================================================
77 // member method definitions
78 // ===========================================================================
80  name(""),
81  netedit(_netedit),
82  angle(0),
83  dither(false),
84  backgroundColor(RGBColor::WHITE),
85  showGrid(false), gridXSize(100), gridYSize(100),
86  laneShowBorders(false), showBikeMarkings(true), showLinkDecals(true),
87  showLinkRules(true), showRails(true),
88  edgeName(false, 50, RGBColor(255, 128, 0, 255)),
89  internalEdgeName(false, 40, RGBColor(128, 64, 0, 255)),
90  cwaEdgeName(false, 50, RGBColor::MAGENTA),
91  streetName(false, 55, RGBColor::YELLOW),
92  edgeValue(false, 100, RGBColor::CYAN),
93  hideConnectors(false),
94  laneWidthExaggeration(1),
95  laneMinSize(0),
96  showLaneDirection(false),
97  showSublanes(true),
98  spreadSuperposed(false),
99  edgeParam("EDGE_KEY"),
100  laneParam("LANE_KEY"),
101  vehicleQuality(0), showBlinker(true),
102  drawLaneChangePreference(false), drawMinGap(false),
103  showBTRange(false), vehicleSize(1),
104  vehicleName(false, 50, RGBColor(204, 153, 0, 255)),
105  vehicleValue(false, 80, RGBColor::CYAN),
106  personQuality(0),
107  personSize(1),
108  personName(false, 50, RGBColor(0, 153, 204, 255)),
109  personValue(false, 80, RGBColor::CYAN),
110  containerQuality(0),
111  containerSize(1),
112  containerName(false, 50, RGBColor(0, 153, 204, 255)),
113  drawLinkTLIndex(false, 50, RGBColor(128, 128, 255, 255)),
114  drawLinkJunctionIndex(false, 50, RGBColor(128, 128, 255, 255)),
115  junctionName(false, 50, RGBColor(0, 255, 128, 255)),
116  internalJunctionName(false, 50, RGBColor(0, 204, 128, 255)),
117  showLane2Lane(false),
118  drawJunctionShape(true),
119  drawCrossingsAndWalkingareas(true),
120  junctionSize(1),
121  addMode(0),
122  addSize(1),
123  addName(false, 50, RGBColor(255, 0, 128, 255)),
124  addFullName(false, 50, RGBColor(255, 0, 128, 255)),
125  poiSize(0), poiName(false, 50, RGBColor(255, 0, 128, 255)),
126  poiType(false, 50, RGBColor(255, 0, 128, 255)),
127  polySize(0), polyName(false, 50, RGBColor(255, 0, 128, 255)),
128  polyType(false, 50, RGBColor(255, 0, 128, 255)),
129  showSizeLegend(true),
130  gaming(false),
131  selectionColor(0, 0, 204, 255),
132  selectedEdgeColor(0, 0, 204, 255),
133  selectedLaneColor(0, 0, 128, 255),
134  selectedConnectionColor(0, 0, 100, 255),
135  selectedAdditionalColor(0, 0, 150, 255),
136  selectionScale(1.),
137  drawForSelecting(false) {
138 
139  if (netedit) {
141  } else {
143  }
144 }
145 
146 
147 void
150  GUIColorScheme scheme = GUIColorScheme("uniform", RGBColor::BLACK, "road", true);
151  scheme.addColor(RGBColor::GREY, 1, "sidewalk");
152  scheme.addColor(RGBColor(192, 66, 44), 2, "bike lane");
153  scheme.addColor(RGBColor(0, 0, 0, 0), 3, "green verge");
154  scheme.addColor(RGBColor(150, 200, 200), 4, "waterway");
155  scheme.addColor(RGBColor::BLACK, 5, "railway");
156  scheme.addColor(RGBColor(92, 92, 92), 6, "no passenger"); // paths, service roads etc
157  scheme.addColor(RGBColor::RED, 7, "closed"); // road closing
158  scheme.addColor(RGBColor::GREEN, 8, "connector"); // macro-connector
159  laneColorer.addScheme(scheme);
160  scheme = GUIColorScheme("by selection (lane-/streetwise)", RGBColor(128, 128, 128, 255), "unselected", true);
161  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
162  laneColorer.addScheme(scheme);
163  scheme = GUIColorScheme("by permission code", RGBColor(240, 240, 240), "nobody");
164  scheme.addColor(RGBColor(10, 10, 10), (double)SVC_PASSENGER, "passenger");
165  scheme.addColor(RGBColor(128, 128, 128), (double)SVC_PEDESTRIAN, "pedestrian");
166  scheme.addColor(RGBColor(80, 80, 80), (double)(SVC_PEDESTRIAN | SVC_DELIVERY), "pedestrian_delivery");
167  scheme.addColor(RGBColor(192, 66, 44), (double)SVC_BICYCLE, "bicycle");
168  scheme.addColor(RGBColor(40, 100, 40), (double)SVC_BUS, "bus");
169  scheme.addColor(RGBColor(166, 147, 26), (double)SVC_TAXI, "taxi");
170  scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~SVC_NON_ROAD), "normal_road");
171  scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_NON_ROAD)), "disallow_pedestrian");
172  scheme.addColor(RGBColor(255, 206, 0), (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_BICYCLE | SVC_MOPED | SVC_NON_ROAD)), "motorway");
173  scheme.addColor(RGBColor(150, 200, 200), (double)SVC_SHIP, "waterway");
174  scheme.addColor(RGBColor::GREEN, (double)SVCAll, "all");
175  laneColorer.addScheme(scheme);
176  // ... traffic states ...
177  scheme = GUIColorScheme("by allowed speed (lanewise)", RGBColor::RED);
178  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
179  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
180  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
181  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
182  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
183  laneColorer.addScheme(scheme);
184  scheme = GUIColorScheme("by current occupancy (lanewise, brutto)", RGBColor(235, 235, 235));
185  scheme.addColor(RGBColor::GREEN, 0.25);
186  scheme.addColor(RGBColor::YELLOW, 0.5);
187  scheme.addColor(RGBColor::ORANGE, 0.75);
188  scheme.addColor(RGBColor::RED, 1.0);
189  laneColorer.addScheme(scheme);
190  scheme = GUIColorScheme("by current occupancy (lanewise, netto)", RGBColor(235, 235, 235));
191  scheme.addColor(RGBColor::GREEN, 0.25);
192  scheme.addColor(RGBColor::YELLOW, 0.5);
193  scheme.addColor(RGBColor::ORANGE, 0.75);
194  scheme.addColor(RGBColor::RED, 1.0);
195  laneColorer.addScheme(scheme);
196  scheme = GUIColorScheme("by first vehicle waiting time (lanewise)", RGBColor(235, 235, 235));
197  scheme.addColor(RGBColor::CYAN, (double)30);
198  scheme.addColor(RGBColor::GREEN, (double)100);
199  scheme.addColor(RGBColor::YELLOW, (double)200);
200  scheme.addColor(RGBColor::RED, (double)300);
201  laneColorer.addScheme(scheme);
202  scheme = GUIColorScheme("by lane number (streetwise)", RGBColor::RED);
203  scheme.addColor(RGBColor::BLUE, (double)5);
204  laneColorer.addScheme(scheme);
205  // ... emissions ...
206  scheme = GUIColorScheme("by CO2 emissions", RGBColor::GREEN);
207  scheme.addColor(RGBColor::RED, (double)(10. / 7.5 / 5.));
208  laneColorer.addScheme(scheme);
209  scheme = GUIColorScheme("by CO emissions", RGBColor::GREEN);
210  scheme.addColor(RGBColor::RED, (double)(0.05 / 7.5 / 2.));
211  laneColorer.addScheme(scheme);
212  scheme = GUIColorScheme("by PMx emissions", RGBColor::GREEN);
213  scheme.addColor(RGBColor::RED, (double)(.005 / 7.5 / 5.));
214  laneColorer.addScheme(scheme);
215  scheme = GUIColorScheme("by NOx emissions", RGBColor::GREEN);
216  scheme.addColor(RGBColor::RED, (double)(.125 / 7.5 / 5.));
217  laneColorer.addScheme(scheme);
218  scheme = GUIColorScheme("by HC emissions", RGBColor::GREEN);
219  scheme.addColor(RGBColor::RED, (double)(.02 / 7.5 / 4.));
220  laneColorer.addScheme(scheme);
221  scheme = GUIColorScheme("by fuel consumption", RGBColor::GREEN);
222  scheme.addColor(RGBColor::RED, (double)(.005 / 7.5 * 100.));
223  laneColorer.addScheme(scheme);
224  scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREEN);
225  scheme.addColor(RGBColor::RED, (double)100);
226  laneColorer.addScheme(scheme);
227  // ... weights (experimental) ...
228  scheme = GUIColorScheme("by global travel time", RGBColor::GREEN);
229  scheme.addColor(RGBColor::RED, (double)100);
230  scheme.setAllowsNegativeValues(true);
231  laneColorer.addScheme(scheme);
232  scheme = GUIColorScheme("by global speed percentage", RGBColor::RED);
233  scheme.addColor(RGBColor::YELLOW, (double)50);
234  scheme.addColor(RGBColor::GREEN, (double)100);
235  scheme.setAllowsNegativeValues(true);
236  laneColorer.addScheme(scheme);
237  scheme = GUIColorScheme("by given length/geometrical length", RGBColor::BLACK);
238  scheme.addColor(RGBColor::RED, 0.25);
239  scheme.addColor(RGBColor::YELLOW, 0.5);
240  scheme.addColor(RGBColor(179, 179, 179, 255), (double)1.0);
241  scheme.addColor(RGBColor::GREEN, (double)2.0);
242  scheme.addColor(RGBColor::BLUE, (double)4.0);
243  laneColorer.addScheme(scheme);
244  laneColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
245  scheme = GUIColorScheme("by loaded weight", RGBColor::GREEN);
246  scheme.addColor(RGBColor::RED, (double)100);
247  scheme.setAllowsNegativeValues(true);
248  laneColorer.addScheme(scheme);
249  scheme = GUIColorScheme("by priority", RGBColor::YELLOW);
250  scheme.addColor(RGBColor::RED, (double) - 20);
251  scheme.addColor(RGBColor::GREEN, (double)20);
252  scheme.setAllowsNegativeValues(true);
253  laneColorer.addScheme(scheme);
254  scheme = GUIColorScheme("by height at start", RGBColor::GREY);
255  scheme.addColor(RGBColor::BLUE, (double) - 10);
256  scheme.addColor(RGBColor::RED, (double)10);
257  scheme.addColor(RGBColor::YELLOW, (double)50);
258  scheme.addColor(RGBColor::GREEN, (double)100);
259  scheme.addColor(RGBColor::MAGENTA, (double)200);
260  scheme.setAllowsNegativeValues(true);
261  laneColorer.addScheme(scheme);
262  scheme = GUIColorScheme("by height at geometry-segment start", RGBColor::GREY);
263  scheme.addColor(RGBColor::BLUE, (double) - 10);
264  scheme.addColor(RGBColor::RED, (double)10);
265  scheme.addColor(RGBColor::YELLOW, (double)50);
266  scheme.addColor(RGBColor::GREEN, (double)100);
267  scheme.addColor(RGBColor::MAGENTA, (double)200);
268  scheme.setAllowsNegativeValues(true);
269  laneColorer.addScheme(scheme);
270  scheme = GUIColorScheme("by inclination", RGBColor::GREY);
271  scheme.addColor(RGBColor::YELLOW, (double) .1);
272  scheme.addColor(RGBColor::RED, (double) .3);
273  scheme.addColor(RGBColor::GREEN, (double) - .1);
274  scheme.addColor(RGBColor::BLUE, (double) - .3);
275  scheme.setAllowsNegativeValues(true);
276  laneColorer.addScheme(scheme);
277  scheme = GUIColorScheme("by geometry-segment inclination", RGBColor::GREY);
278  scheme.addColor(RGBColor::YELLOW, (double) .1);
279  scheme.addColor(RGBColor::RED, (double) .3);
280  scheme.addColor(RGBColor::GREEN, (double) - .1);
281  scheme.addColor(RGBColor::BLUE, (double) - .3);
282  scheme.setAllowsNegativeValues(true);
283  laneColorer.addScheme(scheme);
284  scheme = GUIColorScheme("by average speed", RGBColor::RED);
285  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
286  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
287  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
288  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
289  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
290  laneColorer.addScheme(scheme);
291  scheme = GUIColorScheme("by average relative speed ", RGBColor::RED);
292  scheme.addColor(RGBColor::YELLOW, (double)(0.25));
293  scheme.addColor(RGBColor::GREEN, (double)(0.5));
294  scheme.addColor(RGBColor::CYAN, (double)(0.75));
295  scheme.addColor(RGBColor::BLUE, (double)(1));
296  scheme.addColor(RGBColor::MAGENTA, (double)(1.25));
297  laneColorer.addScheme(scheme);
298  scheme = GUIColorScheme("by routing device assumed speed ", RGBColor::RED);
299  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
300  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
301  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
302  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
303  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
304  laneColorer.addScheme(scheme);
305  scheme = GUIColorScheme("by electricity consumption", RGBColor::GREEN);
306  scheme.addColor(RGBColor::RED, (double)(1 / 7.5 / 5.));
307  laneColorer.addScheme(scheme);
308  scheme = GUIColorScheme("by insertion-backlog (streetwise)", RGBColor(204, 204, 204));
309  scheme.addColor(RGBColor::GREEN, (double)1);
310  scheme.addColor(RGBColor::YELLOW, (double)10);
311  scheme.addColor(RGBColor::RED, (double)100);
312  laneColorer.addScheme(scheme);
313  scheme = GUIColorScheme("by TAZ (streetwise)", RGBColor(204, 204, 204), "no TAZ", true);
314  laneColorer.addScheme(scheme);
315  scheme = GUIColorScheme(SCHEME_NAME_EDGE_PARAM_NUMERICAL, RGBColor(204, 204, 204));
316  scheme.setAllowsNegativeValues(true);
317  laneColorer.addScheme(scheme);
318  scheme = GUIColorScheme(SCHEME_NAME_LANE_PARAM_NUMERICAL, RGBColor(204, 204, 204));
319  scheme.setAllowsNegativeValues(true);
320  laneColorer.addScheme(scheme);
321 
322 
324  vehicleColorer.addScheme(GUIColorScheme("given vehicle/type/route color", RGBColor::YELLOW, "", true));
326  vehicleColorer.addScheme(GUIColorScheme("given/assigned vehicle color", RGBColor::YELLOW, "", true));
327  vehicleColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
328  vehicleColorer.addScheme(GUIColorScheme("given/assigned route color", RGBColor::YELLOW, "", true));
329  vehicleColorer.addScheme(GUIColorScheme("depart position as HSV", RGBColor::YELLOW, "", true));
330  vehicleColorer.addScheme(GUIColorScheme("arrival position as HSV", RGBColor::YELLOW, "", true));
331  vehicleColorer.addScheme(GUIColorScheme("direction/distance as HSV", RGBColor::YELLOW, "", true));
332  scheme = GUIColorScheme("by speed", RGBColor::RED);
333  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
334  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
335  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
336  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
337  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
338  vehicleColorer.addScheme(scheme);
339  scheme = GUIColorScheme("by action step", RGBColor::GREY, "no action", true);
340  scheme.addColor(RGBColor(0, 255, 0, 255), 1., "action in next step");
341  scheme.addColor(RGBColor(80, 160, 80, 255), 2., "had action step");
342  vehicleColorer.addScheme(scheme);
343  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE);
344  scheme.addColor(RGBColor::CYAN, (double)30);
345  scheme.addColor(RGBColor::GREEN, (double)100);
346  scheme.addColor(RGBColor::YELLOW, (double)200);
347  scheme.addColor(RGBColor::RED, (double)300);
348  vehicleColorer.addScheme(scheme);
349  scheme = GUIColorScheme("by accumulated waiting time", RGBColor::BLUE);
350  scheme.addColor(RGBColor::CYAN, (double)25);
351  scheme.addColor(RGBColor::GREEN, (double)50);
352  scheme.addColor(RGBColor::YELLOW, (double)75);
353  scheme.addColor(RGBColor::RED, (double)100);
354  vehicleColorer.addScheme(scheme);
355  scheme = GUIColorScheme("by time since lane change", RGBColor(179, 179, 179, 255), "0");
356  scheme.addColor(RGBColor(189, 189, 179, 255), -180);
357  scheme.addColor(RGBColor(255, 255, 0, 255), -20);
358  scheme.addColor(RGBColor(255, 0, 0, 255), -0.001);
359  scheme.addColor(RGBColor(0, 0, 255, 255), 0.001);
360  scheme.addColor(RGBColor(0, 255, 255, 255), 20);
361  scheme.addColor(RGBColor(179, 189, 189, 255), 180);
362  scheme.setAllowsNegativeValues(true);
363  vehicleColorer.addScheme(scheme);
364  scheme = GUIColorScheme("by max speed", RGBColor::RED);
365  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
366  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
367  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
368  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
369  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
370  vehicleColorer.addScheme(scheme);
371  // ... emissions ...
372  scheme = GUIColorScheme("by CO2 emissions", RGBColor::GREEN);
373  scheme.addColor(RGBColor::RED, (double)5.);
374  vehicleColorer.addScheme(scheme);
375  scheme = GUIColorScheme("by CO emissions", RGBColor::GREEN);
376  scheme.addColor(RGBColor::RED, 0.05);
377  vehicleColorer.addScheme(scheme);
378  scheme = GUIColorScheme("by PMx emissions", RGBColor::GREEN);
379  scheme.addColor(RGBColor::RED, (double).005);
380  vehicleColorer.addScheme(scheme);
381  scheme = GUIColorScheme("by NOx emissions", RGBColor::GREEN);
382  scheme.addColor(RGBColor::RED, (double).125);
383  vehicleColorer.addScheme(scheme);
384  scheme = GUIColorScheme("by HC emissions", RGBColor::GREEN);
385  scheme.addColor(RGBColor::RED, (double).02);
386  vehicleColorer.addScheme(scheme);
387  scheme = GUIColorScheme("by fuel consumption", RGBColor::GREEN);
388  scheme.addColor(RGBColor::RED, (double).005);
389  vehicleColorer.addScheme(scheme);
390  scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREEN);
391  scheme.addColor(RGBColor::RED, (double)100.);
392  vehicleColorer.addScheme(scheme);
393  scheme = GUIColorScheme("by reroute number", RGBColor::RED);
394  scheme.addColor(RGBColor::YELLOW, (double)1.);
395  scheme.addColor(RGBColor::WHITE, (double)10.);
396  vehicleColorer.addScheme(scheme);
397  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
398  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
399  vehicleColorer.addScheme(scheme);
400  scheme = GUIColorScheme("by offset from best lane", RGBColor(179, 179, 179, 255), "0");
401  scheme.addColor(RGBColor(255, 0, 255, 255), -100, "opposite lane");
402  scheme.addColor(RGBColor(255, 0, 0, 255), -3, "-3");
403  scheme.addColor(RGBColor(255, 255, 0, 255), -1, "-1");
404  scheme.addColor(RGBColor(0, 255, 255, 255), 1, "1");
405  scheme.addColor(RGBColor(0, 0, 255, 255), 3, "3");
406  scheme.setAllowsNegativeValues(true);
407  vehicleColorer.addScheme(scheme);
408  scheme = GUIColorScheme("by acceleration", RGBColor(179, 179, 179, 255), "0");
409  scheme.addColor(RGBColor(64, 0, 0, 255), -9.0);
410  scheme.addColor(RGBColor(255, 0, 0, 255), -4.5 /* -SUMOVTypeParameter::getDefaultDecel() */);
411  scheme.addColor(RGBColor(255, 255, 0, 255), -0.1);
412  scheme.addColor(RGBColor(0, 255, 255, 255), 0.1);
413  scheme.addColor(RGBColor(0, 0, 255, 255), 2.6 /* SUMOVTypeParameter::getDefaultAccel() */);
414  scheme.addColor(RGBColor(255, 0, 255, 255), 5.2);
415  scheme.setAllowsNegativeValues(true);
416  vehicleColorer.addScheme(scheme);
417  scheme = GUIColorScheme("by time gap on lane", RGBColor(255, 255, 0, 255), "0");
418  scheme.addColor(RGBColor(179, 179, 179, 255), -1);
419  scheme.addColor(RGBColor(0, 255, 255, 255), 1);
420  scheme.addColor(RGBColor(0, 0, 255, 255), 2);
421  scheme.setAllowsNegativeValues(true);
422  vehicleColorer.addScheme(scheme);
423  scheme = GUIColorScheme("by depart delay", RGBColor::BLUE);
424  scheme.addColor(RGBColor::CYAN, (double)30);
425  scheme.addColor(RGBColor::GREEN, (double)100);
426  scheme.addColor(RGBColor::YELLOW, (double)200);
427  scheme.addColor(RGBColor::RED, (double)300);
428  vehicleColorer.addScheme(scheme);
429  scheme = GUIColorScheme("by electricity consumption", RGBColor::GREEN);
430  scheme.addColor(RGBColor::RED, (double)5);
431  vehicleColorer.addScheme(scheme);
432  scheme = GUIColorScheme("by time loss", RGBColor::BLUE);
433  scheme.addColor(RGBColor::CYAN, (double)10);
434  scheme.addColor(RGBColor::GREEN, (double)60);
435  scheme.addColor(RGBColor::YELLOW, (double)180);
436  scheme.addColor(RGBColor::RED, (double)900);
437  vehicleColorer.addScheme(scheme);
439 
441  personColorer.addScheme(GUIColorScheme("given person/type color", RGBColor::BLUE, "", true));
442  personColorer.addScheme(GUIColorScheme("uniform", RGBColor::BLUE, "", true));
443  personColorer.addScheme(GUIColorScheme("given/assigned person color", RGBColor::BLUE, "", true));
444  personColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::BLUE, "", true));
445  scheme = GUIColorScheme("by speed", RGBColor::RED);
446  scheme.addColor(RGBColor::YELLOW, (double)(2.5 / 3.6));
447  scheme.addColor(RGBColor::GREEN, (double)(5 / 3.6));
448  scheme.addColor(RGBColor::BLUE, (double)(10 / 3.6));
449  personColorer.addScheme(scheme);
450  scheme = GUIColorScheme("by mode", RGBColor::GREY, "waiting for insertion", true);
451  scheme.addColor(RGBColor::RED, (double)(1), "stopped");
452  scheme.addColor(RGBColor::GREEN, (double)(2), "walking");
453  scheme.addColor(RGBColor::BLUE, (double)(3), "riding");
454  scheme.addColor(RGBColor::CYAN, (double)(4), "accessing trainStop");
455  scheme.addColor(RGBColor::YELLOW, (double)(5), "waiting for ride");
456  personColorer.addScheme(scheme);
457  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE);
458  scheme.addColor(RGBColor::CYAN, (double)30);
459  scheme.addColor(RGBColor::GREEN, (double)100);
460  scheme.addColor(RGBColor::YELLOW, (double)200);
461  scheme.addColor(RGBColor::RED, (double)300);
462  personColorer.addScheme(scheme);
463  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
464  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
465  personColorer.addScheme(scheme);
466  personColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
468 
470  containerColorer.addScheme(GUIColorScheme("given container/type color", RGBColor::YELLOW, "", true));
472  containerColorer.addScheme(GUIColorScheme("given/assigned container color", RGBColor::YELLOW, "", true));
473  containerColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
474  scheme = GUIColorScheme("by speed", RGBColor::RED);
475  scheme.addColor(RGBColor::YELLOW, (double)(2.5 / 3.6));
476  scheme.addColor(RGBColor::GREEN, (double)(5 / 3.6));
477  scheme.addColor(RGBColor::BLUE, (double)(10 / 3.6));
478  containerColorer.addScheme(scheme);
479  scheme = GUIColorScheme("by mode", RGBColor::GREY, "waiting for insertion", true);
480  scheme.addColor(RGBColor::RED, (double)(1), "stopped");
481  scheme.addColor(RGBColor::GREEN, (double)(2), "tranship"); // walking
482  scheme.addColor(RGBColor::BLUE, (double)(3), "transport");
483  scheme.addColor(RGBColor::CYAN, (double)(4), "accessing trainStop");
484  scheme.addColor(RGBColor::YELLOW, (double)(5), "waiting for transport");
485  containerColorer.addScheme(scheme);
486  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE);
487  scheme.addColor(RGBColor::CYAN, (double)30);
488  scheme.addColor(RGBColor::GREEN, (double)100);
489  scheme.addColor(RGBColor::YELLOW, (double)200);
490  scheme.addColor(RGBColor::RED, (double)300);
491  containerColorer.addScheme(scheme);
492  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
493  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
494  containerColorer.addScheme(scheme);
496 
498  scheme = GUIColorScheme("uniform", RGBColor::BLACK, "", true);
499  scheme.addColor(RGBColor(150, 200, 200), 1, "waterway");
500  junctionColorer.addScheme(scheme);
501  scheme = GUIColorScheme("by selection", RGBColor(128, 128, 128, 255), "unselected", true);
502  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
503  junctionColorer.addScheme(scheme);
504  scheme = GUIColorScheme("by type", RGBColor::GREEN, "traffic_light", true);
505  scheme.addColor(RGBColor(0, 128, 0), 1, "traffic_light_unregulated");
506  scheme.addColor(RGBColor::YELLOW, 2, "priority");
507  scheme.addColor(RGBColor::RED, 3, "priority_stop");
508  scheme.addColor(RGBColor::BLUE, 4, "right_before_left");
509  scheme.addColor(RGBColor::CYAN, 5, "allway_stop");
510  scheme.addColor(RGBColor::GREY, 6, "district");
511  scheme.addColor(RGBColor::MAGENTA, 7, "unregulated");
512  scheme.addColor(RGBColor::BLACK, 8, "dead_end");
513  scheme.addColor(RGBColor::ORANGE, 9, "rail_signal");
514  scheme.addColor(RGBColor(192, 128, 64), 10, "zipper"); // light brown
515  scheme.addColor(RGBColor(192, 255, 192), 11, "traffic_light_right_on_red"); // light green
516  scheme.addColor(RGBColor(128, 0, 128), 12, "rail_crossing"); // dark purple
517  junctionColorer.addScheme(scheme);
518  scheme = GUIColorScheme("by height", RGBColor::GREY);
519  scheme.addColor(RGBColor::BLUE, (double) - 10);
520  scheme.addColor(RGBColor::RED, (double)10);
521  scheme.addColor(RGBColor::YELLOW, (double)50);
522  scheme.addColor(RGBColor::GREEN, (double)100);
523  scheme.addColor(RGBColor::MAGENTA, (double)200);
524  scheme.setAllowsNegativeValues(true);
525  junctionColorer.addScheme(scheme);
526 
528  poiColorer.addScheme(GUIColorScheme("given POI color", RGBColor::RED, "", true));
529  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
530  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
531  poiColorer.addScheme(scheme);
532  poiColorer.addScheme(GUIColorScheme("uniform", RGBColor::RED, "", true));
533 
535  polyColorer.addScheme(GUIColorScheme("given polygon color", RGBColor::ORANGE, "", true));
536  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
537  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
538  polyColorer.addScheme(scheme);
539  polyColorer.addScheme(GUIColorScheme("uniform", RGBColor::ORANGE, "", true));
540 
542  {
543  GUIScaleScheme scheme = GUIScaleScheme("default", 1, "uniform", true);
544  laneScaler.addScheme(scheme);
545  scheme = GUIScaleScheme("by selection (lane-/streetwise)", 0.5, "unselected", true);
546  scheme.addColor(5, 1, "selected");
547  laneScaler.addScheme(scheme);
548  // ... traffic states ...
549  scheme = GUIScaleScheme("by allowed speed (lanewise)", 0);
550  scheme.addColor(10, (double)(150.0 / 3.6));
551  laneScaler.addScheme(scheme);
552  scheme = GUIScaleScheme("by current occupancy (lanewise, brutto)", 0);
553  scheme.addColor(10, 0.95);
554  laneScaler.addScheme(scheme);
555  scheme = GUIScaleScheme("by current occupancy (lanewise, netto)", 0);
556  scheme.addColor(10, 0.95);
557  laneScaler.addScheme(scheme);
558  scheme = GUIScaleScheme("by first vehicle waiting time (lanewise)", 0);
559  scheme.addColor(10, (double)300);
560  laneScaler.addScheme(scheme);
561  scheme = GUIScaleScheme("by lane number (streetwise)", 1);
562  scheme.addColor(10, (double)5);
563  laneScaler.addScheme(scheme);
564  // ... emissions ...
565  scheme = GUIScaleScheme("by CO2 emissions", 0);
566  scheme.addColor(10, (double)(10. / 7.5 / 5.));
567  laneScaler.addScheme(scheme);
568  scheme = GUIScaleScheme("by CO emissions", 0);
569  scheme.addColor(10, (double)(0.05 / 7.5 / 2.));
570  laneScaler.addScheme(scheme);
571  scheme = GUIScaleScheme("by PMx emissions", 0);
572  scheme.addColor(10, (double)(.005 / 7.5 / 5.));
573  laneScaler.addScheme(scheme);
574  scheme = GUIScaleScheme("by NOx emissions", 0);
575  scheme.addColor(10, (double)(.125 / 7.5 / 5.));
576  laneScaler.addScheme(scheme);
577  scheme = GUIScaleScheme("by HC emissions", 0);
578  scheme.addColor(10, (double)(.02 / 7.5 / 4.));
579  laneScaler.addScheme(scheme);
580  scheme = GUIScaleScheme("by fuel consumption", 0);
581  scheme.addColor(10, (double)(.005 / 7.5 * 100.));
582  laneScaler.addScheme(scheme);
583  scheme = GUIScaleScheme("by noise emissions (Harmonoise)", 0);
584  scheme.addColor(10, (double)100);
585  laneScaler.addScheme(scheme);
586  // ... weights (experimental) ...
587  scheme = GUIScaleScheme("by global travel time", 0);
588  scheme.addColor(10, (double)100);
589  scheme.setAllowsNegativeValues(true);
590  laneScaler.addScheme(scheme);
591  scheme = GUIScaleScheme("by global speed percentage", 0);
592  scheme.addColor(10, (double)100);
593  scheme.setAllowsNegativeValues(true);
594  laneScaler.addScheme(scheme);
595  scheme = GUIScaleScheme("by given length/geometrical length", 0);
596  scheme.addColor(10, (double)10.0);
597  laneScaler.addScheme(scheme);
598  scheme = GUIScaleScheme("by loaded weight", 0);
599  scheme.addColor(-1000, (double) - 1000);
600  scheme.addColor(1000, (double)1000);
601  scheme.setAllowsNegativeValues(true);
602  laneScaler.addScheme(scheme);
603  scheme = GUIScaleScheme("by priority", 1);
604  scheme.addColor(0.5, (double) - 20);
605  scheme.addColor(5, (double)20);
606  scheme.setAllowsNegativeValues(true);
607  laneScaler.addScheme(scheme);
608  scheme = GUIScaleScheme("by average speed", 0);
609  scheme.addColor(10, (double)(150.0 / 3.6));
610  laneScaler.addScheme(scheme);
611  scheme = GUIScaleScheme("by average relative speed", 0);
612  scheme.addColor(0.5, (double)(0.5));
613  scheme.addColor(2, (double)(1));
614  scheme.addColor(10, (double)(2));
615  laneScaler.addScheme(scheme);
616  scheme = GUIScaleScheme("by electricity consumption", 0);
617  scheme.addColor(10, (double)(1 / 7.5 / 5.));
618  laneScaler.addScheme(scheme);
619  scheme = GUIScaleScheme("by insertion-backlog (streetwise)", 0);
620  scheme.addColor(1, (double)1);
621  scheme.addColor(10, (double)10);
622  scheme.addColor(50, (double)100);
623  laneScaler.addScheme(scheme);
624  }
625 
626 
628  edgeColorer.addScheme(GUIColorScheme("uniform", RGBColor(0, 0, 0, 0), "", true));
629  scheme = GUIColorScheme("by selection (streetwise)", RGBColor(128, 128, 128, 255), "unselected", true);
630  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
631  edgeColorer.addScheme(scheme);
632  scheme = GUIColorScheme("by purpose (streetwise)", RGBColor(), "normal", true);
633  scheme.addColor(RGBColor(128, 0, 128, 255), 1, "connector"); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_CONNECTOR
634  scheme.addColor(RGBColor::BLUE, 2, "internal"); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_INTERNAL
635  edgeColorer.addScheme(scheme);
636  scheme = GUIColorScheme("by allowed speed (streetwise)", RGBColor::RED);
637  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
638  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
639  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
640  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
641  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
642  edgeColorer.addScheme(scheme);
643  scheme = GUIColorScheme("by current occupancy (streetwise, brutto)", RGBColor::BLUE);
644  scheme.addColor(RGBColor::RED, 0.95);
645  edgeColorer.addScheme(scheme);
646  scheme = GUIColorScheme("by current speed (streetwise)", RGBColor::RED);
647  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
648  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
649  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
650  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
651  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
652  edgeColorer.addScheme(scheme);
653  scheme = GUIColorScheme("by current flow (streetwise)", RGBColor::BLUE);
654  scheme.addColor(RGBColor::RED, (double)5000);
655  edgeColorer.addScheme(scheme);
656  scheme = GUIColorScheme("by relative speed (streetwise)", RGBColor::RED);
657  scheme.addColor(RGBColor::YELLOW, (double)(0.25));
658  scheme.addColor(RGBColor::GREEN, (double)(0.5));
659  scheme.addColor(RGBColor::CYAN, (double)(0.75));
660  scheme.addColor(RGBColor::BLUE, (double)(1));
661  scheme.addColor(RGBColor::MAGENTA, (double)(1.25));
662  edgeColorer.addScheme(scheme);
663  scheme = GUIColorScheme("by routing device assumed speed", RGBColor::RED);
664  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
665  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
666  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
667  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
668  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
669  edgeColorer.addScheme(scheme);
670  edgeColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
671  scheme = GUIColorScheme("by segments (alternating)", RGBColor::BLUE, "odd", true);
672  scheme.addColor(RGBColor::RED, 1, "even");
673  edgeColorer.addScheme(scheme);
674  scheme = GUIColorScheme("by jammed state (segmentwise)", RGBColor::GREEN, "free", true);
675  scheme.addColor(RGBColor::RED, 1, "jammed");
676  edgeColorer.addScheme(scheme);
677  scheme = GUIColorScheme("by current occupancy (segmentwise, brutto)", RGBColor::BLUE);
678  scheme.addColor(RGBColor::RED, 0.95);
679  edgeColorer.addScheme(scheme);
680  scheme = GUIColorScheme("by current speed (segmentwise)", RGBColor::RED);
681  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
682  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
683  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
684  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
685  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
686  edgeColorer.addScheme(scheme);
687  scheme = GUIColorScheme("by current flow (segmentwise)", RGBColor::BLUE);
688  scheme.addColor(RGBColor::RED, (double)5000);
689  edgeColorer.addScheme(scheme);
690  scheme = GUIColorScheme("by relative speed (segmentwise)", RGBColor::RED);
691  scheme.addColor(RGBColor::YELLOW, (double)(0.25));
692  scheme.addColor(RGBColor::GREEN, (double)(0.5));
693  scheme.addColor(RGBColor::CYAN, (double)(0.75));
694  scheme.addColor(RGBColor::BLUE, (double)(1));
695  scheme.addColor(RGBColor::MAGENTA, (double)(1.25));
696  edgeColorer.addScheme(scheme);
697  scheme = GUIColorScheme("by insertion-backlog (streetwise)", RGBColor::GREY);
698  scheme.addColor(RGBColor::GREEN, (double)1);
699  scheme.addColor(RGBColor::YELLOW, (double)10);
700  scheme.addColor(RGBColor::RED, (double)100);
701  edgeColorer.addScheme(scheme);
702  scheme = GUIColorScheme("by TAZ (streetwise)", RGBColor(204, 204, 204), "no TAZ", true);
703  edgeColorer.addScheme(scheme);
704 
705 
707  {
708  edgeScaler.addScheme(GUIScaleScheme("uniform", 1, "", true));
709  GUIScaleScheme scheme = GUIScaleScheme("by selection (streetwise)", 0.5, "unselected", true);
710  scheme.addColor(5, 1, "selected");
711  edgeScaler.addScheme(scheme);
712  scheme = GUIScaleScheme("by allowed speed (streetwise)", 0);
713  scheme.addColor(10, (double)(150.0 / 3.6));
714  edgeScaler.addScheme(scheme);
715  scheme = GUIScaleScheme("by current occupancy (streetwise, brutto)", 0);
716  scheme.addColor(10, 0.95);
717  edgeScaler.addScheme(scheme);
718  scheme = GUIScaleScheme("by current speed (streetwise)", 0);
719  scheme.addColor(10, (double)(150.0 / 3.6));
720  edgeScaler.addScheme(scheme);
721  scheme = GUIScaleScheme("by current flow (streetwise)", 0);
722  scheme.addColor(20, (double)5000);
723  edgeScaler.addScheme(scheme);
724  scheme = GUIScaleScheme("by relative speed (streetwise)", 0);
725  scheme.addColor(20, (double)1);
726  edgeScaler.addScheme(scheme);
727  scheme = GUIScaleScheme("by insertion-backlog (streetwise)", 0);
728  scheme.addColor(1, (double)1);
729  scheme.addColor(10, (double)10);
730  scheme.addColor(50, (double)100);
731  edgeScaler.addScheme(scheme);
732  }
733 
734 }
735 
736 
737 void
739  // init color schemes
740  GUIColorScheme scheme = GUIColorScheme("uniform", RGBColor::BLACK, "road", true);
741  scheme.addColor(RGBColor::GREY, 1, "Sidewalk");
742  scheme.addColor(RGBColor(192, 66, 44), 2, "bike lane");
743  scheme.addColor(RGBColor(200, 255, 200), 3, "green verge");
744  scheme.addColor(RGBColor(150, 200, 200), 4, "waterway");
745  scheme.addColor(RGBColor::BLACK, 5, "railway");
746  scheme.addColor(RGBColor(92, 92, 92), 6, "no passenger"); // paths, service roads etc
747  laneColorer.addScheme(scheme);
748  scheme = GUIColorScheme("by selection (lane-/streetwise)", RGBColor(128, 128, 128, 255), "unselected", true);
749  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
750  laneColorer.addScheme(scheme);
751  scheme = GUIColorScheme("by permission code", RGBColor(240, 240, 240), "nobody");
752  scheme.addColor(RGBColor(10, 10, 10), (double)SVC_PASSENGER, "passenger");
753  scheme.addColor(RGBColor(128, 128, 128), (double)SVC_PEDESTRIAN, "pedestrian");
754  scheme.addColor(RGBColor(80, 80, 80), (double)(SVC_PEDESTRIAN | SVC_DELIVERY), "pedestrian_delivery");
755  scheme.addColor(RGBColor(192, 66, 44), (double)SVC_BICYCLE, "bicycle");
756  scheme.addColor(RGBColor(40, 100, 40), (double)SVC_BUS, "bus");
757  scheme.addColor(RGBColor(166, 147, 26), (double)SVC_TAXI, "taxi");
758  scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~SVC_NON_ROAD), "normal_road");
759  scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_NON_ROAD)), "disallow_pedestrian");
760  scheme.addColor(RGBColor(255, 206, 0), (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_BICYCLE | SVC_MOPED | SVC_NON_ROAD)), "motorway");
761  scheme.addColor(RGBColor(150, 200, 200), (double)SVC_SHIP, "waterway");
762  scheme.addColor(RGBColor::GREEN, (double)SVCAll, "all");
763  laneColorer.addScheme(scheme);
764 
765  scheme = GUIColorScheme("by allowed speed (lanewise)", RGBColor::RED);
766  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
767  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
768  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
769  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
770  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
771  laneColorer.addScheme(scheme);
772 
773  scheme = GUIColorScheme("by lane number (streetwise)", RGBColor::RED);
774  scheme.addColor(RGBColor::BLUE, (double)5);
775  laneColorer.addScheme(scheme);
776 
777  scheme = GUIColorScheme("by given length/geometrical length", RGBColor::BLACK);
778  scheme.addColor(RGBColor::RED, 0.25);
779  scheme.addColor(RGBColor::YELLOW, 0.5);
780  scheme.addColor(RGBColor(179, 179, 179, 255), (double)1.0);
781  scheme.addColor(RGBColor::GREEN, (double)2.0);
782  scheme.addColor(RGBColor::BLUE, (double)4.0);
783  laneColorer.addScheme(scheme);
784  laneColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
785 
786  scheme = GUIColorScheme("by priority", RGBColor::YELLOW);
787  scheme.addColor(RGBColor::RED, (double) - 20);
788  scheme.addColor(RGBColor::GREEN, (double)20);
789  scheme.setAllowsNegativeValues(true);
790  laneColorer.addScheme(scheme);
791  scheme = GUIColorScheme("by height at start", RGBColor::RED);
792  scheme.addColor(RGBColor::BLUE, (double) - 10);
793  scheme.addColor(RGBColor::YELLOW, (double)50);
794  scheme.addColor(RGBColor::GREEN, (double)100);
795  scheme.addColor(RGBColor::MAGENTA, (double)200);
796  scheme.setAllowsNegativeValues(true);
797  laneColorer.addScheme(scheme);
798  scheme = GUIColorScheme("by height at segment start", RGBColor::RED);
799  scheme.addColor(RGBColor::BLUE, (double) - 10);
800  scheme.addColor(RGBColor::YELLOW, (double)50);
801  scheme.addColor(RGBColor::GREEN, (double)100);
802  scheme.addColor(RGBColor::MAGENTA, (double)200);
803  scheme.setAllowsNegativeValues(true);
804  laneColorer.addScheme(scheme);
805  scheme = GUIColorScheme("by inclination", RGBColor::GREY);
806  scheme.addColor(RGBColor::YELLOW, (double) .1);
807  scheme.addColor(RGBColor::RED, (double) .3);
808  scheme.addColor(RGBColor::GREEN, (double) - .1);
809  scheme.addColor(RGBColor::BLUE, (double) - .3);
810  scheme.setAllowsNegativeValues(true);
811  laneColorer.addScheme(scheme);
812  scheme = GUIColorScheme("by segment inclination", RGBColor::GREY);
813  scheme.addColor(RGBColor::YELLOW, (double) .1);
814  scheme.addColor(RGBColor::RED, (double) .3);
815  scheme.addColor(RGBColor::GREEN, (double) - .1);
816  scheme.addColor(RGBColor::BLUE, (double) - .3);
817  scheme.setAllowsNegativeValues(true);
818  laneColorer.addScheme(scheme);
819  scheme = GUIColorScheme(SCHEME_NAME_EDGE_PARAM_NUMERICAL, RGBColor(204, 204, 204));
820  scheme.setAllowsNegativeValues(true);
821  laneColorer.addScheme(scheme);
822  scheme = GUIColorScheme(SCHEME_NAME_LANE_PARAM_NUMERICAL, RGBColor(204, 204, 204));
823  scheme.setAllowsNegativeValues(true);
824  laneColorer.addScheme(scheme);
825 
826  scheme = GUIColorScheme("uniform", RGBColor(102, 0, 0), "", true);
827  scheme.addColor(RGBColor(204, 0, 0), 1, "shape not computed");
828  scheme.addColor(RGBColor(153, 0, 0), 2, "geometry points");
829  scheme.addColor(RGBColor::GREEN, 3, "custom shape");
830  junctionColorer.addScheme(scheme);
831  scheme = GUIColorScheme("by selection", RGBColor(128, 128, 128, 255), "unselected", true);
832  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
833  junctionColorer.addScheme(scheme);
834  scheme = GUIColorScheme("by type", RGBColor::GREEN, "traffic_light", true);
835  scheme.addColor(RGBColor(0, 128, 0), 1, "traffic_light_unregulated");
836  scheme.addColor(RGBColor::YELLOW, 2, "priority");
837  scheme.addColor(RGBColor::RED, 3, "priority_stop");
838  scheme.addColor(RGBColor::BLUE, 4, "right_before_left");
839  scheme.addColor(RGBColor::CYAN, 5, "allway_stop");
840  scheme.addColor(RGBColor::GREY, 6, "district");
841  scheme.addColor(RGBColor::MAGENTA, 7, "unregulated");
842  scheme.addColor(RGBColor::BLACK, 8, "dead_end");
843  scheme.addColor(RGBColor::ORANGE, 9, "rail_signal");
844  scheme.addColor(RGBColor(192, 128, 64), 10, "zipper");
845  scheme.addColor(RGBColor(192, 255, 192), 11, "traffic_light_right_on_red");
846  scheme.addColor(RGBColor(128, 0, 128), 12, "rail_crossing"); // dark purple
847  junctionColorer.addScheme(scheme);
848  scheme = GUIColorScheme("by height", RGBColor::GREY);
849  scheme.addColor(RGBColor::BLUE, (double) - 10);
850  scheme.addColor(RGBColor::RED, (double)10);
851  scheme.addColor(RGBColor::YELLOW, (double)50);
852  scheme.addColor(RGBColor::GREEN, (double)100);
853  scheme.addColor(RGBColor::MAGENTA, (double)200);
854  scheme.setAllowsNegativeValues(true);
855  junctionColorer.addScheme(scheme);
856 
858  poiColorer.addScheme(GUIColorScheme("given POI color", RGBColor::RED, "", true));
859  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
860  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
861  poiColorer.addScheme(scheme);
862  poiColorer.addScheme(GUIColorScheme("uniform", RGBColor::RED, "", true));
863 
865  polyColorer.addScheme(GUIColorScheme("given polygon color", RGBColor::ORANGE, "", true));
866  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
867  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
868  polyColorer.addScheme(scheme);
869  polyColorer.addScheme(GUIColorScheme("uniform", RGBColor::ORANGE, "", true));
870 
872  {
873  GUIScaleScheme scheme = GUIScaleScheme("default", 1, "uniform", true);
874  laneScaler.addScheme(scheme);
875  }
876 
877  // dummy schemes
881 }
882 
883 
884 int
886  if (UseMesoSim) {
887  return edgeColorer.getActive();
888  }
889  return laneColorer.getActive();
890 }
891 
892 
893 int
895  if (UseMesoSim) {
896  return edgeScaler.getActive();
897  }
898  return laneScaler.getActive();
899 }
900 
901 
904  if (UseMesoSim) {
905  return edgeColorer.getScheme();
906  }
907  return laneColorer.getScheme();
908 }
909 
910 
913  if (UseMesoSim) {
914  return edgeScaler.getScheme();
915  }
916  return laneScaler.getScheme();
917 }
918 
919 void
924  dev.writeAttr("dither", dither);
925  dev.closeTag();
927  dev.writeAttr("backgroundColor", backgroundColor);
928  dev.writeAttr("showGrid", showGrid);
929  dev.writeAttr("gridXSize", gridXSize);
930  dev.writeAttr("gridYSize", gridYSize);
931  dev.closeTag();
932  // edges
934  dev.writeAttr("laneEdgeMode", getLaneEdgeMode());
935  dev.writeAttr("scaleMode", getLaneEdgeScaleMode());
936  dev.writeAttr("laneShowBorders", laneShowBorders);
937  dev.writeAttr("showBikeMarkings", showBikeMarkings);
938  dev.writeAttr("showLinkDecals", showLinkDecals);
939  dev.writeAttr("showLinkRules", showLinkRules);
940  dev.writeAttr("showRails", showRails);
941  dev.writeAttr("hideConnectors", hideConnectors);
942  dev.writeAttr("widthExaggeration", laneWidthExaggeration);
943  dev.writeAttr("minSize", laneMinSize);
944  dev.writeAttr("showDirection", showLaneDirection);
945  dev.writeAttr("showSublanes", showSublanes);
946  dev.writeAttr("spreadSuperposed", spreadSuperposed);
947  dev.writeAttr("edgeParam", edgeParam);
948  dev.writeAttr("laneParam", laneParam);
949  dev.lf();
950  dev << " ";
951  edgeName.print(dev, "edgeName");
952  dev.lf();
953  dev << " ";
954  internalEdgeName.print(dev, "internalEdgeName");
955  dev.lf();
956  dev << " ";
957  cwaEdgeName.print(dev, "cwaEdgeName");
958  dev.lf();
959  dev << " ";
960  streetName.print(dev, "streetName");
961  dev.lf();
962  dev << " ";
963  edgeValue.print(dev, "edgeValue");
964  laneColorer.save(dev);
965  laneScaler.save(dev);
966  edgeColorer.save(dev);
967  edgeScaler.save(dev);
968  dev.closeTag();
969  // vehicles
971  dev.writeAttr("vehicleMode", vehicleColorer.getActive());
972  dev.writeAttr("vehicleQuality", vehicleQuality);
973  vehicleSize.print(dev, "vehicle");
974  dev.writeAttr("showBlinker", showBlinker);
975  dev.writeAttr("drawMinGap", drawMinGap);
976  dev.lf();
977  dev << " ";
978  vehicleName.print(dev, "vehicleName");
979  dev.lf();
980  dev << " ";
981  vehicleValue.print(dev, "vehicleValue");
982  vehicleColorer.save(dev);
983  dev.closeTag();
984  // persons
986  dev.writeAttr("personMode", personColorer.getActive());
987  dev.writeAttr("personQuality", personQuality);
988  personSize.print(dev, "person");
989  dev.lf();
990  dev << " ";
991  personName.print(dev, "personName");
992  dev.lf();
993  dev << " ";
994  personValue.print(dev, "personValue");
995  personColorer.save(dev);
996  dev.closeTag();
997  // containers
999  dev.writeAttr("containerMode", containerColorer.getActive());
1000  dev.writeAttr("containerQuality", containerQuality);
1001  containerSize.print(dev, "container");
1002  dev.lf();
1003  dev << " ";
1004  containerName.print(dev, "containerName");
1005  containerColorer.save(dev);
1006  dev.closeTag();
1007  // junctions
1009  dev.writeAttr("junctionMode", junctionColorer.getActive());
1010  dev.lf();
1011  dev << " ";
1012  drawLinkTLIndex.print(dev, "drawLinkTLIndex");
1013  dev.lf();
1014  dev << " ";
1015  drawLinkJunctionIndex.print(dev, "drawLinkJunctionIndex");
1016  dev.lf();
1017  dev << " ";
1018  junctionName.print(dev, "junctionName");
1019  dev.lf();
1020  dev << " ";
1021  internalJunctionName.print(dev, "internalJunctionName");
1022  dev.lf();
1023  dev << " ";
1024  dev.writeAttr("showLane2Lane", showLane2Lane);
1025  dev.writeAttr("drawShape", drawJunctionShape);
1026  dev.writeAttr("drawCrossingsAndWalkingareas", drawCrossingsAndWalkingareas);
1027  junctionSize.print(dev, "junction");
1028  junctionColorer.save(dev);
1029  dev.closeTag();
1030  // additionals
1032  dev.writeAttr("addMode", addMode);
1033  addSize.print(dev, "add");
1034  addName.print(dev, "addName");
1035  addFullName.print(dev, "addFullName");
1036  dev.closeTag();
1037  // pois
1039  poiSize.print(dev, "poi");
1040  poiName.print(dev, "poiName");
1041  poiType.print(dev, "poiType");
1042  poiColorer.save(dev);
1043  dev.closeTag();
1044  // polys
1046  polySize.print(dev, "poly");
1047  polyName.print(dev, "polyName");
1048  polyType.print(dev, "polyType");
1049  polyColorer.save(dev);
1050  dev.closeTag();
1051  // legend
1053  dev.writeAttr("showSizeLegend", showSizeLegend);
1054  dev.closeTag();
1055 
1056  dev.closeTag();
1057 }
1058 
1059 
1060 bool
1062  if (dither != v2.dither) {
1063  return false;
1064  }
1065  if (backgroundColor != v2.backgroundColor) {
1066  return false;
1067  }
1068  if (selectionColor != v2.selectionColor) {
1069  return false;
1070  }
1072  return false;
1073  }
1075  return false;
1076  }
1078  return false;
1079  }
1081  return false;
1082  }
1083  if (showGrid != v2.showGrid) {
1084  return false;
1085  }
1086  if (gridXSize != v2.gridXSize) {
1087  return false;
1088  }
1089  if (gridYSize != v2.gridYSize) {
1090  return false;
1091  }
1092 
1093  if (!(edgeColorer == v2.edgeColorer)) {
1094  return false;
1095  }
1096  if (!(edgeScaler == v2.edgeScaler)) {
1097  return false;
1098  }
1099  if (!(laneColorer == v2.laneColorer)) {
1100  return false;
1101  }
1102  if (!(laneScaler == v2.laneScaler)) {
1103  return false;
1104  }
1105  if (laneShowBorders != v2.laneShowBorders) {
1106  return false;
1107  }
1108  if (showBikeMarkings != v2.showBikeMarkings) {
1109  return false;
1110  }
1111  if (showLinkDecals != v2.showLinkDecals) {
1112  return false;
1113  }
1114  if (showLinkRules != v2.showLinkRules) {
1115  return false;
1116  }
1117  if (showRails != v2.showRails) {
1118  return false;
1119  }
1120  if (edgeName != v2.edgeName) {
1121  return false;
1122  }
1123  if (internalEdgeName != v2.internalEdgeName) {
1124  return false;
1125  }
1126  if (cwaEdgeName != v2.cwaEdgeName) {
1127  return false;
1128  }
1129  if (streetName != v2.streetName) {
1130  return false;
1131  }
1132  if (edgeValue != v2.edgeValue) {
1133  return false;
1134  }
1135  if (hideConnectors != v2.hideConnectors) {
1136  return false;
1137  }
1139  return false;
1140  }
1141  if (laneMinSize != v2.laneMinSize) {
1142  return false;
1143  }
1145  return false;
1146  }
1147  if (showSublanes != v2.showSublanes) {
1148  return false;
1149  }
1150  if (spreadSuperposed != v2.spreadSuperposed) {
1151  return false;
1152  }
1153  if (edgeParam != v2.edgeParam) {
1154  return false;
1155  }
1156  if (laneParam != v2.laneParam) {
1157  return false;
1158  }
1159  if (!(vehicleColorer == v2.vehicleColorer)) {
1160  return false;
1161  }
1162  if (vehicleQuality != v2.vehicleQuality) {
1163  return false;
1164  }
1165  if (vehicleSize != v2.vehicleSize) {
1166  return false;
1167  }
1168  if (showBlinker != v2.showBlinker) {
1169  return false;
1170  }
1172  return false;
1173  }
1174  if (drawMinGap != v2.drawMinGap) {
1175  return false;
1176  }
1177  if (showBTRange != v2.showBTRange) {
1178  return false;
1179  }
1180  if (vehicleName != v2.vehicleName) {
1181  return false;
1182  }
1183  if (vehicleValue != v2.vehicleValue) {
1184  return false;
1185  }
1186  if (!(personColorer == v2.personColorer)) {
1187  return false;
1188  }
1189  if (personQuality != v2.personQuality) {
1190  return false;
1191  }
1192  if (personSize != v2.personSize) {
1193  return false;
1194  }
1195  if (personName != v2.personName) {
1196  return false;
1197  }
1198  if (personValue != v2.personValue) {
1199  return false;
1200  }
1201  if (!(containerColorer == v2.containerColorer)) {
1202  return false;
1203  }
1204  if (containerQuality != v2.containerQuality) {
1205  return false;
1206  }
1207  if (containerSize != v2.containerSize) {
1208  return false;
1209  }
1210  if (containerName != v2.containerName) {
1211  return false;
1212  }
1213  if (!(junctionColorer == v2.junctionColorer)) {
1214  return false;
1215  }
1216  if (!(poiColorer == v2.poiColorer)) {
1217  return false;
1218  }
1219  if (!(polyColorer == v2.polyColorer)) {
1220  return false;
1221  }
1222  if (drawLinkTLIndex != v2.drawLinkTLIndex) {
1223  return false;
1224  }
1226  return false;
1227  }
1228  if (junctionName != v2.junctionName) {
1229  return false;
1230  }
1232  return false;
1233  }
1234 
1235  if (showLane2Lane != v2.showLane2Lane) {
1236  return false;
1237  }
1238 
1240  return false;
1241  }
1242 
1244  return false;
1245  }
1246  if (junctionSize != v2.junctionSize) {
1247  return false;
1248  }
1249 
1250  if (addMode != v2.addMode) {
1251  return false;
1252  }
1253  if (addSize != v2.addSize) {
1254  return false;
1255  }
1256  if (addName != v2.addName) {
1257  return false;
1258  }
1259  if (addFullName != v2.addFullName) {
1260  return false;
1261  }
1262  if (poiSize != v2.poiSize) {
1263  return false;
1264  }
1265  if (poiName != v2.poiName) {
1266  return false;
1267  }
1268  if (poiType != v2.poiType) {
1269  return false;
1270  }
1271  if (polySize != v2.polySize) {
1272  return false;
1273  }
1274  if (polyName != v2.polyName) {
1275  return false;
1276  }
1277  if (polyType != v2.polyType) {
1278  return false;
1279  }
1280 
1281  if (showSizeLegend != v2.showSizeLegend) {
1282  return false;
1283  }
1284 
1285  return true;
1286 }
1287 
1288 
1289 double
1292  return (constantSize && !s.drawForSelecting && (!constantSizeSelected || o == nullptr || gSelected.isSelected(o)))
1293  ? MAX2((double)exaggeration, exaggeration * factor / s.scale)
1294  : (!constantSizeSelected || o == nullptr || gSelected.isSelected(o) ? exaggeration : 1);
1295 }
1296 
1297 
1298 const RGBColor&
1300  switch (ls) {
1305  case LINKSTATE_TL_RED:
1306  return SUMO_color_TL_RED;
1308  return SUMO_color_TL_REDYELLOW;
1317  case LINKSTATE_MAJOR:
1318  return SUMO_color_MAJOR;
1319  case LINKSTATE_MINOR:
1320  return SUMO_color_MINOR;
1321  case LINKSTATE_EQUAL:
1322  return SUMO_color_EQUAL;
1323  case LINKSTATE_STOP:
1324  return SUMO_color_STOP;
1325  case LINKSTATE_ALLWAY_STOP:
1326  return SUMO_color_ALLWAY_STOP;
1327  case LINKSTATE_ZIPPER:
1328  return SUMO_color_ZIPPER;
1329  case LINKSTATE_DEADEND:
1330  return SUMO_color_DEADEND;
1331  default:
1332  throw ProcessError("No color defined for LinkState '" + std::string(ls, 1) + "'");
1333  }
1334 }
1335 
1336 double
1337 GUIVisualizationSettings::getTextAngle(double objectAngle) const {
1338  double viewAngle = objectAngle - angle;
1339  while (viewAngle < 0) {
1340  viewAngle += 360;
1341  }
1342  // fmod round towards zero which is not want we want for negative numbers
1343  viewAngle = fmod(viewAngle, 360);
1344  if (viewAngle > 90 && viewAngle < 270) {
1345  // avoid reading text on it's head
1346  objectAngle -= 180;
1347  }
1348  return objectAngle;
1349 }
1350 
1351 /****************************************************************************/
1352 
1353 
GUIVisualizationSizeSettings junctionSize
GUIVisualizationTextSettings junctionName
The link has green light, may pass.
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
Definition: OutputDevice.h:256
static const RGBColor BLUE
Definition: RGBColor.h:186
const RGBColor SUMO_color_TL_GREEN_MAJOR(0, 255, 0)
const RGBColor SUMO_color_TL_RED(255, 0, 0)
bool showSizeLegend
Information whether the size legend shall be drawn.
double scale
information about a lane&#39;s width (temporary, used for a single view)
GUIVisualizationTextSettings poiType
GUIVisualizationTextSettings streetName
double laneWidthExaggeration
The lane exaggeration (upscale thickness)
GUIPropertyScheme< double > GUIScaleScheme
is a pedestrian
static const RGBColor SUMO_color_busStop_sign
color for busStops signs
bool showBlinker
Information whether vehicle blinkers shall be drawn.
static const RGBColor SUMO_color_chargingStation_charge
color for chargingStation during charging
GUIVisualizationTextSettings addName
GUIVisualizationTextSettings personValue
GUIVisualizationTextSettings personName
static const RGBColor SUMO_color_E1
color for E1 detectors
void setAllowsNegativeValues(bool value)
const RGBColor SUMO_color_TL_GREEN_MINOR(0, 179, 0)
GUIVisualizationTextSettings poiName
static const RGBColor WHITE
Definition: RGBColor.h:191
GUIColorScheme & getLaneEdgeScheme()
Returns the current lane (edge) coloring schme.
bool showBTRange
Information whether the communication range shall be drawn.
static const RGBColor SUMO_color_chargingStation_sign
color for chargingStation sign
GUIColorer laneColorer
The lane colorer.
GUIColorer containerColorer
The container colorer.
The link has green light, has to brake.
Stores the information about how to visualize structures.
This is an uncontrolled, minor link, has to stop.
vehicle is a bicycle
GUIColorer edgeColorer
The mesoscopic edge colorer.
GUIVisualizationTextSettings edgeValue
vehicle is a small delivery vehicle
bool drawLaneChangePreference
Information whether the lane change preference shall be drawn.
bool showRails
Information whether rails shall be drawn.
static const std::string SCHEME_NAME_EDGE_PARAM_NUMERICAL
GUIVisualizationTextSettings vehicleName
classes which (normally) do not drive on normal roads
static const RGBColor SUMO_color_chargingStation
color for chargingStations
const RGBColor SUMO_color_MINOR(51, 51, 51)
bool operator==(const GUIVisualizationSettings &vs2)
Comparison operator.
This is a dead end link.
static const RGBColor ORANGE
Definition: RGBColor.h:190
T MAX2(T a, T b)
Definition: StdDefs.h:76
bool isSelected(GUIGlObjectType type, GUIGlID id)
Returns the information whether the object with the given type and id is selected.
bool showLaneDirection
Whether to show direction indicators for lanes.
void print(OutputDevice &dev, const std::string &name) const
GUIVisualizationTextSettings cwaEdgeName
const RGBColor SUMO_color_EQUAL(128, 128, 128)
bool laneShowBorders
Information whether lane borders shall be drawn.
This is an uncontrolled, right-before-left link.
static const std::string SCHEME_NAME_LANE_PARAM_NUMERICAL
bool netedit
Whether the settings are for Netedit.
static const RGBColor BLACK
Definition: RGBColor.h:192
const SVCPermissions SVCAll
all VClasses are allowed
bool showLinkRules
Information whether link rules (colored bars) shall be drawn.
The link is controlled by a tls which is off, not blinking, may pass.
This is an uncontrolled, all-way stop link.
bool dither
Information whether dithering shall be enabled.
const RGBColor SUMO_color_STOP(128, 0, 128)
This is an uncontrolled, zipper-merge link.
GUIVisualizationSettings(bool _netedit=false)
constructor
static const RGBColor SUMO_color_E2
color for E2 detectors
GUIVisualizationSizeSettings polySize
const RGBColor SUMO_color_ZIPPER(192, 128, 64)
GUIColorer vehicleColorer
The vehicle colorer.
std::string edgeParam
key for coloring by edge parameter
GUIVisualizationTextSettings edgeName
GUIVisualizationSizeSettings addSize
GUIColorer poiColorer
The POI colorer.
int getLaneEdgeMode() const
Returns the number of the active lane (edge) coloring schme.
void save(OutputDevice &dev) const
Writes the settings into an output device.
static const RGBColor GREEN
Definition: RGBColor.h:185
GUIVisualizationTextSettings vehicleValue
static const RGBColor GREY
Definition: RGBColor.h:193
int addColor(const T &color, const double threshold, const std::string &name="")
std::string name
The name of this setting.
double gridXSize
Information about the grid spacings.
double getTextAngle(double objectAngle) const
return an angle that is suitable for reading text aligned with the given angle (degrees) ...
const RGBColor SUMO_color_MAJOR(255, 255, 255)
static const RGBColor SUMO_color_containerStop_sign
color for containerStop signs
GUIVisualizationTextSettings internalEdgeName
This is an uncontrolled, minor link, has to brake.
bool drawMinGap
Information whether the minimum gap shall be drawn.
int addMode
The additional structures visualization scheme.
const RGBColor SUMO_color_ALLWAY_STOP(0, 0, 192)
GUIVisualizationTextSettings polyType
bool showSublanes
Whether to show sublane boundaries.
RGBColor selectionColor
NETEDIT special colors.
LinkState
The right-of-way state of a link between two lanes used when constructing a NBTrafficLightLogic, in MSLink and GNEInternalLane.
const RGBColor SUMO_color_TL_OFF_BLINKING(128, 64, 0)
static const RGBColor MAGENTA
Definition: RGBColor.h:189
GUIVisualizationTextSettings drawLinkTLIndex
GUIColorer polyColorer
The polygon colorer.
GUIColorer personColorer
The person colorer.
GUIVisualizationTextSettings internalJunctionName
GUIColorer junctionColorer
The junction colorer.
double angle
The current view rotation angle.
static const RGBColor SUMO_color_E3Entry
color for Entrys
static const RGBColor SUMO_color_busStop
color for busStops
static const RGBColor SUMO_color_E1Instant
color for E1 Instant detectors
double laneMinSize
The minimum visual lane width for drawing.
GUIScaler edgeScaler
The mesoscopic edge scaler.
vehicle is a passenger car (a "normal" car)
GUIScaleScheme & getLaneEdgeScaleScheme()
Returns the current lane (edge) scaling schme.
int containerQuality
The quality of container drawing.
RGBColor backgroundColor
The background color to use.
is an arbitrary ship
static const RGBColor SUMO_color_containerStop
color for containerStops
vehicle is a moped
const RGBColor SUMO_color_TL_YELLOW_MAJOR(255, 255, 0)
vehicle is a taxi
void print(OutputDevice &dev, const std::string &name) const
GUIVisualizationSizeSettings poiSize
vehicle is a bus
static const RGBColor YELLOW
Definition: RGBColor.h:187
static const RGBColor RED
named colors
Definition: RGBColor.h:184
const RGBColor SUMO_color_TL_REDYELLOW(255, 128, 0)
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
static const RGBColor CYAN
Definition: RGBColor.h:188
The link has yellow light, may pass.
GUIVisualizationSizeSettings containerSize
The link is controlled by a tls which is off and blinks, has to brake.
GUIVisualizationTextSettings addFullName
The link has red light (must brake)
const RGBColor SUMO_color_TL_OFF_NOSIGNAL(0, 255, 255)
This is an uncontrolled, major link, may pass.
GUIVisualizationSizeSettings personSize
int personQuality
The quality of person drawing.
bool showGrid
Information whether a grid shall be shown.
bool drawCrossingsAndWalkingareas
whether crosings and walkingareas shall be drawn
const RGBColor SUMO_color_TL_YELLOW_MINOR(255, 255, 0)
bool showLane2Lane
Information whether lane-to-lane arrows shall be drawn.
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:64
bool closeTag(const std::string &comment="")
Closes the most recently opened tag and optionally adds a comment.
static const RGBColor SUMO_color_E3Exit
color for Exits
GUIVisualizationSizeSettings vehicleSize
bool drawJunctionShape
whether the shape of the junction should be drawn
GUIPropertyScheme< RGBColor > GUIColorScheme
int getLaneEdgeScaleMode() const
Returns the number of the active lane (edge) scaling schme.
int vehicleQuality
The quality of vehicle drawing.
static bool UseMesoSim
this should be set at the same time as MSGlobals::gUseMesoSim
The link has yellow light, has to brake anyway.
const RGBColor SUMO_color_DEADEND(0, 0, 0)
bool drawForSelecting
whether drawing is performed for the purpose of selecting objects
double getExaggeration(const GUIVisualizationSettings &s, const GUIGlObject *o, double factor=20) const
return the drawing size including exaggeration and constantSize values
GUIScaler laneScaler
The lane scaler.
bool spreadSuperposed
Whether to improve visualisation of superposed (rail) edges.
GUISelectedStorage gSelected
A global holder of selected objects.
void save(OutputDevice &dev) const
static const RGBColor & getLinkColor(const LinkState &ls)
map from LinkState to color constants
The link has red light (must brake) but indicates upcoming green.
GUIVisualizationTextSettings drawLinkJunctionIndex
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
void lf()
writes a line feed if applicable
Definition: OutputDevice.h:234
bool showBikeMarkings
Information whether bicycle lane marking shall be drawn.
void initNeteditDefaults()
init default settings
GUIVisualizationTextSettings polyName
GUIVisualizationTextSettings containerName