SUMO - Simulation of Urban MObility
GUIVisualizationSettings.cpp
Go to the documentation of this file.
1 /****************************************************************************/
9 // Stores the information about how to visualize structures
10 /****************************************************************************/
11 // SUMO, Simulation of Urban MObility; see http://sumo.dlr.de/
12 // Copyright (C) 2001-2016 DLR (http://www.dlr.de/) and contributors
13 /****************************************************************************/
14 //
15 // This file is part of SUMO.
16 // SUMO is free software: you can redistribute it and/or modify
17 // it under the terms of the GNU General Public License as published by
18 // the Free Software Foundation, either version 3 of the License, or
19 // (at your option) any later version.
20 //
21 /****************************************************************************/
22 
23 
24 // ===========================================================================
25 // included modules
26 // ===========================================================================
27 #ifdef _MSC_VER
28 #include <windows_config.h>
29 #else
30 #include <config.h>
31 #endif
32 
33 #include <map>
34 #include <vector>
36 #include "GUIPropertyScheme.h"
37 
38 #ifdef CHECK_MEMORY_LEAKS
39 #include <foreign/nvwa/debug_new.h>
40 #endif // CHECK_MEMORY_LEAKS
41 
42 // ===========================================================================
43 // static members
44 // ===========================================================================
46 
47 // ===========================================================================
48 // member method definitions
49 // ===========================================================================
51  : name(""), antialiase(false), dither(false),
52  backgroundColor(RGBColor::WHITE),
53  showGrid(false), gridXSize(100), gridYSize(100),
54  laneShowBorders(false), showLinkDecals(true), showRails(true),
55  edgeName(false, 50, RGBColor(255, 128, 0, 255)),
56  internalEdgeName(false, 40, RGBColor(128, 64, 0, 255)),
57  cwaEdgeName(false, 50, RGBColor::MAGENTA),
58  streetName(false, 55, RGBColor::YELLOW),
59  hideConnectors(false), laneWidthExaggeration(1),
60  vehicleQuality(0), showBlinker(true),
61  drawLaneChangePreference(false), drawMinGap(false),
62  showBTRange(false), vehicleSize(1),
63  vehicleName(false, 50, RGBColor(204, 153, 0, 255)),
64  personQuality(0),
65  personSize(1),
66  personName(false, 50, RGBColor(0, 153, 204, 255)),
67  containerQuality(0),
68  containerSize(1),
69  containerName(false, 50, RGBColor(0, 153, 204, 255)),
70  drawLinkTLIndex(false, 50, RGBColor(128, 128, 255, 255)),
71  drawLinkJunctionIndex(false, 50, RGBColor(128, 128, 255, 255)),
72  junctionName(false, 50, RGBColor(0, 255, 128, 255)),
73  internalJunctionName(false, 50, RGBColor(0, 204, 128, 255)),
74  showLane2Lane(false),
75  drawJunctionShape(true),
76  drawCrossingsAndWalkingareas(true),
77  addMode(0),
78  addSize(1),
79  addName(false, 50, RGBColor(255, 0, 128, 255)),
80  poiSize(0), poiName(false, 50, RGBColor(255, 0, 128, 255)),
81  poiType(false, 50, RGBColor(255, 0, 128, 255)),
82  polySize(0), polyName(false, 50, RGBColor(255, 0, 128, 255)),
83  polyType(false, 50, RGBColor(255, 0, 128, 255)),
84  showSizeLegend(true),
85  gaming(false),
86  selectionScale(1),
87  drawForSelecting(false) {
89  GUIColorScheme scheme = GUIColorScheme("uniform", RGBColor::BLACK, "road", true);
90  scheme.addColor(RGBColor::GREY, 1, "sidewalk");
91  scheme.addColor(RGBColor(192, 66, 44), 2, "bike lane");
92  scheme.addColor(RGBColor(0, 0, 0, 0), 3, "green verge");
93  scheme.addColor(RGBColor(150, 200, 200), 4, "waterway");
94  scheme.addColor(RGBColor(92, 92, 92), 5, "no passenger"); // paths, service roads etc
95  scheme.addColor(RGBColor::RED, 6, "closed"); // road closing
96  laneColorer.addScheme(scheme);
97  scheme = GUIColorScheme("by selection (lane-/streetwise)", RGBColor(128, 128, 128, 255), "unselected", true);
98  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
99  laneColorer.addScheme(scheme);
100  scheme = GUIColorScheme("by permission code", RGBColor(240, 240, 240), "nobody");
101  scheme.addColor(RGBColor(10, 10, 10), (SUMOReal)SVC_PASSENGER, "passenger");
102  scheme.addColor(RGBColor(128, 128, 128), (SUMOReal)SVC_PEDESTRIAN, "pedestrian");
103  scheme.addColor(RGBColor(80, 80, 80), (SUMOReal)(SVC_PEDESTRIAN | SVC_DELIVERY), "pedestrian_delivery");
104  scheme.addColor(RGBColor(192, 66, 44), (SUMOReal)SVC_BICYCLE, "bicycle");
105  scheme.addColor(RGBColor(40, 100, 40), (SUMOReal)SVC_BUS, "bus");
106  scheme.addColor(RGBColor(166, 147, 26), (SUMOReal)SVC_TAXI, "taxi");
107  scheme.addColor(RGBColor::BLACK, (SUMOReal)(SVCAll & ~SVC_NON_ROAD), "normal_road");
108  scheme.addColor(RGBColor::BLACK, (SUMOReal)(SVCAll & ~(SVC_PEDESTRIAN | SVC_NON_ROAD)), "disallow_pedestrian");
109  scheme.addColor(RGBColor(255, 206, 0), (SUMOReal)(SVCAll & ~(SVC_PEDESTRIAN | SVC_BICYCLE | SVC_MOPED | SVC_NON_ROAD)), "motorway");
110  scheme.addColor(RGBColor(150, 200, 200), (SUMOReal)SVC_SHIP, "waterway");
111  scheme.addColor(RGBColor::GREEN, (SUMOReal)SVCAll, "all");
112  laneColorer.addScheme(scheme);
113  // ... traffic states ...
114  scheme = GUIColorScheme("by allowed speed (lanewise)", RGBColor::RED);
115  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
116  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
117  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
118  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
119  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
120  laneColorer.addScheme(scheme);
121  scheme = GUIColorScheme("by current occupancy (lanewise, brutto)", RGBColor::BLUE);
122  scheme.addColor(RGBColor::RED, (SUMOReal)0.95);
123  laneColorer.addScheme(scheme);
124  scheme = GUIColorScheme("by current occupancy (lanewise, netto)", RGBColor::BLUE);
125  scheme.addColor(RGBColor::RED, (SUMOReal)0.95);
126  laneColorer.addScheme(scheme);
127  scheme = GUIColorScheme("by first vehicle waiting time (lanewise)", RGBColor::BLUE);
128  scheme.addColor(RGBColor::CYAN, (SUMOReal)30);
129  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
130  scheme.addColor(RGBColor::YELLOW, (SUMOReal)200);
131  scheme.addColor(RGBColor::RED, (SUMOReal)300);
132  laneColorer.addScheme(scheme);
133  scheme = GUIColorScheme("by lane number (streetwise)", RGBColor::RED);
134  scheme.addColor(RGBColor::BLUE, (SUMOReal)5);
135  laneColorer.addScheme(scheme);
136  // ... emissions ...
137  scheme = GUIColorScheme("by CO2 emissions", RGBColor::GREEN);
138  scheme.addColor(RGBColor::RED, (SUMOReal)(10. / 7.5 / 5.));
139  laneColorer.addScheme(scheme);
140  scheme = GUIColorScheme("by CO emissions", RGBColor::GREEN);
141  scheme.addColor(RGBColor::RED, (SUMOReal)(0.05 / 7.5 / 2.));
142  laneColorer.addScheme(scheme);
143  scheme = GUIColorScheme("by PMx emissions", RGBColor::GREEN);
144  scheme.addColor(RGBColor::RED, (SUMOReal)(.005 / 7.5 / 5.));
145  laneColorer.addScheme(scheme);
146  scheme = GUIColorScheme("by NOx emissions", RGBColor::GREEN);
147  scheme.addColor(RGBColor::RED, (SUMOReal)(.125 / 7.5 / 5.));
148  laneColorer.addScheme(scheme);
149  scheme = GUIColorScheme("by HC emissions", RGBColor::GREEN);
150  scheme.addColor(RGBColor::RED, (SUMOReal)(.02 / 7.5 / 4.));
151  laneColorer.addScheme(scheme);
152  scheme = GUIColorScheme("by fuel consumption", RGBColor::GREEN);
153  scheme.addColor(RGBColor::RED, (SUMOReal)(.005 / 7.5 * 100.));
154  laneColorer.addScheme(scheme);
155  scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREEN);
156  scheme.addColor(RGBColor::RED, (SUMOReal)100);
157  laneColorer.addScheme(scheme);
158  // ... weights (experimental) ...
159  scheme = GUIColorScheme("by global travel time", RGBColor::GREEN);
160  scheme.addColor(RGBColor::RED, (SUMOReal)100);
161  scheme.setAllowsNegativeValues(true);
162  laneColorer.addScheme(scheme);
163  scheme = GUIColorScheme("by global speed percentage", RGBColor::RED);
164  scheme.addColor(RGBColor::YELLOW, (SUMOReal)50);
165  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
166  scheme.setAllowsNegativeValues(true);
167  laneColorer.addScheme(scheme);
168  scheme = GUIColorScheme("by given length/geometrical length", RGBColor::BLACK);
169  scheme.addColor(RGBColor::RED, (SUMOReal)0.25);
170  scheme.addColor(RGBColor::YELLOW, (SUMOReal)0.5);
171  scheme.addColor(RGBColor(179, 179, 179, 255), (SUMOReal)1.0);
172  scheme.addColor(RGBColor::GREEN, (SUMOReal)2.0);
173  scheme.addColor(RGBColor::BLUE, (SUMOReal)4.0);
174  laneColorer.addScheme(scheme);
175  laneColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
176  scheme = GUIColorScheme("by loaded weight", RGBColor::GREEN);
177  scheme.addColor(RGBColor::RED, (SUMOReal)100);
178  scheme.setAllowsNegativeValues(true);
179  laneColorer.addScheme(scheme);
180  scheme = GUIColorScheme("by priority", RGBColor::YELLOW);
181  scheme.addColor(RGBColor::RED, (SUMOReal) - 20);
182  scheme.addColor(RGBColor::GREEN, (SUMOReal)20);
183  scheme.setAllowsNegativeValues(true);
184  laneColorer.addScheme(scheme);
185  scheme = GUIColorScheme("by height at start", RGBColor::RED);
186  scheme.addColor(RGBColor::BLUE, (SUMOReal) - 10);
187  scheme.addColor(RGBColor::YELLOW, (SUMOReal)50);
188  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
189  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)200);
190  scheme.setAllowsNegativeValues(true);
191  laneColorer.addScheme(scheme);
192  scheme = GUIColorScheme("by height at segment start", RGBColor::RED);
193  scheme.addColor(RGBColor::BLUE, (SUMOReal) - 10);
194  scheme.addColor(RGBColor::YELLOW, (SUMOReal)50);
195  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
196  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)200);
197  scheme.setAllowsNegativeValues(true);
198  laneColorer.addScheme(scheme);
199  scheme = GUIColorScheme("by inclination", RGBColor::GREY);
200  scheme.addColor(RGBColor::YELLOW, (SUMOReal) .1);
201  scheme.addColor(RGBColor::RED, (SUMOReal) .3);
202  scheme.addColor(RGBColor::GREEN, (SUMOReal) - .1);
203  scheme.addColor(RGBColor::BLUE, (SUMOReal) - .3);
204  scheme.setAllowsNegativeValues(true);
205  laneColorer.addScheme(scheme);
206  scheme = GUIColorScheme("by segment inclination", RGBColor::GREY);
207  scheme.addColor(RGBColor::YELLOW, (SUMOReal) .1);
208  scheme.addColor(RGBColor::RED, (SUMOReal) .3);
209  scheme.addColor(RGBColor::GREEN, (SUMOReal) - .1);
210  scheme.addColor(RGBColor::BLUE, (SUMOReal) - .3);
211  scheme.setAllowsNegativeValues(true);
212  laneColorer.addScheme(scheme);
213  scheme = GUIColorScheme("by average speed", RGBColor::RED);
214  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
215  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
216  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
217  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
218  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
219  laneColorer.addScheme(scheme);
220  scheme = GUIColorScheme("by average relative speed ", RGBColor::RED);
221  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(0.25));
222  scheme.addColor(RGBColor::GREEN, (SUMOReal)(0.5));
223  scheme.addColor(RGBColor::CYAN, (SUMOReal)(0.75));
224  scheme.addColor(RGBColor::BLUE, (SUMOReal)(1));
225  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(1.25));
226  laneColorer.addScheme(scheme);
227  scheme = GUIColorScheme("by routing device assumed speed ", RGBColor::RED);
228  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
229  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
230  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
231  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
232  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
233  laneColorer.addScheme(scheme);
234  scheme = GUIColorScheme("by electricity consumption", RGBColor::GREEN);
235  scheme.addColor(RGBColor::RED, (SUMOReal)(1 / 7.5 / 5.));
236  laneColorer.addScheme(scheme);
237 
238 
240  vehicleColorer.addScheme(GUIColorScheme("given vehicle/type/route color", RGBColor::YELLOW, "", true));
242  vehicleColorer.addScheme(GUIColorScheme("given/assigned vehicle color", RGBColor::YELLOW, "", true));
243  vehicleColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
244  vehicleColorer.addScheme(GUIColorScheme("given/assigned route color", RGBColor::YELLOW, "", true));
245  vehicleColorer.addScheme(GUIColorScheme("depart position as HSV", RGBColor::YELLOW, "", true));
246  vehicleColorer.addScheme(GUIColorScheme("arrival position as HSV", RGBColor::YELLOW, "", true));
247  vehicleColorer.addScheme(GUIColorScheme("direction/distance as HSV", RGBColor::YELLOW, "", true));
248  scheme = GUIColorScheme("by speed", RGBColor::RED);
249  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
250  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
251  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
252  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
253  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
254  vehicleColorer.addScheme(scheme);
255  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE);
256  scheme.addColor(RGBColor::CYAN, (SUMOReal)30);
257  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
258  scheme.addColor(RGBColor::YELLOW, (SUMOReal)200);
259  scheme.addColor(RGBColor::RED, (SUMOReal)300);
260  vehicleColorer.addScheme(scheme);
261  scheme = GUIColorScheme("by accumulated waiting time", RGBColor::BLUE);
262  scheme.addColor(RGBColor::CYAN, (SUMOReal)25);
263  scheme.addColor(RGBColor::GREEN, (SUMOReal)50);
264  scheme.addColor(RGBColor::YELLOW, (SUMOReal)75);
265  scheme.addColor(RGBColor::RED, (SUMOReal)100);
266  vehicleColorer.addScheme(scheme);
267  scheme = GUIColorScheme("by time since lane change", RGBColor(179, 179, 179, 255), "0");
268  scheme.addColor(RGBColor(189, 189, 179, 255), -180);
269  scheme.addColor(RGBColor(255, 255, 0, 255), -20);
270  scheme.addColor(RGBColor(255, 0, 0, 255), -0.001);
271  scheme.addColor(RGBColor(0, 0, 255, 255), 0.001);
272  scheme.addColor(RGBColor(0, 255, 255, 255), 20);
273  scheme.addColor(RGBColor(179, 189, 189, 255), 180);
274  scheme.setAllowsNegativeValues(true);
275  vehicleColorer.addScheme(scheme);
276  scheme = GUIColorScheme("by max speed", RGBColor::RED);
277  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
278  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
279  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
280  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
281  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
282  vehicleColorer.addScheme(scheme);
283  // ... emissions ...
284  scheme = GUIColorScheme("by CO2 emissions", RGBColor::GREEN);
285  scheme.addColor(RGBColor::RED, (SUMOReal)5.);
286  vehicleColorer.addScheme(scheme);
287  scheme = GUIColorScheme("by CO emissions", RGBColor::GREEN);
288  scheme.addColor(RGBColor::RED, (SUMOReal)0.05);
289  vehicleColorer.addScheme(scheme);
290  scheme = GUIColorScheme("by PMx emissions", RGBColor::GREEN);
291  scheme.addColor(RGBColor::RED, (SUMOReal).005);
292  vehicleColorer.addScheme(scheme);
293  scheme = GUIColorScheme("by NOx emissions", RGBColor::GREEN);
294  scheme.addColor(RGBColor::RED, (SUMOReal).125);
295  vehicleColorer.addScheme(scheme);
296  scheme = GUIColorScheme("by HC emissions", RGBColor::GREEN);
297  scheme.addColor(RGBColor::RED, (SUMOReal).02);
298  vehicleColorer.addScheme(scheme);
299  scheme = GUIColorScheme("by fuel consumption", RGBColor::GREEN);
300  scheme.addColor(RGBColor::RED, (SUMOReal).005);
301  vehicleColorer.addScheme(scheme);
302  scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREEN);
303  scheme.addColor(RGBColor::RED, (SUMOReal)100.);
304  vehicleColorer.addScheme(scheme);
305  scheme = GUIColorScheme("by reroute number", RGBColor::RED);
306  scheme.addColor(RGBColor::YELLOW, (SUMOReal)1.);
307  scheme.addColor(RGBColor::WHITE, (SUMOReal)10.);
308  vehicleColorer.addScheme(scheme);
309  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
310  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
311  vehicleColorer.addScheme(scheme);
312  scheme = GUIColorScheme("by offset from best lane", RGBColor(179, 179, 179, 255), "0");
313  scheme.addColor(RGBColor(255, 0, 0, 255), -3, "-3");
314  scheme.addColor(RGBColor(255, 255, 0, 255), -1, "-1");
315  scheme.addColor(RGBColor(0, 255, 255, 255), 1, "1");
316  scheme.addColor(RGBColor(0, 0, 255, 255), 3, "3");
317  scheme.setAllowsNegativeValues(true);
318  vehicleColorer.addScheme(scheme);
319  scheme = GUIColorScheme("by acceleration", RGBColor(179, 179, 179, 255), "0");
320  scheme.addColor(RGBColor(255, 0, 0, 255), -4.5 /* -SUMOVTypeParameter::getDefaultDecel() */);
321  scheme.addColor(RGBColor(255, 255, 0, 255), -0.1);
322  scheme.addColor(RGBColor(0, 255, 255, 255), 0.1);
323  scheme.addColor(RGBColor(0, 0, 255, 255), 2.6 /* SUMOVTypeParameter::getDefaultAccel() */);
324  scheme.setAllowsNegativeValues(true);
325  vehicleColorer.addScheme(scheme);
326  scheme = GUIColorScheme("by time gap", RGBColor(255, 255, 0, 255), "0");
327  scheme.addColor(RGBColor(179, 179, 179, 255), -1);
328  scheme.addColor(RGBColor(0, 255, 255, 255), 1);
329  scheme.addColor(RGBColor(0, 0, 255, 255), 2);
330  scheme.setAllowsNegativeValues(true);
331  vehicleColorer.addScheme(scheme);
332  scheme = GUIColorScheme("by depart delay", RGBColor::BLUE);
333  scheme.addColor(RGBColor::CYAN, (SUMOReal)30);
334  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
335  scheme.addColor(RGBColor::YELLOW, (SUMOReal)200);
336  scheme.addColor(RGBColor::RED, (SUMOReal)300);
337  vehicleColorer.addScheme(scheme);
338  scheme = GUIColorScheme("by electricity consumption", RGBColor::GREEN);
339  scheme.addColor(RGBColor::RED, (SUMOReal)5);
340  vehicleColorer.addScheme(scheme);
342 
344  personColorer.addScheme(GUIColorScheme("given person/type color", RGBColor::YELLOW, "", true));
346  personColorer.addScheme(GUIColorScheme("given/assigned person color", RGBColor::YELLOW, "", true));
347  personColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
348  scheme = GUIColorScheme("by speed", RGBColor::RED);
349  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(2.5 / 3.6));
350  scheme.addColor(RGBColor::GREEN, (SUMOReal)(5 / 3.6));
351  scheme.addColor(RGBColor::BLUE, (SUMOReal)(10 / 3.6));
352  personColorer.addScheme(scheme);
353  scheme = GUIColorScheme("by mode", RGBColor::YELLOW); // walking
354  scheme.addColor(RGBColor::BLUE, (SUMOReal)(1)); // riding
355  scheme.addColor(RGBColor::RED, (SUMOReal)(2)); // stopped
356  scheme.addColor(RGBColor::GREEN, (SUMOReal)(3)); // waiting for ride
357  personColorer.addScheme(scheme);
358  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE);
359  scheme.addColor(RGBColor::CYAN, (SUMOReal)30);
360  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
361  scheme.addColor(RGBColor::YELLOW, (SUMOReal)200);
362  scheme.addColor(RGBColor::RED, (SUMOReal)300);
363  personColorer.addScheme(scheme);
364  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
365  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
366  personColorer.addScheme(scheme);
367  personColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
369 
371  containerColorer.addScheme(GUIColorScheme("given container/type color", RGBColor::YELLOW, "", true));
373  containerColorer.addScheme(GUIColorScheme("given/assigned container color", RGBColor::YELLOW, "", true));
374  containerColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
375  scheme = GUIColorScheme("by speed", RGBColor::RED);
376  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(2.5 / 3.6));
377  scheme.addColor(RGBColor::GREEN, (SUMOReal)(5 / 3.6));
378  scheme.addColor(RGBColor::BLUE, (SUMOReal)(10 / 3.6));
379  containerColorer.addScheme(scheme);
380  scheme = GUIColorScheme("by mode", RGBColor::YELLOW); // walking
381  scheme.addColor(RGBColor::BLUE, (SUMOReal)(1)); // riding
382  scheme.addColor(RGBColor::RED, (SUMOReal)(2)); // stopped
383  scheme.addColor(RGBColor::GREEN, (SUMOReal)(3)); // waiting for ride
384  containerColorer.addScheme(scheme);
385  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE);
386  scheme.addColor(RGBColor::CYAN, (SUMOReal)30);
387  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
388  scheme.addColor(RGBColor::YELLOW, (SUMOReal)200);
389  scheme.addColor(RGBColor::RED, (SUMOReal)300);
390  containerColorer.addScheme(scheme);
391  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
392  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
393  containerColorer.addScheme(scheme);
395 
397  scheme = GUIColorScheme("uniform", RGBColor::BLACK, "", true);
398  scheme.addColor(RGBColor(150, 200, 200), 1, "waterway");
399  junctionColorer.addScheme(scheme);
400  scheme = GUIColorScheme("by selection", RGBColor(128, 128, 128, 255), "unselected", true);
401  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
402  junctionColorer.addScheme(scheme);
403  scheme = GUIColorScheme("by type", RGBColor::GREEN, "traffic_light", true);
404  scheme.addColor(RGBColor(0, 128, 0), 1, "traffic_light_unregulated");
405  scheme.addColor(RGBColor::YELLOW, 2, "priority");
406  scheme.addColor(RGBColor::RED, 3, "priority_stop");
407  scheme.addColor(RGBColor::BLUE, 4, "right_before_left");
408  scheme.addColor(RGBColor::CYAN, 5, "allway_stop");
409  scheme.addColor(RGBColor::GREY, 6, "district");
410  scheme.addColor(RGBColor::MAGENTA, 7, "unregulated");
411  scheme.addColor(RGBColor::BLACK, 8, "dead_end");
412  scheme.addColor(RGBColor::ORANGE, 9, "rail_signal");
413  scheme.addColor(RGBColor(192, 128, 64), 10, "zipper"); // light brown
414  scheme.addColor(RGBColor(192, 255, 192), 11, "traffic_light_right_on_red"); // light green
415  scheme.addColor(RGBColor(128, 0, 128), 12, "rail_crossing"); // dark purple
416  junctionColorer.addScheme(scheme);
417 
418 
420  {
421  GUIScaleScheme scheme = GUIScaleScheme("default", 1, "uniform", true);
422  laneScaler.addScheme(scheme);
423  scheme = GUIScaleScheme("by selection (lane-/streetwise)", 0.5, "unselected", true);
424  scheme.addColor(5, 1, "selected");
425  laneScaler.addScheme(scheme);
426  // ... traffic states ...
427  scheme = GUIScaleScheme("by allowed speed (lanewise)", 0);
428  scheme.addColor(10, (SUMOReal)(150.0 / 3.6));
429  laneScaler.addScheme(scheme);
430  scheme = GUIScaleScheme("by current occupancy (lanewise, brutto)", 0);
431  scheme.addColor(10, (SUMOReal)0.95);
432  laneScaler.addScheme(scheme);
433  scheme = GUIScaleScheme("by current occupancy (lanewise, netto)", 0);
434  scheme.addColor(10, (SUMOReal)0.95);
435  laneScaler.addScheme(scheme);
436  scheme = GUIScaleScheme("by first vehicle waiting time (lanewise)", 0);
437  scheme.addColor(10, (SUMOReal)300);
438  laneScaler.addScheme(scheme);
439  scheme = GUIScaleScheme("by lane number (streetwise)", 1);
440  scheme.addColor(10, (SUMOReal)5);
441  laneScaler.addScheme(scheme);
442  // ... emissions ...
443  scheme = GUIScaleScheme("by CO2 emissions", 0);
444  scheme.addColor(10, (SUMOReal)(10. / 7.5 / 5.));
445  laneScaler.addScheme(scheme);
446  scheme = GUIScaleScheme("by CO emissions", 0);
447  scheme.addColor(10, (SUMOReal)(0.05 / 7.5 / 2.));
448  laneScaler.addScheme(scheme);
449  scheme = GUIScaleScheme("by PMx emissions", 0);
450  scheme.addColor(10, (SUMOReal)(.005 / 7.5 / 5.));
451  laneScaler.addScheme(scheme);
452  scheme = GUIScaleScheme("by NOx emissions", 0);
453  scheme.addColor(10, (SUMOReal)(.125 / 7.5 / 5.));
454  laneScaler.addScheme(scheme);
455  scheme = GUIScaleScheme("by HC emissions", 0);
456  scheme.addColor(10, (SUMOReal)(.02 / 7.5 / 4.));
457  laneScaler.addScheme(scheme);
458  scheme = GUIScaleScheme("by fuel consumption", 0);
459  scheme.addColor(10, (SUMOReal)(.005 / 7.5 * 100.));
460  laneScaler.addScheme(scheme);
461  scheme = GUIScaleScheme("by noise emissions (Harmonoise)", 0);
462  scheme.addColor(10, (SUMOReal)100);
463  laneScaler.addScheme(scheme);
464  // ... weights (experimental) ...
465  scheme = GUIScaleScheme("by global travel time", 0);
466  scheme.addColor(10, (SUMOReal)100);
467  scheme.setAllowsNegativeValues(true);
468  laneScaler.addScheme(scheme);
469  scheme = GUIScaleScheme("by global speed percentage", 0);
470  scheme.addColor(10, (SUMOReal)100);
471  scheme.setAllowsNegativeValues(true);
472  laneScaler.addScheme(scheme);
473  scheme = GUIScaleScheme("by given length/geometrical length", 0);
474  scheme.addColor(10, (SUMOReal)10.0);
475  laneScaler.addScheme(scheme);
476  scheme = GUIScaleScheme("by loaded weight", 0);
477  scheme.addColor(-1000, (SUMOReal) - 1000);
478  scheme.addColor(1000, (SUMOReal)1000);
479  scheme.setAllowsNegativeValues(true);
480  laneScaler.addScheme(scheme);
481  scheme = GUIScaleScheme("by priority", 1);
482  scheme.addColor(0.5, (SUMOReal) - 20);
483  scheme.addColor(5, (SUMOReal)20);
484  scheme.setAllowsNegativeValues(true);
485  laneScaler.addScheme(scheme);
486  scheme = GUIScaleScheme("by average speed", 0);
487  scheme.addColor(10, (SUMOReal)(150.0 / 3.6));
488  laneScaler.addScheme(scheme);
489  scheme = GUIScaleScheme("by average relative speed", 0);
490  scheme.addColor(0.5, (SUMOReal)(0.5));
491  scheme.addColor(2, (SUMOReal)(1));
492  scheme.addColor(10, (SUMOReal)(2));
493  laneScaler.addScheme(scheme);
494  scheme = GUIScaleScheme("by electricity consumption", 0);
495  scheme.addColor(10, (SUMOReal)(1 / 7.5 / 5.));
496  laneScaler.addScheme(scheme);
497  }
498 
499 
501  edgeColorer.addScheme(GUIColorScheme("uniform (streetwise)", RGBColor::BLACK, "", true));
502  scheme = GUIColorScheme("by selection (streetwise)", RGBColor(128, 128, 128, 255), "unselected", true);
503  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
504  edgeColorer.addScheme(scheme);
505  scheme = GUIColorScheme("by purpose (streetwise)", RGBColor(), "normal", true);
506  scheme.addColor(RGBColor(128, 0, 128, 255), 1, "connector"); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_CONNECTOR
507  scheme.addColor(RGBColor::BLUE, 2, "internal"); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_INTERNAL
508  edgeColorer.addScheme(scheme);
509  scheme = GUIColorScheme("by allowed speed (streetwise)", RGBColor::RED);
510  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
511  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
512  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
513  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
514  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
515  edgeColorer.addScheme(scheme);
516  scheme = GUIColorScheme("by current occupancy (streetwise)", RGBColor::BLUE);
517  scheme.addColor(RGBColor::RED, (SUMOReal)0.95);
518  edgeColorer.addScheme(scheme);
519  scheme = GUIColorScheme("by current speed (streetwise)", RGBColor::RED);
520  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
521  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
522  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
523  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
524  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
525  edgeColorer.addScheme(scheme);
526  scheme = GUIColorScheme("by current flow (streetwise)", RGBColor::BLUE);
527  scheme.addColor(RGBColor::RED, (SUMOReal)5000);
528  edgeColorer.addScheme(scheme);
529  scheme = GUIColorScheme("by relative speed (streetwise)", RGBColor::RED);
530  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(0.25));
531  scheme.addColor(RGBColor::GREEN, (SUMOReal)(0.5));
532  scheme.addColor(RGBColor::CYAN, (SUMOReal)(0.75));
533  scheme.addColor(RGBColor::BLUE, (SUMOReal)(1));
534  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(1.25));
535  edgeColorer.addScheme(scheme);
536 
537 
539  {
540  edgeScaler.addScheme(GUIScaleScheme("uniform", 1, "", true));
541  GUIScaleScheme scheme = GUIScaleScheme("by selection (streetwise)", 0.5, "unselected", true);
542  scheme.addColor(5, 1, "selected");
543  edgeScaler.addScheme(scheme);
544  scheme = GUIScaleScheme("by allowed speed (streetwise)", 0);
545  scheme.addColor(10, (SUMOReal)(150.0 / 3.6));
546  edgeScaler.addScheme(scheme);
547  scheme = GUIScaleScheme("by current occupancy (streetwise)", 0);
548  scheme.addColor(10, (SUMOReal)0.95);
549  edgeScaler.addScheme(scheme);
550  scheme = GUIScaleScheme("by current speed (streetwise)", 0);
551  scheme.addColor(10, (SUMOReal)(150.0 / 3.6));
552  edgeScaler.addScheme(scheme);
553  scheme = GUIScaleScheme("by current flow (streetwise)", 0);
554  scheme.addColor(20, (SUMOReal)5000);
555  edgeScaler.addScheme(scheme);
556  scheme = GUIScaleScheme("by relative speed (streetwise)", 0);
557  scheme.addColor(20, (SUMOReal)1);
558  edgeScaler.addScheme(scheme);
559  }
560 
561 }
562 
563 
564 size_t
566  if (UseMesoSim) {
567  return edgeColorer.getActive();
568  }
569  return laneColorer.getActive();
570 }
571 
572 
573 size_t
575  if (UseMesoSim) {
576  return edgeScaler.getActive();
577  }
578  return laneScaler.getActive();
579 }
580 
581 
584  if (UseMesoSim) {
585  return edgeColorer.getScheme();
586  }
587  return laneColorer.getScheme();
588 }
589 
590 
593  if (UseMesoSim) {
594  return edgeScaler.getScheme();
595  }
596  return laneScaler.getScheme();
597 }
598 
599 void
604  dev.writeAttr("antialiase", antialiase);
605  dev.writeAttr("dither", dither);
606  dev.closeTag();
608  dev.writeAttr("backgroundColor", backgroundColor);
609  dev.writeAttr("showGrid", showGrid);
610  dev.writeAttr("gridXSize", gridXSize);
611  dev.writeAttr("gridYSize", gridYSize);
612  dev.closeTag();
613  // edges
615  dev.writeAttr("laneEdgeMode", getLaneEdgeMode());
616  dev.writeAttr("scaleMode", getLaneEdgeScaleMode());
617  dev.writeAttr("laneShowBorders", laneShowBorders);
618  dev.writeAttr("showLinkDecals", showLinkDecals);
619  dev.writeAttr("showRails", showRails);
620  dev.writeAttr("hideConnectors", hideConnectors);
621  dev.writeAttr("widthExaggeration", laneWidthExaggeration);
622  dev.lf();
623  dev << " ";
624  edgeName.print(dev, "edgeName");
625  dev.lf();
626  dev << " ";
627  internalEdgeName.print(dev, "internalEdgeName");
628  dev.lf();
629  dev << " ";
630  cwaEdgeName.print(dev, "cwaEdgeName");
631  dev.lf();
632  dev << " ";
633  streetName.print(dev, "streetName");
634  laneColorer.save(dev);
635  laneScaler.save(dev);
636  edgeColorer.save(dev);
637  edgeScaler.save(dev);
638  dev.closeTag();
639  // vehicles
641  dev.writeAttr("vehicleMode", vehicleColorer.getActive());
642  dev.writeAttr("vehicleQuality", vehicleQuality);
643  vehicleSize.print(dev, "vehicle");
644  dev.writeAttr("showBlinker", showBlinker);
645  dev.lf();
646  dev << " ";
647  vehicleName.print(dev, "vehicleName");
648  vehicleColorer.save(dev);
649  dev.closeTag();
650  // persons
652  dev.writeAttr("personMode", personColorer.getActive());
653  dev.writeAttr("personQuality", personQuality);
654  personSize.print(dev, "person");
655  dev.lf();
656  dev << " ";
657  personName.print(dev, "personName");
658  personColorer.save(dev);
659  dev.closeTag();
660  // persons
662  dev.writeAttr("containerMode", containerColorer.getActive());
663  dev.writeAttr("containerQuality", containerQuality);
664  personSize.print(dev, "container");
665  dev.lf();
666  dev << " ";
667  personName.print(dev, "containerName");
668  personColorer.save(dev);
669  dev.closeTag();
670  // junctions
672  dev.writeAttr("junctionMode", junctionColorer.getActive());
673  dev.lf();
674  dev << " ";
675  drawLinkTLIndex.print(dev, "drawLinkTLIndex");
676  dev.lf();
677  dev << " ";
678  drawLinkTLIndex.print(dev, "drawLinkJunctionIndex");
679  dev.lf();
680  dev << " ";
681  junctionName.print(dev, "junctionName");
682  dev.lf();
683  dev << " ";
684  internalJunctionName.print(dev, "internalJunctionName");
685  dev.lf();
686  dev << " ";
687  dev.writeAttr("showLane2Lane", showLane2Lane);
688  dev.writeAttr("drawShape", drawJunctionShape);
689  dev.writeAttr("drawCrossingsAndWalkingareas", drawCrossingsAndWalkingareas);
690  junctionColorer.save(dev);
691  dev.closeTag();
692  // additionals
694  dev.writeAttr("addMode", addMode);
695  addSize.print(dev, "add");
696  addName.print(dev, "addName");
697  dev.closeTag();
698  // pois
700  poiSize.print(dev, "poi");
701  poiName.print(dev, "poiName");
702  poiType.print(dev, "poiType");
703  dev.closeTag();
704  // polys
706  polySize.print(dev, "poly");
707  polyName.print(dev, "polyName");
708  polyType.print(dev, "polyType");
709  dev.closeTag();
710  // legend
712  dev.writeAttr("showSizeLegend", showSizeLegend);
713  dev.closeTag();
714 
715  dev.closeTag();
716 }
717 
718 
719 bool
721  if (antialiase != v2.antialiase) {
722  return false;
723  }
724  if (dither != v2.dither) {
725  return false;
726  }
727  if (backgroundColor != v2.backgroundColor) {
728  return false;
729  }
730  if (showGrid != v2.showGrid) {
731  return false;
732  }
733  if (gridXSize != v2.gridXSize) {
734  return false;
735  }
736  if (gridYSize != v2.gridYSize) {
737  return false;
738  }
739 
740  if (!(edgeColorer == v2.edgeColorer)) {
741  return false;
742  }
743  if (!(edgeScaler == v2.edgeScaler)) {
744  return false;
745  }
746  if (!(laneColorer == v2.laneColorer)) {
747  return false;
748  }
749  if (!(laneScaler == v2.laneScaler)) {
750  return false;
751  }
752  if (laneShowBorders != v2.laneShowBorders) {
753  return false;
754  }
755  if (showLinkDecals != v2.showLinkDecals) {
756  return false;
757  }
758  if (showRails != v2.showRails) {
759  return false;
760  }
761  if (edgeName != v2.edgeName) {
762  return false;
763  }
765  return false;
766  }
767  if (cwaEdgeName != v2.cwaEdgeName) {
768  return false;
769  }
770  if (streetName != v2.streetName) {
771  return false;
772  }
773  if (hideConnectors != v2.hideConnectors) {
774  return false;
775  }
777  return false;
778  }
779  if (!(vehicleColorer == v2.vehicleColorer)) {
780  return false;
781  }
782  if (vehicleQuality != v2.vehicleQuality) {
783  return false;
784  }
785  if (vehicleSize != v2.vehicleSize) {
786  return false;
787  }
788  if (showBlinker != v2.showBlinker) {
789  return false;
790  }
792  return false;
793  }
794  if (drawMinGap != v2.drawMinGap) {
795  return false;
796  }
797  if (showBTRange != v2.showBTRange) {
798  return false;
799  }
800  if (vehicleName != v2.vehicleName) {
801  return false;
802  }
803  if (!(personColorer == v2.personColorer)) {
804  return false;
805  }
806  if (personQuality != v2.personQuality) {
807  return false;
808  }
809  if (personSize != v2.personSize) {
810  return false;
811  }
812  if (personName != v2.personName) {
813  return false;
814  }
815  if (!(containerColorer == v2.containerColorer)) {
816  return false;
817  }
819  return false;
820  }
821  if (containerSize != v2.containerSize) {
822  return false;
823  }
824  if (containerName != v2.containerName) {
825  return false;
826  }
827  if (!(junctionColorer == v2.junctionColorer)) {
828  return false;
829  }
830  if (drawLinkTLIndex != v2.drawLinkTLIndex) {
831  return false;
832  }
834  return false;
835  }
836  if (junctionName != v2.junctionName) {
837  return false;
838  }
840  return false;
841  }
842 
843  if (showLane2Lane != v2.showLane2Lane) {
844  return false;
845  }
846 
848  return false;
849  }
850 
852  return false;
853  }
854 
855  if (addMode != v2.addMode) {
856  return false;
857  }
858  if (addSize != v2.addSize) {
859  return false;
860  }
861  if (addName != v2.addName) {
862  return false;
863  }
864  if (poiSize != v2.poiSize) {
865  return false;
866  }
867  if (poiName != v2.poiName) {
868  return false;
869  }
870  if (poiType != v2.poiType) {
871  return false;
872  }
873  if (polySize != v2.polySize) {
874  return false;
875  }
876  if (polyName != v2.polyName) {
877  return false;
878  }
879  if (polyType != v2.polyType) {
880  return false;
881  }
882 
883  if (showSizeLegend != v2.showSizeLegend) {
884  return false;
885  }
886 
887  return true;
888 }
889 
890 
891 SUMOReal
894  return (constantSize && !s.drawForSelecting) ? MAX2((SUMOReal)exaggeration, exaggeration * 20 / s.scale) : exaggeration;
895 }
896 
897 /****************************************************************************/
898 
899 
GUIVisualizationTextSettings junctionName
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
Definition: OutputDevice.h:257
static const RGBColor BLUE
Definition: RGBColor.h:191
bool showSizeLegend
Information whether the size legend shall be drawn.
GUIVisualizationTextSettings poiType
GUIVisualizationTextSettings streetName
float laneWidthExaggeration
The lane exaggeration (upscale thickness)
size_t getLaneEdgeMode() const
Returns the number of the active lane (edge) coloring schme.
is a pedestrian
bool showBlinker
Information whether vehicle blinkers shall be drawn.
GUIVisualizationTextSettings addName
GUIVisualizationTextSettings personName
void setAllowsNegativeValues(bool value)
GUIVisualizationTextSettings poiName
static const RGBColor WHITE
Definition: RGBColor.h:196
GUIColorScheme & getLaneEdgeScheme()
Returns the current lane (edge) coloring schme.
void print(OutputDevice &dev, const std::string &name) const
bool showBTRange
Information whether the communication range shall be drawn.
GUIColorer laneColorer
The lane colorer.
GUIColorer containerColorer
The container colorer.
Stores the information about how to visualize structures.
vehicle is a bicycle
GUIColorer edgeColorer
The mesoscopic edge colorer.
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.
GUIVisualizationTextSettings vehicleName
classes which (normally) do not drive on normal roads
bool operator==(const GUIVisualizationSettings &vs2)
Comparison operator.
static const RGBColor ORANGE
Definition: RGBColor.h:195
T MAX2(T a, T b)
Definition: StdDefs.h:75
GUIVisualizationTextSettings cwaEdgeName
bool laneShowBorders
Information whether lane borders shall be drawn.
static const RGBColor BLACK
Definition: RGBColor.h:197
const SVCPermissions SVCAll
bool dither
Information whether dithering shall be enabled.
SUMOReal scale
information about a lane&#39;s width (temporary, used for a single view)
GUIVisualizationSizeSettings polySize
GUIColorer vehicleColorer
The vehicle colorer.
GUIVisualizationTextSettings edgeName
GUIVisualizationSizeSettings addSize
void save(OutputDevice &dev) const
static const RGBColor GREEN
Definition: RGBColor.h:190
static const RGBColor GREY
Definition: RGBColor.h:198
std::string name
The name of this setting.
GUIVisualizationTextSettings internalEdgeName
bool drawMinGap
Information whether the minimum gap shall be drawn.
int addMode
The additional structures visualization scheme.
GUIVisualizationTextSettings polyType
static const RGBColor MAGENTA
Definition: RGBColor.h:194
GUIVisualizationTextSettings drawLinkTLIndex
GUIColorer personColorer
The person colorer.
GUIVisualizationTextSettings internalJunctionName
GUIColorer junctionColorer
The junction colorer.
SUMOReal gridXSize
Information about the grid spacings.
GUIScaler edgeScaler
The mesoscopic edge scaler.
unsigned int addColor(const T &color, const SUMOReal threshold, const std::string &name="")
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.
bool antialiase
Information whether antialiase shall be enabled.
is an arbitrary ship
vehicle is a moped
vehicle is a taxi
GUIVisualizationSizeSettings poiSize
vehicle is a bus
static const RGBColor YELLOW
Definition: RGBColor.h:192
static const RGBColor RED
Definition: RGBColor.h:189
GUIPropertyScheme< SUMOReal > GUIScaleScheme
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
static const RGBColor CYAN
Definition: RGBColor.h:193
GUIVisualizationSizeSettings containerSize
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
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:71
bool closeTag()
Closes the most recently opened tag.
#define SUMOReal
Definition: config.h:213
void save(OutputDevice &dev) const
Writes the settings into an output device.
GUIVisualizationSizeSettings vehicleSize
bool drawJunctionShape
whether the shape of the junction should be drawn
GUIPropertyScheme< RGBColor > GUIColorScheme
void print(OutputDevice &dev, const std::string &name) const
int vehicleQuality
The quality of vehicle drawing.
static bool UseMesoSim
this should be set at the same time as MSGlobals::gUseMesoSim
bool drawForSelecting
whether drawing is performed for the purpose of selecting objects
GUIScaler laneScaler
The lane scaler.
GUIVisualizationTextSettings drawLinkJunctionIndex
size_t getLaneEdgeScaleMode() const
Returns the number of the active lane (edge) scaling schme.
SUMOReal getExaggeration(const GUIVisualizationSettings &s) const
return the drawing size including exaggeration and constantSize values
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
void lf()
writes a line feed if applicable
Definition: OutputDevice.h:235
GUIVisualizationTextSettings polyName
GUIVisualizationTextSettings containerName