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(""),
68  netedit(_netedit),
69  antialiase(false), dither(false),
70  backgroundColor(RGBColor::WHITE),
71  showGrid(false), gridXSize(100), gridYSize(100),
72  laneShowBorders(false), showLinkDecals(true),
73  showLinkRules(true), showRails(true),
74  edgeName(false, 50, RGBColor(255, 128, 0, 255)),
75  internalEdgeName(false, 40, RGBColor(128, 64, 0, 255)),
76  cwaEdgeName(false, 50, RGBColor::MAGENTA),
77  streetName(false, 55, RGBColor::YELLOW),
78  hideConnectors(false),
79  laneWidthExaggeration(1),
80  laneMinSize(0),
81  showLaneDirection(false),
82  showSublanes(true),
83  vehicleQuality(0), showBlinker(true),
84  drawLaneChangePreference(false), drawMinGap(false),
85  showBTRange(false), vehicleSize(1),
86  vehicleName(false, 50, RGBColor(204, 153, 0, 255)),
87  personQuality(0),
88  personSize(1),
89  personName(false, 50, RGBColor(0, 153, 204, 255)),
90  containerQuality(0),
91  containerSize(1),
92  containerName(false, 50, RGBColor(0, 153, 204, 255)),
93  drawLinkTLIndex(false, 50, RGBColor(128, 128, 255, 255)),
94  drawLinkJunctionIndex(false, 50, RGBColor(128, 128, 255, 255)),
95  junctionName(false, 50, RGBColor(0, 255, 128, 255)),
96  internalJunctionName(false, 50, RGBColor(0, 204, 128, 255)),
97  showLane2Lane(false),
98  drawJunctionShape(true),
99  drawCrossingsAndWalkingareas(true),
100  junctionSize(1),
101  addMode(0),
102  addSize(1),
103  addName(false, 50, RGBColor(255, 0, 128, 255)),
104  poiSize(0), poiName(false, 50, RGBColor(255, 0, 128, 255)),
105  poiType(false, 50, RGBColor(255, 0, 128, 255)),
106  polySize(0), polyName(false, 50, RGBColor(255, 0, 128, 255)),
107  polyType(false, 50, RGBColor(255, 0, 128, 255)),
108  showSizeLegend(true),
109  gaming(false),
110  selectionScale(1),
111  drawForSelecting(false) {
112 
113  if (netedit) {
115  } else {
117  }
118 }
119 
120 
121 void
124  GUIColorScheme scheme = GUIColorScheme("uniform", RGBColor::BLACK, "road", true);
125  scheme.addColor(RGBColor::GREY, 1, "sidewalk");
126  scheme.addColor(RGBColor(192, 66, 44), 2, "bike lane");
127  scheme.addColor(RGBColor(0, 0, 0, 0), 3, "green verge");
128  scheme.addColor(RGBColor(150, 200, 200), 4, "waterway");
129  scheme.addColor(RGBColor(92, 92, 92), 5, "no passenger"); // paths, service roads etc
130  scheme.addColor(RGBColor::RED, 6, "closed"); // road closing
131  scheme.addColor(RGBColor::GREEN, 7, "connector"); // macro-connector
132  laneColorer.addScheme(scheme);
133  scheme = GUIColorScheme("by selection (lane-/streetwise)", RGBColor(128, 128, 128, 255), "unselected", true);
134  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
135  laneColorer.addScheme(scheme);
136  scheme = GUIColorScheme("by permission code", RGBColor(240, 240, 240), "nobody");
137  scheme.addColor(RGBColor(10, 10, 10), (double)SVC_PASSENGER, "passenger");
138  scheme.addColor(RGBColor(128, 128, 128), (double)SVC_PEDESTRIAN, "pedestrian");
139  scheme.addColor(RGBColor(80, 80, 80), (double)(SVC_PEDESTRIAN | SVC_DELIVERY), "pedestrian_delivery");
140  scheme.addColor(RGBColor(192, 66, 44), (double)SVC_BICYCLE, "bicycle");
141  scheme.addColor(RGBColor(40, 100, 40), (double)SVC_BUS, "bus");
142  scheme.addColor(RGBColor(166, 147, 26), (double)SVC_TAXI, "taxi");
143  scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~SVC_NON_ROAD), "normal_road");
144  scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_NON_ROAD)), "disallow_pedestrian");
145  scheme.addColor(RGBColor(255, 206, 0), (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_BICYCLE | SVC_MOPED | SVC_NON_ROAD)), "motorway");
146  scheme.addColor(RGBColor(150, 200, 200), (double)SVC_SHIP, "waterway");
147  scheme.addColor(RGBColor::GREEN, (double)SVCAll, "all");
148  laneColorer.addScheme(scheme);
149  // ... traffic states ...
150  scheme = GUIColorScheme("by allowed speed (lanewise)", RGBColor::RED);
151  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
152  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
153  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
154  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
155  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
156  laneColorer.addScheme(scheme);
157  scheme = GUIColorScheme("by current occupancy (lanewise, brutto)", RGBColor(235, 235, 235));
158  scheme.addColor(RGBColor::GREEN, 0.25);
159  scheme.addColor(RGBColor::YELLOW, 0.5);
160  scheme.addColor(RGBColor::ORANGE, 0.75);
161  scheme.addColor(RGBColor::RED, 1.0);
162  laneColorer.addScheme(scheme);
163  scheme = GUIColorScheme("by current occupancy (lanewise, netto)", RGBColor(235, 235, 235));
164  scheme.addColor(RGBColor::GREEN, 0.25);
165  scheme.addColor(RGBColor::YELLOW, 0.5);
166  scheme.addColor(RGBColor::ORANGE, 0.75);
167  scheme.addColor(RGBColor::RED, 1.0);
168  laneColorer.addScheme(scheme);
169  scheme = GUIColorScheme("by first vehicle waiting time (lanewise)", RGBColor(235, 235, 235));
170  scheme.addColor(RGBColor::CYAN, (double)30);
171  scheme.addColor(RGBColor::GREEN, (double)100);
172  scheme.addColor(RGBColor::YELLOW, (double)200);
173  scheme.addColor(RGBColor::RED, (double)300);
174  laneColorer.addScheme(scheme);
175  scheme = GUIColorScheme("by lane number (streetwise)", RGBColor::RED);
176  scheme.addColor(RGBColor::BLUE, (double)5);
177  laneColorer.addScheme(scheme);
178  // ... emissions ...
179  scheme = GUIColorScheme("by CO2 emissions", RGBColor::GREEN);
180  scheme.addColor(RGBColor::RED, (double)(10. / 7.5 / 5.));
181  laneColorer.addScheme(scheme);
182  scheme = GUIColorScheme("by CO emissions", RGBColor::GREEN);
183  scheme.addColor(RGBColor::RED, (double)(0.05 / 7.5 / 2.));
184  laneColorer.addScheme(scheme);
185  scheme = GUIColorScheme("by PMx emissions", RGBColor::GREEN);
186  scheme.addColor(RGBColor::RED, (double)(.005 / 7.5 / 5.));
187  laneColorer.addScheme(scheme);
188  scheme = GUIColorScheme("by NOx emissions", RGBColor::GREEN);
189  scheme.addColor(RGBColor::RED, (double)(.125 / 7.5 / 5.));
190  laneColorer.addScheme(scheme);
191  scheme = GUIColorScheme("by HC emissions", RGBColor::GREEN);
192  scheme.addColor(RGBColor::RED, (double)(.02 / 7.5 / 4.));
193  laneColorer.addScheme(scheme);
194  scheme = GUIColorScheme("by fuel consumption", RGBColor::GREEN);
195  scheme.addColor(RGBColor::RED, (double)(.005 / 7.5 * 100.));
196  laneColorer.addScheme(scheme);
197  scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREEN);
198  scheme.addColor(RGBColor::RED, (double)100);
199  laneColorer.addScheme(scheme);
200  // ... weights (experimental) ...
201  scheme = GUIColorScheme("by global travel time", RGBColor::GREEN);
202  scheme.addColor(RGBColor::RED, (double)100);
203  scheme.setAllowsNegativeValues(true);
204  laneColorer.addScheme(scheme);
205  scheme = GUIColorScheme("by global speed percentage", RGBColor::RED);
206  scheme.addColor(RGBColor::YELLOW, (double)50);
207  scheme.addColor(RGBColor::GREEN, (double)100);
208  scheme.setAllowsNegativeValues(true);
209  laneColorer.addScheme(scheme);
210  scheme = GUIColorScheme("by given length/geometrical length", RGBColor::BLACK);
211  scheme.addColor(RGBColor::RED, 0.25);
212  scheme.addColor(RGBColor::YELLOW, 0.5);
213  scheme.addColor(RGBColor(179, 179, 179, 255), (double)1.0);
214  scheme.addColor(RGBColor::GREEN, (double)2.0);
215  scheme.addColor(RGBColor::BLUE, (double)4.0);
216  laneColorer.addScheme(scheme);
217  laneColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
218  scheme = GUIColorScheme("by loaded weight", RGBColor::GREEN);
219  scheme.addColor(RGBColor::RED, (double)100);
220  scheme.setAllowsNegativeValues(true);
221  laneColorer.addScheme(scheme);
222  scheme = GUIColorScheme("by priority", RGBColor::YELLOW);
223  scheme.addColor(RGBColor::RED, (double) - 20);
224  scheme.addColor(RGBColor::GREEN, (double)20);
225  scheme.setAllowsNegativeValues(true);
226  laneColorer.addScheme(scheme);
227  scheme = GUIColorScheme("by height at start", RGBColor::RED);
228  scheme.addColor(RGBColor::BLUE, (double) - 10);
229  scheme.addColor(RGBColor::YELLOW, (double)50);
230  scheme.addColor(RGBColor::GREEN, (double)100);
231  scheme.addColor(RGBColor::MAGENTA, (double)200);
232  scheme.setAllowsNegativeValues(true);
233  laneColorer.addScheme(scheme);
234  scheme = GUIColorScheme("by height at geometry-segment start", RGBColor::RED);
235  scheme.addColor(RGBColor::BLUE, (double) - 10);
236  scheme.addColor(RGBColor::YELLOW, (double)50);
237  scheme.addColor(RGBColor::GREEN, (double)100);
238  scheme.addColor(RGBColor::MAGENTA, (double)200);
239  scheme.setAllowsNegativeValues(true);
240  laneColorer.addScheme(scheme);
241  scheme = GUIColorScheme("by inclination", RGBColor::GREY);
242  scheme.addColor(RGBColor::YELLOW, (double) .1);
243  scheme.addColor(RGBColor::RED, (double) .3);
244  scheme.addColor(RGBColor::GREEN, (double) - .1);
245  scheme.addColor(RGBColor::BLUE, (double) - .3);
246  scheme.setAllowsNegativeValues(true);
247  laneColorer.addScheme(scheme);
248  scheme = GUIColorScheme("by geometry-segment inclination", RGBColor::GREY);
249  scheme.addColor(RGBColor::YELLOW, (double) .1);
250  scheme.addColor(RGBColor::RED, (double) .3);
251  scheme.addColor(RGBColor::GREEN, (double) - .1);
252  scheme.addColor(RGBColor::BLUE, (double) - .3);
253  scheme.setAllowsNegativeValues(true);
254  laneColorer.addScheme(scheme);
255  scheme = GUIColorScheme("by average speed", RGBColor::RED);
256  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
257  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
258  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
259  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
260  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
261  laneColorer.addScheme(scheme);
262  scheme = GUIColorScheme("by average relative speed ", RGBColor::RED);
263  scheme.addColor(RGBColor::YELLOW, (double)(0.25));
264  scheme.addColor(RGBColor::GREEN, (double)(0.5));
265  scheme.addColor(RGBColor::CYAN, (double)(0.75));
266  scheme.addColor(RGBColor::BLUE, (double)(1));
267  scheme.addColor(RGBColor::MAGENTA, (double)(1.25));
268  laneColorer.addScheme(scheme);
269  scheme = GUIColorScheme("by routing device assumed speed ", RGBColor::RED);
270  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
271  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
272  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
273  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
274  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
275  laneColorer.addScheme(scheme);
276  scheme = GUIColorScheme("by electricity consumption", RGBColor::GREEN);
277  scheme.addColor(RGBColor::RED, (double)(1 / 7.5 / 5.));
278  laneColorer.addScheme(scheme);
279  scheme = GUIColorScheme("by insertion-backlog (streetwise)", RGBColor(204, 204, 204));
280  scheme.addColor(RGBColor::GREEN, (double)1);
281  scheme.addColor(RGBColor::YELLOW, (double)10);
282  scheme.addColor(RGBColor::RED, (double)100);
283  laneColorer.addScheme(scheme);
284 
285 
287  vehicleColorer.addScheme(GUIColorScheme("given vehicle/type/route color", RGBColor::YELLOW, "", true));
289  vehicleColorer.addScheme(GUIColorScheme("given/assigned vehicle color", RGBColor::YELLOW, "", true));
290  vehicleColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
291  vehicleColorer.addScheme(GUIColorScheme("given/assigned route color", RGBColor::YELLOW, "", true));
292  vehicleColorer.addScheme(GUIColorScheme("depart position as HSV", RGBColor::YELLOW, "", true));
293  vehicleColorer.addScheme(GUIColorScheme("arrival position as HSV", RGBColor::YELLOW, "", true));
294  vehicleColorer.addScheme(GUIColorScheme("direction/distance as HSV", RGBColor::YELLOW, "", true));
295  scheme = GUIColorScheme("by speed", RGBColor::RED);
296  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
297  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
298  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
299  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
300  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
301  vehicleColorer.addScheme(scheme);
302  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE);
303  scheme.addColor(RGBColor::CYAN, (double)30);
304  scheme.addColor(RGBColor::GREEN, (double)100);
305  scheme.addColor(RGBColor::YELLOW, (double)200);
306  scheme.addColor(RGBColor::RED, (double)300);
307  vehicleColorer.addScheme(scheme);
308  scheme = GUIColorScheme("by accumulated waiting time", RGBColor::BLUE);
309  scheme.addColor(RGBColor::CYAN, (double)25);
310  scheme.addColor(RGBColor::GREEN, (double)50);
311  scheme.addColor(RGBColor::YELLOW, (double)75);
312  scheme.addColor(RGBColor::RED, (double)100);
313  vehicleColorer.addScheme(scheme);
314  scheme = GUIColorScheme("by time since lane change", RGBColor(179, 179, 179, 255), "0");
315  scheme.addColor(RGBColor(189, 189, 179, 255), -180);
316  scheme.addColor(RGBColor(255, 255, 0, 255), -20);
317  scheme.addColor(RGBColor(255, 0, 0, 255), -0.001);
318  scheme.addColor(RGBColor(0, 0, 255, 255), 0.001);
319  scheme.addColor(RGBColor(0, 255, 255, 255), 20);
320  scheme.addColor(RGBColor(179, 189, 189, 255), 180);
321  scheme.setAllowsNegativeValues(true);
322  vehicleColorer.addScheme(scheme);
323  scheme = GUIColorScheme("by max speed", RGBColor::RED);
324  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
325  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
326  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
327  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
328  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
329  vehicleColorer.addScheme(scheme);
330  // ... emissions ...
331  scheme = GUIColorScheme("by CO2 emissions", RGBColor::GREEN);
332  scheme.addColor(RGBColor::RED, (double)5.);
333  vehicleColorer.addScheme(scheme);
334  scheme = GUIColorScheme("by CO emissions", RGBColor::GREEN);
335  scheme.addColor(RGBColor::RED, 0.05);
336  vehicleColorer.addScheme(scheme);
337  scheme = GUIColorScheme("by PMx emissions", RGBColor::GREEN);
338  scheme.addColor(RGBColor::RED, (double).005);
339  vehicleColorer.addScheme(scheme);
340  scheme = GUIColorScheme("by NOx emissions", RGBColor::GREEN);
341  scheme.addColor(RGBColor::RED, (double).125);
342  vehicleColorer.addScheme(scheme);
343  scheme = GUIColorScheme("by HC emissions", RGBColor::GREEN);
344  scheme.addColor(RGBColor::RED, (double).02);
345  vehicleColorer.addScheme(scheme);
346  scheme = GUIColorScheme("by fuel consumption", RGBColor::GREEN);
347  scheme.addColor(RGBColor::RED, (double).005);
348  vehicleColorer.addScheme(scheme);
349  scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREEN);
350  scheme.addColor(RGBColor::RED, (double)100.);
351  vehicleColorer.addScheme(scheme);
352  scheme = GUIColorScheme("by reroute number", RGBColor::RED);
353  scheme.addColor(RGBColor::YELLOW, (double)1.);
354  scheme.addColor(RGBColor::WHITE, (double)10.);
355  vehicleColorer.addScheme(scheme);
356  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
357  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
358  vehicleColorer.addScheme(scheme);
359  scheme = GUIColorScheme("by offset from best lane", RGBColor(179, 179, 179, 255), "0");
360  scheme.addColor(RGBColor(255, 0, 0, 255), -3, "-3");
361  scheme.addColor(RGBColor(255, 255, 0, 255), -1, "-1");
362  scheme.addColor(RGBColor(0, 255, 255, 255), 1, "1");
363  scheme.addColor(RGBColor(0, 0, 255, 255), 3, "3");
364  scheme.setAllowsNegativeValues(true);
365  vehicleColorer.addScheme(scheme);
366  scheme = GUIColorScheme("by acceleration", RGBColor(179, 179, 179, 255), "0");
367  scheme.addColor(RGBColor(64, 0, 0, 255), -9.0);
368  scheme.addColor(RGBColor(255, 0, 0, 255), -4.5 /* -SUMOVTypeParameter::getDefaultDecel() */);
369  scheme.addColor(RGBColor(255, 255, 0, 255), -0.1);
370  scheme.addColor(RGBColor(0, 255, 255, 255), 0.1);
371  scheme.addColor(RGBColor(0, 0, 255, 255), 2.6 /* SUMOVTypeParameter::getDefaultAccel() */);
372  scheme.addColor(RGBColor(255, 0, 255, 255), 5.2);
373  scheme.setAllowsNegativeValues(true);
374  vehicleColorer.addScheme(scheme);
375  scheme = GUIColorScheme("by time gap on lane", RGBColor(255, 255, 0, 255), "0");
376  scheme.addColor(RGBColor(179, 179, 179, 255), -1);
377  scheme.addColor(RGBColor(0, 255, 255, 255), 1);
378  scheme.addColor(RGBColor(0, 0, 255, 255), 2);
379  scheme.setAllowsNegativeValues(true);
380  vehicleColorer.addScheme(scheme);
381  scheme = GUIColorScheme("by depart delay", RGBColor::BLUE);
382  scheme.addColor(RGBColor::CYAN, (double)30);
383  scheme.addColor(RGBColor::GREEN, (double)100);
384  scheme.addColor(RGBColor::YELLOW, (double)200);
385  scheme.addColor(RGBColor::RED, (double)300);
386  vehicleColorer.addScheme(scheme);
387  scheme = GUIColorScheme("by electricity consumption", RGBColor::GREEN);
388  scheme.addColor(RGBColor::RED, (double)5);
389  vehicleColorer.addScheme(scheme);
390  scheme = GUIColorScheme("by time loss", RGBColor::BLUE);
391  scheme.addColor(RGBColor::CYAN, (double)10);
392  scheme.addColor(RGBColor::GREEN, (double)60);
393  scheme.addColor(RGBColor::YELLOW, (double)180);
394  scheme.addColor(RGBColor::RED, (double)900);
395  vehicleColorer.addScheme(scheme);
397 
399  personColorer.addScheme(GUIColorScheme("given person/type color", RGBColor::YELLOW, "", true));
401  personColorer.addScheme(GUIColorScheme("given/assigned person color", RGBColor::YELLOW, "", true));
402  personColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
403  scheme = GUIColorScheme("by speed", RGBColor::RED);
404  scheme.addColor(RGBColor::YELLOW, (double)(2.5 / 3.6));
405  scheme.addColor(RGBColor::GREEN, (double)(5 / 3.6));
406  scheme.addColor(RGBColor::BLUE, (double)(10 / 3.6));
407  personColorer.addScheme(scheme);
408  scheme = GUIColorScheme("by mode", RGBColor::YELLOW); // walking
409  scheme.addColor(RGBColor::BLUE, (double)(1)); // riding
410  scheme.addColor(RGBColor::RED, (double)(2)); // stopped
411  scheme.addColor(RGBColor::GREEN, (double)(3)); // waiting for ride
412  personColorer.addScheme(scheme);
413  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE);
414  scheme.addColor(RGBColor::CYAN, (double)30);
415  scheme.addColor(RGBColor::GREEN, (double)100);
416  scheme.addColor(RGBColor::YELLOW, (double)200);
417  scheme.addColor(RGBColor::RED, (double)300);
418  personColorer.addScheme(scheme);
419  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
420  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
421  personColorer.addScheme(scheme);
422  personColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
424 
426  containerColorer.addScheme(GUIColorScheme("given container/type color", RGBColor::YELLOW, "", true));
428  containerColorer.addScheme(GUIColorScheme("given/assigned container color", RGBColor::YELLOW, "", true));
429  containerColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
430  scheme = GUIColorScheme("by speed", RGBColor::RED);
431  scheme.addColor(RGBColor::YELLOW, (double)(2.5 / 3.6));
432  scheme.addColor(RGBColor::GREEN, (double)(5 / 3.6));
433  scheme.addColor(RGBColor::BLUE, (double)(10 / 3.6));
434  containerColorer.addScheme(scheme);
435  scheme = GUIColorScheme("by mode", RGBColor::YELLOW); // walking
436  scheme.addColor(RGBColor::BLUE, (double)(1)); // riding
437  scheme.addColor(RGBColor::RED, (double)(2)); // stopped
438  scheme.addColor(RGBColor::GREEN, (double)(3)); // waiting for ride
439  containerColorer.addScheme(scheme);
440  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE);
441  scheme.addColor(RGBColor::CYAN, (double)30);
442  scheme.addColor(RGBColor::GREEN, (double)100);
443  scheme.addColor(RGBColor::YELLOW, (double)200);
444  scheme.addColor(RGBColor::RED, (double)300);
445  containerColorer.addScheme(scheme);
446  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
447  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
448  containerColorer.addScheme(scheme);
450 
452  scheme = GUIColorScheme("uniform", RGBColor::BLACK, "", true);
453  scheme.addColor(RGBColor(150, 200, 200), 1, "waterway");
454  junctionColorer.addScheme(scheme);
455  scheme = GUIColorScheme("by selection", RGBColor(128, 128, 128, 255), "unselected", true);
456  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
457  junctionColorer.addScheme(scheme);
458  scheme = GUIColorScheme("by type", RGBColor::GREEN, "traffic_light", true);
459  scheme.addColor(RGBColor(0, 128, 0), 1, "traffic_light_unregulated");
460  scheme.addColor(RGBColor::YELLOW, 2, "priority");
461  scheme.addColor(RGBColor::RED, 3, "priority_stop");
462  scheme.addColor(RGBColor::BLUE, 4, "right_before_left");
463  scheme.addColor(RGBColor::CYAN, 5, "allway_stop");
464  scheme.addColor(RGBColor::GREY, 6, "district");
465  scheme.addColor(RGBColor::MAGENTA, 7, "unregulated");
466  scheme.addColor(RGBColor::BLACK, 8, "dead_end");
467  scheme.addColor(RGBColor::ORANGE, 9, "rail_signal");
468  scheme.addColor(RGBColor(192, 128, 64), 10, "zipper"); // light brown
469  scheme.addColor(RGBColor(192, 255, 192), 11, "traffic_light_right_on_red"); // light green
470  scheme.addColor(RGBColor(128, 0, 128), 12, "rail_crossing"); // dark purple
471  junctionColorer.addScheme(scheme);
472 
473 
475  {
476  GUIScaleScheme scheme = GUIScaleScheme("default", 1, "uniform", true);
477  laneScaler.addScheme(scheme);
478  scheme = GUIScaleScheme("by selection (lane-/streetwise)", 0.5, "unselected", true);
479  scheme.addColor(5, 1, "selected");
480  laneScaler.addScheme(scheme);
481  // ... traffic states ...
482  scheme = GUIScaleScheme("by allowed speed (lanewise)", 0);
483  scheme.addColor(10, (double)(150.0 / 3.6));
484  laneScaler.addScheme(scheme);
485  scheme = GUIScaleScheme("by current occupancy (lanewise, brutto)", 0);
486  scheme.addColor(10, 0.95);
487  laneScaler.addScheme(scheme);
488  scheme = GUIScaleScheme("by current occupancy (lanewise, netto)", 0);
489  scheme.addColor(10, 0.95);
490  laneScaler.addScheme(scheme);
491  scheme = GUIScaleScheme("by first vehicle waiting time (lanewise)", 0);
492  scheme.addColor(10, (double)300);
493  laneScaler.addScheme(scheme);
494  scheme = GUIScaleScheme("by lane number (streetwise)", 1);
495  scheme.addColor(10, (double)5);
496  laneScaler.addScheme(scheme);
497  // ... emissions ...
498  scheme = GUIScaleScheme("by CO2 emissions", 0);
499  scheme.addColor(10, (double)(10. / 7.5 / 5.));
500  laneScaler.addScheme(scheme);
501  scheme = GUIScaleScheme("by CO emissions", 0);
502  scheme.addColor(10, (double)(0.05 / 7.5 / 2.));
503  laneScaler.addScheme(scheme);
504  scheme = GUIScaleScheme("by PMx emissions", 0);
505  scheme.addColor(10, (double)(.005 / 7.5 / 5.));
506  laneScaler.addScheme(scheme);
507  scheme = GUIScaleScheme("by NOx emissions", 0);
508  scheme.addColor(10, (double)(.125 / 7.5 / 5.));
509  laneScaler.addScheme(scheme);
510  scheme = GUIScaleScheme("by HC emissions", 0);
511  scheme.addColor(10, (double)(.02 / 7.5 / 4.));
512  laneScaler.addScheme(scheme);
513  scheme = GUIScaleScheme("by fuel consumption", 0);
514  scheme.addColor(10, (double)(.005 / 7.5 * 100.));
515  laneScaler.addScheme(scheme);
516  scheme = GUIScaleScheme("by noise emissions (Harmonoise)", 0);
517  scheme.addColor(10, (double)100);
518  laneScaler.addScheme(scheme);
519  // ... weights (experimental) ...
520  scheme = GUIScaleScheme("by global travel time", 0);
521  scheme.addColor(10, (double)100);
522  scheme.setAllowsNegativeValues(true);
523  laneScaler.addScheme(scheme);
524  scheme = GUIScaleScheme("by global speed percentage", 0);
525  scheme.addColor(10, (double)100);
526  scheme.setAllowsNegativeValues(true);
527  laneScaler.addScheme(scheme);
528  scheme = GUIScaleScheme("by given length/geometrical length", 0);
529  scheme.addColor(10, (double)10.0);
530  laneScaler.addScheme(scheme);
531  scheme = GUIScaleScheme("by loaded weight", 0);
532  scheme.addColor(-1000, (double) - 1000);
533  scheme.addColor(1000, (double)1000);
534  scheme.setAllowsNegativeValues(true);
535  laneScaler.addScheme(scheme);
536  scheme = GUIScaleScheme("by priority", 1);
537  scheme.addColor(0.5, (double) - 20);
538  scheme.addColor(5, (double)20);
539  scheme.setAllowsNegativeValues(true);
540  laneScaler.addScheme(scheme);
541  scheme = GUIScaleScheme("by average speed", 0);
542  scheme.addColor(10, (double)(150.0 / 3.6));
543  laneScaler.addScheme(scheme);
544  scheme = GUIScaleScheme("by average relative speed", 0);
545  scheme.addColor(0.5, (double)(0.5));
546  scheme.addColor(2, (double)(1));
547  scheme.addColor(10, (double)(2));
548  laneScaler.addScheme(scheme);
549  scheme = GUIScaleScheme("by electricity consumption", 0);
550  scheme.addColor(10, (double)(1 / 7.5 / 5.));
551  laneScaler.addScheme(scheme);
552  scheme = GUIScaleScheme("by insertion-backlog (streetwise)", 0);
553  scheme.addColor(1, (double)1);
554  scheme.addColor(10, (double)10);
555  scheme.addColor(50, (double)100);
556  laneScaler.addScheme(scheme);
557  }
558 
559 
561  edgeColorer.addScheme(GUIColorScheme("uniform (streetwise)", RGBColor::BLACK, "", true));
562  scheme = GUIColorScheme("by selection (streetwise)", RGBColor(128, 128, 128, 255), "unselected", true);
563  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
564  edgeColorer.addScheme(scheme);
565  scheme = GUIColorScheme("by purpose (streetwise)", RGBColor(), "normal", true);
566  scheme.addColor(RGBColor(128, 0, 128, 255), 1, "connector"); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_CONNECTOR
567  scheme.addColor(RGBColor::BLUE, 2, "internal"); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_INTERNAL
568  edgeColorer.addScheme(scheme);
569  scheme = GUIColorScheme("by allowed speed (streetwise)", RGBColor::RED);
570  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
571  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
572  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
573  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
574  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
575  edgeColorer.addScheme(scheme);
576  scheme = GUIColorScheme("by current occupancy (streetwise, brutto)", RGBColor::BLUE);
577  scheme.addColor(RGBColor::RED, 0.95);
578  edgeColorer.addScheme(scheme);
579  scheme = GUIColorScheme("by current speed (streetwise)", RGBColor::RED);
580  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
581  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
582  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
583  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
584  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
585  edgeColorer.addScheme(scheme);
586  scheme = GUIColorScheme("by current flow (streetwise)", RGBColor::BLUE);
587  scheme.addColor(RGBColor::RED, (double)5000);
588  edgeColorer.addScheme(scheme);
589  scheme = GUIColorScheme("by relative speed (streetwise)", RGBColor::RED);
590  scheme.addColor(RGBColor::YELLOW, (double)(0.25));
591  scheme.addColor(RGBColor::GREEN, (double)(0.5));
592  scheme.addColor(RGBColor::CYAN, (double)(0.75));
593  scheme.addColor(RGBColor::BLUE, (double)(1));
594  scheme.addColor(RGBColor::MAGENTA, (double)(1.25));
595  edgeColorer.addScheme(scheme);
596  scheme = GUIColorScheme("by routing device assumed speed", RGBColor::RED);
597  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
598  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
599  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
600  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
601  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
602  edgeColorer.addScheme(scheme);
603  edgeColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
604  scheme = GUIColorScheme("by segments (alternating)", RGBColor::BLUE, "odd", true);
605  scheme.addColor(RGBColor::RED, 1, "even");
606  edgeColorer.addScheme(scheme);
607  scheme = GUIColorScheme("by jammed state (segmentwise)", RGBColor::GREEN, "free", true);
608  scheme.addColor(RGBColor::RED, 1, "jammed");
609  edgeColorer.addScheme(scheme);
610  scheme = GUIColorScheme("by current occupancy (segmentwise, brutto)", RGBColor::BLUE);
611  scheme.addColor(RGBColor::RED, 0.95);
612  edgeColorer.addScheme(scheme);
613  scheme = GUIColorScheme("by current speed (segmentwise)", RGBColor::RED);
614  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
615  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
616  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
617  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
618  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
619  edgeColorer.addScheme(scheme);
620  scheme = GUIColorScheme("by current flow (segmentwise)", RGBColor::BLUE);
621  scheme.addColor(RGBColor::RED, (double)5000);
622  edgeColorer.addScheme(scheme);
623  scheme = GUIColorScheme("by relative speed (segmentwise)", RGBColor::RED);
624  scheme.addColor(RGBColor::YELLOW, (double)(0.25));
625  scheme.addColor(RGBColor::GREEN, (double)(0.5));
626  scheme.addColor(RGBColor::CYAN, (double)(0.75));
627  scheme.addColor(RGBColor::BLUE, (double)(1));
628  scheme.addColor(RGBColor::MAGENTA, (double)(1.25));
629  edgeColorer.addScheme(scheme);
630  scheme = GUIColorScheme("by insertion-backlog (streetwise)", RGBColor::GREY);
631  scheme.addColor(RGBColor::GREEN, (double)1);
632  scheme.addColor(RGBColor::YELLOW, (double)10);
633  scheme.addColor(RGBColor::RED, (double)100);
634  edgeColorer.addScheme(scheme);
635 
636 
638  {
639  edgeScaler.addScheme(GUIScaleScheme("uniform", 1, "", true));
640  GUIScaleScheme scheme = GUIScaleScheme("by selection (streetwise)", 0.5, "unselected", true);
641  scheme.addColor(5, 1, "selected");
642  edgeScaler.addScheme(scheme);
643  scheme = GUIScaleScheme("by allowed speed (streetwise)", 0);
644  scheme.addColor(10, (double)(150.0 / 3.6));
645  edgeScaler.addScheme(scheme);
646  scheme = GUIScaleScheme("by current occupancy (streetwise, brutto)", 0);
647  scheme.addColor(10, 0.95);
648  edgeScaler.addScheme(scheme);
649  scheme = GUIScaleScheme("by current speed (streetwise)", 0);
650  scheme.addColor(10, (double)(150.0 / 3.6));
651  edgeScaler.addScheme(scheme);
652  scheme = GUIScaleScheme("by current flow (streetwise)", 0);
653  scheme.addColor(20, (double)5000);
654  edgeScaler.addScheme(scheme);
655  scheme = GUIScaleScheme("by relative speed (streetwise)", 0);
656  scheme.addColor(20, (double)1);
657  edgeScaler.addScheme(scheme);
658  scheme = GUIScaleScheme("by insertion-backlog (streetwise)", 0);
659  scheme.addColor(1, (double)1);
660  scheme.addColor(10, (double)10);
661  scheme.addColor(50, (double)100);
662  edgeScaler.addScheme(scheme);
663  }
664 
665 }
666 
667 
668 void
670  // init color schemes
671  GUIColorScheme scheme = GUIColorScheme("uniform", RGBColor::BLACK, "road", true);
672  scheme.addColor(RGBColor::GREY, 1, "Sidewalk");
673  scheme.addColor(RGBColor(192, 66, 44), 2, "bike lane");
674  scheme.addColor(RGBColor(200, 255, 200), 3, "green verge");
675  scheme.addColor(RGBColor(150, 200, 200), 4, "waterway");
676  scheme.addColor(RGBColor(92, 92, 92), 5, "no passenger"); // paths, service roads etc
677  laneColorer.addScheme(scheme);
678  scheme = GUIColorScheme("by selection (lane-/streetwise)", RGBColor(128, 128, 128, 255), "unselected", true);
679  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
680  laneColorer.addScheme(scheme);
681  scheme = GUIColorScheme("by permission code", RGBColor(240, 240, 240), "nobody");
682  scheme.addColor(RGBColor(10, 10, 10), (double)SVC_PASSENGER, "passenger");
683  scheme.addColor(RGBColor(128, 128, 128), (double)SVC_PEDESTRIAN, "pedestrian");
684  scheme.addColor(RGBColor(80, 80, 80), (double)(SVC_PEDESTRIAN | SVC_DELIVERY), "pedestrian_delivery");
685  scheme.addColor(RGBColor(192, 66, 44), (double)SVC_BICYCLE, "bicycle");
686  scheme.addColor(RGBColor(40, 100, 40), (double)SVC_BUS, "bus");
687  scheme.addColor(RGBColor(166, 147, 26), (double)SVC_TAXI, "taxi");
688  scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~SVC_NON_ROAD), "normal_road");
689  scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_NON_ROAD)), "disallow_pedestrian");
690  scheme.addColor(RGBColor(255, 206, 0), (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_BICYCLE | SVC_MOPED | SVC_NON_ROAD)), "motorway");
691  scheme.addColor(RGBColor(150, 200, 200), (double)SVC_SHIP, "waterway");
692  scheme.addColor(RGBColor::GREEN, (double)SVCAll, "all");
693  laneColorer.addScheme(scheme);
694 
695  scheme = GUIColorScheme("by allowed speed (lanewise)", RGBColor::RED);
696  scheme.addColor(RGBColor::YELLOW, (double)(30 / 3.6));
697  scheme.addColor(RGBColor::GREEN, (double)(55 / 3.6));
698  scheme.addColor(RGBColor::CYAN, (double)(80 / 3.6));
699  scheme.addColor(RGBColor::BLUE, (double)(120 / 3.6));
700  scheme.addColor(RGBColor::MAGENTA, (double)(150 / 3.6));
701  laneColorer.addScheme(scheme);
702 
703  scheme = GUIColorScheme("by lane number (streetwise)", RGBColor::RED);
704  scheme.addColor(RGBColor::BLUE, (double)5);
705  laneColorer.addScheme(scheme);
706 
707  scheme = GUIColorScheme("by given length/geometrical length", RGBColor::BLACK);
708  scheme.addColor(RGBColor::RED, 0.25);
709  scheme.addColor(RGBColor::YELLOW, 0.5);
710  scheme.addColor(RGBColor(179, 179, 179, 255), (double)1.0);
711  scheme.addColor(RGBColor::GREEN, (double)2.0);
712  scheme.addColor(RGBColor::BLUE, (double)4.0);
713  laneColorer.addScheme(scheme);
714  laneColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
715 
716  scheme = GUIColorScheme("by priority", RGBColor::YELLOW);
717  scheme.addColor(RGBColor::RED, (double) - 20);
718  scheme.addColor(RGBColor::GREEN, (double)20);
719  scheme.setAllowsNegativeValues(true);
720  laneColorer.addScheme(scheme);
721  scheme = GUIColorScheme("by height at start", RGBColor::RED);
722  scheme.addColor(RGBColor::BLUE, (double) - 10);
723  scheme.addColor(RGBColor::YELLOW, (double)50);
724  scheme.addColor(RGBColor::GREEN, (double)100);
725  scheme.addColor(RGBColor::MAGENTA, (double)200);
726  scheme.setAllowsNegativeValues(true);
727  laneColorer.addScheme(scheme);
728  scheme = GUIColorScheme("by height at segment start", RGBColor::RED);
729  scheme.addColor(RGBColor::BLUE, (double) - 10);
730  scheme.addColor(RGBColor::YELLOW, (double)50);
731  scheme.addColor(RGBColor::GREEN, (double)100);
732  scheme.addColor(RGBColor::MAGENTA, (double)200);
733  scheme.setAllowsNegativeValues(true);
734  laneColorer.addScheme(scheme);
735  scheme = GUIColorScheme("by inclination", RGBColor::GREY);
736  scheme.addColor(RGBColor::YELLOW, (double) .1);
737  scheme.addColor(RGBColor::RED, (double) .3);
738  scheme.addColor(RGBColor::GREEN, (double) - .1);
739  scheme.addColor(RGBColor::BLUE, (double) - .3);
740  scheme.setAllowsNegativeValues(true);
741  laneColorer.addScheme(scheme);
742  scheme = GUIColorScheme("by segment inclination", RGBColor::GREY);
743  scheme.addColor(RGBColor::YELLOW, (double) .1);
744  scheme.addColor(RGBColor::RED, (double) .3);
745  scheme.addColor(RGBColor::GREEN, (double) - .1);
746  scheme.addColor(RGBColor::BLUE, (double) - .3);
747  scheme.setAllowsNegativeValues(true);
748  laneColorer.addScheme(scheme);
749 
750  scheme = GUIColorScheme("uniform", RGBColor(102, 0, 0), "", true);
751  scheme.addColor(RGBColor(204, 0, 0), 1, "shape not computed");
752  scheme.addColor(RGBColor(153, 0, 0), 2, "geometry points");
753  junctionColorer.addScheme(scheme);
754  scheme = GUIColorScheme("by selection", RGBColor(128, 128, 128, 255), "unselected", true);
755  scheme.addColor(RGBColor(0, 80, 180, 255), 1, "selected");
756  junctionColorer.addScheme(scheme);
757  scheme = GUIColorScheme("by type", RGBColor::GREEN, "traffic_light", true);
758  scheme.addColor(RGBColor(0, 128, 0), 1, "traffic_light_unregulated");
759  scheme.addColor(RGBColor::YELLOW, 2, "priority");
760  scheme.addColor(RGBColor::RED, 3, "priority_stop");
761  scheme.addColor(RGBColor::BLUE, 4, "right_before_left");
762  scheme.addColor(RGBColor::CYAN, 5, "allway_stop");
763  scheme.addColor(RGBColor::GREY, 6, "district");
764  scheme.addColor(RGBColor::MAGENTA, 7, "unregulated");
765  scheme.addColor(RGBColor::BLACK, 8, "dead_end");
766  scheme.addColor(RGBColor::ORANGE, 9, "rail_signal");
767  scheme.addColor(RGBColor(192, 128, 64), 10, "zipper");
768  scheme.addColor(RGBColor(192, 255, 192), 11, "traffic_light_right_on_red");
769  scheme.addColor(RGBColor(128, 0, 128), 12, "rail_crossing"); // dark purple
770  junctionColorer.addScheme(scheme);
771 
773  {
774  GUIScaleScheme scheme = GUIScaleScheme("default", 1, "uniform", true);
775  laneScaler.addScheme(scheme);
776  }
777 
778  // dummy schemes
782 }
783 
784 
785 int
787  if (UseMesoSim) {
788  return edgeColorer.getActive();
789  }
790  return laneColorer.getActive();
791 }
792 
793 
794 int
796  if (UseMesoSim) {
797  return edgeScaler.getActive();
798  }
799  return laneScaler.getActive();
800 }
801 
802 
805  if (UseMesoSim) {
806  return edgeColorer.getScheme();
807  }
808  return laneColorer.getScheme();
809 }
810 
811 
814  if (UseMesoSim) {
815  return edgeScaler.getScheme();
816  }
817  return laneScaler.getScheme();
818 }
819 
820 void
825  dev.writeAttr("antialiase", antialiase);
826  dev.writeAttr("dither", dither);
827  dev.closeTag();
829  dev.writeAttr("backgroundColor", backgroundColor);
830  dev.writeAttr("showGrid", showGrid);
831  dev.writeAttr("gridXSize", gridXSize);
832  dev.writeAttr("gridYSize", gridYSize);
833  dev.closeTag();
834  // edges
836  dev.writeAttr("laneEdgeMode", getLaneEdgeMode());
837  dev.writeAttr("scaleMode", getLaneEdgeScaleMode());
838  dev.writeAttr("laneShowBorders", laneShowBorders);
839  dev.writeAttr("showLinkDecals", showLinkDecals);
840  dev.writeAttr("showLinkRules", showLinkRules);
841  dev.writeAttr("showRails", showRails);
842  dev.writeAttr("hideConnectors", hideConnectors);
843  dev.writeAttr("widthExaggeration", laneWidthExaggeration);
844  dev.writeAttr("minSize", laneMinSize);
845  dev.writeAttr("showDirection", showLaneDirection);
846  dev.writeAttr("showSublanes", showSublanes);
847  dev.lf();
848  dev << " ";
849  edgeName.print(dev, "edgeName");
850  dev.lf();
851  dev << " ";
852  internalEdgeName.print(dev, "internalEdgeName");
853  dev.lf();
854  dev << " ";
855  cwaEdgeName.print(dev, "cwaEdgeName");
856  dev.lf();
857  dev << " ";
858  streetName.print(dev, "streetName");
859  laneColorer.save(dev);
860  laneScaler.save(dev);
861  edgeColorer.save(dev);
862  edgeScaler.save(dev);
863  dev.closeTag();
864  // vehicles
866  dev.writeAttr("vehicleMode", vehicleColorer.getActive());
867  dev.writeAttr("vehicleQuality", vehicleQuality);
868  vehicleSize.print(dev, "vehicle");
869  dev.writeAttr("showBlinker", showBlinker);
870  dev.lf();
871  dev << " ";
872  vehicleName.print(dev, "vehicleName");
873  vehicleColorer.save(dev);
874  dev.closeTag();
875  // persons
877  dev.writeAttr("personMode", personColorer.getActive());
878  dev.writeAttr("personQuality", personQuality);
879  personSize.print(dev, "person");
880  dev.lf();
881  dev << " ";
882  personName.print(dev, "personName");
883  personColorer.save(dev);
884  dev.closeTag();
885  // persons
887  dev.writeAttr("containerMode", containerColorer.getActive());
888  dev.writeAttr("containerQuality", containerQuality);
889  personSize.print(dev, "container");
890  dev.lf();
891  dev << " ";
892  personName.print(dev, "containerName");
893  personColorer.save(dev);
894  dev.closeTag();
895  // junctions
897  dev.writeAttr("junctionMode", junctionColorer.getActive());
898  dev.lf();
899  dev << " ";
900  drawLinkTLIndex.print(dev, "drawLinkTLIndex");
901  dev.lf();
902  dev << " ";
903  drawLinkJunctionIndex.print(dev, "drawLinkJunctionIndex");
904  dev.lf();
905  dev << " ";
906  junctionName.print(dev, "junctionName");
907  dev.lf();
908  dev << " ";
909  internalJunctionName.print(dev, "internalJunctionName");
910  dev.lf();
911  dev << " ";
912  dev.writeAttr("showLane2Lane", showLane2Lane);
913  dev.writeAttr("drawShape", drawJunctionShape);
914  dev.writeAttr("drawCrossingsAndWalkingareas", drawCrossingsAndWalkingareas);
915  junctionSize.print(dev, "junction");
916  junctionColorer.save(dev);
917  dev.closeTag();
918  // additionals
920  dev.writeAttr("addMode", addMode);
921  addSize.print(dev, "add");
922  addName.print(dev, "addName");
923  dev.closeTag();
924  // pois
926  poiSize.print(dev, "poi");
927  poiName.print(dev, "poiName");
928  poiType.print(dev, "poiType");
929  dev.closeTag();
930  // polys
932  polySize.print(dev, "poly");
933  polyName.print(dev, "polyName");
934  polyType.print(dev, "polyType");
935  dev.closeTag();
936  // legend
938  dev.writeAttr("showSizeLegend", showSizeLegend);
939  dev.closeTag();
940 
941  dev.closeTag();
942 }
943 
944 
945 bool
947  if (antialiase != v2.antialiase) {
948  return false;
949  }
950  if (dither != v2.dither) {
951  return false;
952  }
953  if (backgroundColor != v2.backgroundColor) {
954  return false;
955  }
956  if (showGrid != v2.showGrid) {
957  return false;
958  }
959  if (gridXSize != v2.gridXSize) {
960  return false;
961  }
962  if (gridYSize != v2.gridYSize) {
963  return false;
964  }
965 
966  if (!(edgeColorer == v2.edgeColorer)) {
967  return false;
968  }
969  if (!(edgeScaler == v2.edgeScaler)) {
970  return false;
971  }
972  if (!(laneColorer == v2.laneColorer)) {
973  return false;
974  }
975  if (!(laneScaler == v2.laneScaler)) {
976  return false;
977  }
978  if (laneShowBorders != v2.laneShowBorders) {
979  return false;
980  }
981  if (showLinkDecals != v2.showLinkDecals) {
982  return false;
983  }
984  if (showLinkRules != v2.showLinkRules) {
985  return false;
986  }
987  if (showRails != v2.showRails) {
988  return false;
989  }
990  if (edgeName != v2.edgeName) {
991  return false;
992  }
994  return false;
995  }
996  if (cwaEdgeName != v2.cwaEdgeName) {
997  return false;
998  }
999  if (streetName != v2.streetName) {
1000  return false;
1001  }
1002  if (hideConnectors != v2.hideConnectors) {
1003  return false;
1004  }
1006  return false;
1007  }
1008  if (laneMinSize != v2.laneMinSize) {
1009  return false;
1010  }
1012  return false;
1013  }
1014  if (showSublanes != v2.showSublanes) {
1015  return false;
1016  }
1017  if (!(vehicleColorer == v2.vehicleColorer)) {
1018  return false;
1019  }
1020  if (vehicleQuality != v2.vehicleQuality) {
1021  return false;
1022  }
1023  if (vehicleSize != v2.vehicleSize) {
1024  return false;
1025  }
1026  if (showBlinker != v2.showBlinker) {
1027  return false;
1028  }
1030  return false;
1031  }
1032  if (drawMinGap != v2.drawMinGap) {
1033  return false;
1034  }
1035  if (showBTRange != v2.showBTRange) {
1036  return false;
1037  }
1038  if (vehicleName != v2.vehicleName) {
1039  return false;
1040  }
1041  if (!(personColorer == v2.personColorer)) {
1042  return false;
1043  }
1044  if (personQuality != v2.personQuality) {
1045  return false;
1046  }
1047  if (personSize != v2.personSize) {
1048  return false;
1049  }
1050  if (personName != v2.personName) {
1051  return false;
1052  }
1053  if (!(containerColorer == v2.containerColorer)) {
1054  return false;
1055  }
1056  if (containerQuality != v2.containerQuality) {
1057  return false;
1058  }
1059  if (containerSize != v2.containerSize) {
1060  return false;
1061  }
1062  if (containerName != v2.containerName) {
1063  return false;
1064  }
1065  if (!(junctionColorer == v2.junctionColorer)) {
1066  return false;
1067  }
1068  if (drawLinkTLIndex != v2.drawLinkTLIndex) {
1069  return false;
1070  }
1072  return false;
1073  }
1074  if (junctionName != v2.junctionName) {
1075  return false;
1076  }
1078  return false;
1079  }
1080 
1081  if (showLane2Lane != v2.showLane2Lane) {
1082  return false;
1083  }
1084 
1086  return false;
1087  }
1088 
1090  return false;
1091  }
1092  if (junctionSize != v2.junctionSize) {
1093  return false;
1094  }
1095 
1096  if (addMode != v2.addMode) {
1097  return false;
1098  }
1099  if (addSize != v2.addSize) {
1100  return false;
1101  }
1102  if (addName != v2.addName) {
1103  return false;
1104  }
1105  if (poiSize != v2.poiSize) {
1106  return false;
1107  }
1108  if (poiName != v2.poiName) {
1109  return false;
1110  }
1111  if (poiType != v2.poiType) {
1112  return false;
1113  }
1114  if (polySize != v2.polySize) {
1115  return false;
1116  }
1117  if (polyName != v2.polyName) {
1118  return false;
1119  }
1120  if (polyType != v2.polyType) {
1121  return false;
1122  }
1123 
1124  if (showSizeLegend != v2.showSizeLegend) {
1125  return false;
1126  }
1127 
1128  return true;
1129 }
1130 
1131 
1132 double
1135  return (constantSize && !s.drawForSelecting) ? MAX2((double)exaggeration, exaggeration * factor / s.scale) : exaggeration;
1136 }
1137 
1138 
1139 const RGBColor&
1141  switch (ls) {
1146  case LINKSTATE_TL_RED:
1147  return SUMO_color_TL_RED;
1149  return SUMO_color_TL_REDYELLOW;
1158  case LINKSTATE_MAJOR:
1159  return SUMO_color_MAJOR;
1160  case LINKSTATE_MINOR:
1161  return SUMO_color_MINOR;
1162  case LINKSTATE_EQUAL:
1163  return SUMO_color_EQUAL;
1164  case LINKSTATE_STOP:
1165  return SUMO_color_STOP;
1166  case LINKSTATE_ALLWAY_STOP:
1167  return SUMO_color_ALLWAY_STOP;
1168  case LINKSTATE_ZIPPER:
1169  return SUMO_color_ZIPPER;
1170  case LINKSTATE_DEADEND:
1171  return SUMO_color_DEADEND;
1172  default:
1173  throw ProcessError("No color defined for LinkState '" + std::string(ls, 1) + "'");
1174  }
1175 }
1176 
1177 /****************************************************************************/
1178 
1179 
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:261
static const RGBColor BLUE
Definition: RGBColor.h:181
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:186
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.
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:185
T MAX2(T a, T b)
Definition: StdDefs.h:74
bool showLaneDirection
Whether to show direction indicators for lanes.
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.
bool netedit
Whether the settings are for Netedit.
static const RGBColor BLACK
Definition: RGBColor.h:187
const SVCPermissions SVCAll
all VClasses are allowed
bool showLinkRules
Information whether link rules (colored bars) shall be drawn.
The link is controlled by a tls which is off, not blinking, may pass.
This is an uncontrolled, all-way stop link.
bool dither
Information whether dithering shall be enabled.
const RGBColor SUMO_color_STOP(128, 0, 128)
This is an uncontrolled, zipper-merge link.
GUIVisualizationSettings(bool _netedit=false)
constructor
GUIVisualizationSizeSettings polySize
const RGBColor SUMO_color_ZIPPER(192, 128, 64)
GUIColorer vehicleColorer
The vehicle colorer.
GUIVisualizationTextSettings edgeName
GUIVisualizationSizeSettings addSize
void save(OutputDevice &dev) const
static const RGBColor GREEN
Definition: RGBColor.h:180
static const RGBColor GREY
Definition: RGBColor.h:188
double getExaggeration(const GUIVisualizationSettings &s, double factor=20) const
return the drawing size including exaggeration and constantSize values
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 getLaneEdgeMode() const
Returns the number of the active lane (edge) coloring schme.
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:184
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.
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
GUIVisualizationSizeSettings poiSize
vehicle is a bus
static const RGBColor YELLOW
Definition: RGBColor.h:182
static const RGBColor RED
named colors
Definition: RGBColor.h:179
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:183
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)
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.
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
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.
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:239
void initNeteditDefaults()
init default settings
GUIVisualizationTextSettings polyName
GUIVisualizationTextSettings containerName