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),
55  showLinkRules(true), showRails(true),
56  edgeName(false, 50, RGBColor(255, 128, 0, 255)),
57  internalEdgeName(false, 40, RGBColor(128, 64, 0, 255)),
58  cwaEdgeName(false, 50, RGBColor::MAGENTA),
59  streetName(false, 55, RGBColor::YELLOW),
60  hideConnectors(false),
61  laneWidthExaggeration(1),
62  laneMinSize(0),
63  showLaneDirection(false),
64  showSublanes(true),
65  vehicleQuality(0), showBlinker(true),
66  drawLaneChangePreference(false), drawMinGap(false),
67  showBTRange(false), vehicleSize(1),
68  vehicleName(false, 50, RGBColor(204, 153, 0, 255)),
69  personQuality(0),
70  personSize(1),
71  personName(false, 50, RGBColor(0, 153, 204, 255)),
72  containerQuality(0),
73  containerSize(1),
74  containerName(false, 50, RGBColor(0, 153, 204, 255)),
75  drawLinkTLIndex(false, 50, RGBColor(128, 128, 255, 255)),
76  drawLinkJunctionIndex(false, 50, RGBColor(128, 128, 255, 255)),
77  junctionName(false, 50, RGBColor(0, 255, 128, 255)),
78  internalJunctionName(false, 50, RGBColor(0, 204, 128, 255)),
79  showLane2Lane(false),
80  drawJunctionShape(true),
81  drawCrossingsAndWalkingareas(true),
82  junctionSize(1),
83  addMode(0),
84  addSize(1),
85  addName(false, 50, RGBColor(255, 0, 128, 255)),
86  poiSize(0), poiName(false, 50, RGBColor(255, 0, 128, 255)),
87  poiType(false, 50, RGBColor(255, 0, 128, 255)),
88  polySize(0), polyName(false, 50, RGBColor(255, 0, 128, 255)),
89  polyType(false, 50, RGBColor(255, 0, 128, 255)),
90  showSizeLegend(true),
91  gaming(false),
92  selectionScale(1),
93  drawForSelecting(false) {
95  GUIColorScheme scheme = GUIColorScheme("uniform", RGBColor::BLACK, "road", true);
96  scheme.addColor(RGBColor::GREY, 1, "sidewalk");
97  scheme.addColor(RGBColor(192, 66, 44), 2, "bike lane");
98  scheme.addColor(RGBColor(0, 0, 0, 0), 3, "green verge");
99  scheme.addColor(RGBColor(150, 200, 200), 4, "waterway");
100  scheme.addColor(RGBColor(92, 92, 92), 5, "no passenger"); // paths, service roads etc
101  scheme.addColor(RGBColor::RED, 6, "closed"); // road closing
102  laneColorer.addScheme(scheme);
103  scheme = GUIColorScheme("by selection (lane-/streetwise)", RGBColor(128, 128, 128, 255), "unselected", true);
104  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
105  laneColorer.addScheme(scheme);
106  scheme = GUIColorScheme("by permission code", RGBColor(240, 240, 240), "nobody");
107  scheme.addColor(RGBColor(10, 10, 10), (SUMOReal)SVC_PASSENGER, "passenger");
108  scheme.addColor(RGBColor(128, 128, 128), (SUMOReal)SVC_PEDESTRIAN, "pedestrian");
109  scheme.addColor(RGBColor(80, 80, 80), (SUMOReal)(SVC_PEDESTRIAN | SVC_DELIVERY), "pedestrian_delivery");
110  scheme.addColor(RGBColor(192, 66, 44), (SUMOReal)SVC_BICYCLE, "bicycle");
111  scheme.addColor(RGBColor(40, 100, 40), (SUMOReal)SVC_BUS, "bus");
112  scheme.addColor(RGBColor(166, 147, 26), (SUMOReal)SVC_TAXI, "taxi");
113  scheme.addColor(RGBColor::BLACK, (SUMOReal)(SVCAll & ~SVC_NON_ROAD), "normal_road");
114  scheme.addColor(RGBColor::BLACK, (SUMOReal)(SVCAll & ~(SVC_PEDESTRIAN | SVC_NON_ROAD)), "disallow_pedestrian");
115  scheme.addColor(RGBColor(255, 206, 0), (SUMOReal)(SVCAll & ~(SVC_PEDESTRIAN | SVC_BICYCLE | SVC_MOPED | SVC_NON_ROAD)), "motorway");
116  scheme.addColor(RGBColor(150, 200, 200), (SUMOReal)SVC_SHIP, "waterway");
117  scheme.addColor(RGBColor::GREEN, (SUMOReal)SVCAll, "all");
118  laneColorer.addScheme(scheme);
119  // ... traffic states ...
120  scheme = GUIColorScheme("by allowed speed (lanewise)", RGBColor::RED);
121  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
122  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
123  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
124  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
125  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
126  laneColorer.addScheme(scheme);
127  scheme = GUIColorScheme("by current occupancy (lanewise, brutto)", RGBColor::BLUE);
128  scheme.addColor(RGBColor::RED, (SUMOReal)0.95);
129  laneColorer.addScheme(scheme);
130  scheme = GUIColorScheme("by current occupancy (lanewise, netto)", RGBColor::BLUE);
131  scheme.addColor(RGBColor::RED, (SUMOReal)0.95);
132  laneColorer.addScheme(scheme);
133  scheme = GUIColorScheme("by first vehicle waiting time (lanewise)", RGBColor::BLUE);
134  scheme.addColor(RGBColor::CYAN, (SUMOReal)30);
135  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
136  scheme.addColor(RGBColor::YELLOW, (SUMOReal)200);
137  scheme.addColor(RGBColor::RED, (SUMOReal)300);
138  laneColorer.addScheme(scheme);
139  scheme = GUIColorScheme("by lane number (streetwise)", RGBColor::RED);
140  scheme.addColor(RGBColor::BLUE, (SUMOReal)5);
141  laneColorer.addScheme(scheme);
142  // ... emissions ...
143  scheme = GUIColorScheme("by CO2 emissions", RGBColor::GREEN);
144  scheme.addColor(RGBColor::RED, (SUMOReal)(10. / 7.5 / 5.));
145  laneColorer.addScheme(scheme);
146  scheme = GUIColorScheme("by CO emissions", RGBColor::GREEN);
147  scheme.addColor(RGBColor::RED, (SUMOReal)(0.05 / 7.5 / 2.));
148  laneColorer.addScheme(scheme);
149  scheme = GUIColorScheme("by PMx emissions", RGBColor::GREEN);
150  scheme.addColor(RGBColor::RED, (SUMOReal)(.005 / 7.5 / 5.));
151  laneColorer.addScheme(scheme);
152  scheme = GUIColorScheme("by NOx emissions", RGBColor::GREEN);
153  scheme.addColor(RGBColor::RED, (SUMOReal)(.125 / 7.5 / 5.));
154  laneColorer.addScheme(scheme);
155  scheme = GUIColorScheme("by HC emissions", RGBColor::GREEN);
156  scheme.addColor(RGBColor::RED, (SUMOReal)(.02 / 7.5 / 4.));
157  laneColorer.addScheme(scheme);
158  scheme = GUIColorScheme("by fuel consumption", RGBColor::GREEN);
159  scheme.addColor(RGBColor::RED, (SUMOReal)(.005 / 7.5 * 100.));
160  laneColorer.addScheme(scheme);
161  scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREEN);
162  scheme.addColor(RGBColor::RED, (SUMOReal)100);
163  laneColorer.addScheme(scheme);
164  // ... weights (experimental) ...
165  scheme = GUIColorScheme("by global travel time", RGBColor::GREEN);
166  scheme.addColor(RGBColor::RED, (SUMOReal)100);
167  scheme.setAllowsNegativeValues(true);
168  laneColorer.addScheme(scheme);
169  scheme = GUIColorScheme("by global speed percentage", RGBColor::RED);
170  scheme.addColor(RGBColor::YELLOW, (SUMOReal)50);
171  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
172  scheme.setAllowsNegativeValues(true);
173  laneColorer.addScheme(scheme);
174  scheme = GUIColorScheme("by given length/geometrical length", RGBColor::BLACK);
175  scheme.addColor(RGBColor::RED, (SUMOReal)0.25);
176  scheme.addColor(RGBColor::YELLOW, (SUMOReal)0.5);
177  scheme.addColor(RGBColor(179, 179, 179, 255), (SUMOReal)1.0);
178  scheme.addColor(RGBColor::GREEN, (SUMOReal)2.0);
179  scheme.addColor(RGBColor::BLUE, (SUMOReal)4.0);
180  laneColorer.addScheme(scheme);
181  laneColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
182  scheme = GUIColorScheme("by loaded weight", RGBColor::GREEN);
183  scheme.addColor(RGBColor::RED, (SUMOReal)100);
184  scheme.setAllowsNegativeValues(true);
185  laneColorer.addScheme(scheme);
186  scheme = GUIColorScheme("by priority", RGBColor::YELLOW);
187  scheme.addColor(RGBColor::RED, (SUMOReal) - 20);
188  scheme.addColor(RGBColor::GREEN, (SUMOReal)20);
189  scheme.setAllowsNegativeValues(true);
190  laneColorer.addScheme(scheme);
191  scheme = GUIColorScheme("by height at start", RGBColor::RED);
192  scheme.addColor(RGBColor::BLUE, (SUMOReal) - 10);
193  scheme.addColor(RGBColor::YELLOW, (SUMOReal)50);
194  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
195  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)200);
196  scheme.setAllowsNegativeValues(true);
197  laneColorer.addScheme(scheme);
198  scheme = GUIColorScheme("by height at geometry-segment start", RGBColor::RED);
199  scheme.addColor(RGBColor::BLUE, (SUMOReal) - 10);
200  scheme.addColor(RGBColor::YELLOW, (SUMOReal)50);
201  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
202  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)200);
203  scheme.setAllowsNegativeValues(true);
204  laneColorer.addScheme(scheme);
205  scheme = GUIColorScheme("by inclination", RGBColor::GREY);
206  scheme.addColor(RGBColor::YELLOW, (SUMOReal) .1);
207  scheme.addColor(RGBColor::RED, (SUMOReal) .3);
208  scheme.addColor(RGBColor::GREEN, (SUMOReal) - .1);
209  scheme.addColor(RGBColor::BLUE, (SUMOReal) - .3);
210  scheme.setAllowsNegativeValues(true);
211  laneColorer.addScheme(scheme);
212  scheme = GUIColorScheme("by geometry-segment inclination", RGBColor::GREY);
213  scheme.addColor(RGBColor::YELLOW, (SUMOReal) .1);
214  scheme.addColor(RGBColor::RED, (SUMOReal) .3);
215  scheme.addColor(RGBColor::GREEN, (SUMOReal) - .1);
216  scheme.addColor(RGBColor::BLUE, (SUMOReal) - .3);
217  scheme.setAllowsNegativeValues(true);
218  laneColorer.addScheme(scheme);
219  scheme = GUIColorScheme("by average speed", RGBColor::RED);
220  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
221  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
222  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
223  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
224  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
225  laneColorer.addScheme(scheme);
226  scheme = GUIColorScheme("by average relative speed ", RGBColor::RED);
227  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(0.25));
228  scheme.addColor(RGBColor::GREEN, (SUMOReal)(0.5));
229  scheme.addColor(RGBColor::CYAN, (SUMOReal)(0.75));
230  scheme.addColor(RGBColor::BLUE, (SUMOReal)(1));
231  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(1.25));
232  laneColorer.addScheme(scheme);
233  scheme = GUIColorScheme("by routing device assumed speed ", RGBColor::RED);
234  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
235  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
236  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
237  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
238  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
239  laneColorer.addScheme(scheme);
240  scheme = GUIColorScheme("by electricity consumption", RGBColor::GREEN);
241  scheme.addColor(RGBColor::RED, (SUMOReal)(1 / 7.5 / 5.));
242  laneColorer.addScheme(scheme);
243  scheme = GUIColorScheme("by insertion-backlog (streetwise)", RGBColor::GREY);
244  scheme.addColor(RGBColor::GREEN, (SUMOReal)1);
245  scheme.addColor(RGBColor::YELLOW, (SUMOReal)10);
246  scheme.addColor(RGBColor::RED, (SUMOReal)100);
247  laneColorer.addScheme(scheme);
248 
249 
251  vehicleColorer.addScheme(GUIColorScheme("given vehicle/type/route color", RGBColor::YELLOW, "", true));
253  vehicleColorer.addScheme(GUIColorScheme("given/assigned vehicle color", RGBColor::YELLOW, "", true));
254  vehicleColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
255  vehicleColorer.addScheme(GUIColorScheme("given/assigned route color", RGBColor::YELLOW, "", true));
256  vehicleColorer.addScheme(GUIColorScheme("depart position as HSV", RGBColor::YELLOW, "", true));
257  vehicleColorer.addScheme(GUIColorScheme("arrival position as HSV", RGBColor::YELLOW, "", true));
258  vehicleColorer.addScheme(GUIColorScheme("direction/distance as HSV", RGBColor::YELLOW, "", true));
259  scheme = GUIColorScheme("by speed", RGBColor::RED);
260  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
261  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
262  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
263  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
264  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
265  vehicleColorer.addScheme(scheme);
266  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE);
267  scheme.addColor(RGBColor::CYAN, (SUMOReal)30);
268  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
269  scheme.addColor(RGBColor::YELLOW, (SUMOReal)200);
270  scheme.addColor(RGBColor::RED, (SUMOReal)300);
271  vehicleColorer.addScheme(scheme);
272  scheme = GUIColorScheme("by accumulated waiting time", RGBColor::BLUE);
273  scheme.addColor(RGBColor::CYAN, (SUMOReal)25);
274  scheme.addColor(RGBColor::GREEN, (SUMOReal)50);
275  scheme.addColor(RGBColor::YELLOW, (SUMOReal)75);
276  scheme.addColor(RGBColor::RED, (SUMOReal)100);
277  vehicleColorer.addScheme(scheme);
278  scheme = GUIColorScheme("by time since lane change", RGBColor(179, 179, 179, 255), "0");
279  scheme.addColor(RGBColor(189, 189, 179, 255), -180);
280  scheme.addColor(RGBColor(255, 255, 0, 255), -20);
281  scheme.addColor(RGBColor(255, 0, 0, 255), -0.001);
282  scheme.addColor(RGBColor(0, 0, 255, 255), 0.001);
283  scheme.addColor(RGBColor(0, 255, 255, 255), 20);
284  scheme.addColor(RGBColor(179, 189, 189, 255), 180);
285  scheme.setAllowsNegativeValues(true);
286  vehicleColorer.addScheme(scheme);
287  scheme = GUIColorScheme("by max speed", RGBColor::RED);
288  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
289  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
290  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
291  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
292  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
293  vehicleColorer.addScheme(scheme);
294  // ... emissions ...
295  scheme = GUIColorScheme("by CO2 emissions", RGBColor::GREEN);
296  scheme.addColor(RGBColor::RED, (SUMOReal)5.);
297  vehicleColorer.addScheme(scheme);
298  scheme = GUIColorScheme("by CO emissions", RGBColor::GREEN);
299  scheme.addColor(RGBColor::RED, (SUMOReal)0.05);
300  vehicleColorer.addScheme(scheme);
301  scheme = GUIColorScheme("by PMx emissions", RGBColor::GREEN);
302  scheme.addColor(RGBColor::RED, (SUMOReal).005);
303  vehicleColorer.addScheme(scheme);
304  scheme = GUIColorScheme("by NOx emissions", RGBColor::GREEN);
305  scheme.addColor(RGBColor::RED, (SUMOReal).125);
306  vehicleColorer.addScheme(scheme);
307  scheme = GUIColorScheme("by HC emissions", RGBColor::GREEN);
308  scheme.addColor(RGBColor::RED, (SUMOReal).02);
309  vehicleColorer.addScheme(scheme);
310  scheme = GUIColorScheme("by fuel consumption", RGBColor::GREEN);
311  scheme.addColor(RGBColor::RED, (SUMOReal).005);
312  vehicleColorer.addScheme(scheme);
313  scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREEN);
314  scheme.addColor(RGBColor::RED, (SUMOReal)100.);
315  vehicleColorer.addScheme(scheme);
316  scheme = GUIColorScheme("by reroute number", RGBColor::RED);
317  scheme.addColor(RGBColor::YELLOW, (SUMOReal)1.);
318  scheme.addColor(RGBColor::WHITE, (SUMOReal)10.);
319  vehicleColorer.addScheme(scheme);
320  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
321  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
322  vehicleColorer.addScheme(scheme);
323  scheme = GUIColorScheme("by offset from best lane", RGBColor(179, 179, 179, 255), "0");
324  scheme.addColor(RGBColor(255, 0, 0, 255), -3, "-3");
325  scheme.addColor(RGBColor(255, 255, 0, 255), -1, "-1");
326  scheme.addColor(RGBColor(0, 255, 255, 255), 1, "1");
327  scheme.addColor(RGBColor(0, 0, 255, 255), 3, "3");
328  scheme.setAllowsNegativeValues(true);
329  vehicleColorer.addScheme(scheme);
330  scheme = GUIColorScheme("by acceleration", RGBColor(179, 179, 179, 255), "0");
331  scheme.addColor(RGBColor(255, 0, 0, 255), -4.5 /* -SUMOVTypeParameter::getDefaultDecel() */);
332  scheme.addColor(RGBColor(255, 255, 0, 255), -0.1);
333  scheme.addColor(RGBColor(0, 255, 255, 255), 0.1);
334  scheme.addColor(RGBColor(0, 0, 255, 255), 2.6 /* SUMOVTypeParameter::getDefaultAccel() */);
335  scheme.setAllowsNegativeValues(true);
336  vehicleColorer.addScheme(scheme);
337  scheme = GUIColorScheme("by time gap", RGBColor(255, 255, 0, 255), "0");
338  scheme.addColor(RGBColor(179, 179, 179, 255), -1);
339  scheme.addColor(RGBColor(0, 255, 255, 255), 1);
340  scheme.addColor(RGBColor(0, 0, 255, 255), 2);
341  scheme.setAllowsNegativeValues(true);
342  vehicleColorer.addScheme(scheme);
343  scheme = GUIColorScheme("by depart delay", RGBColor::BLUE);
344  scheme.addColor(RGBColor::CYAN, (SUMOReal)30);
345  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
346  scheme.addColor(RGBColor::YELLOW, (SUMOReal)200);
347  scheme.addColor(RGBColor::RED, (SUMOReal)300);
348  vehicleColorer.addScheme(scheme);
349  scheme = GUIColorScheme("by electricity consumption", RGBColor::GREEN);
350  scheme.addColor(RGBColor::RED, (SUMOReal)5);
351  vehicleColorer.addScheme(scheme);
353 
355  personColorer.addScheme(GUIColorScheme("given person/type color", RGBColor::YELLOW, "", true));
357  personColorer.addScheme(GUIColorScheme("given/assigned person color", RGBColor::YELLOW, "", true));
358  personColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
359  scheme = GUIColorScheme("by speed", RGBColor::RED);
360  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(2.5 / 3.6));
361  scheme.addColor(RGBColor::GREEN, (SUMOReal)(5 / 3.6));
362  scheme.addColor(RGBColor::BLUE, (SUMOReal)(10 / 3.6));
363  personColorer.addScheme(scheme);
364  scheme = GUIColorScheme("by mode", RGBColor::YELLOW); // walking
365  scheme.addColor(RGBColor::BLUE, (SUMOReal)(1)); // riding
366  scheme.addColor(RGBColor::RED, (SUMOReal)(2)); // stopped
367  scheme.addColor(RGBColor::GREEN, (SUMOReal)(3)); // waiting for ride
368  personColorer.addScheme(scheme);
369  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE);
370  scheme.addColor(RGBColor::CYAN, (SUMOReal)30);
371  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
372  scheme.addColor(RGBColor::YELLOW, (SUMOReal)200);
373  scheme.addColor(RGBColor::RED, (SUMOReal)300);
374  personColorer.addScheme(scheme);
375  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
376  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
377  personColorer.addScheme(scheme);
378  personColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
380 
382  containerColorer.addScheme(GUIColorScheme("given container/type color", RGBColor::YELLOW, "", true));
384  containerColorer.addScheme(GUIColorScheme("given/assigned container color", RGBColor::YELLOW, "", true));
385  containerColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
386  scheme = GUIColorScheme("by speed", RGBColor::RED);
387  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(2.5 / 3.6));
388  scheme.addColor(RGBColor::GREEN, (SUMOReal)(5 / 3.6));
389  scheme.addColor(RGBColor::BLUE, (SUMOReal)(10 / 3.6));
390  containerColorer.addScheme(scheme);
391  scheme = GUIColorScheme("by mode", RGBColor::YELLOW); // walking
392  scheme.addColor(RGBColor::BLUE, (SUMOReal)(1)); // riding
393  scheme.addColor(RGBColor::RED, (SUMOReal)(2)); // stopped
394  scheme.addColor(RGBColor::GREEN, (SUMOReal)(3)); // waiting for ride
395  containerColorer.addScheme(scheme);
396  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE);
397  scheme.addColor(RGBColor::CYAN, (SUMOReal)30);
398  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
399  scheme.addColor(RGBColor::YELLOW, (SUMOReal)200);
400  scheme.addColor(RGBColor::RED, (SUMOReal)300);
401  containerColorer.addScheme(scheme);
402  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
403  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
404  containerColorer.addScheme(scheme);
406 
408  scheme = GUIColorScheme("uniform", RGBColor::BLACK, "", true);
409  scheme.addColor(RGBColor(150, 200, 200), 1, "waterway");
410  junctionColorer.addScheme(scheme);
411  scheme = GUIColorScheme("by selection", RGBColor(128, 128, 128, 255), "unselected", true);
412  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
413  junctionColorer.addScheme(scheme);
414  scheme = GUIColorScheme("by type", RGBColor::GREEN, "traffic_light", true);
415  scheme.addColor(RGBColor(0, 128, 0), 1, "traffic_light_unregulated");
416  scheme.addColor(RGBColor::YELLOW, 2, "priority");
417  scheme.addColor(RGBColor::RED, 3, "priority_stop");
418  scheme.addColor(RGBColor::BLUE, 4, "right_before_left");
419  scheme.addColor(RGBColor::CYAN, 5, "allway_stop");
420  scheme.addColor(RGBColor::GREY, 6, "district");
421  scheme.addColor(RGBColor::MAGENTA, 7, "unregulated");
422  scheme.addColor(RGBColor::BLACK, 8, "dead_end");
423  scheme.addColor(RGBColor::ORANGE, 9, "rail_signal");
424  scheme.addColor(RGBColor(192, 128, 64), 10, "zipper"); // light brown
425  scheme.addColor(RGBColor(192, 255, 192), 11, "traffic_light_right_on_red"); // light green
426  scheme.addColor(RGBColor(128, 0, 128), 12, "rail_crossing"); // dark purple
427  junctionColorer.addScheme(scheme);
428 
429 
431  {
432  GUIScaleScheme scheme = GUIScaleScheme("default", 1, "uniform", true);
433  laneScaler.addScheme(scheme);
434  scheme = GUIScaleScheme("by selection (lane-/streetwise)", 0.5, "unselected", true);
435  scheme.addColor(5, 1, "selected");
436  laneScaler.addScheme(scheme);
437  // ... traffic states ...
438  scheme = GUIScaleScheme("by allowed speed (lanewise)", 0);
439  scheme.addColor(10, (SUMOReal)(150.0 / 3.6));
440  laneScaler.addScheme(scheme);
441  scheme = GUIScaleScheme("by current occupancy (lanewise, brutto)", 0);
442  scheme.addColor(10, (SUMOReal)0.95);
443  laneScaler.addScheme(scheme);
444  scheme = GUIScaleScheme("by current occupancy (lanewise, netto)", 0);
445  scheme.addColor(10, (SUMOReal)0.95);
446  laneScaler.addScheme(scheme);
447  scheme = GUIScaleScheme("by first vehicle waiting time (lanewise)", 0);
448  scheme.addColor(10, (SUMOReal)300);
449  laneScaler.addScheme(scheme);
450  scheme = GUIScaleScheme("by lane number (streetwise)", 1);
451  scheme.addColor(10, (SUMOReal)5);
452  laneScaler.addScheme(scheme);
453  // ... emissions ...
454  scheme = GUIScaleScheme("by CO2 emissions", 0);
455  scheme.addColor(10, (SUMOReal)(10. / 7.5 / 5.));
456  laneScaler.addScheme(scheme);
457  scheme = GUIScaleScheme("by CO emissions", 0);
458  scheme.addColor(10, (SUMOReal)(0.05 / 7.5 / 2.));
459  laneScaler.addScheme(scheme);
460  scheme = GUIScaleScheme("by PMx emissions", 0);
461  scheme.addColor(10, (SUMOReal)(.005 / 7.5 / 5.));
462  laneScaler.addScheme(scheme);
463  scheme = GUIScaleScheme("by NOx emissions", 0);
464  scheme.addColor(10, (SUMOReal)(.125 / 7.5 / 5.));
465  laneScaler.addScheme(scheme);
466  scheme = GUIScaleScheme("by HC emissions", 0);
467  scheme.addColor(10, (SUMOReal)(.02 / 7.5 / 4.));
468  laneScaler.addScheme(scheme);
469  scheme = GUIScaleScheme("by fuel consumption", 0);
470  scheme.addColor(10, (SUMOReal)(.005 / 7.5 * 100.));
471  laneScaler.addScheme(scheme);
472  scheme = GUIScaleScheme("by noise emissions (Harmonoise)", 0);
473  scheme.addColor(10, (SUMOReal)100);
474  laneScaler.addScheme(scheme);
475  // ... weights (experimental) ...
476  scheme = GUIScaleScheme("by global travel time", 0);
477  scheme.addColor(10, (SUMOReal)100);
478  scheme.setAllowsNegativeValues(true);
479  laneScaler.addScheme(scheme);
480  scheme = GUIScaleScheme("by global speed percentage", 0);
481  scheme.addColor(10, (SUMOReal)100);
482  scheme.setAllowsNegativeValues(true);
483  laneScaler.addScheme(scheme);
484  scheme = GUIScaleScheme("by given length/geometrical length", 0);
485  scheme.addColor(10, (SUMOReal)10.0);
486  laneScaler.addScheme(scheme);
487  scheme = GUIScaleScheme("by loaded weight", 0);
488  scheme.addColor(-1000, (SUMOReal) - 1000);
489  scheme.addColor(1000, (SUMOReal)1000);
490  scheme.setAllowsNegativeValues(true);
491  laneScaler.addScheme(scheme);
492  scheme = GUIScaleScheme("by priority", 1);
493  scheme.addColor(0.5, (SUMOReal) - 20);
494  scheme.addColor(5, (SUMOReal)20);
495  scheme.setAllowsNegativeValues(true);
496  laneScaler.addScheme(scheme);
497  scheme = GUIScaleScheme("by average speed", 0);
498  scheme.addColor(10, (SUMOReal)(150.0 / 3.6));
499  laneScaler.addScheme(scheme);
500  scheme = GUIScaleScheme("by average relative speed", 0);
501  scheme.addColor(0.5, (SUMOReal)(0.5));
502  scheme.addColor(2, (SUMOReal)(1));
503  scheme.addColor(10, (SUMOReal)(2));
504  laneScaler.addScheme(scheme);
505  scheme = GUIScaleScheme("by electricity consumption", 0);
506  scheme.addColor(10, (SUMOReal)(1 / 7.5 / 5.));
507  laneScaler.addScheme(scheme);
508  scheme = GUIScaleScheme("by insertion-backlog (streetwise)", 0);
509  scheme.addColor(1, (SUMOReal)1);
510  scheme.addColor(10, (SUMOReal)10);
511  scheme.addColor(50, (SUMOReal)100);
512  laneScaler.addScheme(scheme);
513  }
514 
515 
517  edgeColorer.addScheme(GUIColorScheme("uniform (streetwise)", RGBColor::BLACK, "", true));
518  scheme = GUIColorScheme("by selection (streetwise)", RGBColor(128, 128, 128, 255), "unselected", true);
519  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
520  edgeColorer.addScheme(scheme);
521  scheme = GUIColorScheme("by purpose (streetwise)", RGBColor(), "normal", true);
522  scheme.addColor(RGBColor(128, 0, 128, 255), 1, "connector"); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_CONNECTOR
523  scheme.addColor(RGBColor::BLUE, 2, "internal"); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_INTERNAL
524  edgeColorer.addScheme(scheme);
525  scheme = GUIColorScheme("by allowed speed (streetwise)", RGBColor::RED);
526  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
527  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
528  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
529  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
530  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
531  edgeColorer.addScheme(scheme);
532  scheme = GUIColorScheme("by current occupancy (streetwise, brutto)", RGBColor::BLUE);
533  scheme.addColor(RGBColor::RED, (SUMOReal)0.95);
534  edgeColorer.addScheme(scheme);
535  scheme = GUIColorScheme("by current speed (streetwise)", RGBColor::RED);
536  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
537  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
538  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
539  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
540  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
541  edgeColorer.addScheme(scheme);
542  scheme = GUIColorScheme("by current flow (streetwise)", RGBColor::BLUE);
543  scheme.addColor(RGBColor::RED, (SUMOReal)5000);
544  edgeColorer.addScheme(scheme);
545  scheme = GUIColorScheme("by relative speed (streetwise)", RGBColor::RED);
546  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(0.25));
547  scheme.addColor(RGBColor::GREEN, (SUMOReal)(0.5));
548  scheme.addColor(RGBColor::CYAN, (SUMOReal)(0.75));
549  scheme.addColor(RGBColor::BLUE, (SUMOReal)(1));
550  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(1.25));
551  edgeColorer.addScheme(scheme);
552  scheme = GUIColorScheme("by routing device assumed speed", RGBColor::RED);
553  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
554  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
555  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
556  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
557  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
558  edgeColorer.addScheme(scheme);
559  edgeColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
560  scheme = GUIColorScheme("by segments (alternating)", RGBColor::BLUE, "odd", true);
561  scheme.addColor(RGBColor::RED, 1, "even");
562  edgeColorer.addScheme(scheme);
563  scheme = GUIColorScheme("by jammed state (segmentwise)", RGBColor::GREEN, "free", true);
564  scheme.addColor(RGBColor::RED, 1, "jammed");
565  edgeColorer.addScheme(scheme);
566  scheme = GUIColorScheme("by current occupancy (segmentwise, brutto)", RGBColor::BLUE);
567  scheme.addColor(RGBColor::RED, (SUMOReal)0.95);
568  edgeColorer.addScheme(scheme);
569  scheme = GUIColorScheme("by current speed (segmentwise)", RGBColor::RED);
570  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
571  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
572  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
573  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
574  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
575  edgeColorer.addScheme(scheme);
576  scheme = GUIColorScheme("by current flow (segmentwise)", RGBColor::BLUE);
577  scheme.addColor(RGBColor::RED, (SUMOReal)5000);
578  edgeColorer.addScheme(scheme);
579  scheme = GUIColorScheme("by relative speed (segmentwise)", RGBColor::RED);
580  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(0.25));
581  scheme.addColor(RGBColor::GREEN, (SUMOReal)(0.5));
582  scheme.addColor(RGBColor::CYAN, (SUMOReal)(0.75));
583  scheme.addColor(RGBColor::BLUE, (SUMOReal)(1));
584  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(1.25));
585  edgeColorer.addScheme(scheme);
586  scheme = GUIColorScheme("by insertion-backlog (streetwise)", RGBColor::GREY);
587  scheme.addColor(RGBColor::GREEN, (SUMOReal)1);
588  scheme.addColor(RGBColor::YELLOW, (SUMOReal)10);
589  scheme.addColor(RGBColor::RED, (SUMOReal)100);
590  edgeColorer.addScheme(scheme);
591 
592 
594  {
595  edgeScaler.addScheme(GUIScaleScheme("uniform", 1, "", true));
596  GUIScaleScheme scheme = GUIScaleScheme("by selection (streetwise)", 0.5, "unselected", true);
597  scheme.addColor(5, 1, "selected");
598  edgeScaler.addScheme(scheme);
599  scheme = GUIScaleScheme("by allowed speed (streetwise)", 0);
600  scheme.addColor(10, (SUMOReal)(150.0 / 3.6));
601  edgeScaler.addScheme(scheme);
602  scheme = GUIScaleScheme("by current occupancy (streetwise, brutto)", 0);
603  scheme.addColor(10, (SUMOReal)0.95);
604  edgeScaler.addScheme(scheme);
605  scheme = GUIScaleScheme("by current speed (streetwise)", 0);
606  scheme.addColor(10, (SUMOReal)(150.0 / 3.6));
607  edgeScaler.addScheme(scheme);
608  scheme = GUIScaleScheme("by current flow (streetwise)", 0);
609  scheme.addColor(20, (SUMOReal)5000);
610  edgeScaler.addScheme(scheme);
611  scheme = GUIScaleScheme("by relative speed (streetwise)", 0);
612  scheme.addColor(20, (SUMOReal)1);
613  edgeScaler.addScheme(scheme);
614  scheme = GUIScaleScheme("by insertion-backlog (streetwise)", 0);
615  scheme.addColor(1, (SUMOReal)1);
616  scheme.addColor(10, (SUMOReal)10);
617  scheme.addColor(50, (SUMOReal)100);
618  edgeScaler.addScheme(scheme);
619  }
620 
621 }
622 
623 
624 int
626  if (UseMesoSim) {
627  return edgeColorer.getActive();
628  }
629  return laneColorer.getActive();
630 }
631 
632 
633 int
635  if (UseMesoSim) {
636  return edgeScaler.getActive();
637  }
638  return laneScaler.getActive();
639 }
640 
641 
644  if (UseMesoSim) {
645  return edgeColorer.getScheme();
646  }
647  return laneColorer.getScheme();
648 }
649 
650 
653  if (UseMesoSim) {
654  return edgeScaler.getScheme();
655  }
656  return laneScaler.getScheme();
657 }
658 
659 void
664  dev.writeAttr("antialiase", antialiase);
665  dev.writeAttr("dither", dither);
666  dev.closeTag();
668  dev.writeAttr("backgroundColor", backgroundColor);
669  dev.writeAttr("showGrid", showGrid);
670  dev.writeAttr("gridXSize", gridXSize);
671  dev.writeAttr("gridYSize", gridYSize);
672  dev.closeTag();
673  // edges
675  dev.writeAttr("laneEdgeMode", getLaneEdgeMode());
676  dev.writeAttr("scaleMode", getLaneEdgeScaleMode());
677  dev.writeAttr("laneShowBorders", laneShowBorders);
678  dev.writeAttr("showLinkDecals", showLinkDecals);
679  dev.writeAttr("showLinkRules", showLinkRules);
680  dev.writeAttr("showRails", showRails);
681  dev.writeAttr("hideConnectors", hideConnectors);
682  dev.writeAttr("widthExaggeration", laneWidthExaggeration);
683  dev.writeAttr("minSize", laneMinSize);
684  dev.writeAttr("showDirection", showLaneDirection);
685  dev.writeAttr("showSublanes", showSublanes);
686  dev.lf();
687  dev << " ";
688  edgeName.print(dev, "edgeName");
689  dev.lf();
690  dev << " ";
691  internalEdgeName.print(dev, "internalEdgeName");
692  dev.lf();
693  dev << " ";
694  cwaEdgeName.print(dev, "cwaEdgeName");
695  dev.lf();
696  dev << " ";
697  streetName.print(dev, "streetName");
698  laneColorer.save(dev);
699  laneScaler.save(dev);
700  edgeColorer.save(dev);
701  edgeScaler.save(dev);
702  dev.closeTag();
703  // vehicles
705  dev.writeAttr("vehicleMode", vehicleColorer.getActive());
706  dev.writeAttr("vehicleQuality", vehicleQuality);
707  vehicleSize.print(dev, "vehicle");
708  dev.writeAttr("showBlinker", showBlinker);
709  dev.lf();
710  dev << " ";
711  vehicleName.print(dev, "vehicleName");
712  vehicleColorer.save(dev);
713  dev.closeTag();
714  // persons
716  dev.writeAttr("personMode", personColorer.getActive());
717  dev.writeAttr("personQuality", personQuality);
718  personSize.print(dev, "person");
719  dev.lf();
720  dev << " ";
721  personName.print(dev, "personName");
722  personColorer.save(dev);
723  dev.closeTag();
724  // persons
726  dev.writeAttr("containerMode", containerColorer.getActive());
727  dev.writeAttr("containerQuality", containerQuality);
728  personSize.print(dev, "container");
729  dev.lf();
730  dev << " ";
731  personName.print(dev, "containerName");
732  personColorer.save(dev);
733  dev.closeTag();
734  // junctions
736  dev.writeAttr("junctionMode", junctionColorer.getActive());
737  dev.lf();
738  dev << " ";
739  drawLinkTLIndex.print(dev, "drawLinkTLIndex");
740  dev.lf();
741  dev << " ";
742  drawLinkJunctionIndex.print(dev, "drawLinkJunctionIndex");
743  dev.lf();
744  dev << " ";
745  junctionName.print(dev, "junctionName");
746  dev.lf();
747  dev << " ";
748  internalJunctionName.print(dev, "internalJunctionName");
749  dev.lf();
750  dev << " ";
751  dev.writeAttr("showLane2Lane", showLane2Lane);
752  dev.writeAttr("drawShape", drawJunctionShape);
753  dev.writeAttr("drawCrossingsAndWalkingareas", drawCrossingsAndWalkingareas);
754  junctionSize.print(dev, "junction");
755  junctionColorer.save(dev);
756  dev.closeTag();
757  // additionals
759  dev.writeAttr("addMode", addMode);
760  addSize.print(dev, "add");
761  addName.print(dev, "addName");
762  dev.closeTag();
763  // pois
765  poiSize.print(dev, "poi");
766  poiName.print(dev, "poiName");
767  poiType.print(dev, "poiType");
768  dev.closeTag();
769  // polys
771  polySize.print(dev, "poly");
772  polyName.print(dev, "polyName");
773  polyType.print(dev, "polyType");
774  dev.closeTag();
775  // legend
777  dev.writeAttr("showSizeLegend", showSizeLegend);
778  dev.closeTag();
779 
780  dev.closeTag();
781 }
782 
783 
784 bool
786  if (antialiase != v2.antialiase) {
787  return false;
788  }
789  if (dither != v2.dither) {
790  return false;
791  }
792  if (backgroundColor != v2.backgroundColor) {
793  return false;
794  }
795  if (showGrid != v2.showGrid) {
796  return false;
797  }
798  if (gridXSize != v2.gridXSize) {
799  return false;
800  }
801  if (gridYSize != v2.gridYSize) {
802  return false;
803  }
804 
805  if (!(edgeColorer == v2.edgeColorer)) {
806  return false;
807  }
808  if (!(edgeScaler == v2.edgeScaler)) {
809  return false;
810  }
811  if (!(laneColorer == v2.laneColorer)) {
812  return false;
813  }
814  if (!(laneScaler == v2.laneScaler)) {
815  return false;
816  }
817  if (laneShowBorders != v2.laneShowBorders) {
818  return false;
819  }
820  if (showLinkDecals != v2.showLinkDecals) {
821  return false;
822  }
823  if (showLinkRules != v2.showLinkRules) {
824  return false;
825  }
826  if (showRails != v2.showRails) {
827  return false;
828  }
829  if (edgeName != v2.edgeName) {
830  return false;
831  }
833  return false;
834  }
835  if (cwaEdgeName != v2.cwaEdgeName) {
836  return false;
837  }
838  if (streetName != v2.streetName) {
839  return false;
840  }
841  if (hideConnectors != v2.hideConnectors) {
842  return false;
843  }
845  return false;
846  }
847  if (laneMinSize != v2.laneMinSize) {
848  return false;
849  }
851  return false;
852  }
853  if (showSublanes != v2.showSublanes) {
854  return false;
855  }
856  if (!(vehicleColorer == v2.vehicleColorer)) {
857  return false;
858  }
859  if (vehicleQuality != v2.vehicleQuality) {
860  return false;
861  }
862  if (vehicleSize != v2.vehicleSize) {
863  return false;
864  }
865  if (showBlinker != v2.showBlinker) {
866  return false;
867  }
869  return false;
870  }
871  if (drawMinGap != v2.drawMinGap) {
872  return false;
873  }
874  if (showBTRange != v2.showBTRange) {
875  return false;
876  }
877  if (vehicleName != v2.vehicleName) {
878  return false;
879  }
880  if (!(personColorer == v2.personColorer)) {
881  return false;
882  }
883  if (personQuality != v2.personQuality) {
884  return false;
885  }
886  if (personSize != v2.personSize) {
887  return false;
888  }
889  if (personName != v2.personName) {
890  return false;
891  }
892  if (!(containerColorer == v2.containerColorer)) {
893  return false;
894  }
896  return false;
897  }
898  if (containerSize != v2.containerSize) {
899  return false;
900  }
901  if (containerName != v2.containerName) {
902  return false;
903  }
904  if (!(junctionColorer == v2.junctionColorer)) {
905  return false;
906  }
907  if (drawLinkTLIndex != v2.drawLinkTLIndex) {
908  return false;
909  }
911  return false;
912  }
913  if (junctionName != v2.junctionName) {
914  return false;
915  }
917  return false;
918  }
919 
920  if (showLane2Lane != v2.showLane2Lane) {
921  return false;
922  }
923 
925  return false;
926  }
927 
929  return false;
930  }
931  if (junctionSize != v2.junctionSize) {
932  return false;
933  }
934 
935  if (addMode != v2.addMode) {
936  return false;
937  }
938  if (addSize != v2.addSize) {
939  return false;
940  }
941  if (addName != v2.addName) {
942  return false;
943  }
944  if (poiSize != v2.poiSize) {
945  return false;
946  }
947  if (poiName != v2.poiName) {
948  return false;
949  }
950  if (poiType != v2.poiType) {
951  return false;
952  }
953  if (polySize != v2.polySize) {
954  return false;
955  }
956  if (polyName != v2.polyName) {
957  return false;
958  }
959  if (polyType != v2.polyType) {
960  return false;
961  }
962 
963  if (showSizeLegend != v2.showSizeLegend) {
964  return false;
965  }
966 
967  return true;
968 }
969 
970 
971 SUMOReal
974  return (constantSize && !s.drawForSelecting) ? MAX2((SUMOReal)exaggeration, exaggeration * factor / s.scale) : exaggeration;
975 }
976 
977 /****************************************************************************/
978 
979 
GUIVisualizationSizeSettings junctionSize
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
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.
bool showBTRange
Information whether the communication range shall be drawn.
GUIColorer laneColorer
The lane colorer.
SUMOReal laneWidthExaggeration
The lane exaggeration (upscale thickness)
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
bool showLaneDirection
Whether to show direction indicators for lanes.
void print(OutputDevice &dev, const std::string &name) const
GUIVisualizationTextSettings cwaEdgeName
bool laneShowBorders
Information whether lane borders shall be drawn.
static const RGBColor BLACK
Definition: RGBColor.h:197
const SVCPermissions SVCAll
bool showLinkRules
Information whether link rules (colored bars) shall be drawn.
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
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.
int addColor(const T &color, const SUMOReal threshold, const std::string &name="")
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
bool showSublanes
Whether to show sublane boundaries.
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.
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
void print(OutputDevice &dev, const std::string &name) const
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
GUIVisualizationSizeSettings vehicleSize
SUMOReal getExaggeration(const GUIVisualizationSettings &s, SUMOReal factor=20) const
return the drawing size including exaggeration and constantSize values
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
SUMOReal laneMinSize
The minimum visual lane width for drawing.
bool drawForSelecting
whether drawing is performed for the purpose of selecting objects
GUIScaler laneScaler
The lane scaler.
void save(OutputDevice &dev) const
GUIVisualizationTextSettings drawLinkJunctionIndex
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