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