Line data Source code
1 : /****************************************************************************/
2 : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 : // Copyright (C) 2001-2024 German Aerospace Center (DLR) and others.
4 : // This program and the accompanying materials are made available under the
5 : // terms of the Eclipse Public License 2.0 which is available at
6 : // https://www.eclipse.org/legal/epl-2.0/
7 : // This Source Code may also be made available under the following Secondary
8 : // Licenses when the conditions for such availability set forth in the Eclipse
9 : // Public License 2.0 are satisfied: GNU General Public License, version 2
10 : // or later which is available at
11 : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13 : /****************************************************************************/
14 : /// @file GUIVisualizationSettings.cpp
15 : /// @author Daniel Krajzewicz
16 : /// @author Jakob Erdmann
17 : /// @author Michael Behrisch
18 : /// @date Sept 2002
19 : ///
20 : // Stores the information about how to visualize structures
21 : /****************************************************************************/
22 : #include <config.h>
23 :
24 : #include <map>
25 : #include <vector>
26 : #include <utils/common/MsgHandler.h>
27 : #include <utils/gui/div/GUIGlobalSelection.h>
28 :
29 : #include "GUIVisualizationSettings.h"
30 : #include "GUIPropertyScheme.h"
31 :
32 : // ===========================================================================
33 : // static members
34 : // ===========================================================================
35 :
36 : bool GUIVisualizationSettings::UseMesoSim = false;
37 :
38 : // -------------------------------------------------------------------------
39 : // color constants for link states
40 : // -------------------------------------------------------------------------
41 :
42 : const RGBColor SUMO_color_TL_GREEN_MAJOR(0, 255, 0);
43 : const RGBColor SUMO_color_TL_GREEN_MINOR(0, 179, 0);
44 : const RGBColor SUMO_color_TL_RED(255, 0, 0);
45 : const RGBColor SUMO_color_TL_REDYELLOW(255, 128, 0);
46 : const RGBColor SUMO_color_TL_YELLOW_MAJOR(255, 255, 128);
47 : const RGBColor SUMO_color_TL_YELLOW_MINOR(255, 255, 0);
48 : const RGBColor SUMO_color_TL_OFF_BLINKING(128, 64, 0);
49 : const RGBColor SUMO_color_TL_OFF_NOSIGNAL(0, 255, 255);
50 : const RGBColor SUMO_color_MAJOR(255, 255, 255);
51 : const RGBColor SUMO_color_MINOR(51, 51, 51);
52 : const RGBColor SUMO_color_EQUAL(128, 128, 128);
53 : const RGBColor SUMO_color_STOP(128, 0, 128);
54 : const RGBColor SUMO_color_ALLWAY_STOP(0, 0, 192);
55 : const RGBColor SUMO_color_ZIPPER(192, 128, 64);
56 : const RGBColor SUMO_color_DEADEND(0, 0, 0);
57 :
58 : // -------------------------------------------------------------------------
59 : // color constants for other objects
60 : // -------------------------------------------------------------------------
61 :
62 : const RGBColor GUIVisualizationColorSettings::SUMO_color_DEADEND_SHOW(255, 0, 255);
63 : const RGBColor GUIVisualizationColorSettings::childConnectionColor(255, 235, 0);
64 : const RGBColor GUIVisualizationColorSettings::editShapeColor(0, 200, 0);
65 : const RGBColor GUIVisualizationColorSettings::crossingColor(25, 25, 25);
66 : const RGBColor GUIVisualizationColorSettings::crossingPriorityColor(229, 229, 229);
67 : const RGBColor GUIVisualizationColorSettings::crossingInvalidColor(255, 25, 25);
68 :
69 :
70 : // -------------------------------------------------------------------------
71 : // color constants for other objects
72 : // -------------------------------------------------------------------------
73 :
74 : const RGBColor GUIVisualizationCandidateColorSettings::possible(0, 64, 0, 255);
75 : const RGBColor GUIVisualizationCandidateColorSettings::source(0, 255, 255, 255); // Cyan
76 : const RGBColor GUIVisualizationCandidateColorSettings::target(0, 255, 0, 255); // Green
77 : const RGBColor GUIVisualizationCandidateColorSettings::special(255, 0, 255, 255); // Magenta
78 : const RGBColor GUIVisualizationCandidateColorSettings::conflict(255, 255, 0, 255); // Yellow
79 : const RGBColor GUIVisualizationCandidateColorSettings::invalid(128, 128, 128, 255); // Yellow
80 :
81 : // -------------------------------------------------------------------------
82 : // Netedit size values
83 : // -------------------------------------------------------------------------
84 :
85 : const double GUIVisualizationNeteditSizeSettings::junctionBubbleRadius(4);
86 : const double GUIVisualizationNeteditSizeSettings::junctionGeometryPointRadius(1);
87 : const double GUIVisualizationNeteditSizeSettings::edgeGeometryPointRadius(1.2);
88 : const double GUIVisualizationNeteditSizeSettings::laneGeometryPointRadius(1);
89 : const double GUIVisualizationNeteditSizeSettings::connectionGeometryPointRadius(0.8);
90 : const double GUIVisualizationNeteditSizeSettings::crossingGeometryPointRadius(1);
91 : const double GUIVisualizationNeteditSizeSettings::polygonGeometryPointRadius(1.2);
92 : const double GUIVisualizationNeteditSizeSettings::polygonContourWidth(0.3);
93 : const double GUIVisualizationNeteditSizeSettings::polylineWidth(1);
94 : const double GUIVisualizationNeteditSizeSettings::additionalGeometryPointRadius(0.9);
95 :
96 : // -------------------------------------------------------------------------
97 : // additional values
98 : // -------------------------------------------------------------------------
99 :
100 : const double GUIVisualizationConnectionSettings::connectionWidth(0.2);
101 :
102 : // -------------------------------------------------------------------------
103 : // additional values
104 : // -------------------------------------------------------------------------
105 :
106 : const RGBColor GUIVisualizationAdditionalSettings::rerouterColor(255, 0, 0, 255);
107 : const double GUIVisualizationAdditionalSettings::rerouterSize(1);
108 : const RGBColor GUIVisualizationAdditionalSettings::VSSColor(255, 255, 255, 255);
109 : const double GUIVisualizationAdditionalSettings::VSSSize(1);
110 : const RGBColor GUIVisualizationAdditionalSettings::calibratorColor(255, 204, 0, 255);
111 : const double GUIVisualizationAdditionalSettings::calibratorWidth(1.4);
112 : const double GUIVisualizationAdditionalSettings::calibratorHeight(6);
113 : const RGBColor GUIVisualizationAdditionalSettings::routeProbeColor(255, 216, 0, 255);
114 : const double GUIVisualizationAdditionalSettings::routeProbeSize(1);
115 : const RGBColor GUIVisualizationAdditionalSettings::vaporizerColor(120, 216, 0, 255);
116 : const double GUIVisualizationAdditionalSettings::vaporizerSize(1);
117 : const double GUIVisualizationAdditionalSettings::stopEdgeSize(1);
118 : const RGBColor GUIVisualizationAdditionalSettings::connectionColor(255, 216, 0, 255);
119 : const RGBColor GUIVisualizationAdditionalSettings::connectionColorSelected(0, 0, 150, 255);
120 : const double GUIVisualizationAdditionalSettings::tractionSubstationSize(1);
121 : const RGBColor GUIVisualizationAdditionalSettings::overheadWireColorTop(255, 0, 0);
122 : const RGBColor GUIVisualizationAdditionalSettings::overheadWireColorBot(0, 255, 0);
123 : const RGBColor GUIVisualizationAdditionalSettings::overheadWireColorSelected(0, 0, 150, 255);
124 : const double GUIVisualizationAdditionalSettings::arrowWidth(1);
125 : const double GUIVisualizationAdditionalSettings::arrowLength(0.25);
126 : const double GUIVisualizationAdditionalSettings::arrowOffset(0.1);
127 : const RGBColor GUIVisualizationAdditionalSettings::TLSConnectionColor(0, 255, 0, 255);
128 :
129 : // -------------------------------------------------------------------------
130 : // detector values
131 : // -------------------------------------------------------------------------
132 :
133 : const RGBColor GUIVisualizationDetectorSettings::E1Color(255, 255, 0);
134 : const double GUIVisualizationDetectorSettings::E1Width(1);
135 : const double GUIVisualizationDetectorSettings::E1Height(2);
136 : const RGBColor GUIVisualizationDetectorSettings::E1InstantColor(255, 0, 255);
137 : const double GUIVisualizationDetectorSettings::E1InstantWidth(1);
138 : const double GUIVisualizationDetectorSettings::E1InstantHeight(2);
139 : const RGBColor GUIVisualizationDetectorSettings::E2Color(0, 204, 204);
140 : const double GUIVisualizationDetectorSettings::E2Width(1);
141 : const double GUIVisualizationDetectorSettings::E3Size(1);
142 : const RGBColor GUIVisualizationDetectorSettings::E3EntryColor(0, 92, 64);
143 : const RGBColor GUIVisualizationDetectorSettings::E3ExitColor(92, 0, 0);
144 : const double GUIVisualizationDetectorSettings::E3EntryExitWidth(1.7);
145 : const double GUIVisualizationDetectorSettings::E3EntryExitHeight(0.5);
146 :
147 : // -------------------------------------------------------------------------
148 : // StoppingPlace values
149 : // -------------------------------------------------------------------------
150 :
151 : const double GUIVisualizationStoppingPlaceSettings::stoppingPlaceSignOffset(1.5);
152 : const double GUIVisualizationStoppingPlaceSettings::busStopWidth(1);
153 : const double GUIVisualizationStoppingPlaceSettings::trainStopWidth(0.5);
154 : const double GUIVisualizationStoppingPlaceSettings::containerStopWidth(3);
155 : const double GUIVisualizationStoppingPlaceSettings::chargingStationWidth(1);
156 : const double GUIVisualizationStoppingPlaceSettings::symbolExternalRadius(1.1);
157 : const double GUIVisualizationStoppingPlaceSettings::symbolInternalRadius(0.9);
158 : const double GUIVisualizationStoppingPlaceSettings::symbolInternalTextSize(1.6);
159 :
160 : // -------------------------------------------------------------------------
161 : // Dotted contour values
162 : // -------------------------------------------------------------------------
163 :
164 : const double GUIVisualizationDottedContourSettings::segmentWidth(0.2);
165 : const double GUIVisualizationDottedContourSettings::segmentWidthSmall(0.1);
166 : const double GUIVisualizationDottedContourSettings::segmentWidthLarge(0.5);
167 : const double GUIVisualizationDottedContourSettings::segmentLength(2);
168 : const RGBColor GUIVisualizationDottedContourSettings::firstInspectedColor(235, 235, 235);
169 : const RGBColor GUIVisualizationDottedContourSettings::secondInspectedColor(20, 20, 20);
170 : const RGBColor GUIVisualizationDottedContourSettings::firstFrontColor(0, 0, 235);
171 : const RGBColor GUIVisualizationDottedContourSettings::secondFrontColor(0, 255, 0);
172 :
173 : // -------------------------------------------------------------------------
174 : // 3D light presets
175 : // -------------------------------------------------------------------------
176 : const RGBColor OSG_color_AMBIENT(32, 32, 32, 255);
177 : const RGBColor OSG_color_DIFFUSE(64, 64, 64, 255);
178 : const RGBColor OSG_color_SKY(51, 51, 102, 255);
179 :
180 : // -------------------------------------------------------------------------
181 : // widths of certain netedit objects
182 : // -------------------------------------------------------------------------
183 :
184 : const double GUIVisualizationWidthSettings::routeWidth(0.66);
185 : const double GUIVisualizationWidthSettings::embeddedRouteWidth(0.55);
186 :
187 : // -------------------------------------------------------------------------
188 : // details of certain netedit objects (0 = drawn always)
189 : // -------------------------------------------------------------------------
190 :
191 : const double GUIVisualizationDetailSettings::tmp(5);
192 :
193 : // -------------------------------------------------------------------------
194 : // scheme names
195 : // -------------------------------------------------------------------------
196 :
197 : const std::string GUIVisualizationSettings::SCHEME_NAME_EDGE_PARAM_NUMERICAL("by param (numerical, streetwise)");
198 : const std::string GUIVisualizationSettings::SCHEME_NAME_LANE_PARAM_NUMERICAL("by param (numerical, lanewise)");
199 : const std::string GUIVisualizationSettings::SCHEME_NAME_PARAM_NUMERICAL("by param (numerical)");
200 : const std::string GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_NUMERICAL("by edgeData (numerical, streetwise)");
201 : const std::string GUIVisualizationSettings::SCHEME_NAME_DATA_ATTRIBUTE_NUMERICAL("by attribute (numerical)");
202 : const std::string GUIVisualizationSettings::SCHEME_NAME_SELECTION("by selection");
203 : const std::string GUIVisualizationSettings::SCHEME_NAME_TYPE("by type");
204 : const std::string GUIVisualizationSettings::SCHEME_NAME_PERMISSION_CODE("by permission code");
205 : const std::string GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_LIVE("by live edgeData");
206 :
207 : const double GUIVisualizationSettings::MISSING_DATA(std::numeric_limits<double>::max());
208 : RGBColor GUIVisualizationSettings::COL_MISSING_DATA(225, 225, 225);
209 :
210 : std::map<std::string, std::vector<RGBColor> > GUIVisualizationSettings::RAINBOW_SCHEMES({
211 : // cannot use predefined colors to avoid "static initialization order fiasco"
212 : {"classic", std::vector<RGBColor>({RGBColor(255, 0, 0), RGBColor(255, 128, 0), RGBColor(255, 255, 0), RGBColor(0, 255, 0), RGBColor(0, 255, 255), RGBColor(0, 0, 255), RGBColor(255, 0, 255)})},
213 : {"YlOrRd", std::vector<RGBColor>({RGBColor(255, 255, 178), RGBColor(254, 217, 118), RGBColor(254, 178, 76), RGBColor(253, 141, 60), RGBColor(252, 78, 42), RGBColor(227, 26, 28), RGBColor(177, 0, 38)})},
214 : {"RdBu", std::vector<RGBColor>({RGBColor(178, 24, 43), RGBColor(239, 138, 98), RGBColor(253, 219, 199), RGBColor(247, 247, 247), RGBColor(209, 229, 240), RGBColor(103, 169, 207), RGBColor(33, 102, 172)})},
215 : });
216 :
217 : // color constants for scheme background
218 : #define COL_SCHEME_EMISSION RGBColor(255,255,210)
219 : #define COL_SCHEME_MISC RGBColor(210,220,255)
220 : #define COL_SCHEME_STATIC RGBColor(230,230,230)
221 : #define COL_SCHEME_DYNAMIC RGBColor(220,255,220)
222 :
223 : // ===========================================================================
224 : // member method definitions
225 : // ===========================================================================
226 :
227 : // ---------------------------------------------------------------------------
228 : // GUIVisualizationTextSettings - methods
229 : // ---------------------------------------------------------------------------
230 :
231 2187377 : GUIVisualizationTextSettings::GUIVisualizationTextSettings(bool _showText, double _size, RGBColor _color, RGBColor _bgColor, bool _constSize, bool _onlySelected) :
232 2187377 : showText(_showText),
233 2187377 : size(_size),
234 2187377 : color(_color),
235 2187377 : bgColor(_bgColor),
236 2187377 : constSize(_constSize),
237 2187377 : onlySelected(_onlySelected) {
238 2187377 : }
239 :
240 :
241 : bool
242 0 : GUIVisualizationTextSettings::operator==(const GUIVisualizationTextSettings& other) {
243 0 : return (showText == other.showText) &&
244 0 : (size == other.size) &&
245 0 : (color == other.color) &&
246 0 : (bgColor == other.bgColor) &&
247 0 : (constSize == other.constSize) &&
248 0 : (onlySelected == other.onlySelected);
249 : }
250 :
251 :
252 : bool
253 0 : GUIVisualizationTextSettings::operator!=(const GUIVisualizationTextSettings& other) {
254 0 : return (showText != other.showText) ||
255 0 : (size != other.size) ||
256 0 : (color != other.color) ||
257 0 : (bgColor != other.bgColor) ||
258 0 : (constSize != other.constSize) ||
259 0 : (onlySelected != other.onlySelected);
260 : }
261 :
262 :
263 : void
264 0 : GUIVisualizationTextSettings::print(OutputDevice& dev, const std::string& name) const {
265 0 : dev.writeAttr(name + "_show", showText);
266 0 : dev.writeAttr(name + "_size", size);
267 0 : dev.writeAttr(name + "_color", color);
268 0 : dev.writeAttr(name + "_bgColor", bgColor);
269 0 : dev.writeAttr(name + "_constantSize", constSize);
270 0 : dev.writeAttr(name + "_onlySelected", onlySelected);
271 0 : }
272 :
273 :
274 : double
275 0 : GUIVisualizationTextSettings::scaledSize(double scale, double constFactor) const {
276 0 : return constSize ? (size / scale) : (size * constFactor);
277 : }
278 :
279 :
280 : bool
281 208686338 : GUIVisualizationTextSettings::show(const GUIGlObject* o) const {
282 208686338 : return showText && (!onlySelected || o == nullptr || gSelected.isSelected(o));
283 : }
284 :
285 : // ---------------------------------------------------------------------------
286 : // GUIVisualizationRainbowSettings - methods
287 : // ---------------------------------------------------------------------------
288 :
289 226255 : GUIVisualizationRainbowSettings::GUIVisualizationRainbowSettings(bool _hideMin, double _minThreshold, bool _hideMax, double _maxThreshold, bool _setNeutral, double _neutralThreshold, bool _fixRange) :
290 226255 : hideMin(_hideMin),
291 226255 : minThreshold(_minThreshold),
292 226255 : hideMax(_hideMax),
293 226255 : maxThreshold(_maxThreshold),
294 226255 : setNeutral(_setNeutral),
295 226255 : neutralThreshold(_neutralThreshold),
296 226255 : fixRange(_fixRange),
297 226255 : colors(GUIVisualizationSettings::RAINBOW_SCHEMES["classic"])
298 226255 : { }
299 :
300 :
301 : bool
302 0 : GUIVisualizationRainbowSettings::operator==(const GUIVisualizationRainbowSettings& other) {
303 0 : return (hideMin == other.hideMin) &&
304 0 : (minThreshold == other.minThreshold) &&
305 0 : (hideMin == other.hideMin) &&
306 0 : (maxThreshold == other.maxThreshold) &&
307 0 : (setNeutral == other.setNeutral) &&
308 0 : (neutralThreshold == other.neutralThreshold) &&
309 0 : (fixRange == other.fixRange);
310 : }
311 :
312 :
313 : bool
314 0 : GUIVisualizationRainbowSettings::operator!=(const GUIVisualizationRainbowSettings& other) {
315 0 : return !((*this) == other);
316 : }
317 :
318 :
319 : void
320 0 : GUIVisualizationRainbowSettings::print(OutputDevice& dev, const std::string& name) const {
321 0 : dev.writeAttr(name + "HideCheck", hideMin);
322 0 : dev.writeAttr(name + "HideThreshold", minThreshold);
323 0 : dev.writeAttr(name + "HideCheck2", hideMax);
324 0 : dev.writeAttr(name + "HideThreshold2", maxThreshold);
325 0 : dev.writeAttr(name + "SetNeutral", setNeutral);
326 0 : dev.writeAttr(name + "NeutralThreshold", neutralThreshold);
327 0 : dev.writeAttr(name + "FixRange", fixRange);
328 0 : }
329 :
330 :
331 : // ---------------------------------------------------------------------------
332 : // GUIVisualizationSizeSettings - methods
333 : // ---------------------------------------------------------------------------
334 :
335 527983 : GUIVisualizationSizeSettings::GUIVisualizationSizeSettings(double _minSize, double _exaggeration, bool _constantSize, bool _constantSizeSelected) :
336 527983 : minSize(_minSize),
337 527983 : exaggeration(_exaggeration),
338 527983 : constantSize(_constantSize),
339 527983 : constantSizeSelected(_constantSizeSelected) {
340 527983 : }
341 :
342 :
343 : double
344 86338027 : GUIVisualizationSizeSettings::getExaggeration(const GUIVisualizationSettings& s, const GUIGlObject* o, double factor) const {
345 : // declare exaggeration final
346 : double exaggerationFinal;
347 : /// @note should look normal-sized at zoom 1000
348 86338027 : if (constantSize && (!constantSizeSelected || (o == nullptr) || gSelected.isSelected(o))) {
349 0 : exaggerationFinal = MAX2(exaggeration, exaggeration * factor / s.scale);
350 86338027 : } else if (!constantSizeSelected || (o == nullptr) || gSelected.isSelected(o)) {
351 86338027 : exaggerationFinal = exaggeration;
352 : } else {
353 : exaggerationFinal = 1;
354 : }
355 : // add selectorFrameScale
356 86338027 : if ((o != nullptr) && gSelected.isSelected(o)) {
357 0 : return (exaggerationFinal * s.selectorFrameScale);
358 : } else {
359 86338027 : return exaggerationFinal;
360 : }
361 : }
362 :
363 :
364 : bool
365 0 : GUIVisualizationSizeSettings::operator==(const GUIVisualizationSizeSettings& other) {
366 0 : return (constantSize == other.constantSize) &&
367 0 : (constantSizeSelected == other.constantSizeSelected) &&
368 0 : (minSize == other.minSize) &&
369 0 : (exaggeration == other.exaggeration);
370 : }
371 :
372 :
373 : bool
374 0 : GUIVisualizationSizeSettings::operator!=(const GUIVisualizationSizeSettings& other) {
375 0 : return (constantSize != other.constantSize) ||
376 0 : (constantSizeSelected != other.constantSizeSelected) ||
377 0 : (minSize != other.minSize) ||
378 0 : (exaggeration != other.exaggeration);
379 : }
380 :
381 :
382 : void
383 0 : GUIVisualizationSizeSettings::print(OutputDevice& dev, const std::string& name) const {
384 0 : dev.writeAttr(name + "_minSize", minSize);
385 0 : dev.writeAttr(name + "_exaggeration", exaggeration);
386 0 : dev.writeAttr(name + "_constantSize", constantSize);
387 0 : dev.writeAttr(name + "_constantSizeSelected", constantSizeSelected);
388 0 : }
389 :
390 : // ---------------------------------------------------------------------------
391 : // GUIVisualizationColorSettings - methods
392 : // ---------------------------------------------------------------------------
393 :
394 75397 : GUIVisualizationColorSettings::GUIVisualizationColorSettings() :
395 75397 : selectionColor(0, 0, 204, 255),
396 75397 : selectedEdgeColor(0, 0, 204, 255),
397 75397 : selectedLaneColor(0, 0, 128, 255),
398 75397 : selectedConnectionColor(0, 0, 100, 255),
399 75397 : selectedProhibitionColor(0, 0, 120, 255),
400 75397 : selectedCrossingColor(0, 100, 196, 255),
401 75397 : selectedAdditionalColor(0, 0, 150, 255),
402 75397 : selectedRouteColor(0, 0, 150, 255),
403 75397 : selectedVehicleColor(0, 0, 100, 255),
404 75397 : selectedPersonColor(0, 0, 120, 255),
405 75397 : selectedPersonPlanColor(0, 0, 130, 255),
406 75397 : selectedContainerColor(0, 0, 120, 255),
407 75397 : selectedContainerPlanColor(0, 0, 130, 255),
408 75397 : selectedEdgeDataColor(0, 0, 150, 255),
409 75397 : busStopColor(76, 170, 50),
410 75397 : busStopColorSign(255, 235, 0),
411 75397 : trainStopColor(76, 170, 50),
412 75397 : trainStopColorSign(255, 235, 0),
413 75397 : containerStopColor(83, 89, 172),
414 75397 : containerStopColorSign(177, 184, 186, 171),
415 75397 : chargingStationColor(114, 210, 252),
416 75397 : chargingStationColorSign(255, 235, 0),
417 75397 : chargingStationColorCharge(255, 180, 0),
418 75397 : parkingAreaColor(83, 89, 172),
419 75397 : parkingAreaColorSign(177, 184, 186),
420 75397 : parkingSpaceColorContour(0, 255, 0),
421 75397 : parkingSpaceColor(255, 200, 200),
422 75397 : stopColor(220, 20, 30),
423 75397 : waypointColor(0, 127, 14),
424 75397 : vehicleTripColor(255, 128, 0),
425 75397 : stopPersonColor(255, 0, 0),
426 75397 : personTripColor(200, 0, 255),
427 75397 : walkColor(0, 255, 0),
428 75397 : rideColor(0, 0, 255),
429 75397 : stopContainerColor(255, 0, 0),
430 75397 : transportColor(100, 200, 0),
431 75397 : transhipColor(100, 0, 200) {
432 75397 : }
433 :
434 :
435 : bool
436 0 : GUIVisualizationColorSettings::operator==(const GUIVisualizationColorSettings& v2) {
437 0 : return (selectionColor == v2.selectionColor) &&
438 0 : (selectedEdgeColor == v2.selectedEdgeColor) &&
439 0 : (selectedLaneColor == v2.selectedLaneColor) &&
440 0 : (selectedConnectionColor == v2.selectedConnectionColor) &&
441 0 : (selectedProhibitionColor == v2.selectedProhibitionColor) &&
442 0 : (selectedCrossingColor == v2.selectedCrossingColor) &&
443 0 : (selectedAdditionalColor == v2.selectedAdditionalColor) &&
444 0 : (selectedRouteColor == v2.selectedRouteColor) &&
445 0 : (selectedVehicleColor == v2.selectedVehicleColor) &&
446 0 : (selectedPersonColor == v2.selectedPersonColor) &&
447 0 : (selectedContainerColor == v2.selectedContainerColor) &&
448 0 : (selectedPersonPlanColor == v2.selectedPersonPlanColor) &&
449 0 : (selectedEdgeDataColor == v2.selectedEdgeDataColor) &&
450 0 : (busStopColor == v2.busStopColor) &&
451 0 : (busStopColorSign == v2.busStopColorSign) &&
452 0 : (trainStopColor == v2.trainStopColor) &&
453 0 : (trainStopColorSign == v2.trainStopColorSign) &&
454 0 : (containerStopColor == v2.containerStopColor) &&
455 0 : (containerStopColorSign == v2.containerStopColorSign) &&
456 0 : (chargingStationColor == v2.chargingStationColor) &&
457 0 : (chargingStationColorSign == v2.chargingStationColorSign) &&
458 0 : (chargingStationColorCharge == v2.chargingStationColorCharge) &&
459 0 : (parkingAreaColor == v2.parkingAreaColor) &&
460 0 : (parkingAreaColorSign == v2.parkingAreaColorSign) &&
461 0 : (parkingSpaceColorContour == v2.parkingSpaceColorContour) &&
462 0 : (parkingSpaceColor == v2.parkingSpaceColor) &&
463 0 : (stopColor == v2.stopColor) &&
464 0 : (waypointColor == v2.waypointColor) &&
465 0 : (vehicleTripColor == v2.vehicleTripColor) &&
466 0 : (stopPersonColor == v2.stopPersonColor) &&
467 0 : (personTripColor == v2.personTripColor) &&
468 0 : (walkColor == v2.walkColor) &&
469 0 : (rideColor == v2.rideColor) &&
470 0 : (stopContainerColor == v2.stopContainerColor) &&
471 0 : (transportColor == v2.transportColor) &&
472 0 : (transhipColor == v2.transhipColor);
473 : }
474 :
475 :
476 : bool
477 0 : GUIVisualizationColorSettings::operator!=(const GUIVisualizationColorSettings& v2) {
478 0 : return (selectionColor != v2.selectionColor) ||
479 0 : (selectedEdgeColor != v2.selectedEdgeColor) ||
480 0 : (selectedLaneColor != v2.selectedLaneColor) ||
481 0 : (selectedConnectionColor != v2.selectedConnectionColor) ||
482 0 : (selectedProhibitionColor != v2.selectedProhibitionColor) ||
483 0 : (selectedCrossingColor != v2.selectedCrossingColor) ||
484 0 : (selectedAdditionalColor != v2.selectedAdditionalColor) ||
485 0 : (selectedRouteColor != v2.selectedRouteColor) ||
486 0 : (selectedVehicleColor != v2.selectedVehicleColor) ||
487 0 : (selectedPersonColor != v2.selectedPersonColor) ||
488 0 : (selectedContainerColor != v2.selectedContainerColor) ||
489 0 : (selectedPersonPlanColor != v2.selectedPersonPlanColor) ||
490 0 : (selectedEdgeDataColor != v2.selectedEdgeDataColor) ||
491 0 : (busStopColor != v2.busStopColor) ||
492 0 : (busStopColorSign != v2.busStopColorSign) ||
493 0 : (trainStopColor != v2.trainStopColor) ||
494 0 : (trainStopColorSign != v2.trainStopColorSign) ||
495 0 : (containerStopColor != v2.containerStopColor) ||
496 0 : (containerStopColorSign != v2.containerStopColorSign) ||
497 0 : (chargingStationColor != v2.chargingStationColor) ||
498 0 : (chargingStationColorSign != v2.chargingStationColorSign) ||
499 0 : (chargingStationColorCharge != v2.chargingStationColorCharge) ||
500 0 : (parkingAreaColor != v2.parkingAreaColor) ||
501 0 : (parkingAreaColorSign != v2.parkingAreaColorSign) ||
502 0 : (parkingSpaceColorContour != v2.parkingSpaceColorContour) ||
503 0 : (parkingSpaceColor != v2.parkingSpaceColor) ||
504 0 : (stopColor != v2.stopColor) ||
505 0 : (waypointColor != v2.waypointColor) ||
506 0 : (vehicleTripColor != v2.vehicleTripColor) ||
507 0 : (stopPersonColor != v2.stopPersonColor) ||
508 0 : (personTripColor != v2.personTripColor) ||
509 0 : (walkColor != v2.walkColor) ||
510 0 : (rideColor != v2.rideColor) ||
511 0 : (stopContainerColor != v2.stopContainerColor) ||
512 0 : (transportColor != v2.transportColor) ||
513 0 : (transhipColor != v2.transhipColor);
514 : }
515 :
516 : // ---------------------------------------------------------------------------
517 : // GUIVisualizationWidthSettings - methods
518 : // ---------------------------------------------------------------------------
519 :
520 75397 : GUIVisualizationWidthSettings::GUIVisualizationWidthSettings() :
521 75397 : tripWidth(0.2),
522 75397 : personTripWidth(0.25),
523 75397 : walkWidth(0.25),
524 75397 : rideWidth(0.25),
525 75397 : transportWidth(0.25),
526 75397 : transhipWidth(0.25) {
527 75397 : }
528 :
529 :
530 : bool
531 0 : GUIVisualizationWidthSettings::operator==(const GUIVisualizationWidthSettings& v2) {
532 0 : return (tripWidth == v2.tripWidth) &&
533 0 : (personTripWidth == v2.personTripWidth) &&
534 0 : (walkWidth == v2.walkWidth) &&
535 0 : (rideWidth == v2.rideWidth) &&
536 0 : (transportWidth == v2.transportWidth) &&
537 0 : (transhipWidth == v2.transhipWidth);
538 : }
539 :
540 :
541 : bool
542 0 : GUIVisualizationWidthSettings::operator!=(const GUIVisualizationWidthSettings& v2) {
543 0 : return (tripWidth != v2.tripWidth) ||
544 0 : (personTripWidth != v2.personTripWidth) ||
545 0 : (walkWidth != v2.walkWidth) ||
546 0 : (rideWidth != v2.rideWidth) ||
547 0 : (transportWidth != v2.transportWidth) ||
548 0 : (transhipWidth != v2.transhipWidth);
549 : }
550 :
551 : // ---------------------------------------------------------------------------
552 : // GUIVisualizationWidthSettings - methods
553 : // ---------------------------------------------------------------------------
554 :
555 75397 : GUIVisualizationSettings::GUIVisualizationSettings(const std::string& _name, bool _netedit) :
556 75397 : name(_name),
557 75397 : netedit(_netedit),
558 75397 : angle(0),
559 75397 : dither(false),
560 75397 : fps(false),
561 75397 : trueZ(false),
562 75397 : backgroundColor(RGBColor::WHITE),
563 75397 : showGrid(false), gridXSize(100), gridYSize(100),
564 75397 : laneShowBorders(false), showBikeMarkings(true), showLinkDecals(true),
565 75397 : realisticLinkRules(false),
566 75397 : showLinkRules(true),
567 75397 : showRails(true),
568 75397 : edgeName(false, 60, RGBColor::ORANGE),
569 75397 : internalEdgeName(false, 45, RGBColor(128, 64, 0, 255)),
570 75397 : cwaEdgeName(false, 60, RGBColor::MAGENTA),
571 75397 : streetName(false, 60, RGBColor::YELLOW),
572 75397 : edgeValue(false, 100, RGBColor::CYAN),
573 75397 : edgeScaleValue(false, 100, RGBColor::BLUE),
574 75397 : hideConnectors(false),
575 75397 : laneWidthExaggeration(1),
576 75397 : laneMinSize(0),
577 75397 : showLaneDirection(false),
578 75397 : showSublanes(true),
579 75397 : spreadSuperposed(false),
580 75397 : disableHideByZoom(false),
581 75397 : edgeParam("EDGE_KEY"),
582 75397 : laneParam("LANE_KEY"),
583 75397 : vehicleParam("PARAM_NUMERICAL"),
584 75397 : vehicleScaleParam("PARAM_NUMERICAL"),
585 75397 : vehicleTextParam("PARAM_TEXT"),
586 75397 : edgeData("speed"),
587 75397 : edgeDataID(""),
588 75397 : edgeDataScaling(""),
589 75397 : edgeValueRainBow(false, 0, false, 200, false, 0, false),
590 75397 : vehicleQuality(0), showBlinker(true),
591 75397 : drawLaneChangePreference(false),
592 75397 : drawMinGap(false),
593 75397 : drawBrakeGap(false),
594 75397 : showBTRange(false),
595 75397 : showRouteIndex(false),
596 75397 : scaleLength(true),
597 75397 : drawReversed(false),
598 75397 : showParkingInfo(false),
599 75397 : showChargingInfo(false),
600 75397 : vehicleSize(1),
601 75397 : vehicleName(false, 60, RGBColor(204, 153, 0, 255)),
602 75397 : vehicleValue(false, 80, RGBColor::CYAN),
603 75397 : vehicleScaleValue(false, 80, RGBColor::GREY),
604 75397 : vehicleText(false, 80, RGBColor::RED),
605 75397 : personQuality(netedit ? 2 : 0),
606 75397 : personSize(1),
607 75397 : personName(false, 60, RGBColor(0, 153, 204, 255)),
608 75397 : personValue(false, 80, RGBColor::CYAN),
609 75397 : showPedestrianNetwork(true),
610 75397 : pedestrianNetworkColor(RGBColor(179, 217, 255)),
611 75397 : containerQuality(0),
612 75397 : containerSize(1),
613 75397 : containerName(false, 60, RGBColor(0, 153, 204, 255)),
614 75397 : drawLinkTLIndex(false, 65, RGBColor(128, 128, 255, 255), RGBColor::INVISIBLE, false),
615 75397 : drawLinkJunctionIndex(false, 65, RGBColor(128, 128, 255, 255), RGBColor::INVISIBLE, false),
616 75397 : junctionID(false, 60, RGBColor(0, 255, 128, 255)),
617 75397 : junctionName(false, 60, RGBColor(192, 255, 128, 255)),
618 75397 : internalJunctionName(false, 50, RGBColor(0, 204, 128, 255)),
619 75397 : tlsPhaseIndex(false, 150, RGBColor::YELLOW),
620 75397 : tlsPhaseName(false, 150, RGBColor::ORANGE),
621 75397 : showLane2Lane(false),
622 75397 : drawJunctionShape(true),
623 75397 : drawCrossingsAndWalkingareas(true),
624 75397 : junctionSize(1),
625 75397 : junctionValueRainBow(false, 0, false, 100, false, 0, false),
626 75397 : addMode(0),
627 75397 : addSize(1),
628 75397 : addName(false, 60, RGBColor(255, 0, 128, 255)),
629 75397 : addFullName(false, 60, RGBColor(255, 0, 128, 255)),
630 75397 : poiSize(0),
631 75397 : poiDetail(16),
632 75397 : poiName(false, 50, RGBColor(0, 127, 70, 255)),
633 75397 : poiType(false, 60, RGBColor(0, 127, 70, 255)),
634 75397 : poiText(false, 80, RGBColor(140, 0, 255, 255)),
635 75397 : poiTextParam("PARAM_TEXT"),
636 75397 : poiUseCustomLayer(false),
637 75397 : poiCustomLayer(0),
638 75397 : polySize(0), polyName(false, 50, RGBColor(255, 0, 128, 255)),
639 75397 : polyType(false, 60, RGBColor(255, 0, 128, 255)),
640 75397 : polyUseCustomLayer(false),
641 75397 : polyCustomLayer(0),
642 75397 : dataValue(false, 100, RGBColor::CYAN),
643 75397 : tazRelWidthExaggeration(1),
644 75397 : edgeRelWidthExaggeration(1),
645 75397 : relDataAttr("count"),
646 75397 : dataValueRainBow(false, -100, false, 100, false, 0, false),
647 75397 : show3DTLSLinkMarkers(true),
648 75397 : show3DTLSDomes(true),
649 75397 : generate3DTLSModels(false),
650 75397 : show3DHeadUpDisplay(true),
651 75397 : ambient3DLight(OSG_color_AMBIENT),
652 75397 : diffuse3DLight(OSG_color_DIFFUSE),
653 75397 : skyColor(OSG_color_SKY),
654 75397 : showSizeLegend(true),
655 75397 : showColorLegend(false),
656 75397 : showVehicleColorLegend(false),
657 75397 : gaming(false),
658 75397 : drawBoundaries(false),
659 75397 : selectorFrameScale(1.),
660 75397 : drawForViewObjectsHandler(false),
661 75397 : drawForRectangleSelection(false),
662 75397 : forceDrawForRectangleSelection(false),
663 75397 : disableDottedContours(false),
664 75397 : geometryIndices(false, 50, RGBColor(255, 0, 128, 255)),
665 75397 : secondaryShape(false),
666 75397 : lefthand(false),
667 75397 : disableLaneIcons(false),
668 75397 : myIgnoreHideByZoom(false) {
669 : // init defaults depending of netedit or SUMO-GUI
670 75397 : if (netedit) {
671 0 : initNeteditDefaults();
672 : } else {
673 75397 : initSumoGuiDefaults();
674 : }
675 75397 : }
676 :
677 :
678 : bool
679 0 : GUIVisualizationSettings::checkDrawJunction(const Boundary& b, const bool selected) const {
680 0 : if (drawForViewObjectsHandler) {
681 : return false;
682 0 : } else if (junctionSize.constantSize) {
683 : return true;
684 0 : } else if (junctionSize.constantSizeSelected && selected) {
685 : return true;
686 0 : } else if (drawLinkTLIndex.showText && drawLinkTLIndex.constSize) {
687 : return true;
688 0 : } else if (drawLinkJunctionIndex.showText && drawLinkJunctionIndex.constSize) {
689 : return true;
690 0 : } else if (junctionID.showText && junctionID.constSize) {
691 : return true;
692 0 : } else if (junctionName.showText && junctionName.constSize) {
693 : return true;
694 0 : } else if (internalJunctionName.showText && internalJunctionName.constSize) {
695 : return true;
696 0 : } else if (tlsPhaseIndex.showText && tlsPhaseIndex.constSize) {
697 : return true;
698 0 : } else if (tlsPhaseName.showText && tlsPhaseName.constSize) {
699 : return true;
700 : } else {
701 0 : return (scale * MAX2(b.getWidth(), b.getHeight())) > BoundarySizeDrawing;
702 : }
703 : }
704 :
705 :
706 : bool
707 0 : GUIVisualizationSettings::checkDrawEdge(const Boundary& b) const {
708 0 : if (disableHideByZoom) {
709 : return true;
710 0 : } else if (myIgnoreHideByZoom) {
711 : return true;
712 : } else {
713 0 : return (scale * MAX2(b.getWidth(), b.getHeight())) > BoundarySizeDrawing;
714 : }
715 : }
716 :
717 :
718 : void
719 0 : GUIVisualizationSettings::updateIgnoreHideByZoom() {
720 : // general
721 0 : if (disableHideByZoom) {
722 0 : myIgnoreHideByZoom = true;
723 : // junctions
724 0 : } else if (junctionSize.constantSize && junctionSize.constantSizeSelected) {
725 0 : myIgnoreHideByZoom = true;
726 0 : } else if (drawLinkTLIndex.showText && drawLinkTLIndex.constSize) {
727 0 : myIgnoreHideByZoom = true;
728 0 : } else if (drawLinkJunctionIndex.showText && drawLinkJunctionIndex.constSize) {
729 0 : myIgnoreHideByZoom = true;
730 0 : } else if (junctionID.showText && junctionID.constSize) {
731 0 : myIgnoreHideByZoom = true;
732 0 : } else if (junctionName.showText && junctionName.constSize) {
733 0 : myIgnoreHideByZoom = true;
734 0 : } else if (internalJunctionName.showText && internalJunctionName.constSize) {
735 0 : myIgnoreHideByZoom = true;
736 0 : } else if (tlsPhaseIndex.showText && tlsPhaseIndex.constSize) {
737 0 : myIgnoreHideByZoom = true;
738 0 : } else if (tlsPhaseName.showText && tlsPhaseName.constSize) {
739 0 : myIgnoreHideByZoom = true;
740 : // edges
741 0 : } else if (edgeName.showText) {
742 0 : myIgnoreHideByZoom = true;
743 0 : } else if (internalEdgeName.showText && internalEdgeName.constSize) {
744 0 : myIgnoreHideByZoom = true;
745 0 : } else if (cwaEdgeName.showText && cwaEdgeName.constSize) {
746 0 : myIgnoreHideByZoom = true;
747 0 : } else if (streetName.showText && streetName.constSize) {
748 0 : myIgnoreHideByZoom = true;
749 0 : } else if (edgeValue.showText && edgeValue.constSize) {
750 0 : myIgnoreHideByZoom = true;
751 0 : } else if (edgeScaleValue.showText && edgeScaleValue.constSize) {
752 0 : myIgnoreHideByZoom = true;
753 : // additionals
754 0 : } else if (addSize.constantSize) {
755 0 : myIgnoreHideByZoom = true;
756 0 : } else if (addSize.constantSizeSelected) {
757 0 : myIgnoreHideByZoom = true;
758 0 : } else if (addName.showText && addName.constSize) {
759 0 : myIgnoreHideByZoom = true;
760 0 : } else if (addFullName.showText && addFullName.constSize) {
761 0 : myIgnoreHideByZoom = true;
762 : // POIs
763 0 : } else if (poiSize.constantSize) {
764 0 : myIgnoreHideByZoom = true;
765 0 : } else if (poiSize.constantSizeSelected) {
766 0 : myIgnoreHideByZoom = true;
767 0 : } else if (poiName.showText && poiName.constSize) {
768 0 : myIgnoreHideByZoom = true;
769 0 : } else if (poiType.showText && poiType.constSize) {
770 0 : myIgnoreHideByZoom = true;
771 0 : } else if (poiText.showText && poiText.constSize) {
772 0 : myIgnoreHideByZoom = true;
773 : // vehicles
774 0 : } else if (vehicleSize.constantSize) {
775 0 : myIgnoreHideByZoom = true;
776 0 : } else if (vehicleSize.constantSizeSelected) {
777 0 : myIgnoreHideByZoom = true;
778 0 : } else if (vehicleName.showText && vehicleName.constSize) {
779 0 : myIgnoreHideByZoom = true;
780 0 : } else if (vehicleValue.showText && vehicleValue.constSize) {
781 0 : myIgnoreHideByZoom = true;
782 0 : } else if (vehicleScaleValue.showText && vehicleScaleValue.constSize) {
783 0 : myIgnoreHideByZoom = true;
784 0 : } else if (vehicleText.showText && vehicleText.constSize) {
785 0 : myIgnoreHideByZoom = true;
786 : // persons
787 0 : } else if (personSize.constantSize) {
788 0 : myIgnoreHideByZoom = true;
789 0 : } else if (personSize.constantSizeSelected) {
790 0 : myIgnoreHideByZoom = true;
791 0 : } else if (personName.showText && personName.constSize) {
792 0 : myIgnoreHideByZoom = true;
793 0 : } else if (personValue.showText && personValue.constSize) {
794 0 : myIgnoreHideByZoom = true;
795 : // containers
796 0 : } else if (containerSize.constantSize) {
797 0 : myIgnoreHideByZoom = true;
798 0 : } else if (containerSize.constantSizeSelected) {
799 0 : myIgnoreHideByZoom = true;
800 0 : } else if (containerName.showText && containerName.constSize) {
801 0 : myIgnoreHideByZoom = true;
802 : } else {
803 0 : myIgnoreHideByZoom = false;
804 : }
805 0 : }
806 :
807 :
808 : bool
809 0 : GUIVisualizationSettings::checkDrawAdditional(const Detail d, const bool selected) const {
810 0 : if (drawForViewObjectsHandler) {
811 : return false;
812 0 : } else if (myIgnoreHideByZoom) {
813 : return true;
814 0 : } else if (addSize.constantSize) {
815 : return true;
816 0 : } else if (addSize.constantSizeSelected && selected) {
817 : return true;
818 0 : } else if (addName.showText && addName.constSize) {
819 : return true;
820 0 : } else if (addFullName.showText && addFullName.constSize) {
821 : return true;
822 : } else {
823 0 : return d <= GUIVisualizationSettings::Detail::Additionals;
824 : }
825 : }
826 :
827 :
828 : bool
829 0 : GUIVisualizationSettings::checkDrawPoly(const Boundary& b, const bool selected) const {
830 0 : if (drawForViewObjectsHandler) {
831 : return false;
832 0 : } else if (myIgnoreHideByZoom) {
833 : return true;
834 0 : } else if (polySize.constantSize) {
835 : return true;
836 0 : } else if (polySize.constantSizeSelected && selected) {
837 : return true;
838 0 : } else if (polyName.showText && polyName.constSize) {
839 : return true;
840 0 : } else if (polyType.showText && polyType.constSize) {
841 : return true;
842 : } else {
843 0 : return (scale * MAX2(b.getWidth(), b.getHeight())) > BoundarySizeDrawing;
844 : }
845 : }
846 :
847 :
848 : bool
849 0 : GUIVisualizationSettings::checkDrawPOI(const double w, const double h, const Detail d, const bool selected) const {
850 0 : if (drawForViewObjectsHandler) {
851 : return false;
852 0 : } else if (myIgnoreHideByZoom) {
853 : return true;
854 0 : } else if (poiSize.constantSize) {
855 : return true;
856 0 : } else if (poiSize.constantSizeSelected && selected) {
857 : return true;
858 0 : } else if (poiName.showText && poiName.constSize) {
859 : return true;
860 0 : } else if (poiType.showText && poiType.constSize) {
861 : return true;
862 0 : } else if (poiText.showText && poiText.constSize) {
863 : return true;
864 0 : } else if ((w > 0) && (h > 0)) {
865 0 : return (scale * MAX2(w, h)) > BoundarySizeDrawing;
866 : } else {
867 0 : return d <= GUIVisualizationSettings::Detail::Additionals;
868 : }
869 : }
870 :
871 :
872 : bool
873 0 : GUIVisualizationSettings::checkDrawVehicle(const Detail d, const bool selected) const {
874 0 : if (drawForViewObjectsHandler) {
875 : return false;
876 0 : } else if (myIgnoreHideByZoom) {
877 : return true;
878 0 : } else if (vehicleSize.constantSize) {
879 : return true;
880 0 : } else if (vehicleSize.constantSizeSelected && selected) {
881 : return true;
882 0 : } else if (vehicleName.showText && vehicleName.constSize) {
883 : return true;
884 0 : } else if (vehicleValue.showText && vehicleValue.constSize) {
885 : return true;
886 0 : } else if (vehicleScaleValue.showText && vehicleScaleValue.constSize) {
887 : return true;
888 0 : } else if (vehicleText.showText && vehicleText.constSize) {
889 : return true;
890 : } else {
891 0 : return d <= GUIVisualizationSettings::Detail::Additionals;
892 : }
893 : }
894 :
895 :
896 : bool
897 0 : GUIVisualizationSettings::checkDrawPerson(const Detail d, const bool selected) const {
898 0 : if (drawForViewObjectsHandler) {
899 : return false;
900 0 : } else if (myIgnoreHideByZoom) {
901 : return true;
902 0 : } else if (personSize.constantSize) {
903 : return true;
904 0 : } else if (personSize.constantSizeSelected && selected) {
905 : return true;
906 0 : } else if (personName.showText && personName.constSize) {
907 : return true;
908 0 : } else if (personValue.showText && personValue.constSize) {
909 : return true;
910 : } else {
911 0 : return d <= GUIVisualizationSettings::Detail::Additionals;
912 : }
913 : }
914 :
915 :
916 : bool
917 0 : GUIVisualizationSettings::checkDrawContainer(const Detail d, const bool selected) const {
918 0 : if (drawForViewObjectsHandler) {
919 : return false;
920 0 : } else if (myIgnoreHideByZoom) {
921 : return true;
922 0 : } else if (containerSize.constantSize) {
923 : return true;
924 0 : } else if (containerSize.constantSizeSelected && selected) {
925 : return true;
926 0 : } else if (containerName.showText && containerName.constSize) {
927 : return true;
928 : } else {
929 0 : return d <= GUIVisualizationSettings::Detail::Additionals;
930 : }
931 : }
932 :
933 :
934 : void
935 37697 : GUIVisualizationSettings::copy(const GUIVisualizationSettings& s) {
936 : // just copy. Note: By default = operator is disabled to avoid accidental copies)
937 37697 : *this = s;
938 37697 : }
939 :
940 :
941 : void
942 75397 : GUIVisualizationSettings::initSumoGuiDefaults() {
943 : /// add lane coloring schemes
944 150794 : GUIColorScheme scheme = GUIColorScheme("uniform", TL("uniform"), RGBColor::BLACK, TL("road"), true, 0);
945 75397 : scheme.addColor(RGBColor::GREY, 1, TL("sidewalk"));
946 75397 : scheme.addColor(RGBColor(192, 66, 44), 2, TL("bike lane"));
947 75397 : scheme.addColor(RGBColor(0, 0, 0, 0), 3, TL("green verge"));
948 75397 : scheme.addColor(RGBColor(150, 200, 200), 4, TL("waterway"));
949 75397 : scheme.addColor(RGBColor::BLACK, 5, TL("railway"));
950 75397 : scheme.addColor(RGBColor(64, 0, 64), 6, TL("rails on road"));
951 75397 : scheme.addColor(RGBColor(92, 92, 92), 7, TL("no passenger")); // paths, service roads etc
952 75397 : scheme.addColor(RGBColor::RED, 8, TL("closed")); // road closing
953 75397 : scheme.addColor(RGBColor::GREEN, 9, TL("connector")); // macro-connector
954 75397 : scheme.addColor(RGBColor::ORANGE, 10, TL("forbidden")); // forbidden road
955 75397 : scheme.addColor(RGBColor(200, 240, 240), 11, TL("airway"));
956 150794 : laneColorer.addScheme(scheme);
957 75397 : scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), TL("unselected"), true, 0, COL_SCHEME_MISC);
958 75397 : scheme.addColor(RGBColor(0, 80, 180, 255), 1, TL("selected"));
959 150794 : laneColorer.addScheme(scheme);
960 75397 : scheme = GUIColorScheme(SCHEME_NAME_PERMISSION_CODE, RGBColor(240, 240, 240), "nobody");
961 75397 : scheme.addColor(RGBColor(10, 10, 10), (double)SVC_PASSENGER, "passenger");
962 75397 : scheme.addColor(RGBColor(128, 128, 128), (double)SVC_PEDESTRIAN, "pedestrian");
963 75397 : scheme.addColor(RGBColor(80, 80, 80), (double)(SVC_PEDESTRIAN | SVC_DELIVERY), "pedestrian_delivery");
964 75397 : scheme.addColor(RGBColor(192, 66, 44), (double)SVC_BICYCLE, "bicycle");
965 75397 : scheme.addColor(RGBColor(40, 100, 40), (double)SVC_BUS, "bus");
966 75397 : scheme.addColor(RGBColor(166, 147, 26), (double)SVC_TAXI, "taxi");
967 75397 : scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~SVC_NON_ROAD), "normal_road");
968 75397 : scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_NON_ROAD)), "disallow_pedestrian");
969 75397 : scheme.addColor(RGBColor(255, 206, 0), (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_BICYCLE | SVC_MOPED | SVC_NON_ROAD)), "motorway");
970 75397 : scheme.addColor(RGBColor(150, 200, 200), (double)SVC_SHIP, "waterway");
971 75397 : scheme.addColor(RGBColor::GREEN, (double)SVCAll, "all");
972 150794 : laneColorer.addScheme(scheme);
973 : // ... traffic states ...
974 150794 : scheme = GUIColorScheme("by allowed speed (lanewise)", TL("by allowed speed (lanewise)"), RGBColor::RED);
975 75397 : scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
976 75397 : scheme.addColor(RGBColor::GREEN, 55. / 3.6);
977 75397 : scheme.addColor(RGBColor::CYAN, 80. / 3.6);
978 75397 : scheme.addColor(RGBColor::BLUE, 120. / 3.6);
979 75397 : scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
980 150794 : laneColorer.addScheme(scheme);
981 150794 : scheme = GUIColorScheme("by current occupancy (lanewise, brutto)", TL("by current occupancy (lanewise, brutto)"), RGBColor(235, 235, 235), "", false, 0, COL_SCHEME_DYNAMIC);
982 75397 : scheme.addColor(RGBColor::GREEN, 0.25);
983 75397 : scheme.addColor(RGBColor::YELLOW, 0.5);
984 75397 : scheme.addColor(RGBColor::ORANGE, 0.75);
985 75397 : scheme.addColor(RGBColor::RED, 1.0);
986 150794 : laneColorer.addScheme(scheme);
987 150794 : scheme = GUIColorScheme("by current occupancy (lanewise, netto)", TL("by current occupancy (lanewise, netto)"), RGBColor(235, 235, 235), "", false, 0, COL_SCHEME_DYNAMIC);
988 75397 : scheme.addColor(RGBColor::GREEN, 0.25);
989 75397 : scheme.addColor(RGBColor::YELLOW, 0.5);
990 75397 : scheme.addColor(RGBColor::ORANGE, 0.75);
991 75397 : scheme.addColor(RGBColor::RED, 1.0);
992 150794 : laneColorer.addScheme(scheme);
993 150794 : scheme = GUIColorScheme("by first vehicle waiting time (lanewise)", TL("by first vehicle waiting time (lanewise)"), RGBColor(235, 235, 235), "", false, 0, COL_SCHEME_DYNAMIC);
994 75397 : scheme.addColor(RGBColor::CYAN, 30.);
995 75397 : scheme.addColor(RGBColor::GREEN, 100.);
996 75397 : scheme.addColor(RGBColor::YELLOW, 200.);
997 75397 : scheme.addColor(RGBColor::RED, 300.);
998 150794 : laneColorer.addScheme(scheme);
999 150794 : scheme = GUIColorScheme("by lane number (streetwise)", TL("by lane number (streetwise)"), RGBColor::RED);
1000 75397 : scheme.addColor(RGBColor::BLUE, 5.);
1001 150794 : laneColorer.addScheme(scheme);
1002 : // ... emissions ...
1003 150794 : scheme = GUIColorScheme("by CO2 emissions", TL("by CO2 emissions"), RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1004 75397 : scheme.addColor(RGBColor::CYAN, 450);
1005 75397 : scheme.addColor(RGBColor::GREEN, 900);
1006 75397 : scheme.addColor(RGBColor::YELLOW, 1350);
1007 75397 : scheme.addColor(RGBColor::ORANGE, 1800);
1008 75397 : scheme.addColor(RGBColor::RED, 2250);
1009 75397 : scheme.addColor(RGBColor::MAGENTA, 3000);
1010 150794 : laneColorer.addScheme(scheme);
1011 150794 : scheme = GUIColorScheme("by CO emissions", TL("by CO emissions"), RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1012 75397 : scheme.addColor(RGBColor::CYAN, 30);
1013 75397 : scheme.addColor(RGBColor::GREEN, 60);
1014 75397 : scheme.addColor(RGBColor::YELLOW, 90);
1015 75397 : scheme.addColor(RGBColor::ORANGE, 120);
1016 75397 : scheme.addColor(RGBColor::RED, 150);
1017 75397 : scheme.addColor(RGBColor::MAGENTA, 200);
1018 150794 : laneColorer.addScheme(scheme);
1019 150794 : scheme = GUIColorScheme("by PMx emissions", TL("by PMx emissions"), RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1020 75397 : scheme.addColor(RGBColor::CYAN, 0.3);
1021 75397 : scheme.addColor(RGBColor::GREEN, 0.5);
1022 75397 : scheme.addColor(RGBColor::YELLOW, 0.8);
1023 75397 : scheme.addColor(RGBColor::ORANGE, 1);
1024 75397 : scheme.addColor(RGBColor::RED, 1.3);
1025 75397 : scheme.addColor(RGBColor::MAGENTA, 1.6);
1026 150794 : laneColorer.addScheme(scheme);
1027 150794 : scheme = GUIColorScheme("by NOx emissions", TL("by NOx emissions"), RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1028 75397 : scheme.addColor(RGBColor::CYAN, 6);
1029 75397 : scheme.addColor(RGBColor::GREEN, 12);
1030 75397 : scheme.addColor(RGBColor::YELLOW, 18);
1031 75397 : scheme.addColor(RGBColor::ORANGE, 24);
1032 75397 : scheme.addColor(RGBColor::RED, 30);
1033 75397 : scheme.addColor(RGBColor::MAGENTA, 40);
1034 150794 : laneColorer.addScheme(scheme);
1035 150794 : scheme = GUIColorScheme("by HC emissions", TL("by HC emissions"), RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1036 75397 : scheme.addColor(RGBColor::CYAN, 8);
1037 75397 : scheme.addColor(RGBColor::GREEN, 16);
1038 75397 : scheme.addColor(RGBColor::YELLOW, 24);
1039 75397 : scheme.addColor(RGBColor::ORANGE, 32);
1040 75397 : scheme.addColor(RGBColor::RED, 40);
1041 75397 : scheme.addColor(RGBColor::MAGENTA, 50);
1042 150794 : laneColorer.addScheme(scheme);
1043 150794 : scheme = GUIColorScheme("by fuel consumption", TL("by fuel consumption"), RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1044 75397 : scheme.addColor(RGBColor::CYAN, 0.2);
1045 75397 : scheme.addColor(RGBColor::GREEN, 0.4);
1046 75397 : scheme.addColor(RGBColor::YELLOW, 0.6);
1047 75397 : scheme.addColor(RGBColor::ORANGE, 0.8);
1048 75397 : scheme.addColor(RGBColor::RED, 1);
1049 75397 : scheme.addColor(RGBColor::MAGENTA, 1.3);
1050 150794 : laneColorer.addScheme(scheme);
1051 150794 : scheme = GUIColorScheme("by noise emissions (Harmonoise)", TL("by noise emissions (Harmonoise)"), RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1052 75397 : scheme.addColor(RGBColor::CYAN, 1.3);
1053 75397 : scheme.addColor(RGBColor::GREEN, 1.4);
1054 75397 : scheme.addColor(RGBColor::YELLOW, 1.6);
1055 75397 : scheme.addColor(RGBColor::ORANGE, 1.7);
1056 75397 : scheme.addColor(RGBColor::RED, 1.9);
1057 75397 : scheme.addColor(RGBColor::MAGENTA, 2.4);
1058 150794 : laneColorer.addScheme(scheme);
1059 : // ... weights (experimental) ...
1060 150794 : scheme = GUIColorScheme("by global travel time", TL("by global travel time"), RGBColor::GREEN);
1061 150794 : scheme.addColor(RGBColor::RED, 100.);
1062 : scheme.setAllowsNegativeValues(true);
1063 150794 : laneColorer.addScheme(scheme);
1064 150794 : scheme = GUIColorScheme("by global speed percentage", TL("by global speed percentage"), RGBColor::RED);
1065 75397 : scheme.addColor(RGBColor::YELLOW, 50.);
1066 150794 : scheme.addColor(RGBColor::GREEN, 100.);
1067 : scheme.setAllowsNegativeValues(true);
1068 150794 : laneColorer.addScheme(scheme);
1069 150794 : scheme = GUIColorScheme("by given length/geometrical length", TL("by given length/geometrical length"), RGBColor::RED);
1070 75397 : scheme.addColor(RGBColor::ORANGE, 0.25);
1071 75397 : scheme.addColor(RGBColor::YELLOW, 0.5);
1072 75397 : scheme.addColor(RGBColor(179, 179, 179, 255), 1.);
1073 75397 : scheme.addColor(RGBColor::GREEN, 2.);
1074 75397 : scheme.addColor(RGBColor::CYAN, 4.);
1075 75397 : scheme.addColor(RGBColor::BLUE, 100.);
1076 150794 : laneColorer.addScheme(scheme);
1077 226191 : laneColorer.addScheme(GUIColorScheme("by angle", TL("by angle"), RGBColor::YELLOW, "", true));
1078 150794 : scheme = GUIColorScheme("by loaded weight", TL("by loaded weight"), RGBColor::GREEN);
1079 150794 : scheme.addColor(RGBColor::RED, 100.);
1080 : scheme.setAllowsNegativeValues(true);
1081 150794 : laneColorer.addScheme(scheme);
1082 150794 : scheme = GUIColorScheme("by priority", TL("by priority"), RGBColor::YELLOW);
1083 75397 : scheme.addColor(RGBColor::RED, -20.);
1084 150794 : scheme.addColor(RGBColor::GREEN, 20.);
1085 : scheme.setAllowsNegativeValues(true);
1086 150794 : laneColorer.addScheme(scheme);
1087 150794 : scheme = GUIColorScheme("by height at start", TL("by height at start"), RGBColor::GREY);
1088 75397 : scheme.addColor(RGBColor::BLUE, -10.);
1089 75397 : scheme.addColor(RGBColor::RED, 10.);
1090 75397 : scheme.addColor(RGBColor::YELLOW, 50.);
1091 75397 : scheme.addColor(RGBColor::GREEN, 100.);
1092 150794 : scheme.addColor(RGBColor::MAGENTA, 200.);
1093 : scheme.setAllowsNegativeValues(true);
1094 150794 : laneColorer.addScheme(scheme);
1095 150794 : scheme = GUIColorScheme("by height at geometry-segment start", TL("by height at geometry-segment start"), RGBColor::GREY);
1096 75397 : scheme.addColor(RGBColor::BLUE, -10.);
1097 75397 : scheme.addColor(RGBColor::RED, 10.);
1098 75397 : scheme.addColor(RGBColor::YELLOW, 50.);
1099 75397 : scheme.addColor(RGBColor::GREEN, 100.);
1100 150794 : scheme.addColor(RGBColor::MAGENTA, 200.);
1101 : scheme.setAllowsNegativeValues(true);
1102 150794 : laneColorer.addScheme(scheme);
1103 150794 : scheme = GUIColorScheme("by inclination", TL("by inclination"), RGBColor::GREY);
1104 75397 : scheme.addColor(RGBColor::YELLOW, 0.1);
1105 75397 : scheme.addColor(RGBColor::RED, 0.3);
1106 75397 : scheme.addColor(RGBColor::GREEN, -0.1);
1107 150794 : scheme.addColor(RGBColor::BLUE, -0.3);
1108 : scheme.setAllowsNegativeValues(true);
1109 150794 : laneColorer.addScheme(scheme);
1110 150794 : scheme = GUIColorScheme("by geometry-segment inclination", TL("by geometry-segment inclination"), RGBColor::GREY);
1111 75397 : scheme.addColor(RGBColor::YELLOW, 0.1);
1112 75397 : scheme.addColor(RGBColor::RED, 0.3);
1113 75397 : scheme.addColor(RGBColor::GREEN, -0.1);
1114 150794 : scheme.addColor(RGBColor::BLUE, -0.3);
1115 : scheme.setAllowsNegativeValues(true);
1116 150794 : laneColorer.addScheme(scheme);
1117 150794 : scheme = GUIColorScheme("by average speed", TL("by average speed"), RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1118 75397 : scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1119 75397 : scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1120 75397 : scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1121 75397 : scheme.addColor(RGBColor::BLUE, 120. / 3.6);
1122 75397 : scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1123 150794 : laneColorer.addScheme(scheme);
1124 150794 : scheme = GUIColorScheme("by average relative speed ", TL("by average relative speed "), RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1125 75397 : scheme.addColor(RGBColor::YELLOW, 0.25);
1126 75397 : scheme.addColor(RGBColor::GREEN, 0.5);
1127 75397 : scheme.addColor(RGBColor::CYAN, 0.75);
1128 75397 : scheme.addColor(RGBColor::BLUE, 1.);
1129 75397 : scheme.addColor(RGBColor::MAGENTA, 1.25);
1130 150794 : laneColorer.addScheme(scheme);
1131 150794 : scheme = GUIColorScheme("by routing device assumed speed ", TL("by routing device assumed speed "), RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1132 75397 : scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1133 75397 : scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1134 75397 : scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1135 75397 : scheme.addColor(RGBColor::BLUE, 120. / 3.6);
1136 75397 : scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1137 150794 : laneColorer.addScheme(scheme);
1138 150794 : scheme = GUIColorScheme("by electricity consumption", TL("by electricity consumption"), RGBColor::GREEN, "", false, 0, COL_SCHEME_EMISSION);
1139 75397 : scheme.addColor(RGBColor::CYAN, 0.2);
1140 75397 : scheme.addColor(RGBColor::GREEN, 0.4);
1141 75397 : scheme.addColor(RGBColor::YELLOW, 0.6);
1142 75397 : scheme.addColor(RGBColor::ORANGE, 0.8);
1143 75397 : scheme.addColor(RGBColor::RED, 1.0);
1144 75397 : scheme.addColor(RGBColor::MAGENTA, 2.0);
1145 150794 : laneColorer.addScheme(scheme);
1146 150794 : scheme = GUIColorScheme("by insertion-backlog (streetwise)", TL("by insertion-backlog (streetwise)"), RGBColor(204, 204, 204), "", false, 0, COL_SCHEME_DYNAMIC);
1147 75397 : scheme.addColor(RGBColor::GREEN, 1.);
1148 75397 : scheme.addColor(RGBColor::YELLOW, 10.);
1149 75397 : scheme.addColor(RGBColor::RED, 100.);
1150 150794 : laneColorer.addScheme(scheme);
1151 150794 : scheme = GUIColorScheme("by TAZ (streetwise)", TL("by TAZ (streetwise)"), RGBColor(204, 204, 204), "no TAZ", true);
1152 150794 : laneColorer.addScheme(scheme);
1153 75397 : scheme = GUIColorScheme(SCHEME_NAME_EDGE_PARAM_NUMERICAL, RGBColor(204, 204, 204));
1154 : scheme.setAllowsNegativeValues(true);
1155 150794 : laneColorer.addScheme(scheme);
1156 75397 : scheme = GUIColorScheme(SCHEME_NAME_LANE_PARAM_NUMERICAL, RGBColor(204, 204, 204));
1157 : scheme.setAllowsNegativeValues(true);
1158 150794 : laneColorer.addScheme(scheme);
1159 150794 : scheme = GUIColorScheme(SCHEME_NAME_EDGEDATA_NUMERICAL, COL_MISSING_DATA, TL("missing data"), false, MISSING_DATA);
1160 : scheme.setAllowsNegativeValues(true);
1161 150794 : laneColorer.addScheme(scheme);
1162 150794 : scheme = GUIColorScheme("by distance (kilometrage)", TL("by distance (kilometrage)"), RGBColor(204, 204, 204));
1163 75397 : scheme.addColor(RGBColor(255, 204, 204), 1.);
1164 75397 : scheme.addColor(RGBColor::RED, 10000.);
1165 75397 : scheme.addColor(RGBColor(204, 204, 255), -1.);
1166 150794 : scheme.addColor(RGBColor::BLUE, -10000.);
1167 : scheme.setAllowsNegativeValues(true);
1168 150794 : laneColorer.addScheme(scheme);
1169 150794 : scheme = GUIColorScheme("by abs distance (kilometrage)", TL("by abs distance (kilometrage)"), RGBColor(204, 204, 204));
1170 150794 : scheme.addColor(RGBColor::RED, 1.);
1171 : scheme.setAllowsNegativeValues(false);
1172 150794 : laneColorer.addScheme(scheme);
1173 150794 : scheme = GUIColorScheme("by reachability (traveltime)", TL("by reachability (traveltime)"), RGBColor::RED);
1174 150794 : scheme.addColor(RGBColor::GREY, INVALID_DOUBLE, "unreachable");
1175 : scheme.setAllowsNegativeValues(true);
1176 150794 : laneColorer.addScheme(scheme);
1177 150794 : scheme = GUIColorScheme("by thread index", TL("by thread index"), RGBColor(204, 204, 204));
1178 75397 : scheme.addColor(RGBColor::RED, 1.);
1179 150794 : laneColorer.addScheme(scheme);
1180 150794 : scheme = GUIColorScheme("free parking spaces", TL("free parking spaces"), RGBColor(204, 204, 204), "", false, 0, COL_SCHEME_DYNAMIC);
1181 75397 : scheme.addColor(RGBColor::RED, 1.);
1182 75397 : scheme.addColor(RGBColor::YELLOW, 10.);
1183 75397 : scheme.addColor(RGBColor::GREEN, 100.);
1184 75397 : scheme.addColor(RGBColor::BLUE, 1000.);
1185 150794 : laneColorer.addScheme(scheme);
1186 150794 : scheme = GUIColorScheme(SCHEME_NAME_EDGEDATA_LIVE, COL_MISSING_DATA, TL("missing data"), false, MISSING_DATA, COL_SCHEME_DYNAMIC);
1187 : scheme.setAllowsNegativeValues(true);
1188 150794 : laneColorer.addScheme(scheme);
1189 :
1190 : /// add vehicle coloring schemes
1191 226191 : vehicleColorer.addScheme(GUIColorScheme("given vehicle/type/route color", TL("given vehicle/type/route color"), RGBColor::YELLOW, "", true));
1192 226191 : vehicleColorer.addScheme(GUIColorScheme("uniform", TL("uniform"), RGBColor::YELLOW, "", true));
1193 226191 : vehicleColorer.addScheme(GUIColorScheme("given/assigned vehicle color", TL("given/assigned vehicle color"), RGBColor::YELLOW, "", true));
1194 226191 : vehicleColorer.addScheme(GUIColorScheme("given/assigned type color", TL("given/assigned type color"), RGBColor::YELLOW, "", true));
1195 226191 : vehicleColorer.addScheme(GUIColorScheme("given/assigned route color", TL("given/assigned route color"), RGBColor::YELLOW, "", true));
1196 226191 : vehicleColorer.addScheme(GUIColorScheme("depart position as HSV", TL("depart position as HSV"), RGBColor::YELLOW, "", true));
1197 226191 : vehicleColorer.addScheme(GUIColorScheme("arrival position as HSV", TL("arrival position as HSV"), RGBColor::YELLOW, "", true));
1198 226191 : vehicleColorer.addScheme(GUIColorScheme("direction/distance as HSV", TL("direction/distance as HSV"), RGBColor::YELLOW, "", true));
1199 150794 : scheme = GUIColorScheme("by speed", TL("by speed"), RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1200 75397 : scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1201 75397 : scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1202 75397 : scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1203 75397 : scheme.addColor(RGBColor::BLUE, 120. / 3.6);
1204 150794 : scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1205 : scheme.setAllowsNegativeValues(true); // negative speed indicates stopped
1206 75397 : scheme.addColor(RGBColor::RED, -1); // stopped on road
1207 75397 : scheme.addColor(RGBColor::GREY, -2); // stopped off-road (parking)
1208 150794 : vehicleColorer.addScheme(scheme);
1209 150794 : scheme = GUIColorScheme("by action step", TL("by action step"), RGBColor::GREY, TL("no action"), true, 0, COL_SCHEME_DYNAMIC);
1210 75397 : scheme.addColor(RGBColor(0, 255, 0, 255), 1., TL("action in next step"));
1211 75397 : scheme.addColor(RGBColor(80, 160, 80, 255), 2., TL("had action step"));
1212 150794 : vehicleColorer.addScheme(scheme);
1213 150794 : scheme = GUIColorScheme("by waiting time", TL("by waiting time"), RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1214 75397 : scheme.addColor(RGBColor::CYAN, 30.);
1215 75397 : scheme.addColor(RGBColor::GREEN, 100.);
1216 75397 : scheme.addColor(RGBColor::YELLOW, 200.);
1217 75397 : scheme.addColor(RGBColor::RED, 300.);
1218 150794 : vehicleColorer.addScheme(scheme);
1219 150794 : scheme = GUIColorScheme("by accumulated waiting time", TL("by accumulated waiting time"), RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1220 75397 : scheme.addColor(RGBColor::CYAN, 25.);
1221 75397 : scheme.addColor(RGBColor::GREEN, 50.);
1222 75397 : scheme.addColor(RGBColor::YELLOW, 75.);
1223 75397 : scheme.addColor(RGBColor::RED, 100.);
1224 150794 : vehicleColorer.addScheme(scheme);
1225 150794 : scheme = GUIColorScheme("by time since lane change", TL("by time since lane change"), RGBColor(179, 179, 179, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
1226 75397 : scheme.addColor(RGBColor(189, 189, 179, 255), -180);
1227 75397 : scheme.addColor(RGBColor(255, 255, 0, 255), -20);
1228 75397 : scheme.addColor(RGBColor(255, 0, 0, 255), -0.01);
1229 75397 : scheme.addColor(RGBColor(0, 0, 255, 255), 0.01);
1230 75397 : scheme.addColor(RGBColor(0, 255, 255, 255), 20);
1231 75397 : scheme.addColor(RGBColor(179, 189, 189, 255), 180);
1232 : scheme.setAllowsNegativeValues(true);
1233 150794 : vehicleColorer.addScheme(scheme);
1234 150794 : scheme = GUIColorScheme("by max speed", TL("by max speed"), RGBColor::RED);
1235 75397 : scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1236 75397 : scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1237 75397 : scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1238 75397 : scheme.addColor(RGBColor::BLUE, 120. / 3.6);
1239 75397 : scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1240 150794 : vehicleColorer.addScheme(scheme);
1241 : // ... emissions ...
1242 150794 : scheme = GUIColorScheme("by CO2 emissions", TL("by CO2 emissions"), RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1243 75397 : scheme.addColor(RGBColor::CYAN, 23000);
1244 75397 : scheme.addColor(RGBColor::GREEN, 46000);
1245 75397 : scheme.addColor(RGBColor::YELLOW, 69000);
1246 75397 : scheme.addColor(RGBColor::ORANGE, 92000);
1247 75397 : scheme.addColor(RGBColor::RED, 115000);
1248 75397 : scheme.addColor(RGBColor::MAGENTA, 150000);
1249 150794 : vehicleColorer.addScheme(scheme);
1250 150794 : scheme = GUIColorScheme("by CO emissions", TL("by CO emissions"), RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1251 75397 : scheme.addColor(RGBColor::CYAN, 1500);
1252 75397 : scheme.addColor(RGBColor::GREEN, 3000);
1253 75397 : scheme.addColor(RGBColor::YELLOW, 4500);
1254 75397 : scheme.addColor(RGBColor::ORANGE, 6000);
1255 75397 : scheme.addColor(RGBColor::RED, 7500);
1256 75397 : scheme.addColor(RGBColor::MAGENTA, 10000);
1257 150794 : vehicleColorer.addScheme(scheme);
1258 150794 : scheme = GUIColorScheme("by PMx emissions", TL("by PMx emissions"), RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1259 75397 : scheme.addColor(RGBColor::CYAN, 12);
1260 75397 : scheme.addColor(RGBColor::GREEN, 24);
1261 75397 : scheme.addColor(RGBColor::YELLOW, 36);
1262 75397 : scheme.addColor(RGBColor::ORANGE, 48);
1263 75397 : scheme.addColor(RGBColor::RED, 60);
1264 75397 : scheme.addColor(RGBColor::MAGENTA, 80);
1265 150794 : vehicleColorer.addScheme(scheme);
1266 150794 : scheme = GUIColorScheme("by NOx emissions", TL("by NOx emissions"), RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1267 75397 : scheme.addColor(RGBColor::CYAN, 300);
1268 75397 : scheme.addColor(RGBColor::GREEN, 600);
1269 75397 : scheme.addColor(RGBColor::YELLOW, 900);
1270 75397 : scheme.addColor(RGBColor::ORANGE, 1200);
1271 75397 : scheme.addColor(RGBColor::RED, 1500);
1272 75397 : scheme.addColor(RGBColor::MAGENTA, 2000);
1273 150794 : vehicleColorer.addScheme(scheme);
1274 150794 : scheme = GUIColorScheme("by HC emissions", TL("by HC emissions"), RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1275 75397 : scheme.addColor(RGBColor::CYAN, 400);
1276 75397 : scheme.addColor(RGBColor::GREEN, 800);
1277 75397 : scheme.addColor(RGBColor::YELLOW, 1200);
1278 75397 : scheme.addColor(RGBColor::ORANGE, 1600);
1279 75397 : scheme.addColor(RGBColor::RED, 2000);
1280 75397 : scheme.addColor(RGBColor::MAGENTA, 2500);
1281 150794 : vehicleColorer.addScheme(scheme);
1282 150794 : scheme = GUIColorScheme("by fuel consumption", TL("by fuel consumption"), RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1283 75397 : scheme.addColor(RGBColor::CYAN, 10);
1284 75397 : scheme.addColor(RGBColor::GREEN, 20);
1285 75397 : scheme.addColor(RGBColor::YELLOW, 30);
1286 75397 : scheme.addColor(RGBColor::ORANGE, 40);
1287 75397 : scheme.addColor(RGBColor::RED, 50);
1288 75397 : scheme.addColor(RGBColor::MAGENTA, 60);
1289 150794 : vehicleColorer.addScheme(scheme);
1290 150794 : scheme = GUIColorScheme("by noise emissions (Harmonoise)", RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1291 75397 : scheme.addColor(RGBColor::CYAN, 60);
1292 75397 : scheme.addColor(RGBColor::GREEN, 70);
1293 75397 : scheme.addColor(RGBColor::YELLOW, 80);
1294 75397 : scheme.addColor(RGBColor::ORANGE, 90);
1295 75397 : scheme.addColor(RGBColor::RED, 100);
1296 75397 : scheme.addColor(RGBColor::MAGENTA, 120);
1297 150794 : vehicleColorer.addScheme(scheme);
1298 150794 : scheme = GUIColorScheme("by reroute number", TL("by reroute number"), RGBColor::GREY, "", false, 0, COL_SCHEME_DYNAMIC);
1299 75397 : scheme.addColor(RGBColor::YELLOW, 1.);
1300 75397 : scheme.addColor(RGBColor::RED, 10.);
1301 150794 : vehicleColorer.addScheme(scheme);
1302 75397 : scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), TL("unselected"), true, 0, COL_SCHEME_MISC);
1303 75397 : scheme.addColor(RGBColor(0, 102, 204, 255), 1, TL("selected"));
1304 150794 : vehicleColorer.addScheme(scheme);
1305 150794 : scheme = GUIColorScheme("by offset from best lane", TL("by offset from best lane"), RGBColor(179, 179, 179, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
1306 75397 : scheme.addColor(RGBColor(255, 0, 255, 255), -100, TL("opposite lane"));
1307 75397 : scheme.addColor(RGBColor(255, 0, 0, 255), -3, "-3");
1308 75397 : scheme.addColor(RGBColor(255, 255, 0, 255), -1, "-1");
1309 75397 : scheme.addColor(RGBColor(0, 255, 255, 255), 1, "1");
1310 75397 : scheme.addColor(RGBColor(0, 0, 255, 255), 3, "3");
1311 : scheme.setAllowsNegativeValues(true);
1312 150794 : vehicleColorer.addScheme(scheme);
1313 150794 : scheme = GUIColorScheme("by acceleration", TL("by acceleration"), RGBColor(179, 179, 179, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
1314 75397 : scheme.addColor(RGBColor(64, 0, 0, 255), -9.0);
1315 75397 : scheme.addColor(RGBColor(255, 0, 0, 255), -4.5 /* -SUMOVTypeParameter::getDefaultDecel() */);
1316 75397 : scheme.addColor(RGBColor(255, 255, 0, 255), -0.1);
1317 75397 : scheme.addColor(RGBColor(0, 255, 255, 255), 0.1);
1318 75397 : scheme.addColor(RGBColor(0, 0, 255, 255), 2.6 /* SUMOVTypeParameter::getDefaultAccel() */);
1319 75397 : scheme.addColor(RGBColor(255, 0, 255, 255), 5.2);
1320 : scheme.setAllowsNegativeValues(true);
1321 150794 : vehicleColorer.addScheme(scheme);
1322 150794 : scheme = GUIColorScheme("by time gap on lane", TL("by time gap on lane"), RGBColor(255, 255, 0, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
1323 75397 : scheme.addColor(RGBColor(179, 179, 179, 255), -1);
1324 75397 : scheme.addColor(RGBColor(0, 255, 255, 255), 1);
1325 75397 : scheme.addColor(RGBColor(0, 0, 255, 255), 2);
1326 : scheme.setAllowsNegativeValues(true);
1327 150794 : vehicleColorer.addScheme(scheme);
1328 150794 : scheme = GUIColorScheme("by depart delay", TL("by depart delay"), RGBColor::BLUE);
1329 75397 : scheme.addColor(RGBColor::CYAN, 30.);
1330 75397 : scheme.addColor(RGBColor::GREEN, 100.);
1331 75397 : scheme.addColor(RGBColor::YELLOW, 200.);
1332 75397 : scheme.addColor(RGBColor::RED, 300.);
1333 150794 : vehicleColorer.addScheme(scheme);
1334 150794 : scheme = GUIColorScheme("by electricity consumption", TL("by electricity consumption"), RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1335 75397 : scheme.addColor(RGBColor::CYAN, 10);
1336 75397 : scheme.addColor(RGBColor::GREEN, 20);
1337 75397 : scheme.addColor(RGBColor::YELLOW, 30);
1338 75397 : scheme.addColor(RGBColor::ORANGE, 40);
1339 75397 : scheme.addColor(RGBColor::RED, 60);
1340 75397 : scheme.addColor(RGBColor::MAGENTA, 100);
1341 150794 : vehicleColorer.addScheme(scheme);
1342 150794 : scheme = GUIColorScheme("by relative battery charge", TL("by relative battery charge"), RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1343 : scheme.setAllowsNegativeValues(true);
1344 75397 : scheme.addColor(RGBColor::MAGENTA, 0.1);
1345 75397 : scheme.addColor(RGBColor::RED, 0.2);
1346 75397 : scheme.addColor(RGBColor::ORANGE, 0.3);
1347 75397 : scheme.addColor(RGBColor::YELLOW, 0.4);
1348 75397 : scheme.addColor(RGBColor::GREEN, 0.6);
1349 75397 : scheme.addColor(RGBColor::CYAN, 1.);
1350 150794 : vehicleColorer.addScheme(scheme);
1351 150794 : scheme = GUIColorScheme("by charged energy", TL("by charged energy"), RGBColor::GREY, "", false, 0, COL_SCHEME_EMISSION);
1352 : scheme.setAllowsNegativeValues(true);
1353 75397 : scheme.addColor(RGBColor::MAGENTA, 10);
1354 75397 : scheme.addColor(RGBColor::RED, 20);
1355 75397 : scheme.addColor(RGBColor::ORANGE, 30);
1356 75397 : scheme.addColor(RGBColor::YELLOW, 100);
1357 75397 : scheme.addColor(RGBColor::GREEN, 200);
1358 75397 : scheme.addColor(RGBColor::CYAN, 500);
1359 150794 : vehicleColorer.addScheme(scheme);
1360 150794 : scheme = GUIColorScheme("by time loss", TL("by time loss"), RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1361 75397 : scheme.addColor(RGBColor::CYAN, 10.);
1362 75397 : scheme.addColor(RGBColor::GREEN, 60.);
1363 75397 : scheme.addColor(RGBColor::YELLOW, 180.);
1364 75397 : scheme.addColor(RGBColor::RED, 900.);
1365 150794 : vehicleColorer.addScheme(scheme);
1366 150794 : scheme = GUIColorScheme("by stop delay", TL("by stop delay"), RGBColor::GREY, "", false, -1, COL_SCHEME_DYNAMIC);
1367 75397 : scheme.addColor(RGBColor::BLUE, 0.);
1368 75397 : scheme.addColor(RGBColor::CYAN, 10.);
1369 75397 : scheme.addColor(RGBColor::GREEN, 60.);
1370 75397 : scheme.addColor(RGBColor::YELLOW, 120.);
1371 75397 : scheme.addColor(RGBColor::ORANGE, 300.);
1372 150794 : scheme.addColor(RGBColor::RED, 900.);
1373 : scheme.setAllowsNegativeValues(true);
1374 150794 : vehicleColorer.addScheme(scheme);
1375 150794 : scheme = GUIColorScheme("by stop arrival delay", TL("by stop arrival delay"), RGBColor::GREY, "", false, INVALID_DOUBLE, COL_SCHEME_DYNAMIC);
1376 75397 : scheme.addColor(RGBColor::MAGENTA, -10.);
1377 75397 : scheme.addColor(RGBColor::BLUE, 0.);
1378 75397 : scheme.addColor(RGBColor::CYAN, 10.);
1379 75397 : scheme.addColor(RGBColor::GREEN, 60.);
1380 75397 : scheme.addColor(RGBColor::YELLOW, 120.);
1381 75397 : scheme.addColor(RGBColor::ORANGE, 300.);
1382 150794 : scheme.addColor(RGBColor::RED, 900.);
1383 : scheme.setAllowsNegativeValues(true);
1384 150794 : vehicleColorer.addScheme(scheme);
1385 150794 : scheme = GUIColorScheme("by lateral speed", TL("by lateral speed"), RGBColor(179, 179, 179, 255), "0", false, 0, COL_SCHEME_DYNAMIC);
1386 75397 : scheme.addColor(RGBColor(255, 0, 0, 255), -3, "-1.5");
1387 75397 : scheme.addColor(RGBColor(255, 255, 0, 255), -1, "-0.5");
1388 75397 : scheme.addColor(RGBColor(0, 255, 255, 255), 1, "0.5");
1389 75397 : scheme.addColor(RGBColor(0, 0, 255, 255), 3, "1.5");
1390 : scheme.setAllowsNegativeValues(true);
1391 150794 : vehicleColorer.addScheme(scheme);
1392 75397 : scheme = GUIColorScheme(SCHEME_NAME_PARAM_NUMERICAL, RGBColor(204, 204, 204));
1393 : scheme.setAllowsNegativeValues(true);
1394 150794 : vehicleColorer.addScheme(scheme);
1395 226191 : vehicleColorer.addScheme(GUIColorScheme("random", TL("random"), RGBColor::YELLOW, "", true));
1396 226191 : vehicleColorer.addScheme(GUIColorScheme("by angle", TL("by angle"), RGBColor::YELLOW, "", true));
1397 :
1398 : /// add person coloring schemes
1399 226191 : personColorer.addScheme(GUIColorScheme("given person/type color", TL("given person/type color"), RGBColor::BLUE, "", true));
1400 226191 : personColorer.addScheme(GUIColorScheme("uniform", TL("uniform"), RGBColor::BLUE, "", true));
1401 226191 : personColorer.addScheme(GUIColorScheme("given/assigned person color", TL("given/assigned person color"), RGBColor::BLUE, "", true));
1402 226191 : personColorer.addScheme(GUIColorScheme("given/assigned type color", TL("given/assigned type color"), RGBColor::BLUE, "", true));
1403 150794 : scheme = GUIColorScheme("by speed", TL("by speed"), RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1404 75397 : scheme.addColor(RGBColor::YELLOW, 2.5 / 3.6);
1405 75397 : scheme.addColor(RGBColor::GREEN, 5. / 3.6);
1406 150794 : scheme.addColor(RGBColor::BLUE, 10. / 3.6);
1407 : scheme.setAllowsNegativeValues(true); // negative speed indicates stopped
1408 75397 : scheme.addColor(RGBColor::GREY, -1.); // stop stage
1409 75397 : scheme.addColor(RGBColor::GREY, -2.); // stop stage (departure)
1410 150794 : personColorer.addScheme(scheme);
1411 150794 : scheme = GUIColorScheme("by mode", TL("by mode"), RGBColor::GREY, TL("waiting for insertion"), true, 0, COL_SCHEME_DYNAMIC);
1412 75397 : scheme.addColor(RGBColor::RED, 1., TL("stopped"));
1413 75397 : scheme.addColor(RGBColor::GREEN, 2., TL("walking"));
1414 75397 : scheme.addColor(RGBColor::BLUE, 3., TL("riding"));
1415 75397 : scheme.addColor(RGBColor::CYAN, 4., TL("accessing trainStop"));
1416 75397 : scheme.addColor(RGBColor::YELLOW, 5., TL("waiting for ride"));
1417 150794 : personColorer.addScheme(scheme);
1418 150794 : scheme = GUIColorScheme("by waiting time", TL("by waiting time"), RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1419 75397 : scheme.addColor(RGBColor::CYAN, 30.);
1420 75397 : scheme.addColor(RGBColor::GREEN, 100.);
1421 75397 : scheme.addColor(RGBColor::YELLOW, 200.);
1422 75397 : scheme.addColor(RGBColor::RED, 300.);
1423 150794 : personColorer.addScheme(scheme);
1424 150794 : scheme = GUIColorScheme("by jammed state", TL("by jammed state"), RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1425 75397 : scheme.addColor(RGBColor::RED, 1.);
1426 150794 : personColorer.addScheme(scheme);
1427 75397 : scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), TL("unselected"), true, 0, COL_SCHEME_MISC);
1428 75397 : scheme.addColor(RGBColor(0, 102, 204, 255), 1, TL("selected"));
1429 150794 : personColorer.addScheme(scheme);
1430 226191 : personColorer.addScheme(GUIColorScheme("by angle", TL("by angle"), RGBColor::YELLOW, "", true));
1431 226191 : personColorer.addScheme(GUIColorScheme("random", TL("random"), RGBColor::YELLOW, "", true));
1432 :
1433 : /// add container coloring schemes
1434 226191 : containerColorer.addScheme(GUIColorScheme("given container/type color", TL("given container/type color"), RGBColor::YELLOW, "", true));
1435 226191 : containerColorer.addScheme(GUIColorScheme("uniform", TL("uniform"), RGBColor::YELLOW, "", true));
1436 226191 : containerColorer.addScheme(GUIColorScheme("given/assigned container color", TL("given/assigned container color"), RGBColor::YELLOW, "", true));
1437 226191 : containerColorer.addScheme(GUIColorScheme("given/assigned type color", TL("given/assigned type color"), RGBColor::YELLOW, "", true));
1438 150794 : scheme = GUIColorScheme("by speed", TL("by speed"), RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1439 75397 : scheme.addColor(RGBColor::YELLOW, 2.5 / 3.6);
1440 75397 : scheme.addColor(RGBColor::GREEN, 5. / 3.6);
1441 75397 : scheme.addColor(RGBColor::BLUE, 10. / 3.6);
1442 150794 : containerColorer.addScheme(scheme);
1443 150794 : scheme = GUIColorScheme("by mode", TL("by mode"), RGBColor::GREY, TL("waiting for insertion"), true, 0, COL_SCHEME_DYNAMIC);
1444 75397 : scheme.addColor(RGBColor::RED, 1., TL("stopped"));
1445 75397 : scheme.addColor(RGBColor::BLUE, 3., TL("transport"));
1446 75397 : scheme.addColor(RGBColor::CYAN, 4., TL("accessing trainStop"));
1447 75397 : scheme.addColor(RGBColor::YELLOW, 5., TL("waiting for transport"));
1448 75397 : scheme.addColor(RGBColor::GREEN, 6., TL("tranship")); // (moving without vehicle)
1449 150794 : containerColorer.addScheme(scheme);
1450 150794 : scheme = GUIColorScheme("by waiting time", TL("by waiting time"), RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1451 75397 : scheme.addColor(RGBColor::CYAN, 30.);
1452 75397 : scheme.addColor(RGBColor::GREEN, 100.);
1453 75397 : scheme.addColor(RGBColor::YELLOW, 200.);
1454 75397 : scheme.addColor(RGBColor::RED, 300.);
1455 150794 : containerColorer.addScheme(scheme);
1456 75397 : scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), TL("unselected"), true, 0, COL_SCHEME_MISC);
1457 75397 : scheme.addColor(RGBColor(0, 102, 204, 255), 1, TL("selected"));
1458 150794 : containerColorer.addScheme(scheme);
1459 226191 : containerColorer.addScheme(GUIColorScheme("by angle", TL("by angle"), RGBColor::YELLOW, "", true));
1460 226191 : containerColorer.addScheme(GUIColorScheme("random", TL("random"), RGBColor::YELLOW, "", true));
1461 :
1462 : /// add junction coloring schemes
1463 150794 : scheme = GUIColorScheme("uniform", TL("uniform"), RGBColor::BLACK, "", true);
1464 75397 : scheme.addColor(RGBColor(150, 200, 200), 1, TL("waterway"));
1465 75397 : scheme.addColor(RGBColor(0, 0, 0, 0), 2, TL("railway"));
1466 75397 : scheme.addColor(RGBColor(200, 240, 240), 3, TL("airway"));
1467 150794 : junctionColorer.addScheme(scheme);
1468 75397 : scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), TL("unselected"), true, 0, COL_SCHEME_MISC);
1469 75397 : scheme.addColor(RGBColor(0, 80, 180, 255), 1, TL("selected"));
1470 150794 : junctionColorer.addScheme(scheme);
1471 75397 : scheme = GUIColorScheme(SCHEME_NAME_TYPE, RGBColor::GREEN, "traffic_light", true);
1472 75397 : scheme.addColor(RGBColor(0, 128, 0), 1, "traffic_light_unregulated");
1473 75397 : scheme.addColor(RGBColor::YELLOW, 2, "priority");
1474 75397 : scheme.addColor(RGBColor::RED, 3, "priority_stop");
1475 75397 : scheme.addColor(RGBColor::BLUE, 4, "right_before_left");
1476 75397 : scheme.addColor(RGBColor::CYAN, 5, "allway_stop");
1477 75397 : scheme.addColor(RGBColor::GREY, 6, "district");
1478 75397 : scheme.addColor(RGBColor::MAGENTA, 7, "unregulated");
1479 75397 : scheme.addColor(RGBColor::BLACK, 8, "dead_end");
1480 75397 : scheme.addColor(RGBColor::ORANGE, 9, "rail_signal");
1481 75397 : scheme.addColor(RGBColor(172, 108, 44), 10, "zipper"); // brown, darker than the zipper link rule
1482 75397 : scheme.addColor(RGBColor(192, 255, 192), 11, "traffic_light_right_on_red"); // light green
1483 75397 : scheme.addColor(RGBColor(128, 0, 128), 12, "rail_crossing"); // dark purple
1484 75397 : scheme.addColor(RGBColor(0, 0, 128), 13, "left_before_right"); // dark blue
1485 150794 : junctionColorer.addScheme(scheme);
1486 150794 : scheme = GUIColorScheme("by height", TL("by height"), RGBColor::GREY);
1487 75397 : scheme.addColor(RGBColor::BLUE, -10.);
1488 75397 : scheme.addColor(RGBColor::RED, 10.);
1489 75397 : scheme.addColor(RGBColor::YELLOW, 50.);
1490 75397 : scheme.addColor(RGBColor::GREEN, 100.);
1491 150794 : scheme.addColor(RGBColor::MAGENTA, 200.);
1492 : scheme.setAllowsNegativeValues(true);
1493 150794 : junctionColorer.addScheme(scheme);
1494 :
1495 : /// add POI coloring schemes
1496 226191 : poiColorer.addScheme(GUIColorScheme("given POI color", TL("given POI color"), RGBColor::RED, "", true));
1497 75397 : scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), TL("unselected"), true, 0, COL_SCHEME_MISC);
1498 75397 : scheme.addColor(RGBColor(0, 102, 204, 255), 1, TL("selected"));
1499 150794 : poiColorer.addScheme(scheme);
1500 226191 : poiColorer.addScheme(GUIColorScheme("uniform", TL("uniform"), RGBColor::RED, "", true));
1501 :
1502 : /// add polygon coloring schemes
1503 226191 : polyColorer.addScheme(GUIColorScheme("given polygon color", TL("given polygon color"), RGBColor::ORANGE, "", true));
1504 75397 : scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), TL("unselected"), true, 0, COL_SCHEME_MISC);
1505 75397 : scheme.addColor(RGBColor(0, 102, 204, 255), 1, TL("selected"));
1506 150794 : polyColorer.addScheme(scheme);
1507 226191 : polyColorer.addScheme(GUIColorScheme("uniform", TL("uniform"), RGBColor::ORANGE, "", true));
1508 226191 : polyColorer.addScheme(GUIColorScheme("random", TL("random"), RGBColor::YELLOW, "", true));
1509 :
1510 : /// add lane scaling schemes
1511 : {
1512 150794 : GUIScaleScheme laneScheme = GUIScaleScheme(TL("default"), 1, TL("uniform"), true);
1513 150794 : laneScaler.addScheme(laneScheme);
1514 75397 : laneScheme = GUIScaleScheme(SCHEME_NAME_SELECTION, 0.5, TL("unselected"), true, 0, COL_SCHEME_MISC);
1515 75397 : laneScheme.addColor(5, 1, TL("selected"));
1516 150794 : laneScaler.addScheme(laneScheme);
1517 : // ... traffic states ...
1518 150794 : laneScheme = GUIScaleScheme(TL("by allowed speed (lanewise)"), 0);
1519 75397 : laneScheme.addColor(10, 150. / 3.6);
1520 150794 : laneScaler.addScheme(laneScheme);
1521 150794 : laneScheme = GUIScaleScheme(TL("by current occupancy (lanewise, brutto)"), 0, "", false, 0, COL_SCHEME_DYNAMIC);
1522 75397 : laneScheme.addColor(10, 0.95);
1523 150794 : laneScaler.addScheme(laneScheme);
1524 150794 : laneScheme = GUIScaleScheme(TL("by current occupancy (lanewise, netto)"), 0, "", false, 0, COL_SCHEME_DYNAMIC);
1525 75397 : laneScheme.addColor(10, 0.95);
1526 150794 : laneScaler.addScheme(laneScheme);
1527 150794 : laneScheme = GUIScaleScheme(TL("by first vehicle waiting time (lanewise)"), 0, "", false, 0, COL_SCHEME_DYNAMIC);
1528 75397 : laneScheme.addColor(10, 300.);
1529 150794 : laneScaler.addScheme(laneScheme);
1530 150794 : laneScheme = GUIScaleScheme(TL("by lane number (streetwise)"), 1);
1531 75397 : laneScheme.addColor(10, 5.);
1532 150794 : laneScaler.addScheme(laneScheme);
1533 : // ... emissions ...
1534 150794 : laneScheme = GUIScaleScheme(TL("by CO2 emissions"), 0, "", false, 0, COL_SCHEME_EMISSION);
1535 75397 : laneScheme.addColor(10, 10. / 7.5 / 5.);
1536 150794 : laneScaler.addScheme(laneScheme);
1537 150794 : laneScheme = GUIScaleScheme(TL("by CO emissions"), 0, "", false, 0, COL_SCHEME_EMISSION);
1538 75397 : laneScheme.addColor(10, 0.05 / 7.5 / 2.);
1539 150794 : laneScaler.addScheme(laneScheme);
1540 150794 : laneScheme = GUIScaleScheme(TL("by PMx emissions"), 0, "", false, 0, COL_SCHEME_EMISSION);
1541 75397 : laneScheme.addColor(10, .005 / 7.5 / 5.);
1542 150794 : laneScaler.addScheme(laneScheme);
1543 150794 : laneScheme = GUIScaleScheme(TL("by NOx emissions"), 0, "", false, 0, COL_SCHEME_EMISSION);
1544 75397 : laneScheme.addColor(10, .125 / 7.5 / 5.);
1545 150794 : laneScaler.addScheme(laneScheme);
1546 150794 : laneScheme = GUIScaleScheme(TL("by HC emissions"), 0, "", false, 0, COL_SCHEME_EMISSION);
1547 75397 : laneScheme.addColor(10, .02 / 7.5 / 4.);
1548 150794 : laneScaler.addScheme(laneScheme);
1549 150794 : laneScheme = GUIScaleScheme(TL("by fuel consumption"), 0, "", false, 0, COL_SCHEME_EMISSION);
1550 75397 : laneScheme.addColor(10, .005 / 7.5 * 100.);
1551 150794 : laneScaler.addScheme(laneScheme);
1552 150794 : laneScheme = GUIScaleScheme(TL("by noise emissions (Harmonoise)"), 0, "", false, 0, COL_SCHEME_EMISSION);
1553 75397 : laneScheme.addColor(10, 100.);
1554 150794 : laneScaler.addScheme(laneScheme);
1555 : // ... weights (experimental) ...
1556 150794 : laneScheme = GUIScaleScheme(TL("by global travel time"), 0);
1557 75397 : laneScheme.addColor(10, 100.);
1558 : laneScheme.setAllowsNegativeValues(true);
1559 150794 : laneScaler.addScheme(laneScheme);
1560 150794 : laneScheme = GUIScaleScheme(TL("by global speed percentage"), 0);
1561 75397 : laneScheme.addColor(10, 100.);
1562 : laneScheme.setAllowsNegativeValues(true);
1563 150794 : laneScaler.addScheme(laneScheme);
1564 150794 : laneScheme = GUIScaleScheme(TL("by given length/geometrical length"), 0);
1565 75397 : laneScheme.addColor(10, 10.);
1566 150794 : laneScaler.addScheme(laneScheme);
1567 150794 : laneScheme = GUIScaleScheme(TL("by loaded weight"), 0);
1568 75397 : laneScheme.addColor(-1000, -1000.);
1569 75397 : laneScheme.addColor(1000, 1000.);
1570 : laneScheme.setAllowsNegativeValues(true);
1571 150794 : laneScaler.addScheme(laneScheme);
1572 150794 : laneScheme = GUIScaleScheme(TL("by priority"), 1);
1573 75397 : laneScheme.addColor(0.5, -20.);
1574 75397 : laneScheme.addColor(5, 20.);
1575 : laneScheme.setAllowsNegativeValues(true);
1576 150794 : laneScaler.addScheme(laneScheme);
1577 150794 : laneScheme = GUIScaleScheme(TL("by average speed"), 0, "", false, 0, COL_SCHEME_DYNAMIC);
1578 75397 : laneScheme.addColor(10, 150. / 3.6);
1579 150794 : laneScaler.addScheme(laneScheme);
1580 150794 : laneScheme = GUIScaleScheme(TL("by average relative speed"), 0, "", false, 0, COL_SCHEME_DYNAMIC);
1581 75397 : laneScheme.addColor(0.5, 0.5);
1582 75397 : laneScheme.addColor(2, 1.);
1583 75397 : laneScheme.addColor(10, 2.);
1584 150794 : laneScaler.addScheme(laneScheme);
1585 150794 : laneScheme = GUIScaleScheme(TL("by electricity consumption"), 0, "", false, 0, COL_SCHEME_EMISSION);
1586 75397 : laneScheme.addColor(10, 1. / 7.5 / 5.);
1587 150794 : laneScaler.addScheme(laneScheme);
1588 150794 : laneScheme = GUIScaleScheme(TL("by insertion-backlog (streetwise)"), 0, "", false, 0, COL_SCHEME_DYNAMIC);
1589 75397 : laneScheme.addColor(1, 1.);
1590 75397 : laneScheme.addColor(10, 10.);
1591 75397 : laneScheme.addColor(50, 100.);
1592 150794 : laneScaler.addScheme(laneScheme);
1593 75397 : laneScheme = GUIScaleScheme(SCHEME_NAME_EDGEDATA_NUMERICAL, 0.1, TL("missing data"), false, MISSING_DATA);
1594 75397 : laneScheme.addColor(1, 1.);
1595 75397 : laneScheme.addColor(2, 10.);
1596 75397 : laneScheme.addColor(5, 100.);
1597 75397 : laneScheme.addColor(10, 1000.);
1598 : laneScheme.setAllowsNegativeValues(true);
1599 150794 : laneScaler.addScheme(laneScheme);
1600 75397 : }
1601 :
1602 : /// add edge coloring schemes
1603 226191 : edgeColorer.addScheme(GUIColorScheme("uniform", TL("uniform"), RGBColor(0, 0, 0, 0), "", true));
1604 75397 : scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), TL("unselected"), true, 0, COL_SCHEME_MISC);
1605 75397 : scheme.addColor(RGBColor(0, 80, 180, 255), 1., TL("selected"));
1606 150794 : edgeColorer.addScheme(scheme);
1607 150794 : scheme = GUIColorScheme("by purpose (streetwise)", TL("by purpose (streetwise)"), RGBColor(), TL("normal"), true);
1608 75397 : scheme.addColor(RGBColor(128, 0, 128, 255), 1., TL("connector")); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_CONNECTOR
1609 75397 : scheme.addColor(RGBColor::BLUE, 2., TL("internal")); // see MSEdge::EdgeBasicFunction::EDGEFUNCTION_INTERNAL
1610 150794 : edgeColorer.addScheme(scheme);
1611 150794 : scheme = GUIColorScheme("by allowed speed (streetwise)", TL("by allowed speed (streetwise)"), RGBColor::RED);
1612 75397 : scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1613 75397 : scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1614 75397 : scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1615 75397 : scheme.addColor(RGBColor::BLUE, 120. / 3.6);
1616 75397 : scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1617 150794 : edgeColorer.addScheme(scheme);
1618 150794 : scheme = GUIColorScheme("by current occupancy (streetwise, brutto)", TL("by current occupancy (streetwise, brutto)"), RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1619 75397 : scheme.addColor(RGBColor::RED, 0.95);
1620 150794 : edgeColorer.addScheme(scheme);
1621 150794 : scheme = GUIColorScheme("by current speed (streetwise)", TL("by current speed (streetwise)"), RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1622 75397 : scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1623 75397 : scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1624 75397 : scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1625 75397 : scheme.addColor(RGBColor::BLUE, 120. / 3.6);
1626 75397 : scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1627 150794 : edgeColorer.addScheme(scheme);
1628 150794 : scheme = GUIColorScheme("by current flow (streetwise)", TL("by current flow (streetwise)"), RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1629 75397 : scheme.addColor(RGBColor::RED, 5000.);
1630 150794 : edgeColorer.addScheme(scheme);
1631 150794 : scheme = GUIColorScheme("by relative speed (streetwise)", TL("by relative speed (streetwise)"), RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1632 75397 : scheme.addColor(RGBColor::YELLOW, 0.25);
1633 75397 : scheme.addColor(RGBColor::GREEN, 0.5);
1634 75397 : scheme.addColor(RGBColor::CYAN, 0.75);
1635 75397 : scheme.addColor(RGBColor::BLUE, 1.);
1636 75397 : scheme.addColor(RGBColor::MAGENTA, 1.25);
1637 150794 : edgeColorer.addScheme(scheme);
1638 150794 : scheme = GUIColorScheme("by routing device assumed speed", TL("by routing device assumed speed"), RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1639 75397 : scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1640 75397 : scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1641 75397 : scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1642 75397 : scheme.addColor(RGBColor::BLUE, 120. / 3.6);
1643 75397 : scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1644 150794 : edgeColorer.addScheme(scheme);
1645 226191 : edgeColorer.addScheme(GUIColorScheme("by angle", TL("by angle"), RGBColor::YELLOW, "", true));
1646 150794 : scheme = GUIColorScheme("by segments (alternating)", TL("by segments (alternating)"), RGBColor::BLUE, TL("odd"), true);
1647 75397 : scheme.addColor(RGBColor::RED, 1., TL("even"));
1648 150794 : edgeColorer.addScheme(scheme);
1649 150794 : scheme = GUIColorScheme("by jammed state (segmentwise)", TL("by jammed state (segmentwise)"), RGBColor::GREEN, TL("free"), true, 0, COL_SCHEME_DYNAMIC);
1650 75397 : scheme.addColor(RGBColor::YELLOW, 1., TL("limitedControl"));
1651 75397 : scheme.addColor(RGBColor::RED, 2., TL("jammed"));
1652 150794 : edgeColorer.addScheme(scheme);
1653 150794 : scheme = GUIColorScheme("by current occupancy (segmentwise, brutto)", TL("by current occupancy (segmentwise, brutto)"), RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1654 75397 : scheme.addColor(RGBColor::RED, 0.95);
1655 150794 : edgeColorer.addScheme(scheme);
1656 150794 : scheme = GUIColorScheme("by current speed (segmentwise)", TL("by current speed (segmentwise)"), RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1657 75397 : scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1658 75397 : scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1659 75397 : scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1660 75397 : scheme.addColor(RGBColor::BLUE, 120 / 3.6);
1661 75397 : scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1662 150794 : edgeColorer.addScheme(scheme);
1663 150794 : scheme = GUIColorScheme("by current flow (segmentwise)", TL("by current flow (segmentwise)"), RGBColor::BLUE, "", false, 0, COL_SCHEME_DYNAMIC);
1664 75397 : scheme.addColor(RGBColor::RED, 5000.);
1665 150794 : edgeColorer.addScheme(scheme);
1666 150794 : scheme = GUIColorScheme("by relative speed (segmentwise)", TL("by relative speed (segmentwise)"), RGBColor::RED, "", false, 0, COL_SCHEME_DYNAMIC);
1667 75397 : scheme.addColor(RGBColor::YELLOW, 0.25);
1668 75397 : scheme.addColor(RGBColor::GREEN, 0.5);
1669 75397 : scheme.addColor(RGBColor::CYAN, 0.75);
1670 75397 : scheme.addColor(RGBColor::BLUE, 1.);
1671 75397 : scheme.addColor(RGBColor::MAGENTA, 1.25);
1672 150794 : edgeColorer.addScheme(scheme);
1673 150794 : scheme = GUIColorScheme("by insertion-backlog (streetwise)", TL("by insertion-backlog (streetwise)"), RGBColor::GREY, "", false, 0, COL_SCHEME_DYNAMIC);
1674 75397 : scheme.addColor(RGBColor::GREEN, 1.);
1675 75397 : scheme.addColor(RGBColor::YELLOW, 10.);
1676 75397 : scheme.addColor(RGBColor::RED, 100.);
1677 150794 : edgeColorer.addScheme(scheme);
1678 150794 : scheme = GUIColorScheme("by TAZ (streetwise)", TL("by TAZ (streetwise)"), RGBColor(204, 204, 204), TL("no TAZ"), true);
1679 150794 : edgeColorer.addScheme(scheme);
1680 75397 : scheme = GUIColorScheme(SCHEME_NAME_EDGE_PARAM_NUMERICAL, RGBColor(204, 204, 204));
1681 : scheme.setAllowsNegativeValues(true);
1682 150794 : edgeColorer.addScheme(scheme);
1683 150794 : scheme = GUIColorScheme(SCHEME_NAME_EDGEDATA_NUMERICAL, COL_MISSING_DATA, TL("missing data"), false, MISSING_DATA);
1684 : scheme.setAllowsNegativeValues(true);
1685 150794 : edgeColorer.addScheme(scheme);
1686 :
1687 : /// add edge scaling schemes
1688 : {
1689 226191 : edgeScaler.addScheme(GUIScaleScheme(TL("uniform"), 1, "", true));
1690 75397 : GUIScaleScheme edgeScheme = GUIScaleScheme(SCHEME_NAME_SELECTION, 0.5, TL("unselected"), true, 0, COL_SCHEME_MISC);
1691 75397 : edgeScheme.addColor(5, 1., TL("selected"));
1692 150794 : edgeScaler.addScheme(edgeScheme);
1693 150794 : edgeScheme = GUIScaleScheme(TL("by allowed speed (streetwise)"), 0);
1694 75397 : edgeScheme.addColor(10, 150. / 3.6);
1695 150794 : edgeScaler.addScheme(edgeScheme);
1696 150794 : edgeScheme = GUIScaleScheme(TL("by current occupancy (streetwise, brutto)"), 0, "", false, 0, COL_SCHEME_DYNAMIC);
1697 75397 : edgeScheme.addColor(10, 0.95);
1698 150794 : edgeScaler.addScheme(edgeScheme);
1699 150794 : edgeScheme = GUIScaleScheme(TL("by current speed (streetwise)"), 0, "", false, 0, COL_SCHEME_DYNAMIC);
1700 75397 : edgeScheme.addColor(10, 150. / 3.6);
1701 150794 : edgeScaler.addScheme(edgeScheme);
1702 150794 : edgeScheme = GUIScaleScheme(TL("by current flow (streetwise)"), 0, "", false, 0, COL_SCHEME_DYNAMIC);
1703 75397 : edgeScheme.addColor(20, 5000.);
1704 150794 : edgeScaler.addScheme(edgeScheme);
1705 150794 : edgeScheme = GUIScaleScheme(TL("by relative speed (streetwise)"), 0, "", false, 0, COL_SCHEME_DYNAMIC);
1706 75397 : edgeScheme.addColor(20, 1.);
1707 150794 : edgeScaler.addScheme(edgeScheme);
1708 150794 : edgeScheme = GUIScaleScheme(TL("by insertion-backlog (streetwise)"), 0, "", false, 0, COL_SCHEME_DYNAMIC);
1709 75397 : edgeScheme.addColor(1, 1.);
1710 75397 : edgeScheme.addColor(10, 10.);
1711 75397 : edgeScheme.addColor(50, 100.);
1712 150794 : edgeScaler.addScheme(edgeScheme);
1713 75397 : edgeScheme = GUIScaleScheme(SCHEME_NAME_EDGEDATA_NUMERICAL, 0.1, TL("missing data"), false, MISSING_DATA);
1714 75397 : edgeScheme.addColor(1, 1.);
1715 75397 : edgeScheme.addColor(2, 10.);
1716 75397 : edgeScheme.addColor(5, 100.);
1717 75397 : edgeScheme.addColor(10, 1000.);
1718 150794 : edgeScaler.addScheme(edgeScheme);
1719 : edgeScheme.setAllowsNegativeValues(true);
1720 150794 : edgeScaler.addScheme(edgeScheme);
1721 75397 : }
1722 :
1723 : /// add vehicle scaling schemes
1724 : {
1725 226191 : vehicleScaler.addScheme(GUIScaleScheme(TL("uniform"), 1, "", true));
1726 75397 : GUIScaleScheme vehScheme = GUIScaleScheme(SCHEME_NAME_SELECTION, 1, TL("unselected"), true, 0, COL_SCHEME_MISC);
1727 75397 : vehScheme.addColor(5, 1., TL("selected"));
1728 150794 : vehicleScaler.addScheme(vehScheme);
1729 150794 : vehScheme = GUIScaleScheme(TL("by speed"), 1, "", false, 1, COL_SCHEME_DYNAMIC);
1730 75397 : vehScheme.addColor(5, 150. / 3.6);
1731 : vehScheme.setAllowsNegativeValues(true); // negative speed indicates stopped
1732 75397 : vehScheme.addColor(1, -1.); // stopped on road
1733 75397 : vehScheme.addColor(0.5, -2.); // stopped off-road (parking)
1734 150794 : vehicleScaler.addScheme(vehScheme);
1735 150794 : vehScheme = GUIScaleScheme(TL("by waiting time"), 1, "", false, 1, COL_SCHEME_DYNAMIC);
1736 75397 : vehScheme.addColor(1, 30.);
1737 75397 : vehScheme.addColor(2, 100.);
1738 75397 : vehScheme.addColor(4, 200.);
1739 75397 : vehScheme.addColor(10, 300.);
1740 150794 : vehicleScaler.addScheme(vehScheme);
1741 150794 : vehScheme = GUIScaleScheme(TL("by accumulated waiting time"), 1, "", false, 1, COL_SCHEME_DYNAMIC);
1742 75397 : vehScheme.addColor(5, 100.);
1743 150794 : vehicleScaler.addScheme(vehScheme);
1744 150794 : vehScheme = GUIScaleScheme(TL("by max speed"), 1);
1745 75397 : vehScheme.addColor(1, 30. / 3.6);
1746 75397 : vehScheme.addColor(1, 55. / 3.6);
1747 75397 : vehScheme.addColor(1, 80. / 3.6);
1748 75397 : vehScheme.addColor(1, 120. / 3.6);
1749 75397 : vehScheme.addColor(1, 150. / 3.6);
1750 150794 : vehicleScaler.addScheme(vehScheme);
1751 150794 : vehScheme = GUIScaleScheme(TL("by reroute number"), 1, "", false, 0, COL_SCHEME_DYNAMIC);
1752 75397 : vehScheme.addColor(1, 1.);
1753 75397 : vehScheme.addColor(5, 10.);
1754 150794 : vehicleScaler.addScheme(vehScheme);
1755 150794 : vehScheme = GUIScaleScheme(TL("by offset from best lane"), 0.8, "0", false, 0, COL_SCHEME_DYNAMIC);
1756 75397 : vehScheme.addColor(5, -100, TL("opposite lane"));
1757 75397 : vehScheme.addColor(3, -3, "-3");
1758 75397 : vehScheme.addColor(1.5, -1, "-1");
1759 75397 : vehScheme.addColor(1.5, 1, "1");
1760 75397 : vehScheme.addColor(3, 3, "3");
1761 : vehScheme.setAllowsNegativeValues(true);
1762 150794 : vehicleScaler.addScheme(vehScheme);
1763 150794 : vehScheme = GUIScaleScheme(TL("by acceleration"), 0.8, "0", false, 0, COL_SCHEME_DYNAMIC);
1764 75397 : vehScheme.addColor(4, -9.0);
1765 75397 : vehScheme.addColor(2, -4.5 /* -SUMOVTypeParameter::getDefaultDecel() */);
1766 75397 : vehScheme.addColor(1, -0.1);
1767 75397 : vehScheme.addColor(1, 0.1);
1768 75397 : vehScheme.addColor(1, 2.6 /* SUMOVTypeParameter::getDefaultAccel() */);
1769 75397 : vehScheme.addColor(3, 5.2);
1770 : vehScheme.setAllowsNegativeValues(true);
1771 150794 : vehicleScaler.addScheme(vehScheme);
1772 150794 : vehScheme = GUIScaleScheme(TL("by time gap on lane"), 5, "0", false, 0, COL_SCHEME_DYNAMIC);
1773 75397 : vehScheme.addColor(1, -1);
1774 75397 : vehScheme.addColor(1, 1);
1775 75397 : vehScheme.addColor(0.5, 2);
1776 : vehScheme.setAllowsNegativeValues(true);
1777 150794 : vehicleScaler.addScheme(vehScheme);
1778 150794 : vehScheme = GUIScaleScheme(TL("by depart delay"), 0.8);
1779 75397 : vehScheme.addColor(1, 10.);
1780 75397 : vehScheme.addColor(2, 100.);
1781 75397 : vehScheme.addColor(3, 200.);
1782 75397 : vehScheme.addColor(5, 300.);
1783 150794 : vehicleScaler.addScheme(vehScheme);
1784 150794 : vehScheme = GUIScaleScheme(TL("by time loss"), 1, "", false, 0, COL_SCHEME_DYNAMIC);
1785 75397 : vehScheme.addColor(1, 10.);
1786 75397 : vehScheme.addColor(2, 60.);
1787 75397 : vehScheme.addColor(3, 180.);
1788 75397 : vehScheme.addColor(10, 900.);
1789 150794 : vehicleScaler.addScheme(vehScheme);
1790 150794 : vehScheme = GUIScaleScheme(TL("by stop delay"), 0.1, "", false, -1, COL_SCHEME_DYNAMIC);
1791 75397 : vehScheme.addColor(1, 0.);
1792 75397 : vehScheme.addColor(2, 10.);
1793 75397 : vehScheme.addColor(3, 60.);
1794 75397 : vehScheme.addColor(4, 120.);
1795 75397 : vehScheme.addColor(5, 300.);
1796 75397 : vehScheme.addColor(10, 900.);
1797 : vehScheme.setAllowsNegativeValues(true);
1798 150794 : vehicleScaler.addScheme(vehScheme);
1799 150794 : vehScheme = GUIScaleScheme(TL("by stop arrival delay"), 0.1, "", false, INVALID_DOUBLE, COL_SCHEME_DYNAMIC);
1800 75397 : vehScheme.addColor(0.5, -10.);
1801 75397 : vehScheme.addColor(1, 0.);
1802 75397 : vehScheme.addColor(2, 10.);
1803 75397 : vehScheme.addColor(3, 60.);
1804 75397 : vehScheme.addColor(4, 120.);
1805 75397 : vehScheme.addColor(5, 300.);
1806 75397 : vehScheme.addColor(10, 900.);
1807 : vehScheme.setAllowsNegativeValues(true);
1808 150794 : vehicleScaler.addScheme(vehScheme);
1809 75397 : vehScheme = GUIScaleScheme(SCHEME_NAME_PARAM_NUMERICAL, 1);
1810 : vehScheme.setAllowsNegativeValues(true);
1811 150794 : vehicleScaler.addScheme(vehScheme);
1812 75397 : }
1813 75397 : }
1814 :
1815 :
1816 : void
1817 0 : GUIVisualizationSettings::initNeteditDefaults() {
1818 : // init color schemes
1819 0 : GUIColorScheme scheme = GUIColorScheme("uniform", TL("uniform"), RGBColor::BLACK, TL("road"), true);
1820 0 : scheme.addColor(RGBColor::GREY, 1, TL("sidewalk"));
1821 0 : scheme.addColor(RGBColor(192, 66, 44), 2, TL("bike lane"));
1822 0 : scheme.addColor(RGBColor(200, 255, 200), 3, TL("green verge"));
1823 0 : scheme.addColor(RGBColor(150, 200, 200), 4, TL("waterway"));
1824 0 : scheme.addColor(RGBColor::BLACK, 5, TL("railway"));
1825 0 : scheme.addColor(RGBColor(64, 0, 64), 6, TL("rails on road"));
1826 0 : scheme.addColor(RGBColor(92, 92, 92), 7, TL("no passenger")); // paths, service roads etc
1827 0 : scheme.addColor(RGBColor::RED, 8, TL("closed")); // road closing
1828 0 : scheme.addColor(RGBColor::GREEN, 9, TL("connector")); // macro-connector
1829 0 : scheme.addColor(RGBColor::ORANGE, 10, TL("forbidden")); // forbidden road
1830 0 : scheme.addColor(RGBColor(145, 145, 145), 11, TL("data mode"));
1831 0 : scheme.addColor(RGBColor(200, 240, 240), 12, TL("airway"));
1832 0 : laneColorer.addScheme(scheme);
1833 0 : scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), TL("unselected"), true, 0, COL_SCHEME_MISC);
1834 0 : scheme.addColor(RGBColor(0, 80, 180, 255), 1., TL("selected"));
1835 0 : laneColorer.addScheme(scheme);
1836 0 : scheme = GUIColorScheme("by permission code", TL("by permission code"), RGBColor(240, 240, 240), "nobody");
1837 0 : scheme.addColor(RGBColor(10, 10, 10), (double)SVC_PASSENGER, "passenger");
1838 0 : scheme.addColor(RGBColor(128, 128, 128), (double)SVC_PEDESTRIAN, "pedestrian");
1839 0 : scheme.addColor(RGBColor(80, 80, 80), (double)(SVC_PEDESTRIAN | SVC_DELIVERY), "pedestrian_delivery");
1840 0 : scheme.addColor(RGBColor(192, 66, 44), (double)SVC_BICYCLE, "bicycle");
1841 0 : scheme.addColor(RGBColor(40, 100, 40), (double)SVC_BUS, "bus");
1842 0 : scheme.addColor(RGBColor(166, 147, 26), (double)SVC_TAXI, "taxi");
1843 0 : scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~SVC_NON_ROAD), "normal_road");
1844 0 : scheme.addColor(RGBColor::BLACK, (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_NON_ROAD)), "disallow_pedestrian");
1845 0 : scheme.addColor(RGBColor(255, 206, 0), (double)(SVCAll & ~(SVC_PEDESTRIAN | SVC_BICYCLE | SVC_MOPED | SVC_NON_ROAD)), "motorway");
1846 0 : scheme.addColor(RGBColor(150, 200, 200), (double)SVC_SHIP, "waterway");
1847 0 : scheme.addColor(RGBColor::GREEN, (double)SVCAll, "all");
1848 0 : laneColorer.addScheme(scheme);
1849 :
1850 0 : scheme = GUIColorScheme("by allowed speed (lanewise)", RGBColor::RED);
1851 0 : scheme.addColor(RGBColor::YELLOW, 30. / 3.6);
1852 0 : scheme.addColor(RGBColor::GREEN, 55. / 3.6);
1853 0 : scheme.addColor(RGBColor::CYAN, 80. / 3.6);
1854 0 : scheme.addColor(RGBColor::BLUE, 120. / 3.6);
1855 0 : scheme.addColor(RGBColor::MAGENTA, 150. / 3.6);
1856 0 : laneColorer.addScheme(scheme);
1857 :
1858 0 : scheme = GUIColorScheme("by lane number (streetwise)", RGBColor::RED);
1859 0 : scheme.addColor(RGBColor::BLUE, 5.);
1860 0 : laneColorer.addScheme(scheme);
1861 :
1862 0 : scheme = GUIColorScheme("by given length/geometrical length", RGBColor::RED);
1863 0 : scheme.addColor(RGBColor::ORANGE, 0.25);
1864 0 : scheme.addColor(RGBColor::YELLOW, 0.5);
1865 0 : scheme.addColor(RGBColor(179, 179, 179, 255), 1.);
1866 0 : scheme.addColor(RGBColor::GREEN, 2.);
1867 0 : scheme.addColor(RGBColor::CYAN, 4.);
1868 0 : scheme.addColor(RGBColor::BLUE, 100.);
1869 0 : laneColorer.addScheme(scheme);
1870 0 : laneColorer.addScheme(GUIColorScheme("by angle", TL("by angle"), RGBColor::YELLOW, "", true));
1871 :
1872 0 : scheme = GUIColorScheme("by priority", TL("by priority"), RGBColor::YELLOW);
1873 0 : scheme.addColor(RGBColor::RED, -20.);
1874 0 : scheme.addColor(RGBColor::GREEN, 20.);
1875 : scheme.setAllowsNegativeValues(true);
1876 0 : laneColorer.addScheme(scheme);
1877 0 : scheme = GUIColorScheme("by height at start", TL("by height at start"), RGBColor::RED);
1878 0 : scheme.addColor(RGBColor::BLUE, -10.);
1879 0 : scheme.addColor(RGBColor::YELLOW, 50.);
1880 0 : scheme.addColor(RGBColor::GREEN, 100.);
1881 0 : scheme.addColor(RGBColor::MAGENTA, 200.);
1882 : scheme.setAllowsNegativeValues(true);
1883 0 : laneColorer.addScheme(scheme);
1884 0 : scheme = GUIColorScheme("by height at segment start", TL("by height at segment start"), RGBColor::RED);
1885 0 : scheme.addColor(RGBColor::BLUE, -10.);
1886 0 : scheme.addColor(RGBColor::YELLOW, 50.);
1887 0 : scheme.addColor(RGBColor::GREEN, 100.);
1888 0 : scheme.addColor(RGBColor::MAGENTA, 200.);
1889 : scheme.setAllowsNegativeValues(true);
1890 0 : laneColorer.addScheme(scheme);
1891 0 : scheme = GUIColorScheme("by inclination", TL("by inclination"), RGBColor::GREY);
1892 0 : scheme.addColor(RGBColor::YELLOW, 0.1);
1893 0 : scheme.addColor(RGBColor::RED, 0.3);
1894 0 : scheme.addColor(RGBColor::GREEN, -0.1);
1895 0 : scheme.addColor(RGBColor::BLUE, -0.3);
1896 : scheme.setAllowsNegativeValues(true);
1897 0 : laneColorer.addScheme(scheme);
1898 0 : scheme = GUIColorScheme("by segment inclination", TL("by segment inclination"), RGBColor::GREY);
1899 0 : scheme.addColor(RGBColor::YELLOW, 0.1);
1900 0 : scheme.addColor(RGBColor::RED, 0.3);
1901 0 : scheme.addColor(RGBColor::GREEN, -0.1);
1902 0 : scheme.addColor(RGBColor::BLUE, -0.3);
1903 : scheme.setAllowsNegativeValues(true);
1904 0 : laneColorer.addScheme(scheme);
1905 0 : scheme = GUIColorScheme(SCHEME_NAME_EDGE_PARAM_NUMERICAL, RGBColor(204, 204, 204));
1906 : scheme.setAllowsNegativeValues(true);
1907 0 : laneColorer.addScheme(scheme);
1908 0 : scheme = GUIColorScheme(SCHEME_NAME_LANE_PARAM_NUMERICAL, RGBColor(204, 204, 204));
1909 : scheme.setAllowsNegativeValues(true);
1910 0 : laneColorer.addScheme(scheme);
1911 0 : scheme = GUIColorScheme("by distance (kilometrage)", RGBColor(204, 204, 204));
1912 0 : scheme.addColor(RGBColor::RED, 1.);
1913 0 : scheme.addColor(RGBColor::RED, -1.);
1914 : scheme.setAllowsNegativeValues(true);
1915 0 : laneColorer.addScheme(scheme);
1916 0 : scheme = GUIColorScheme("by abs distance (kilometrage)", RGBColor(204, 204, 204));
1917 0 : scheme.addColor(RGBColor::RED, 1.);
1918 : scheme.setAllowsNegativeValues(false);
1919 0 : laneColorer.addScheme(scheme);
1920 0 : scheme = GUIColorScheme(SCHEME_NAME_EDGEDATA_NUMERICAL, COL_MISSING_DATA, TL("missing data"), false, MISSING_DATA);
1921 : scheme.setAllowsNegativeValues(true);
1922 0 : laneColorer.addScheme(scheme);
1923 :
1924 0 : scheme = GUIColorScheme("uniform", TL("uniform"), RGBColor(102, 0, 0), "", true);
1925 0 : scheme.addColor(RGBColor(204, 0, 0), 1, TL("junction bubble"));
1926 0 : scheme.addColor(RGBColor(230, 100, 115), 2, TL("geometry points"));
1927 0 : scheme.addColor(GUIVisualizationColorSettings::SUMO_color_DEADEND_SHOW, 3, TL("connections missing"));
1928 0 : scheme.addColor(RGBColor::GREEN, 3, TL("custom shape"));
1929 0 : scheme.addColor(RGBColor(205, 180, 180), 4, TL("data mode"));
1930 0 : junctionColorer.addScheme(scheme);
1931 0 : scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), TL("unselected"), true, 0, COL_SCHEME_MISC);
1932 0 : scheme.addColor(RGBColor(0, 80, 180, 255), 1, TL("selected"));
1933 0 : junctionColorer.addScheme(scheme);
1934 0 : scheme = GUIColorScheme(SCHEME_NAME_TYPE, RGBColor::GREEN, "traffic_light", true);
1935 0 : scheme.addColor(RGBColor(0, 128, 0), 1, "traffic_light_unregulated");
1936 0 : scheme.addColor(RGBColor::YELLOW, 2, "priority");
1937 0 : scheme.addColor(RGBColor::RED, 3, "priority_stop");
1938 0 : scheme.addColor(RGBColor::BLUE, 4, "right_before_left");
1939 0 : scheme.addColor(RGBColor::CYAN, 5, "allway_stop");
1940 0 : scheme.addColor(RGBColor::GREY, 6, "district");
1941 0 : scheme.addColor(RGBColor::MAGENTA, 7, "unregulated");
1942 0 : scheme.addColor(RGBColor::BLACK, 8, "dead_end");
1943 0 : scheme.addColor(RGBColor::ORANGE, 9, "rail_signal");
1944 0 : scheme.addColor(RGBColor(172, 108, 44), 10, "zipper"); // brown, darker than the zipper link rule
1945 0 : scheme.addColor(RGBColor(192, 255, 192), 11, "traffic_light_right_on_red");
1946 0 : scheme.addColor(RGBColor(128, 0, 128), 12, "rail_crossing"); // dark purple
1947 0 : scheme.addColor(RGBColor(0, 0, 128), 13, "left_before_right"); // dark blue
1948 0 : junctionColorer.addScheme(scheme);
1949 0 : scheme = GUIColorScheme("by height", TL("by height"), RGBColor::GREY);
1950 0 : scheme.addColor(RGBColor::BLUE, -10.);
1951 0 : scheme.addColor(RGBColor::RED, 10.);
1952 0 : scheme.addColor(RGBColor::YELLOW, 50.);
1953 0 : scheme.addColor(RGBColor::GREEN, 100.);
1954 0 : scheme.addColor(RGBColor::MAGENTA, 200.);
1955 : scheme.setAllowsNegativeValues(true);
1956 0 : junctionColorer.addScheme(scheme);
1957 :
1958 : /// add POI coloring schemes
1959 0 : poiColorer.addScheme(GUIColorScheme("given POI color", TL("given POI color"), RGBColor::RED, "", true));
1960 0 : scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), TL("unselected"), true, 0, COL_SCHEME_MISC);
1961 0 : scheme.addColor(RGBColor(0, 102, 204, 255), 1, TL("selected"));
1962 0 : poiColorer.addScheme(scheme);
1963 0 : poiColorer.addScheme(GUIColorScheme("uniform", TL("uniform"), RGBColor::RED, "", true));
1964 :
1965 : /// add polygon coloring schemes
1966 0 : polyColorer.addScheme(GUIColorScheme("given polygon color", TL("given polygon color"), RGBColor::ORANGE, "", true));
1967 0 : scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(179, 179, 179, 255), TL("unselected"), true, 0, COL_SCHEME_MISC);
1968 0 : scheme.addColor(RGBColor(0, 102, 204, 255), 1, TL("selected"));
1969 0 : polyColorer.addScheme(scheme);
1970 0 : polyColorer.addScheme(GUIColorScheme("uniform", TL("uniform"), RGBColor::ORANGE, "", true));
1971 0 : polyColorer.addScheme(GUIColorScheme("random", TL("random"), RGBColor::YELLOW, "", true));
1972 :
1973 : /// add edge scaling schemes
1974 : {
1975 0 : GUIScaleScheme edgeScheme = GUIScaleScheme(TL("default"), 1, TL("uniform"), true);
1976 0 : laneScaler.addScheme(edgeScheme);
1977 0 : }
1978 :
1979 : /// add data coloring schemes
1980 0 : dataColorer.addScheme(GUIColorScheme("uniform", TL("uniform"), RGBColor::ORANGE, "", true));
1981 0 : scheme = GUIColorScheme(SCHEME_NAME_SELECTION, RGBColor(128, 128, 128, 255), TL("unselected"), true, 0, COL_SCHEME_MISC);
1982 0 : scheme.addColor(RGBColor(0, 80, 180, 255), 1, TL("selected"));
1983 0 : dataColorer.addScheme(scheme);
1984 0 : dataColorer.addScheme(GUIColorScheme("by origin taz", TL("by origin taz"), RGBColor::ORANGE, "", true));
1985 0 : dataColorer.addScheme(GUIColorScheme("by destination taz", TL("by destination taz"), RGBColor::ORANGE, "", true));
1986 0 : scheme = GUIColorScheme(SCHEME_NAME_DATA_ATTRIBUTE_NUMERICAL, COL_MISSING_DATA, TL("missing data"), false, MISSING_DATA);
1987 : scheme.setAllowsNegativeValues(true);
1988 0 : dataColorer.addScheme(scheme);
1989 :
1990 : // dummy schemes
1991 0 : vehicleColorer.addScheme(GUIColorScheme("uniform", TL("uniform"), RGBColor::YELLOW, "", true));
1992 0 : personColorer.addScheme(GUIColorScheme("uniform", TL("uniform"), RGBColor::YELLOW, "", true));
1993 0 : containerColorer.addScheme(GUIColorScheme("uniform", TL("uniform"), RGBColor::YELLOW, "", true));
1994 0 : vehicleScaler.addScheme(GUIScaleScheme(TL("uniform"), 1, "", true));
1995 0 : }
1996 :
1997 :
1998 : int
1999 0 : GUIVisualizationSettings::getLaneEdgeMode() const {
2000 0 : if (UseMesoSim) {
2001 0 : return edgeColorer.getActive();
2002 : }
2003 0 : return laneColorer.getActive();
2004 : }
2005 :
2006 :
2007 : int
2008 0 : GUIVisualizationSettings::getLaneEdgeScaleMode() const {
2009 0 : if (UseMesoSim) {
2010 0 : return edgeScaler.getActive();
2011 : }
2012 0 : return laneScaler.getActive();
2013 : }
2014 :
2015 :
2016 : GUIColorScheme&
2017 0 : GUIVisualizationSettings::getLaneEdgeScheme() {
2018 0 : if (UseMesoSim) {
2019 0 : return edgeColorer.getScheme();
2020 : }
2021 0 : return laneColorer.getScheme();
2022 : }
2023 :
2024 :
2025 : GUIScaleScheme&
2026 0 : GUIVisualizationSettings::getLaneEdgeScaleScheme() {
2027 0 : if (UseMesoSim) {
2028 0 : return edgeScaler.getScheme();
2029 : }
2030 0 : return laneScaler.getScheme();
2031 : }
2032 :
2033 :
2034 : void
2035 0 : GUIVisualizationSettings::save(OutputDevice& dev) const {
2036 0 : dev.openTag(SUMO_TAG_VIEWSETTINGS_SCHEME);
2037 0 : dev.writeAttr(SUMO_ATTR_NAME, name);
2038 0 : dev.openTag(SUMO_TAG_VIEWSETTINGS_OPENGL);
2039 0 : dev.writeAttr("dither", dither);
2040 0 : dev.writeAttr("fps", fps);
2041 0 : dev.writeAttr("trueZ", trueZ);
2042 0 : dev.writeAttr("drawBoundaries", drawBoundaries);
2043 0 : dev.writeAttr("disableDottedContours", disableDottedContours);
2044 0 : dev.writeAttr("forceDrawRectangleSelection", forceDrawForRectangleSelection);
2045 0 : geometryIndices.print(dev, "geometryIndices");
2046 0 : dev.closeTag();
2047 0 : dev.openTag(SUMO_TAG_VIEWSETTINGS_BACKGROUND);
2048 0 : dev.writeAttr("backgroundColor", backgroundColor);
2049 0 : dev.writeAttr("showGrid", showGrid);
2050 0 : dev.writeAttr("gridXSize", gridXSize);
2051 0 : dev.writeAttr("gridYSize", gridYSize);
2052 0 : dev.closeTag();
2053 : // edges
2054 0 : dev.openTag(SUMO_TAG_VIEWSETTINGS_EDGES);
2055 0 : dev.writeAttr("laneEdgeMode", getLaneEdgeMode());
2056 0 : dev.writeAttr("scaleMode", getLaneEdgeScaleMode());
2057 0 : dev.writeAttr("laneShowBorders", laneShowBorders);
2058 0 : dev.writeAttr("showBikeMarkings", showBikeMarkings);
2059 0 : dev.writeAttr("showLinkDecals", showLinkDecals);
2060 0 : dev.writeAttr("realisticLinkRules", realisticLinkRules);
2061 0 : dev.writeAttr("showLinkRules", showLinkRules);
2062 0 : dev.writeAttr("showRails", showRails);
2063 0 : dev.writeAttr("secondaryShape", secondaryShape);
2064 0 : dev.writeAttr("hideConnectors", hideConnectors);
2065 0 : dev.writeAttr("widthExaggeration", laneWidthExaggeration);
2066 0 : dev.writeAttr("minSize", laneMinSize);
2067 0 : dev.writeAttr("showDirection", showLaneDirection);
2068 0 : dev.writeAttr("showSublanes", showSublanes);
2069 0 : dev.writeAttr("spreadSuperposed", spreadSuperposed);
2070 0 : dev.writeAttr("disableHideByZoom", disableHideByZoom);
2071 0 : dev.writeAttr("edgeParam", edgeParam);
2072 0 : dev.writeAttr("laneParam", laneParam);
2073 0 : dev.writeAttr("vehicleParam", vehicleParam);
2074 0 : dev.writeAttr("vehicleScaleParam", vehicleScaleParam);
2075 0 : dev.writeAttr("vehicleTextParam", vehicleTextParam);
2076 0 : dev.writeAttr("edgeData", edgeData);
2077 0 : dev.writeAttr("edgeDataID", edgeDataID);
2078 0 : dev.writeAttr("edgeDataScaling", edgeDataScaling);
2079 0 : edgeValueRainBow.print(dev, "edgeValue");
2080 0 : dev.lf();
2081 0 : dev << " ";
2082 0 : edgeName.print(dev, "edgeName");
2083 0 : dev.lf();
2084 0 : dev << " ";
2085 0 : internalEdgeName.print(dev, "internalEdgeName");
2086 0 : dev.lf();
2087 0 : dev << " ";
2088 0 : cwaEdgeName.print(dev, "cwaEdgeName");
2089 0 : dev.lf();
2090 0 : dev << " ";
2091 0 : streetName.print(dev, "streetName");
2092 0 : dev.lf();
2093 0 : dev << " ";
2094 0 : edgeValue.print(dev, "edgeValue");
2095 0 : edgeScaleValue.print(dev, "edgeScaleValue");
2096 0 : laneColorer.save(dev);
2097 0 : laneScaler.save(dev);
2098 0 : edgeColorer.save(dev, "meso:");
2099 0 : edgeScaler.save(dev);
2100 0 : dev.closeTag();
2101 : // vehicles
2102 0 : dev.openTag(SUMO_TAG_VIEWSETTINGS_VEHICLES);
2103 0 : dev.writeAttr("vehicleMode", vehicleColorer.getActive());
2104 0 : dev.writeAttr("vehicleScaleMode", vehicleScaler.getActive());
2105 0 : dev.writeAttr("vehicleQuality", vehicleQuality);
2106 0 : vehicleSize.print(dev, "vehicle");
2107 0 : dev.writeAttr("showBlinker", showBlinker);
2108 0 : dev.writeAttr("drawMinGap", drawMinGap);
2109 0 : dev.writeAttr("drawBrakeGap", drawBrakeGap);
2110 0 : dev.writeAttr("showBTRange", showBTRange);
2111 0 : dev.writeAttr("showRouteIndex", showRouteIndex);
2112 0 : dev.writeAttr("scaleLength", scaleLength);
2113 0 : dev.writeAttr("drawReversed", drawReversed);
2114 0 : dev.writeAttr("showParkingInfo", showParkingInfo);
2115 0 : dev.writeAttr("showChargingInfo", showChargingInfo);
2116 0 : dev.lf();
2117 0 : dev << " ";
2118 0 : vehicleName.print(dev, "vehicleName");
2119 0 : dev.lf();
2120 0 : dev << " ";
2121 0 : vehicleValue.print(dev, "vehicleValue");
2122 0 : dev.lf();
2123 0 : dev << " ";
2124 0 : vehicleScaleValue.print(dev, "vehicleScaleValue");
2125 0 : dev.lf();
2126 0 : dev << " ";
2127 0 : vehicleText.print(dev, "vehicleText");
2128 0 : vehicleColorer.save(dev);
2129 0 : vehicleScaler.save(dev);
2130 0 : dev.closeTag();
2131 : // persons
2132 0 : dev.openTag(SUMO_TAG_VIEWSETTINGS_PERSONS);
2133 0 : dev.writeAttr("personMode", personColorer.getActive());
2134 0 : dev.writeAttr("personQuality", personQuality);
2135 0 : dev.writeAttr("showPedestrianNetwork", showPedestrianNetwork);
2136 0 : dev.writeAttr("pedestrianNetworkColor", pedestrianNetworkColor);
2137 0 : personSize.print(dev, "person");
2138 0 : dev.lf();
2139 0 : dev << " ";
2140 0 : personName.print(dev, "personName");
2141 0 : dev.lf();
2142 0 : dev << " ";
2143 0 : personValue.print(dev, "personValue");
2144 0 : personColorer.save(dev);
2145 0 : dev.closeTag();
2146 : // containers
2147 0 : dev.openTag(SUMO_TAG_VIEWSETTINGS_CONTAINERS);
2148 0 : dev.writeAttr("containerMode", containerColorer.getActive());
2149 0 : dev.writeAttr("containerQuality", containerQuality);
2150 0 : containerSize.print(dev, "container");
2151 0 : dev.lf();
2152 0 : dev << " ";
2153 0 : containerName.print(dev, "containerName");
2154 0 : containerColorer.save(dev);
2155 0 : dev.closeTag();
2156 : // junctions
2157 0 : dev.openTag(SUMO_TAG_VIEWSETTINGS_JUNCTIONS);
2158 0 : dev.writeAttr("junctionMode", junctionColorer.getActive());
2159 0 : dev.lf();
2160 0 : dev << " ";
2161 0 : drawLinkTLIndex.print(dev, "drawLinkTLIndex");
2162 0 : dev.lf();
2163 0 : dev << " ";
2164 0 : drawLinkJunctionIndex.print(dev, "drawLinkJunctionIndex");
2165 0 : dev.lf();
2166 0 : dev << " ";
2167 0 : junctionID.print(dev, "junctionID");
2168 0 : dev.lf();
2169 0 : dev << " ";
2170 0 : junctionName.print(dev, "junctionName");
2171 0 : dev.lf();
2172 0 : dev << " ";
2173 0 : internalJunctionName.print(dev, "internalJunctionName");
2174 0 : dev.lf();
2175 0 : dev << " ";
2176 0 : tlsPhaseIndex.print(dev, "tlsPhaseIndex");
2177 0 : tlsPhaseName.print(dev, "tlsPhaseName");
2178 0 : dev.lf();
2179 0 : dev << " ";
2180 0 : dev.writeAttr("showLane2Lane", showLane2Lane);
2181 0 : dev.writeAttr("drawShape", drawJunctionShape);
2182 0 : dev.writeAttr("drawCrossingsAndWalkingareas", drawCrossingsAndWalkingareas);
2183 0 : junctionSize.print(dev, "junction");
2184 0 : junctionValueRainBow.print(dev, "junctionValue");
2185 0 : junctionColorer.save(dev);
2186 0 : dev.closeTag();
2187 : // additionals
2188 0 : dev.openTag(SUMO_TAG_VIEWSETTINGS_ADDITIONALS);
2189 0 : dev.writeAttr("addMode", addMode);
2190 0 : addSize.print(dev, "add");
2191 0 : addName.print(dev, "addName");
2192 0 : addFullName.print(dev, "addFullName");
2193 : // temporal (will be integrated in a schema)
2194 0 : dev.writeAttr("busStopColor", colorSettings.busStopColor);
2195 0 : dev.writeAttr("busStopColorSign", colorSettings.busStopColorSign);
2196 0 : dev.writeAttr("chargingStationColor", colorSettings.chargingStationColor);
2197 0 : dev.writeAttr("chargingStationColorCharge", colorSettings.chargingStationColorCharge);
2198 0 : dev.writeAttr("chargingStationColorSign", colorSettings.chargingStationColorSign);
2199 0 : dev.writeAttr("containerStopColor", colorSettings.containerStopColor);
2200 0 : dev.writeAttr("containerStopColorSign", colorSettings.containerStopColorSign);
2201 0 : dev.writeAttr("parkingAreaColor", colorSettings.parkingAreaColor);
2202 0 : dev.writeAttr("parkingAreaColorSign", colorSettings.parkingAreaColorSign);
2203 0 : dev.writeAttr("parkingSpaceColor", colorSettings.parkingSpaceColor);
2204 0 : dev.writeAttr("parkingSpaceColorContour", colorSettings.parkingSpaceColorContour);
2205 0 : dev.writeAttr("personTripColor", colorSettings.personTripColor);
2206 0 : dev.writeAttr("personTripWidth", widthSettings.personTripWidth);
2207 0 : dev.writeAttr("rideColor", colorSettings.rideColor);
2208 0 : dev.writeAttr("rideWidth", widthSettings.rideWidth);
2209 0 : dev.writeAttr("selectedAdditionalColor", colorSettings.selectedAdditionalColor);
2210 0 : dev.writeAttr("selectedConnectionColor", colorSettings.selectedConnectionColor);
2211 0 : dev.writeAttr("selectedContainerColor", colorSettings.selectedContainerColor);
2212 0 : dev.writeAttr("selectedContainerPlanColor", colorSettings.selectedContainerPlanColor);
2213 0 : dev.writeAttr("selectedCrossingColor", colorSettings.selectedCrossingColor);
2214 0 : dev.writeAttr("selectedEdgeColor", colorSettings.selectedEdgeColor);
2215 0 : dev.writeAttr("selectedEdgeDataColor", colorSettings.selectedEdgeDataColor);
2216 0 : dev.writeAttr("selectedLaneColor", colorSettings.selectedLaneColor);
2217 0 : dev.writeAttr("selectedPersonColor", colorSettings.selectedPersonColor);
2218 0 : dev.writeAttr("selectedPersonPlanColor", colorSettings.selectedPersonPlanColor);
2219 0 : dev.writeAttr("selectedProhibitionColor", colorSettings.selectedProhibitionColor);
2220 0 : dev.writeAttr("selectedRouteColor", colorSettings.selectedRouteColor);
2221 0 : dev.writeAttr("selectedVehicleColor", colorSettings.selectedVehicleColor);
2222 0 : dev.writeAttr("selectionColor", colorSettings.selectionColor);
2223 0 : dev.writeAttr("stopColor", colorSettings.stopColor);
2224 0 : dev.writeAttr("waypointColor", colorSettings.waypointColor);
2225 0 : dev.writeAttr("stopContainerColor", colorSettings.stopContainerColor);
2226 0 : dev.writeAttr("stopPersonColor", colorSettings.stopPersonColor);
2227 0 : dev.writeAttr("trainStopColor", colorSettings.trainStopColor);
2228 0 : dev.writeAttr("trainStopColorSign", colorSettings.trainStopColorSign);
2229 0 : dev.writeAttr("transhipColor", colorSettings.transhipColor);
2230 0 : dev.writeAttr("transhipWidth", widthSettings.transhipWidth);
2231 0 : dev.writeAttr("transportColor", colorSettings.transportColor);
2232 0 : dev.writeAttr("transportWidth", widthSettings.transportWidth);
2233 0 : dev.writeAttr("tripWidth", widthSettings.tripWidth);
2234 0 : dev.writeAttr("vehicleTripColor", colorSettings.personTripColor);
2235 0 : dev.writeAttr("walkColor", colorSettings.walkColor);
2236 0 : dev.writeAttr("walkWidth", widthSettings.walkWidth);
2237 0 : dev.closeTag();
2238 : // pois
2239 0 : dev.openTag(SUMO_TAG_VIEWSETTINGS_POIS);
2240 0 : dev.writeAttr("poiTextParam", poiTextParam);
2241 0 : poiSize.print(dev, "poi");
2242 0 : dev.writeAttr("poiDetail", poiDetail);
2243 0 : poiName.print(dev, "poiName");
2244 0 : poiType.print(dev, "poiType");
2245 0 : poiText.print(dev, "poiText");
2246 0 : dev.writeAttr("poiUseCustomLayer", poiUseCustomLayer);
2247 0 : dev.writeAttr("poiCustomLayer", poiCustomLayer);
2248 0 : poiColorer.save(dev);
2249 0 : dev.closeTag();
2250 : // polys
2251 0 : dev.openTag(SUMO_TAG_VIEWSETTINGS_POLYS);
2252 0 : polySize.print(dev, "poly");
2253 0 : polyName.print(dev, "polyName");
2254 0 : polyType.print(dev, "polyType");
2255 0 : dev.writeAttr("polyUseCustomLayer", polyUseCustomLayer);
2256 0 : dev.writeAttr("polyCustomLayer", polyCustomLayer);
2257 0 : polyColorer.save(dev);
2258 0 : dev.closeTag();
2259 : // 3D
2260 0 : dev.openTag(SUMO_TAG_VIEWSETTINGS_3D);
2261 0 : dev.writeAttr("show3DTLSLinkMarkers", show3DTLSLinkMarkers);
2262 0 : dev.writeAttr("show3DTLSDomes", show3DTLSDomes);
2263 0 : dev.writeAttr("show3DHeadUpDisplay", show3DHeadUpDisplay);
2264 0 : dev.writeAttr("generate3DTLSModels", generate3DTLSModels);
2265 0 : dev.writeAttr("ambient3DLight", ambient3DLight);
2266 0 : dev.writeAttr("diffuse3DLight", diffuse3DLight);
2267 0 : dev.closeTag();
2268 : // legend
2269 0 : dev.openTag(SUMO_TAG_VIEWSETTINGS_LEGEND);
2270 0 : dev.writeAttr("showSizeLegend", showSizeLegend);
2271 0 : dev.writeAttr("showColorLegend", showColorLegend);
2272 0 : dev.writeAttr("showVehicleColorLegend", showVehicleColorLegend);
2273 0 : dev.closeTag();
2274 :
2275 0 : dev.closeTag();
2276 0 : }
2277 :
2278 :
2279 : bool
2280 0 : GUIVisualizationSettings::operator==(const GUIVisualizationSettings& v2) {
2281 0 : if (show3DTLSDomes != v2.show3DTLSDomes) {
2282 : return false;
2283 : }
2284 0 : if (show3DTLSLinkMarkers != v2.show3DTLSLinkMarkers) {
2285 : return false;
2286 : }
2287 0 : if (show3DHeadUpDisplay != v2.show3DHeadUpDisplay) {
2288 : return false;
2289 : }
2290 0 : if (generate3DTLSModels != v2.generate3DTLSModels) {
2291 : return false;
2292 : }
2293 0 : if (ambient3DLight != v2.ambient3DLight) {
2294 : return false;
2295 : }
2296 0 : if (diffuse3DLight != v2.diffuse3DLight) {
2297 : return false;
2298 : }
2299 0 : if (skyColor != v2.skyColor) {
2300 : return false;
2301 : }
2302 0 : if (dither != v2.dither) {
2303 : return false;
2304 : }
2305 0 : if (fps != v2.fps) {
2306 : return false;
2307 : }
2308 0 : if (trueZ != v2.trueZ) {
2309 : return false;
2310 : }
2311 0 : if (drawBoundaries != v2.drawBoundaries) {
2312 : return false;
2313 : }
2314 0 : if (disableDottedContours != v2.disableDottedContours) {
2315 : return false;
2316 : }
2317 0 : if (forceDrawForRectangleSelection != v2.forceDrawForRectangleSelection) {
2318 : return false;
2319 : }
2320 0 : if (geometryIndices != v2.geometryIndices) {
2321 : return false;
2322 : }
2323 0 : if (backgroundColor != v2.backgroundColor) {
2324 : return false;
2325 : }
2326 0 : if (colorSettings != v2.colorSettings) {
2327 : return false;
2328 : }
2329 0 : if (showGrid != v2.showGrid) {
2330 : return false;
2331 : }
2332 0 : if (gridXSize != v2.gridXSize) {
2333 : return false;
2334 : }
2335 0 : if (gridYSize != v2.gridYSize) {
2336 : return false;
2337 : }
2338 :
2339 : if (!(edgeColorer == v2.edgeColorer)) {
2340 0 : return false;
2341 : }
2342 0 : if (!(edgeScaler == v2.edgeScaler)) {
2343 : return false;
2344 : }
2345 : if (!(laneColorer == v2.laneColorer)) {
2346 0 : return false;
2347 : }
2348 0 : if (!(laneScaler == v2.laneScaler)) {
2349 : return false;
2350 : }
2351 0 : if (laneShowBorders != v2.laneShowBorders) {
2352 : return false;
2353 : }
2354 0 : if (showBikeMarkings != v2.showBikeMarkings) {
2355 : return false;
2356 : }
2357 0 : if (showLinkDecals != v2.showLinkDecals) {
2358 : return false;
2359 : }
2360 0 : if (realisticLinkRules != v2.realisticLinkRules) {
2361 : return false;
2362 : }
2363 0 : if (showLinkRules != v2.showLinkRules) {
2364 : return false;
2365 : }
2366 0 : if (showRails != v2.showRails) {
2367 : return false;
2368 : }
2369 0 : if (secondaryShape != v2.secondaryShape) {
2370 : return false;
2371 : }
2372 0 : if (edgeName != v2.edgeName) {
2373 : return false;
2374 : }
2375 0 : if (internalEdgeName != v2.internalEdgeName) {
2376 : return false;
2377 : }
2378 0 : if (cwaEdgeName != v2.cwaEdgeName) {
2379 : return false;
2380 : }
2381 0 : if (streetName != v2.streetName) {
2382 : return false;
2383 : }
2384 0 : if (edgeValue != v2.edgeValue) {
2385 : return false;
2386 : }
2387 0 : if (edgeScaleValue != v2.edgeScaleValue) {
2388 : return false;
2389 : }
2390 0 : if (hideConnectors != v2.hideConnectors) {
2391 : return false;
2392 : }
2393 0 : if (laneWidthExaggeration != v2.laneWidthExaggeration) {
2394 : return false;
2395 : }
2396 0 : if (laneMinSize != v2.laneMinSize) {
2397 : return false;
2398 : }
2399 0 : if (showLaneDirection != v2.showLaneDirection) {
2400 : return false;
2401 : }
2402 0 : if (showSublanes != v2.showSublanes) {
2403 : return false;
2404 : }
2405 0 : if (spreadSuperposed != v2.spreadSuperposed) {
2406 : return false;
2407 : }
2408 0 : if (disableHideByZoom != v2.disableHideByZoom) {
2409 : return false;
2410 : }
2411 0 : if (edgeParam != v2.edgeParam) {
2412 : return false;
2413 : }
2414 0 : if (laneParam != v2.laneParam) {
2415 : return false;
2416 : }
2417 0 : if (vehicleParam != v2.vehicleParam) {
2418 : return false;
2419 : }
2420 0 : if (vehicleScaleParam != v2.vehicleScaleParam) {
2421 : return false;
2422 : }
2423 0 : if (vehicleTextParam != v2.vehicleTextParam) {
2424 : return false;
2425 : }
2426 0 : if (edgeData != v2.edgeData) {
2427 : return false;
2428 : }
2429 0 : if (edgeDataID != v2.edgeDataID) {
2430 : return false;
2431 : }
2432 0 : if (edgeDataScaling != v2.edgeDataScaling) {
2433 : return false;
2434 : }
2435 0 : if (edgeValueRainBow != v2.edgeValueRainBow) {
2436 : return false;
2437 : }
2438 : if (!(vehicleColorer == v2.vehicleColorer)) {
2439 0 : return false;
2440 : }
2441 0 : if (!(vehicleScaler == v2.vehicleScaler)) {
2442 : return false;
2443 : }
2444 0 : if (vehicleQuality != v2.vehicleQuality) {
2445 : return false;
2446 : }
2447 0 : if (vehicleSize != v2.vehicleSize) {
2448 : return false;
2449 : }
2450 0 : if (showBlinker != v2.showBlinker) {
2451 : return false;
2452 : }
2453 0 : if (drawLaneChangePreference != v2.drawLaneChangePreference) {
2454 : return false;
2455 : }
2456 0 : if (drawMinGap != v2.drawMinGap) {
2457 : return false;
2458 : }
2459 0 : if (drawBrakeGap != v2.drawBrakeGap) {
2460 : return false;
2461 : }
2462 0 : if (showBTRange != v2.showBTRange) {
2463 : return false;
2464 : }
2465 0 : if (showRouteIndex != v2.showRouteIndex) {
2466 : return false;
2467 : }
2468 0 : if (scaleLength != v2.scaleLength) {
2469 : return false;
2470 : }
2471 0 : if (drawReversed != v2.drawReversed) {
2472 : return false;
2473 : }
2474 0 : if (showParkingInfo != v2.showParkingInfo) {
2475 : return false;
2476 : }
2477 0 : if (showChargingInfo != v2.showChargingInfo) {
2478 : return false;
2479 : }
2480 0 : if (vehicleName != v2.vehicleName) {
2481 : return false;
2482 : }
2483 0 : if (vehicleValue != v2.vehicleValue) {
2484 : return false;
2485 : }
2486 0 : if (vehicleScaleValue != v2.vehicleScaleValue) {
2487 : return false;
2488 : }
2489 0 : if (vehicleText != v2.vehicleText) {
2490 : return false;
2491 : }
2492 : if (!(personColorer == v2.personColorer)) {
2493 0 : return false;
2494 : }
2495 0 : if (personQuality != v2.personQuality) {
2496 : return false;
2497 : }
2498 0 : if (personSize != v2.personSize) {
2499 : return false;
2500 : }
2501 0 : if (personName != v2.personName) {
2502 : return false;
2503 : }
2504 0 : if (personValue != v2.personValue) {
2505 : return false;
2506 : }
2507 0 : if (showPedestrianNetwork != v2.showPedestrianNetwork) {
2508 : return false;
2509 : }
2510 0 : if (pedestrianNetworkColor != v2.pedestrianNetworkColor) {
2511 : return false;
2512 : }
2513 : if (!(containerColorer == v2.containerColorer)) {
2514 0 : return false;
2515 : }
2516 0 : if (containerQuality != v2.containerQuality) {
2517 : return false;
2518 : }
2519 0 : if (containerSize != v2.containerSize) {
2520 : return false;
2521 : }
2522 0 : if (containerName != v2.containerName) {
2523 : return false;
2524 : }
2525 : if (!(junctionColorer == v2.junctionColorer)) {
2526 0 : return false;
2527 : }
2528 : if (!(poiColorer == v2.poiColorer)) {
2529 0 : return false;
2530 : }
2531 : if (!(polyColorer == v2.polyColorer)) {
2532 0 : return false;
2533 : }
2534 0 : if (drawLinkTLIndex != v2.drawLinkTLIndex) {
2535 : return false;
2536 : }
2537 0 : if (drawLinkJunctionIndex != v2.drawLinkJunctionIndex) {
2538 : return false;
2539 : }
2540 0 : if (junctionID != v2.junctionID) {
2541 : return false;
2542 : }
2543 0 : if (junctionName != v2.junctionName) {
2544 : return false;
2545 : }
2546 0 : if (internalJunctionName != v2.internalJunctionName) {
2547 : return false;
2548 : }
2549 0 : if (tlsPhaseIndex != v2.tlsPhaseIndex) {
2550 : return false;
2551 : }
2552 0 : if (tlsPhaseName != v2.tlsPhaseName) {
2553 : return false;
2554 : }
2555 :
2556 0 : if (showLane2Lane != v2.showLane2Lane) {
2557 : return false;
2558 : }
2559 :
2560 0 : if (drawJunctionShape != v2.drawJunctionShape) {
2561 : return false;
2562 : }
2563 :
2564 0 : if (drawCrossingsAndWalkingareas != v2.drawCrossingsAndWalkingareas) {
2565 : return false;
2566 : }
2567 0 : if (junctionSize != v2.junctionSize) {
2568 : return false;
2569 : }
2570 0 : if (junctionValueRainBow != v2.junctionValueRainBow) {
2571 : return false;
2572 : }
2573 :
2574 0 : if (addMode != v2.addMode) {
2575 : return false;
2576 : }
2577 0 : if (addSize != v2.addSize) {
2578 : return false;
2579 : }
2580 0 : if (addName != v2.addName) {
2581 : return false;
2582 : }
2583 0 : if (addFullName != v2.addFullName) {
2584 : return false;
2585 : }
2586 0 : if (poiSize != v2.poiSize) {
2587 : return false;
2588 : }
2589 0 : if (poiDetail != v2.poiDetail) {
2590 : return false;
2591 : }
2592 0 : if (poiName != v2.poiName) {
2593 : return false;
2594 : }
2595 0 : if (poiType != v2.poiType) {
2596 : return false;
2597 : }
2598 0 : if (poiText != v2.poiText) {
2599 : return false;
2600 : }
2601 0 : if (poiTextParam != v2.poiTextParam) {
2602 : return false;
2603 : }
2604 0 : if (poiUseCustomLayer != v2.poiUseCustomLayer) {
2605 : return false;
2606 : }
2607 0 : if (poiCustomLayer != v2.poiCustomLayer) {
2608 : return false;
2609 : }
2610 0 : if (polySize != v2.polySize) {
2611 : return false;
2612 : }
2613 0 : if (polyName != v2.polyName) {
2614 : return false;
2615 : }
2616 0 : if (polyType != v2.polyType) {
2617 : return false;
2618 : }
2619 0 : if (polyUseCustomLayer != v2.polyUseCustomLayer) {
2620 : return false;
2621 : }
2622 0 : if (polyCustomLayer != v2.polyCustomLayer) {
2623 : return false;
2624 : }
2625 :
2626 0 : if (showSizeLegend != v2.showSizeLegend) {
2627 : return false;
2628 : }
2629 0 : if (showColorLegend != v2.showColorLegend) {
2630 : return false;
2631 : }
2632 0 : if (showVehicleColorLegend != v2.showVehicleColorLegend) {
2633 : return false;
2634 : }
2635 : if (!(dataColorer == v2.dataColorer)) {
2636 0 : return false;
2637 : }
2638 0 : if (!(dataValue == v2.dataValue)) {
2639 : return false;
2640 : }
2641 0 : if (!(tazRelWidthExaggeration == v2.tazRelWidthExaggeration)) {
2642 : return false;
2643 : }
2644 0 : if (!(edgeRelWidthExaggeration == v2.edgeRelWidthExaggeration)) {
2645 : return false;
2646 : }
2647 0 : if (!(relDataAttr == v2.relDataAttr)) {
2648 : return false;
2649 : }
2650 0 : if (!(dataValueRainBow == v2.dataValueRainBow)) {
2651 : return false;
2652 : }
2653 :
2654 : return true;
2655 : }
2656 :
2657 :
2658 : const RGBColor&
2659 444248 : GUIVisualizationSettings::getLinkColor(const LinkState& ls, bool realistic) {
2660 444248 : switch (ls) {
2661 : case LINKSTATE_TL_GREEN_MAJOR:
2662 : return SUMO_color_TL_GREEN_MAJOR;
2663 7829 : case LINKSTATE_TL_GREEN_MINOR:
2664 7829 : return SUMO_color_TL_GREEN_MINOR;
2665 22192 : case LINKSTATE_TL_RED:
2666 22192 : return SUMO_color_TL_RED;
2667 0 : case LINKSTATE_TL_REDYELLOW:
2668 0 : return SUMO_color_TL_REDYELLOW;
2669 0 : case LINKSTATE_TL_YELLOW_MAJOR:
2670 0 : return SUMO_color_TL_YELLOW_MAJOR;
2671 1481 : case LINKSTATE_TL_YELLOW_MINOR:
2672 1481 : return SUMO_color_TL_YELLOW_MINOR;
2673 0 : case LINKSTATE_TL_OFF_BLINKING:
2674 0 : return SUMO_color_TL_OFF_BLINKING;
2675 0 : case LINKSTATE_TL_OFF_NOSIGNAL:
2676 0 : return SUMO_color_TL_OFF_NOSIGNAL;
2677 209458 : case LINKSTATE_MAJOR:
2678 209458 : return realistic ? RGBColor::INVISIBLE : SUMO_color_MAJOR;
2679 55129 : case LINKSTATE_MINOR:
2680 55129 : return realistic ? SUMO_color_MAJOR : SUMO_color_MINOR;
2681 597 : case LINKSTATE_EQUAL:
2682 597 : return SUMO_color_EQUAL;
2683 18 : case LINKSTATE_STOP:
2684 18 : return realistic ? SUMO_color_MAJOR : SUMO_color_STOP;
2685 0 : case LINKSTATE_ALLWAY_STOP:
2686 0 : return realistic ? SUMO_color_MAJOR : SUMO_color_ALLWAY_STOP;
2687 3376 : case LINKSTATE_ZIPPER:
2688 3376 : return realistic ? RGBColor::INVISIBLE : SUMO_color_ZIPPER;
2689 129338 : case LINKSTATE_DEADEND:
2690 129338 : return SUMO_color_DEADEND;
2691 0 : default:
2692 0 : throw ProcessError(TLF("No color defined for LinkState '%'", std::string(ls, 1)));
2693 : }
2694 : }
2695 :
2696 :
2697 : double
2698 4 : GUIVisualizationSettings::getTextAngle(double objectAngle) const {
2699 4 : double viewAngle = objectAngle - angle;
2700 8 : while (viewAngle < 0) {
2701 4 : viewAngle += 360;
2702 : }
2703 : // fmod round towards zero which is not want we want for negative numbers
2704 : viewAngle = fmod(viewAngle, 360);
2705 4 : if (viewAngle > 90 && viewAngle < 270) {
2706 : // avoid reading text on its head
2707 4 : objectAngle -= 180;
2708 : }
2709 4 : return objectAngle;
2710 : }
2711 :
2712 :
2713 : bool
2714 8 : GUIVisualizationSettings::flippedTextAngle(double objectAngle) const {
2715 8 : double viewAngle = objectAngle - angle;
2716 8 : while (viewAngle < 0) {
2717 0 : viewAngle += 360;
2718 : }
2719 : // fmod round towards zero which is not want we want for negative numbers
2720 : viewAngle = fmod(viewAngle, 360);
2721 8 : return (viewAngle > 90 && viewAngle < 270);
2722 : }
2723 :
2724 :
2725 : GUIVisualizationSettings::Detail
2726 0 : GUIVisualizationSettings::getDetailLevel(const double exaggeration) const {
2727 : // calculate factor
2728 0 : const auto factor = (scale * exaggeration);
2729 0 : if (factor >= 10) {
2730 : return GUIVisualizationSettings::Detail::Level0;
2731 0 : } else if (factor >= 5) {
2732 : return GUIVisualizationSettings::Detail::Level1;
2733 0 : } else if (factor >= 2.5) {
2734 : return GUIVisualizationSettings::Detail::Level2;
2735 0 : } else if (factor >= 1.25) {
2736 : return GUIVisualizationSettings::Detail::Level3;
2737 : } else {
2738 0 : return GUIVisualizationSettings::Detail::Level4;
2739 : }
2740 : }
2741 :
2742 :
2743 : bool
2744 66858 : GUIVisualizationSettings::drawDetail(const double detail, const double exaggeration) const {
2745 66858 : if (detail <= 0) {
2746 : return true;
2747 : } else {
2748 66858 : return ((scale * exaggeration) >= detail);
2749 : }
2750 : }
2751 :
2752 :
2753 : bool
2754 0 : GUIVisualizationSettings::drawMovingGeometryPoint(const double exaggeration, const double radius) const {
2755 0 : return (scale * radius * exaggeration > 10);
2756 : }
2757 :
2758 : /****************************************************************************/
|