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