SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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-2014 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 "GUIColorScheme.h"
37 
38 #ifdef CHECK_MEMORY_LEAKS
39 #include <foreign/nvwa/debug_new.h>
40 #endif // CHECK_MEMORY_LEAKS
41 
42 // ===========================================================================
43 // static members
44 // ===========================================================================
45 #ifdef HAVE_INTERNAL
46 bool GUIVisualizationSettings::UseMesoSim = false;
47 #endif
48 
49 // ===========================================================================
50 // member method definitions
51 // ===========================================================================
53  : name(""), antialiase(false), dither(false),
54  backgroundColor(RGBColor::WHITE),
55  showGrid(false), gridXSize(100), gridYSize(100),
56  laneShowBorders(false), showLinkDecals(true), showRails(true),
57  edgeName(false, 50, RGBColor(255, 128, 0, 255)),
58  internalEdgeName(false, 40, RGBColor(128, 64, 0, 255)),
59  cwaEdgeName(false, 50, RGBColor::MAGENTA),
60  streetName(false, 55, RGBColor::YELLOW),
61  hideConnectors(false), laneWidthExaggeration(1),
62  vehicleQuality(0), showBlinker(true),
63  drawLaneChangePreference(false), drawMinGap(false),
64  showBTRange(false), vehicleSize(1),
65  vehicleName(false, 50, RGBColor(204, 153, 0, 255)),
66  personQuality(0),
67  personSize(1),
68  personName(false, 50, RGBColor(0, 153, 204, 255)),
69  drawLinkTLIndex(false), drawLinkJunctionIndex(false),
70  junctionName(false, 50, RGBColor(0, 255, 128, 255)),
71  internalJunctionName(false, 50, RGBColor(0, 204, 128, 255)),
72  showLane2Lane(false), drawJunctionShape(true), addMode(0),
73  addSize(1),
74  addName(false, 50, RGBColor(255, 0, 128, 255)),
75  poiSize(0), poiName(false, 50, RGBColor(255, 0, 128, 255)),
76  polySize(0), polyName(false, 50, RGBColor(255, 0, 128, 255)),
77  showSizeLegend(true),
78  gaming(false),
79  selectionScale(1),
80  drawForSelecting(false) {
82  GUIColorScheme scheme = GUIColorScheme("uniform", RGBColor::BLACK, "road", true);
83  scheme.addColor(RGBColor::GREY, 1, "sidewalk");
84  scheme.addColor(RGBColor(192, 66, 44), 2, "bike lane");
85  scheme.addColor(RGBColor(0, 0, 0, 0), 3, "green verge");
86  laneColorer.addScheme(scheme);
87  scheme = GUIColorScheme("by selection (lane-/streetwise)", RGBColor(179, 179, 179, 255), "unselected", true);
88  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
89  laneColorer.addScheme(scheme);
90  scheme = GUIColorScheme("by permission code", RGBColor(240, 240, 240), "nobody");
91  scheme.addColor(RGBColor(10, 10, 10), (SUMOReal)SVC_PASSENGER, "passenger");
92  scheme.addColor(RGBColor(128, 128, 128), (SUMOReal)SVC_PEDESTRIAN, "pedestrian");
93  scheme.addColor(RGBColor(80, 80, 80), (SUMOReal)(SVC_PEDESTRIAN | SVC_DELIVERY), "pedestrian_delivery");
94  scheme.addColor(RGBColor(192, 66, 44), (SUMOReal)SVC_BICYCLE, "bicycle");
95  scheme.addColor(RGBColor(40, 100, 40), (SUMOReal)SVC_BUS, "bus");
96  scheme.addColor(RGBColor(166, 147, 26), (SUMOReal)SVC_TAXI, "taxi");
97  scheme.addColor(RGBColor::BLACK, (SUMOReal)(SVCAll & ~SVC_PEDESTRIAN), "disallow_pedestrian");
98  scheme.addColor(RGBColor(64, 0, 86), (SUMOReal)(SVCAll & ~(SVC_PEDESTRIAN | SVC_BICYCLE | SVC_MOPED)), "disallow_apedestrian_bicycle");
99  scheme.addColor(RGBColor::GREEN, (SUMOReal)SVCAll, "all");
100  laneColorer.addScheme(scheme);
101  // ... traffic states ...
102  scheme = GUIColorScheme("by allowed speed (lanewise)", RGBColor::RED);
103  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
104  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
105  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
106  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
107  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
108  laneColorer.addScheme(scheme);
109  scheme = GUIColorScheme("by current occupancy (lanewise, brutto)", RGBColor::BLUE);
110  scheme.addColor(RGBColor::RED, (SUMOReal)0.95);
111  laneColorer.addScheme(scheme);
112  scheme = GUIColorScheme("by current occupancy (lanewise, netto)", RGBColor::BLUE);
113  scheme.addColor(RGBColor::RED, (SUMOReal)0.95);
114  laneColorer.addScheme(scheme);
115  scheme = GUIColorScheme("by first vehicle waiting time (lanewise)", RGBColor::BLUE);
116  scheme.addColor(RGBColor::CYAN, (SUMOReal)30);
117  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
118  scheme.addColor(RGBColor::YELLOW, (SUMOReal)200);
119  scheme.addColor(RGBColor::RED, (SUMOReal)300);
120  laneColorer.addScheme(scheme);
121  scheme = GUIColorScheme("by lane number (streetwise)", RGBColor::RED);
122  scheme.addColor(RGBColor::BLUE, (SUMOReal)5);
123  laneColorer.addScheme(scheme);
124  // ... emissions ...
125  scheme = GUIColorScheme("by CO2 emissions", RGBColor::GREEN);
126  scheme.addColor(RGBColor::RED, (SUMOReal)(10. / 7.5 / 5.));
127  laneColorer.addScheme(scheme);
128  scheme = GUIColorScheme("by CO emissions", RGBColor::GREEN);
129  scheme.addColor(RGBColor::RED, (SUMOReal)(0.05 / 7.5 / 2.));
130  laneColorer.addScheme(scheme);
131  scheme = GUIColorScheme("by PMx emissions", RGBColor::GREEN);
132  scheme.addColor(RGBColor::RED, (SUMOReal)(.005 / 7.5 / 5.));
133  laneColorer.addScheme(scheme);
134  scheme = GUIColorScheme("by NOx emissions", RGBColor::GREEN);
135  scheme.addColor(RGBColor::RED, (SUMOReal)(.125 / 7.5 / 5.));
136  laneColorer.addScheme(scheme);
137  scheme = GUIColorScheme("by HC emissions", RGBColor::GREEN);
138  scheme.addColor(RGBColor::RED, (SUMOReal)(.02 / 7.5 / 4.));
139  laneColorer.addScheme(scheme);
140  scheme = GUIColorScheme("by fuel consumption", RGBColor::GREEN);
141  scheme.addColor(RGBColor::RED, (SUMOReal)(.005 / 7.5 * 100.));
142  laneColorer.addScheme(scheme);
143  scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREEN);
144  scheme.addColor(RGBColor::RED, (SUMOReal)100);
145  laneColorer.addScheme(scheme);
146  // ... weights (experimental) ...
147  scheme = GUIColorScheme("by global travel time", RGBColor::GREEN);
148  scheme.addColor(RGBColor::RED, (SUMOReal)100);
149  scheme.setAllowsNegativeValues(true);
150  laneColorer.addScheme(scheme);
151  scheme = GUIColorScheme("by global speed percentage", RGBColor::RED);
152  scheme.addColor(RGBColor::YELLOW, (SUMOReal)50);
153  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
154  scheme.setAllowsNegativeValues(true);
155  laneColorer.addScheme(scheme);
156  scheme = GUIColorScheme("by given length/geometrical length", RGBColor::BLACK);
157  scheme.addColor(RGBColor::RED, (SUMOReal)0.25);
158  scheme.addColor(RGBColor::YELLOW, (SUMOReal)0.5);
159  scheme.addColor(RGBColor(179, 179, 179, 255), (SUMOReal)1.0);
160  scheme.addColor(RGBColor::GREEN, (SUMOReal)2.0);
161  scheme.addColor(RGBColor::BLUE, (SUMOReal)4.0);
162  laneColorer.addScheme(scheme);
163  laneColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
164  scheme = GUIColorScheme("by loaded weight", RGBColor::GREEN);
165  scheme.addColor(RGBColor::RED, (SUMOReal)100);
166  scheme.setAllowsNegativeValues(true);
167  laneColorer.addScheme(scheme);
168  scheme = GUIColorScheme("by priority", RGBColor::YELLOW);
169  scheme.addColor(RGBColor::RED, (SUMOReal) - 20);
170  scheme.addColor(RGBColor::GREEN, (SUMOReal)20);
171  scheme.setAllowsNegativeValues(true);
172  laneColorer.addScheme(scheme);
173 
174 
176  vehicleColorer.addScheme(GUIColorScheme("given vehicle/type/route color", RGBColor::YELLOW, "", true));
178  vehicleColorer.addScheme(GUIColorScheme("given/assigned vehicle color", RGBColor::YELLOW, "", true));
179  vehicleColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
180  vehicleColorer.addScheme(GUIColorScheme("given/assigned route color", RGBColor::YELLOW, "", true));
181  vehicleColorer.addScheme(GUIColorScheme("depart position as HSV", RGBColor::YELLOW, "", true));
182  vehicleColorer.addScheme(GUIColorScheme("arrival position as HSV", RGBColor::YELLOW, "", true));
183  vehicleColorer.addScheme(GUIColorScheme("direction/distance as HSV", RGBColor::YELLOW, "", true));
184  scheme = GUIColorScheme("by speed", RGBColor::RED);
185  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
186  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
187  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
188  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
189  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
190  vehicleColorer.addScheme(scheme);
191  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE);
192  scheme.addColor(RGBColor::CYAN, (SUMOReal)30);
193  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
194  scheme.addColor(RGBColor::YELLOW, (SUMOReal)200);
195  scheme.addColor(RGBColor::RED, (SUMOReal)300);
196  vehicleColorer.addScheme(scheme);
197  scheme = GUIColorScheme("by time since lane change", RGBColor(179, 179, 179, 255), "0");
198  scheme.addColor(RGBColor(189, 189, 179, 255), -180);
199  scheme.addColor(RGBColor(255, 255, 0, 255), -20);
200  scheme.addColor(RGBColor(255, 0, 0, 255), -1);
201  scheme.addColor(RGBColor(0, 0, 255, 255), 1);
202  scheme.addColor(RGBColor(0, 255, 255, 255), 20);
203  scheme.addColor(RGBColor(179, 189, 189, 255), 180);
204  scheme.setAllowsNegativeValues(true);
205  vehicleColorer.addScheme(scheme);
206  scheme = GUIColorScheme("by max speed", RGBColor::RED);
207  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
208  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
209  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
210  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
211  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
212  vehicleColorer.addScheme(scheme);
213  // ... emissions ...
214  scheme = GUIColorScheme("by CO2 emissions", RGBColor::GREEN);
215  scheme.addColor(RGBColor::RED, (SUMOReal)5.);
216  vehicleColorer.addScheme(scheme);
217  scheme = GUIColorScheme("by CO emissions", RGBColor::GREEN);
218  scheme.addColor(RGBColor::RED, (SUMOReal)0.05);
219  vehicleColorer.addScheme(scheme);
220  scheme = GUIColorScheme("by PMx emissions", RGBColor::GREEN);
221  scheme.addColor(RGBColor::RED, (SUMOReal).005);
222  vehicleColorer.addScheme(scheme);
223  scheme = GUIColorScheme("by NOx emissions", RGBColor::GREEN);
224  scheme.addColor(RGBColor::RED, (SUMOReal).125);
225  vehicleColorer.addScheme(scheme);
226  scheme = GUIColorScheme("by HC emissions", RGBColor::GREEN);
227  scheme.addColor(RGBColor::RED, (SUMOReal).02);
228  vehicleColorer.addScheme(scheme);
229  scheme = GUIColorScheme("by fuel consumption", RGBColor::GREEN);
230  scheme.addColor(RGBColor::RED, (SUMOReal).005);
231  vehicleColorer.addScheme(scheme);
232  scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREEN);
233  scheme.addColor(RGBColor::RED, (SUMOReal)100.);
234  vehicleColorer.addScheme(scheme);
235  scheme = GUIColorScheme("by reroute number", RGBColor::RED);
236  scheme.addColor(RGBColor::YELLOW, (SUMOReal)1.);
237  scheme.addColor(RGBColor::WHITE, (SUMOReal)10.);
238  vehicleColorer.addScheme(scheme);
239  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
240  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
241  vehicleColorer.addScheme(scheme);
242  scheme = GUIColorScheme("by offset from best lane", RGBColor(179, 179, 179, 255), "0");
243  scheme.addColor(RGBColor(255, 0, 0, 255), -3, "-3");
244  scheme.addColor(RGBColor(255, 255, 0, 255), -1, "-1");
245  scheme.addColor(RGBColor(0, 255, 255, 255), 1, "1");
246  scheme.addColor(RGBColor(0, 0, 255, 255), 3, "3");
247  scheme.setAllowsNegativeValues(true);
248  vehicleColorer.addScheme(scheme);
249  scheme = GUIColorScheme("by acceleration", RGBColor(179, 179, 179, 255), "0");
250  scheme.addColor(RGBColor(255, 0, 0, 255), -4.5 /* -SUMOVTypeParameter::getDefaultDecel() */);
251  scheme.addColor(RGBColor(255, 255, 0, 255), -0.1);
252  scheme.addColor(RGBColor(0, 255, 255, 255), 0.1);
253  scheme.addColor(RGBColor(0, 0, 255, 255), 2.6 /* SUMOVTypeParameter::getDefaultAccel() */);
254  scheme.setAllowsNegativeValues(true);
255  vehicleColorer.addScheme(scheme);
256  scheme = GUIColorScheme("by time gap", RGBColor(255, 255, 0, 255), "0");
257  scheme.addColor(RGBColor(179, 179, 179, 255), -1);
258  scheme.addColor(RGBColor(0, 255, 255, 255), 1);
259  scheme.addColor(RGBColor(0, 0, 255, 255), 2);
260  scheme.setAllowsNegativeValues(true);
261  vehicleColorer.addScheme(scheme);
262 
264  personColorer.addScheme(GUIColorScheme("given person/type color", RGBColor::YELLOW, "", true));
266  personColorer.addScheme(GUIColorScheme("given/assigned person color", RGBColor::YELLOW, "", true));
267  personColorer.addScheme(GUIColorScheme("given/assigned type color", RGBColor::YELLOW, "", true));
268  scheme = GUIColorScheme("by speed", RGBColor::RED);
269  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(2.5 / 3.6));
270  scheme.addColor(RGBColor::GREEN, (SUMOReal)(5 / 3.6));
271  scheme.addColor(RGBColor::BLUE, (SUMOReal)(10 / 3.6));
272  personColorer.addScheme(scheme);
273  scheme = GUIColorScheme("by mode", RGBColor::YELLOW); // walking
274  scheme.addColor(RGBColor::BLUE, (SUMOReal)(1)); // riding
275  scheme.addColor(RGBColor::RED, (SUMOReal)(2)); // stopped
276  scheme.addColor(RGBColor::GREEN, (SUMOReal)(3)); // waiting for ride
277  personColorer.addScheme(scheme);
278  scheme = GUIColorScheme("by waiting time", RGBColor::BLUE);
279  scheme.addColor(RGBColor::CYAN, (SUMOReal)30);
280  scheme.addColor(RGBColor::GREEN, (SUMOReal)100);
281  scheme.addColor(RGBColor::YELLOW, (SUMOReal)200);
282  scheme.addColor(RGBColor::RED, (SUMOReal)300);
283  personColorer.addScheme(scheme);
284  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
285  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
286  personColorer.addScheme(scheme);
287  personColorer.addScheme(GUIColorScheme("by angle", RGBColor::YELLOW, "", true));
288 
290  scheme = GUIColorScheme("by selection", RGBColor(179, 179, 179, 255), "unselected", true);
291  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
292  junctionColorer.addScheme(scheme);
293  scheme = GUIColorScheme("by type", RGBColor::GREEN, "traffic_light", true);
294  scheme.addColor(RGBColor(0, 128, 0), 1, "traffic_light_unregulated");
295  scheme.addColor(RGBColor::YELLOW, 2, "priority");
296  scheme.addColor(RGBColor::RED, 3, "priority_stop");
297  scheme.addColor(RGBColor::BLUE, 4, "right_before_left");
298  scheme.addColor(RGBColor::CYAN, 5, "allway_stop");
299  scheme.addColor(RGBColor::GREY, 6, "district");
300  scheme.addColor(RGBColor::MAGENTA, 7, "unregulated");
301  scheme.addColor(RGBColor::BLACK, 8, "dead_end");
302  junctionColorer.addScheme(scheme);
303 
304 
306  {
307  GUIScaleScheme scheme = GUIScaleScheme("default", 1, "uniform", true);
308  laneScaler.addScheme(scheme);
309  scheme = GUIScaleScheme("by selection (lane-/streetwise)", 0.5, "unselected", true);
310  scheme.addColor(5, 1, "selected");
311  laneScaler.addScheme(scheme);
312  // ... traffic states ...
313  scheme = GUIScaleScheme("by allowed speed (lanewise)", 0);
314  scheme.addColor(10, (SUMOReal)(150.0 / 3.6));
315  laneScaler.addScheme(scheme);
316  scheme = GUIScaleScheme("by current occupancy (lanewise, brutto)", 0);
317  scheme.addColor(10, (SUMOReal)0.95);
318  laneScaler.addScheme(scheme);
319  scheme = GUIScaleScheme("by current occupancy (lanewise, netto)", 0);
320  scheme.addColor(10, (SUMOReal)0.95);
321  laneScaler.addScheme(scheme);
322  scheme = GUIScaleScheme("by first vehicle waiting time (lanewise)", 0);
323  scheme.addColor(10, (SUMOReal)300);
324  laneScaler.addScheme(scheme);
325  scheme = GUIScaleScheme("by lane number (streetwise)", 1);
326  scheme.addColor(10, (SUMOReal)5);
327  laneScaler.addScheme(scheme);
328  // ... emissions ...
329  scheme = GUIScaleScheme("by CO2 emissions", 0);
330  scheme.addColor(10, (SUMOReal)(10. / 7.5 / 5.));
331  laneScaler.addScheme(scheme);
332  scheme = GUIScaleScheme("by CO emissions", 0);
333  scheme.addColor(10, (SUMOReal)(0.05 / 7.5 / 2.));
334  laneScaler.addScheme(scheme);
335  scheme = GUIScaleScheme("by PMx emissions", 0);
336  scheme.addColor(10, (SUMOReal)(.005 / 7.5 / 5.));
337  laneScaler.addScheme(scheme);
338  scheme = GUIScaleScheme("by NOx emissions", 0);
339  scheme.addColor(10, (SUMOReal)(.125 / 7.5 / 5.));
340  laneScaler.addScheme(scheme);
341  scheme = GUIScaleScheme("by HC emissions", 0);
342  scheme.addColor(10, (SUMOReal)(.02 / 7.5 / 4.));
343  laneScaler.addScheme(scheme);
344  scheme = GUIScaleScheme("by fuel consumption", 0);
345  scheme.addColor(10, (SUMOReal)(.005 / 7.5 * 100.));
346  laneScaler.addScheme(scheme);
347  scheme = GUIScaleScheme("by noise emissions (Harmonoise)", 0);
348  scheme.addColor(10, (SUMOReal)100);
349  laneScaler.addScheme(scheme);
350  // ... weights (experimental) ...
351  scheme = GUIScaleScheme("by global travel time", 0);
352  scheme.addColor(10, (SUMOReal)100);
353  scheme.setAllowsNegativeValues(true);
354  laneScaler.addScheme(scheme);
355  scheme = GUIScaleScheme("by global speed percentage", 0);
356  scheme.addColor(10, (SUMOReal)100);
357  scheme.setAllowsNegativeValues(true);
358  laneScaler.addScheme(scheme);
359  scheme = GUIScaleScheme("by given length/geometrical length", 0);
360  scheme.addColor(10, (SUMOReal)10.0);
361  laneScaler.addScheme(scheme);
362  scheme = GUIScaleScheme("by loaded weight", 0);
363  scheme.addColor(-1000, (SUMOReal) - 1000);
364  scheme.addColor(1000, (SUMOReal)1000);
365  scheme.setAllowsNegativeValues(true);
366  laneScaler.addScheme(scheme);
367  scheme = GUIScaleScheme("by priority", 1);
368  scheme.addColor(0.5, (SUMOReal) - 20);
369  scheme.addColor(5, (SUMOReal)20);
370  scheme.setAllowsNegativeValues(true);
371  laneScaler.addScheme(scheme);
372  }
373 
374 
375 #ifdef HAVE_INTERNAL
376  edgeColorer.addScheme(GUIColorScheme("uniform (streetwise)", RGBColor::BLACK, "", true));
378  scheme = GUIColorScheme("by selection (streetwise)", RGBColor(179, 179, 179, 255), "unselected", true);
379  scheme.addColor(RGBColor(0, 102, 204, 255), 1, "selected");
380  edgeColorer.addScheme(scheme);
381  scheme = GUIColorScheme("by purpose (streetwise)", RGBColor(), "normal", true);
382  scheme.addColor(RGBColor(128, 0, 128, 255), 1, "connector"); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_CONNECTOR
383  scheme.addColor(RGBColor::BLUE, 2, "internal"); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_INTERNAL
384  edgeColorer.addScheme(scheme);
385  scheme = GUIColorScheme("by allowed speed (streetwise)", RGBColor::RED);
386  scheme.addColor(RGBColor::YELLOW, (SUMOReal)(30 / 3.6));
387  scheme.addColor(RGBColor::GREEN, (SUMOReal)(55 / 3.6));
388  scheme.addColor(RGBColor::CYAN, (SUMOReal)(80 / 3.6));
389  scheme.addColor(RGBColor::BLUE, (SUMOReal)(120 / 3.6));
390  scheme.addColor(RGBColor::MAGENTA, (SUMOReal)(150 / 3.6));
391  edgeColorer.addScheme(scheme);
392  scheme = GUIColorScheme("by current occupancy (streetwise)", RGBColor::BLUE);
393  scheme.addColor(RGBColor::RED, (SUMOReal)0.95);
394  edgeColorer.addScheme(scheme);
395  scheme = GUIColorScheme("by current speed (streetwise)", RGBColor::RED);
396  scheme.addColor(RGBColor::BLUE, (SUMOReal)(150.0 / 3.6));
397  edgeColorer.addScheme(scheme);
398  scheme = GUIColorScheme("by current flow (streetwise)", RGBColor::BLUE);
399  scheme.addColor(RGBColor::RED, (SUMOReal)5000);
400  edgeColorer.addScheme(scheme);
401  scheme = GUIColorScheme("by relative speed (streetwise)", RGBColor::RED);
402  scheme.addColor(RGBColor::BLUE, (SUMOReal)1);
403  edgeColorer.addScheme(scheme);
404 
406  {
407  edgeScaler.addScheme(GUIScaleScheme("uniform", 1, "", true));
408  GUIScaleScheme scheme = GUIScaleScheme("by selection (streetwise)", 0.5, "unselected", true);
409  scheme.addColor(5, 1, "selected");
410  edgeScaler.addScheme(scheme);
411  scheme = GUIScaleScheme("by allowed speed (streetwise)", 0);
412  scheme.addColor(10, (SUMOReal)(150.0 / 3.6));
413  edgeScaler.addScheme(scheme);
414  scheme = GUIScaleScheme("by current occupancy (streetwise)", 0);
415  scheme.addColor(10, (SUMOReal)0.95);
416  edgeScaler.addScheme(scheme);
417  scheme = GUIScaleScheme("by current speed (streetwise)", 0);
418  scheme.addColor(10, (SUMOReal)(150.0 / 3.6));
419  edgeScaler.addScheme(scheme);
420  scheme = GUIScaleScheme("by current flow (streetwise)", 0);
421  scheme.addColor(20, (SUMOReal)5000);
422  edgeScaler.addScheme(scheme);
423  scheme = GUIScaleScheme("by relative speed (streetwise)", 0);
424  scheme.addColor(20, (SUMOReal)1);
425  edgeScaler.addScheme(scheme);
426  }
427 #endif
428 
429 }
430 
431 
432 size_t
434 #ifdef HAVE_INTERNAL
435  if (UseMesoSim) {
436  return edgeColorer.getActive();
437  }
438 #endif
439  return laneColorer.getActive();
440 }
441 
442 
443 size_t
445 #ifdef HAVE_INTERNAL
446  if (UseMesoSim) {
447  return edgeScaler.getActive();
448  }
449 #endif
450  return laneScaler.getActive();
451 }
452 
453 
456 #ifdef HAVE_INTERNAL
457  if (UseMesoSim) {
458  return edgeColorer.getScheme();
459  }
460 #endif
461  return laneColorer.getScheme();
462 }
463 
464 
467 #ifdef HAVE_INTERNAL
468  if (UseMesoSim) {
469  return edgeScaler.getScheme();
470  }
471 #endif
472  return laneScaler.getScheme();
473 }
474 
475 void
477  dev << "<viewsettings>\n";
478  dev << " <scheme name=\"" << name << "\">\n";
479  dev << " <opengl antialiase=\"" << antialiase << "\" dither=\"" << dither << "\"/>\n";
480  dev << " <background backgroundColor=\"" << backgroundColor << "\"\n"
481  << " showGrid=\"" << showGrid
482  << "\" gridXSize=\"" << gridXSize << "\" gridYSize=\"" << gridYSize << "\"/>\n";
483  dev << " <edges laneEdgeMode=\"" << getLaneEdgeMode()
484  << "\" scaleMode=\"" << getLaneEdgeScaleMode()
485  << "\" laneShowBorders=\"" << laneShowBorders
486  << "\" showLinkDecals=\"" << showLinkDecals
487  << "\" showRails=\"" << showRails
488  << "\" hideConnectors=\"" << hideConnectors << "\"\n"
489  << " " << edgeName.print("edgeName") << "\n"
490  << " " << internalEdgeName.print("internalEdgeName") << "\n"
491  << " " << cwaEdgeName.print("cwaEdgeName") << "\n"
492  << " " << streetName.print("streetName") << ">\n";
493  laneColorer.save(dev);
494  laneScaler.save(dev);
495 #ifdef HAVE_INTERNAL
496  edgeColorer.save(dev);
497  edgeScaler.save(dev);
498 #endif
499  dev << " </edges>\n";
500 
501  dev << " <vehicles vehicleMode=\"" << vehicleColorer.getActive()
502  << "\" vehicleQuality=\"" << vehicleQuality
503  << "\" " << vehicleSize.print("vehicle")
504  << "showBlinker=\"" << showBlinker << "\"\n"
505  << " " << vehicleName.print("vehicleName")
506  << ">\n";
507  vehicleColorer.save(dev);
508  dev << " </vehicles>\n";
509  dev << " <persons personMode=\"" << personColorer.getActive()
510  << "\" personQuality=\"" << personQuality << "\" "
511  << personSize.print("person")
512  << personName.print("personName")
513  << ">\n";
514  personColorer.save(dev);
515  dev << " </persons>\n";
516 
517  dev << " <junctions junctionMode=\"" << junctionColorer.getActive()
518  << "\" drawLinkTLIndex=\"" << drawLinkTLIndex
519  << "\" drawLinkJunctionIndex=\"" << drawLinkJunctionIndex << "\"\n"
520  << " " << junctionName.print("junctionName") << "\n"
521  << " " << internalJunctionName.print("internalJunctionName") << "\n"
522  << " showLane2Lane=\"" << showLane2Lane << "\""
523  << " drawShape=\"" << drawJunctionShape << "\">\n";
524  junctionColorer.save(dev);
525  dev << " </junctions>\n";
526 
527  dev << " <additionals addMode=\"" << addMode << "\" "
528  << addSize.print("add")
529  << addName.print("addName")
530  << "/>\n";
531 
532  dev << " <pois "
533  << poiSize.print("poi")
534  << poiName.print("poiName")
535  << "/>\n";
536 
537  dev << " <polys "
538  << polySize.print("poly")
539  << polyName.print("polyName")
540  << "/>\n";
541 
542  dev << " <legend showSizeLegend=\"" << showSizeLegend << "\"/>\n";
543  dev << " </scheme>\n";
544  dev << "</viewsettings>\n";
545 }
546 
547 
548 bool
550  if (antialiase != v2.antialiase) {
551  return false;
552  }
553  if (dither != v2.dither) {
554  return false;
555  }
556  if (backgroundColor != v2.backgroundColor) {
557  return false;
558  }
559  if (showGrid != v2.showGrid) {
560  return false;
561  }
562  if (gridXSize != v2.gridXSize) {
563  return false;
564  }
565  if (gridYSize != v2.gridYSize) {
566  return false;
567  }
568 
569 #ifdef HAVE_INTERNAL
570  if (!(edgeColorer == v2.edgeColorer)) {
571  return false;
572  }
573  if (!(edgeScaler == v2.edgeScaler)) {
574  return false;
575  }
576 #endif
577  if (!(laneColorer == v2.laneColorer)) {
578  return false;
579  }
580  if (!(laneScaler == v2.laneScaler)) {
581  return false;
582  }
583  if (laneShowBorders != v2.laneShowBorders) {
584  return false;
585  }
586  if (showLinkDecals != v2.showLinkDecals) {
587  return false;
588  }
589  if (showRails != v2.showRails) {
590  return false;
591  }
592  if (edgeName != v2.edgeName) {
593  return false;
594  }
596  return false;
597  }
598  if (cwaEdgeName != v2.cwaEdgeName) {
599  return false;
600  }
601  if (streetName != v2.streetName) {
602  return false;
603  }
604  if (hideConnectors != v2.hideConnectors) {
605  return false;
606  }
608  return false;
609  }
610  if (!(vehicleColorer == v2.vehicleColorer)) {
611  return false;
612  }
613  if (vehicleQuality != v2.vehicleQuality) {
614  return false;
615  }
616  if (vehicleSize != v2.vehicleSize) {
617  return false;
618  }
619  if (showBlinker != v2.showBlinker) {
620  return false;
621  }
623  return false;
624  }
625  if (drawMinGap != v2.drawMinGap) {
626  return false;
627  }
628  if (showBTRange != v2.showBTRange) {
629  return false;
630  }
631  if (vehicleName != v2.vehicleName) {
632  return false;
633  }
634  if (!(personColorer == v2.personColorer)) {
635  return false;
636  }
637  if (personQuality != v2.personQuality) {
638  return false;
639  }
640  if (personSize != v2.personSize) {
641  return false;
642  }
643  if (personName != v2.personName) {
644  return false;
645  }
646  if (!(junctionColorer == v2.junctionColorer)) {
647  return false;
648  }
649  if (drawLinkTLIndex != v2.drawLinkTLIndex) {
650  return false;
651  }
653  return false;
654  }
655  if (junctionName != v2.junctionName) {
656  return false;
657  }
659  return false;
660  }
661 
662  if (showLane2Lane != v2.showLane2Lane) {
663  return false;
664  }
665 
667  return false;
668  }
669 
670  if (addMode != v2.addMode) {
671  return false;
672  }
673  if (addSize != v2.addSize) {
674  return false;
675  }
676  if (addName != v2.addName) {
677  return false;
678  }
679  if (poiSize != v2.poiSize) {
680  return false;
681  }
682  if (poiName != v2.poiName) {
683  return false;
684  }
685  if (polySize != v2.polySize) {
686  return false;
687  }
688  if (polyName != v2.polyName) {
689  return false;
690  }
691 
692  if (showSizeLegend != v2.showSizeLegend) {
693  return false;
694  }
695 
696  return true;
697 }
698 
699 
700 SUMOReal
703  return (constantSize && !s.drawForSelecting) ? MAX2((SUMOReal)exaggeration, exaggeration * 20 / s.scale) : exaggeration;
704 }
705 
706 /****************************************************************************/
707 
GUIVisualizationTextSettings junctionName
static const RGBColor BLUE
Definition: RGBColor.h:191
bool showSizeLegend
Information whether the size legend shall be drawn.
GUIPropertyScheme< SUMOReal > GUIScaleScheme
GUIVisualizationTextSettings streetName
float laneWidthExaggeration
The lane exaggeration (upscale thickness)
size_t getLaneEdgeMode() const
Returns the number of the active lane (edge) coloring schme.
is a pedestrian
bool showBlinker
Information whether vehicle blinkers shall be drawn.
GUIVisualizationTextSettings addName
std::string print(const std::string &name) const
GUIVisualizationTextSettings personName
bool drawLinkTLIndex
Information whether a link&#39;s tls index shall be drawn.
void setAllowsNegativeValues(bool value)
GUIVisualizationTextSettings poiName
static const RGBColor WHITE
Definition: RGBColor.h:195
GUIColorScheme & getLaneEdgeScheme()
Returns the current lane (edge) coloring schme.
bool showBTRange
Information whether the communication range shall be drawn.
GUIColorer laneColorer
The lane colorer.
Stores the information about how to visualize structures.
vehicle is a bicycle
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
bool operator==(const GUIVisualizationSettings &vs2)
Comparison operator.
T MAX2(T a, T b)
Definition: StdDefs.h:74
GUIVisualizationTextSettings cwaEdgeName
bool laneShowBorders
Information whether lane borders shall be drawn.
static const RGBColor BLACK
Definition: RGBColor.h:196
const SVCPermissions SVCAll
bool dither
Information whether dithering shall be enabled.
SUMOReal scale
information about a lane&#39;s width (temporary, used for a single view)
GUIVisualizationSizeSettings polySize
GUIColorer vehicleColorer
The vehicle colorer.
GUIVisualizationTextSettings edgeName
GUIVisualizationSizeSettings addSize
size_t getActive() const
Definition: GUIColorer.h:73
void save(OutputDevice &dev) const
Definition: GUIColorer.h:94
static const RGBColor GREEN
Definition: RGBColor.h:190
static const RGBColor GREY
Definition: RGBColor.h:197
std::string name
The name of this setting.
GUIVisualizationTextSettings internalEdgeName
bool drawMinGap
Information whether the minimum gap shall be drawn.
int addMode
The additional structures visualization scheme.
std::string print(const std::string &name) const
static const RGBColor MAGENTA
Definition: RGBColor.h:194
GUIColorer personColorer
The person colorer.
GUIVisualizationTextSettings internalJunctionName
GUIColorer junctionColorer
The junction colorer.
GUIPropertyScheme< RGBColor > GUIColorScheme
SUMOReal gridXSize
Information about the grid spacings.
unsigned int addColor(const T &color, const SUMOReal threshold, const std::string &name="")
vehicle is a passenger car (a &quot;normal&quot; car)
GUIScaleScheme & getLaneEdgeScaleScheme()
Returns the current lane (edge) scaling schme.
RGBColor backgroundColor
The background color to use.
bool antialiase
Information whether antialiase shall be enabled.
vehicle is a moped
vehicle is a taxi
GUIVisualizationSizeSettings poiSize
vehicle is a bus
static const RGBColor YELLOW
Definition: RGBColor.h:192
static const RGBColor RED
Definition: RGBColor.h:189
float exaggeration
The size exaggeration (upscale)
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
static const RGBColor CYAN
Definition: RGBColor.h:193
bool drawLinkJunctionIndex
Information whether a link&#39;s junction index shall be drawn.
GUIVisualizationSizeSettings personSize
int personQuality
The quality of person drawing.
bool showGrid
Information whether a grid shall be shown.
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
#define SUMOReal
Definition: config.h:218
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
int vehicleQuality
The quality of vehicle drawing.
void addScheme(T scheme)
Definition: GUIColorer.h:105
bool drawForSelecting
whether drawing is performed for the purpose of selecting objects
GUIScaler laneScaler
The lane scaler.
size_t getLaneEdgeScaleMode() const
Returns the number of the active lane (edge) scaling schme.
SUMOReal getExaggeration(const GUIVisualizationSettings &s) const
return the drawing size including exaggeration and constantSize values
GUIVisualizationTextSettings polyName