Path: blob/main/src/utils/gui/settings/GUIVisualizationSettings.h
169684 views
/****************************************************************************/1// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo2// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.3// This program and the accompanying materials are made available under the4// terms of the Eclipse Public License 2.0 which is available at5// https://www.eclipse.org/legal/epl-2.0/6// This Source Code may also be made available under the following Secondary7// Licenses when the conditions for such availability set forth in the Eclipse8// Public License 2.0 are satisfied: GNU General Public License, version 29// or later which is available at10// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html11// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later12/****************************************************************************/13/// @file GUIVisualizationSettings.h14/// @author Daniel Krajzewicz15/// @author Jakob Erdmann16/// @author Michael Behrisch17/// @date Sept 200218///19// Stores the information about how to visualize structures20/****************************************************************************/21#pragma once22#include <config.h>2324#include <string>25#include <vector>26#include <map>27#include <utils/common/RGBColor.h>28#include <utils/common/ToString.h>2930#include "GUIPropertySchemeStorage.h"313233// ===========================================================================34// class declarations35// ===========================================================================36class BaseSchemeInfoSource;37class OutputDevice;38class GUIVisualizationSettings;39class GUIGlObject;404142// ===========================================================================43// class definitions44// ===========================================================================4546// cannot declare this as inner class because it needs to be used in forward47// declaration (@todo fix inclusion order by removing references to guisim!)48struct GUIVisualizationTextSettings {4950/// @brief constructor51GUIVisualizationTextSettings(bool _show, double _size, RGBColor _color, RGBColor _bgColor = RGBColor(128, 0, 0, 0), bool _constSize = true, bool _onlySelected = false);5253/// @brief equality comparator54bool operator==(const GUIVisualizationTextSettings& other);5556/// @brief inequality comparator57bool operator!=(const GUIVisualizationTextSettings& other);5859/// @brief print values in output device60void print(OutputDevice& dev, const std::string& name) const;6162/// @brief get scale size63double scaledSize(double scale, double constFactor = 0.1) const;6465/// @brief whether to show the text66bool show(const GUIGlObject* o) const;6768/// @brief flag show69bool showText;7071/// @brief text size72double size;7374/// @brief text color75RGBColor color;7677/// @brief background text color78RGBColor bgColor;7980/// @brief flag to avoid size changes81bool constSize;8283/// @brief whether only selected objects shall have text drawn84bool onlySelected;85};868788struct GUIVisualizationRainbowSettings {8990/// @brief constructor91GUIVisualizationRainbowSettings(bool _hideMin, double _minThreshold, bool _hideMax, double _maxThreshold, bool _setNeutral,92double _neutralThreshold, bool _fixRange, int _rainboScheme);9394/// @brief equality comparator95bool operator==(const GUIVisualizationRainbowSettings& other);9697/// @brief inequality comparator98bool operator!=(const GUIVisualizationRainbowSettings& other);99100/// @brief print values in output device101void print(OutputDevice& dev, const std::string& name) const;102103/// @brief whether data below threshold should not be colored104bool hideMin;105/// @brief threshold below which value should not be colored106double minThreshold;107/// @brief whether data above threshold should not be colored108bool hideMax;109/// @brief threshold above which value should not be colored110double maxThreshold;111/// @brief whether the scale should be centered at a specific value112bool setNeutral;113/// @brief neutral point of scale114double neutralThreshold;115/// @brief whether the color scale should be fixed to the given min/max values116bool fixRange;117/// @brief index in the list of color schemes118int rainbowScheme;119/// @brief color steps for the rainbow;120std::vector<RGBColor> colors;121};122123124/// @brief struct for size settings125struct GUIVisualizationSizeSettings {126127/// @brief constructor128GUIVisualizationSizeSettings(double _minSize, double _exaggeration = 1.0, bool _constantSize = false, bool _constantSizeSelected = false);129130/// @brief return the drawing size including exaggeration and constantSize values131double getExaggeration(const GUIVisualizationSettings& s, const GUIGlObject* o, double factor = 20) const;132133/// @brief equality comparator134bool operator==(const GUIVisualizationSizeSettings& other);135136/// @brief inequality comparator137bool operator!=(const GUIVisualizationSizeSettings& other);138139/// @brief print values in output device140void print(OutputDevice& dev, const std::string& name) const;141142/// @brief The minimum size to draw this object143double minSize;144145/// @brief The size exaggeration (upscale)146double exaggeration;147148/// @brief whether the object shall be drawn with constant size regardless of zoom149bool constantSize;150151/// @brief whether only selected objects shall be drawn with constant152bool constantSizeSelected;153};154155156/// @brief struct for color settings157struct GUIVisualizationColorSettings {158159/// @brief constructor160GUIVisualizationColorSettings();161162/// @brief equality comparator163bool operator==(const GUIVisualizationColorSettings& other);164165/// @brief inequality comparator166bool operator!=(const GUIVisualizationColorSettings& other);167168/// @brief basic selection color169RGBColor selectionColor;170171/// @brief edge selection color172RGBColor selectedEdgeColor;173174/// @brief lane selection color175RGBColor selectedLaneColor;176177/// @brief connection selection color178RGBColor selectedConnectionColor;179180/// @brief prohibition selection color181RGBColor selectedProhibitionColor;182183/// @brief crossings selection color184RGBColor selectedCrossingColor;185186/// @brief additional selection color (busStops, Detectors...)187RGBColor selectedAdditionalColor;188189/// @brief route selection color (used for routes and vehicle stops)190RGBColor selectedRouteColor;191192/// @brief vehicle selection color193RGBColor selectedVehicleColor;194195/// @brief person selection color196RGBColor selectedPersonColor;197198/// @brief person plan selection color (Rides, Walks, stopPersons...)199RGBColor selectedPersonPlanColor;200201/// @brief container selection color202RGBColor selectedContainerColor;203204/// @brief container plan selection color (Rides, Walks, containerStops...)205RGBColor selectedContainerPlanColor;206207/// @brief edge data selection color208RGBColor selectedEdgeDataColor;209210/// @brief color for busStops211RGBColor busStopColor;212213/// @brief color for busStops signs214RGBColor busStopColorSign;215216/// @brief color for trainStops217RGBColor trainStopColor;218219/// @brief color for trainStops signs220RGBColor trainStopColorSign;221222/// @brief color for containerStops223RGBColor containerStopColor;224225/// @brief color for containerStop signs226RGBColor containerStopColorSign;227228/// @brief color for chargingStations229RGBColor chargingStationColor;230231/// @brief color for chargingStation sign232RGBColor chargingStationColorSign;233234/// @brief color for chargingStation during charging235RGBColor chargingStationColorCharge;236237/// @brief color for parkingAreas238RGBColor parkingAreaColor;239240/// @brief color for parkingArea sign241RGBColor parkingAreaColorSign;242243/// @brief color for parkingSpace contour244RGBColor parkingSpaceColorContour;245246/// @brief color for parkingSpace innen247RGBColor parkingSpaceColor;248249/// @brief color for Stops250RGBColor stopColor;251252/// @brief color for Waypoints253RGBColor waypointColor;254255/// @brief color for vehicle trips256RGBColor vehicleTripColor;257258/// @brief color for stopPersons259RGBColor stopPersonColor;260261/// @brief color for stopPersons262RGBColor personTripColor;263264/// @brief color for walks265RGBColor walkColor;266267/// @brief color for rides268RGBColor rideColor;269270/// @brief color for containerStops271RGBColor stopContainerColor;272273/// @brief color for transport274RGBColor transportColor;275276/// @brief color for tranships277RGBColor transhipColor;278279/// @brief color for highlighthing deadends280static const RGBColor SUMO_color_DEADEND_SHOW;281282/// @brief color for child connections between parents and child elements283static const RGBColor childConnectionColor;284285/// @brief color for edited shapes (Junctions, crossings and connections)286static const RGBColor editShapeColor;287288/// @brief color for crossings289static const RGBColor crossingColor;290291/// @brief color for priority crossing292static const RGBColor crossingPriorityColor;293294/// @brief color for invalid crossing295static const RGBColor crossingInvalidColor;296297};298299300/// @brief struct for candidate color settings301struct GUIVisualizationCandidateColorSettings {302303/// @brief color for possible candidate element304static const RGBColor possible;305306/// @brief color for selected candidate source307static const RGBColor source;308309/// @brief color for selected candidate target310static const RGBColor target;311312/// @brief color for selected special candidate element (Usually selected using shift+click)313static const RGBColor special;314315/// @brief color for selected conflict candidate element (Usually selected using ctrl+click)316static const RGBColor conflict;317318/// @brief color for invalid elements319static const RGBColor invalid;320};321322/// @brief struct for connection settings323struct GUIVisualizationNeteditSizeSettings {324325/// @brief junction bubble radius326static const double junctionBubbleRadius;327328/// @brief moving junction geometry point radius329static const double junctionGeometryPointRadius;330331/// @brief moving edge geometry point radius332static const double edgeGeometryPointRadius;333334/// @brief moving lane geometry point radius335static const double laneGeometryPointRadius;336337/// @brief moving connection geometry point radius338static const double connectionGeometryPointRadius;339340/// @brief moving crossing geometry point radius341static const double crossingGeometryPointRadius;342343/// @brief moving geometry point radius344static const double polygonGeometryPointRadius;345346/// @brief polygon contour width347static const double polygonContourWidth;348349/// @brief poly line width350static const double polylineWidth;351352/// @brief moving additional geometry point radius353static const double additionalGeometryPointRadius;354};355356/// @brief struct for connection settings357struct GUIVisualizationConnectionSettings {358359/// @brief connection width360static const double connectionWidth;361};362363364/// @brief struct for additional settings365struct GUIVisualizationAdditionalSettings {366367/// @brief color for rerouters368static const RGBColor rerouterColor;369370/// @brief rerouter size371static const double rerouterSize;372373/// @brief color for VSS374static const RGBColor VSSColor;375376/// @brief VSS size377static const double VSSSize;378379/// @brief color for Calibrators380static const RGBColor calibratorColor;381382/// @brief Calibrator width383static const double calibratorWidth;384385/// @brief Calibrator height386static const double calibratorHeight;387388/// @brief color for route probes389static const RGBColor routeProbeColor;390391/// @brief RouteProbe size392static const double routeProbeSize;393394/// @brief color for vaporizers395static const RGBColor vaporizerColor;396397/// @brief Vaporizer size398static const double vaporizerSize;399400/// @brief stopEdges size401static const double stopEdgeSize;402403/// @brief connection color404static const RGBColor connectionColor;405406/// @brief connection color selected407static const RGBColor connectionColorSelected;408409/// @brief tractionSubstation size410static const double tractionSubstationSize;411412/// @brief overhead wire color top413static const RGBColor overheadWireColorTop;414415/// @brief overhead wire color bot416static const RGBColor overheadWireColorBot;417418/// @brief overhead wire color selected419static const RGBColor overheadWireColorSelected;420421/// @brief arrow width422static const double arrowWidth;423424/// @brief arrow length425static const double arrowLength;426427/// @brief arrow offset428static const double arrowOffset;429430/// @brief connection color between E1/junctions and TLS431static const RGBColor TLSConnectionColor;432};433434435/// @brief struct for detector settings436struct GUIVisualizationDetectorSettings {437438/// @brief color for E1 detectors439static const RGBColor E1Color;440441/// @brief E1 detector widths442static const double E1Width;443444/// @brief E1 Instant detector heights445static const double E1Height;446447/// @brief color for E1 Instant detectors448static const RGBColor E1InstantColor;449450/// @brief E1 Instant detector widths451static const double E1InstantWidth;452453/// @brief E1 Instant detector heights454static const double E1InstantHeight;455456/// @brief color for E2 detectors457static const RGBColor E2Color;458459/// @brief E2 detector widths460static const double E2Width;461462/// @brief E3 detector size463static const double E3Size;464465/// @brief color for Entrys466static const RGBColor E3EntryColor;467468/// @brief color for Exits469static const RGBColor E3ExitColor;470471/// @brief E3 Entry/Exit detector width472static const double E3EntryExitWidth;473474/// @brief E3 Entry/Exit detector height475static const double E3EntryExitHeight;476};477478479/// @brief struct for stoppingPlace settings480struct GUIVisualizationStoppingPlaceSettings {481/// @brief busStop offset482static const double stoppingPlaceSignOffset;483484/// @brief busStop width485static const double busStopWidth;486487/// @brief trainStop width488static const double trainStopWidth;489490/// @brief containerStop width491static const double containerStopWidth;492493/// @brief chargingStation width494static const double chargingStationWidth;495496/// @brief symbol external radius497static const double symbolExternalRadius;498499/// @brief symbol internal radius500static const double symbolInternalRadius;501502/// @brief symbol internal text size503static const double symbolInternalTextSize;504};505506507/// @brief struct for dotted contour settings508struct GUIVisualizationDottedContourSettings {509510/// @brief width of dotted contour segments511static const double segmentWidth;512513/// @brief width of small dotted contour segments514static const double segmentWidthSmall;515516/// @brief width of large dotted contour segments517static const double segmentWidthLarge;518519/// @brief length of dotted contour segments520static const double segmentLength;521522/// @brief first color of dotted inspected contour523static const RGBColor firstInspectedColor;524525/// @brief second color of dotted inspectedcontour526static const RGBColor secondInspectedColor;527528/// @brief first color of dotted front contour529static const RGBColor firstFrontColor;530531/// @brief second color of dotted front contour532static const RGBColor secondFrontColor;533};534535536/// @brief struct for width settings537struct GUIVisualizationWidthSettings {538539/// @brief constructor540GUIVisualizationWidthSettings();541542/// @brief equality comparator543bool operator==(const GUIVisualizationWidthSettings& other);544545/// @brief inequality comparator546bool operator!=(const GUIVisualizationWidthSettings& other);547548/// @brief width for trips549double tripWidth;550551/// @brief width for person trips552double personTripWidth;553554/// @brief width for walks555double walkWidth;556557/// @brief width for rides558double rideWidth;559560/// @brief width for rides561double transportWidth;562563/// @brief width for rides564double transhipWidth;565566/// @brief width for routes567static const double routeWidth;568569/// @brief width for embeddedroutes570static const double embeddedRouteWidth;571};572573574/// @brief struct for detail settings575struct GUIVisualizationDetailSettings {576577/// @brief draw connections in demand mode578static const double tmp;579};580581582/**583* @class GUIVisualizationSettings584* @brief Stores the information about how to visualize structures585*/586class GUIVisualizationSettings {587588public:589590enum class Detail : int {591Level0 = 0,592CircleResolution32 = 0, // circle resolution = 32593DrawPolygonTesselation = 0, // draw polygons tesselated594LaneDetails = 0, // offset, icons, indicators...595Text = 0, // draw text (E2, routes...)596VehiclePoly = 0, // draw vehicles as polygons597JunctionElementDetails = 0, // draw junction elements with high detail (crossings, connections..)598LockedIcons = 0, // draw lock icons599600Level1 = 1,601CircleResolution16 = 1, // circle resolution = 16602VehicleBox = 1, // vehicles as boxes603AdditionalDetails = 1, // stoppingPlace signs, EntryExit arrows...604GeometryPoint = 1, // draw geometry points605JunctionElement = 1, // crossings, walking area, connections and internal lanes606DottedContoursResampled = 1, // resample dotted contours607PreciseSelection = 1, // precise selection using boundaries608DottedContours = 1, // draw dotted contours609610Level2 = 2,611CircleResolution8 = 2, // circle resolution = 8612DrawPolygonSquare = 2, // draw polygons as squares613VehicleTriangle = 2, // draw vehicles as triangles614Additionals = 2, // draw additional elements615GeometryBoxLines = 2, // draw lines instead boxes in GUIGeometry::drawGeometry616617Level3 = 3,618CircleResolution4 = 3, // draw circle resolution as squares619TLSIcon = 3, // draw TLS icons620621Level4 = 4,622GeometryBoxSimpleLine = 4, // draw lines with width = 1 instead boxes in GUIGeometry::drawGeometry623};624625/// @brief constructor626GUIVisualizationSettings(const std::string& _name, bool _netedit = false);627628/// @brief check if draw junction629bool checkDrawJunction(const Boundary& b, const bool selected) const;630631/// @brief check if draw edge632bool checkDrawEdge(const Boundary& b) const;633634/// @brief update ignore hide by zoom (call BEFORE drawing all elements).635void updateIgnoreHideByZoom();636637/// @brief check if draw additionals638bool checkDrawAdditional(Detail d, const bool selected) const;639640/// @brief check if draw polygon641bool checkDrawPoly(const Boundary& b, const bool selected) const;642643/// @brief check if draw POI644bool checkDrawPOI(const double w, const double h, const Detail d, const bool selected) const;645646/// @brief check if draw vehicle647bool checkDrawVehicle(Detail d, const bool selected) const;648649/// @brief check if draw person650bool checkDrawPerson(Detail d, const bool selected) const;651652/// @brief check if draw container653bool checkDrawContainer(Detail d, const bool selected) const;654655/// @brief copy all content from another GUIVisualizationSettings (note: DON'T USE in DrawGL functions!)656void copy(const GUIVisualizationSettings& s);657658/// @brief init default settings659void initNeteditDefaults();660void initSumoGuiDefaults();661662/** @brief Writes the settings into an output device663* @param[in] dev The device to write the settings into664*/665void save(OutputDevice& dev) const;666667/** @brief Returns the number of the active lane (edge) coloring scheme668* @return number of the active scheme669*/670int getLaneEdgeMode() const;671672/** @brief Returns the number of the active lane (edge) scaling scheme673* @return number of the active scheme674*/675int getLaneEdgeScaleMode() const;676677/** @brief Returns the current lane (edge) coloring scheme678* @return current scheme679*/680GUIColorScheme& getLaneEdgeScheme();681682/** @brief Returns the current lane (edge) scaling scheme683* @return current scheme684*/685GUIScaleScheme& getLaneEdgeScaleScheme();686687/// @brief Comparison operator688bool operator==(const GUIVisualizationSettings& vs2);689690/// @brief map from LinkState to color constants691static const RGBColor& getLinkColor(const LinkState& ls, bool realistic = false);692693/// @brief return an angle that is suitable for reading text aligned with the given angle (degrees)694double getTextAngle(double objectAngle) const;695696/// @brief return wether the text was flipped for reading at the given angle697bool flippedTextAngle(double objectAngle) const;698699/// @brief return the detail level700Detail getDetailLevel(const double exaggeration) const;701702/// @brief check if details can be drawn for the given GUIVisualizationDetailSettings and current scale and exaggeration703bool drawDetail(const double detail, const double exaggeration) const;704705/// @brief check if moving geometry point can be draw706bool drawMovingGeometryPoint(const double exaggeration, const double radius) const;707708/// @brief The name of this setting709std::string name;710711/// @brief Whether the settings are for Netedit712bool netedit;713714/// @brief The current view rotation angle715double angle;716717/// @brief Information whether dithering shall be enabled718bool dither;719720/// @brief Information whether frames-per-second should be drawn721bool fps;722723/// @brief drawl all objects according to their z data724bool trueZ;725726/// @name Background visualization settings727/// @{728729/// @brief The background color to use730RGBColor backgroundColor;731732/// @brief Information whether a grid shall be shown733bool showGrid;734735/// @brief Information about the grid spacings736double gridXSize, gridYSize;737/// @}738739/// @name lane visualization settings740/// @{741742/// @brief The mesoscopic edge colorer743GUIColorer edgeColorer;744745/// @brief The mesoscopic edge scaler746GUIScaler edgeScaler;747748/// @brief this should be set at the same time as MSGlobals::gUseMesoSim749static bool UseMesoSim;750751/// @brief The lane colorer752GUIColorer laneColorer;753754/// @brief The lane scaler755GUIScaler laneScaler;756757/// @brief Information whether lane borders shall be drawn758bool laneShowBorders;759760/// @brief Information whether bicycle lane marking shall be drawn761bool showBikeMarkings;762763/// @brief Information whether link textures (arrows) shall be drawn764bool showLinkDecals;765766/// @brief Information whether link rules (colored bars) shall be drawn with a realistic color scheme767bool realisticLinkRules;768769/// @brief Information whether link rules (colored bars) shall be drawn770bool showLinkRules;771772/// @brief Information whether rails shall be drawn773bool showRails;774775/// @brief Setting bundles for optional drawing names with size and color776GUIVisualizationTextSettings edgeName, internalEdgeName, cwaEdgeName, streetName, edgeValue, edgeScaleValue;777778/// @brief flag to show or hide connectors779bool hideConnectors;780781/// @brief The lane exaggeration (upscale thickness)782double laneWidthExaggeration;783784/// @brief The minimum visual lane width for drawing785double laneMinSize;786787/// @brief Whether to show direction indicators for lanes788bool showLaneDirection;789790/// @brief Whether to show sublane boundaries791bool showSublanes;792793/// @brief Whether to improve visualisation of superposed (rail) edges794bool spreadSuperposed;795796/// @brief disable hide by zoom797bool disableHideByZoom;798799/// @brief key for coloring by edge parameter800std::string edgeParam, laneParam;801/// @brief key for coloring by vehicle parameter802std::string vehicleParam;803/// @brief key for scaling by vehicle parameter804std::string vehicleScaleParam;805/// @brief key for rendering vehicle textual parameter806std::string vehicleTextParam;807808/// @brief key for coloring by edgeData809std::string edgeData;810/// @brief id for coloring by live edgeData811std::string edgeDataID;812/// @brief key for scaling by edgeData813std::string edgeDataScaling;814815/// @brief checks and thresholds for rainbow coloring816GUIVisualizationRainbowSettings edgeValueRainBow;817/// @}818819/// @name vehicle visualization settings820/// @{821822/// @brief The vehicle colorer823GUIColorer vehicleColorer;824825/// @brief The size scaling settings for vehicles826GUIScaler vehicleScaler;827828/// @brief The quality of vehicle drawing829int vehicleQuality;830831/// @brief Information whether vehicle blinkers shall be drawn832bool showBlinker;833834/// @brief Information whether the lane change preference shall be drawn835bool drawLaneChangePreference;836837/// @brief Information whether the minimum gap shall be drawn838bool drawMinGap;839840/// @brief Information whether the brake gap shall be drawn841bool drawBrakeGap;842843/// @brief Information whether the communication range shall be drawn844bool showBTRange;845846/// @brief Information whether the route index should be shown847bool showRouteIndex;848849/// @brief Whether vehicle length shall be scaled with length/geometry factor850bool scaleLength;851852/// @brief Whether to draw reversed vehicles in their reversed state853bool drawReversed;854855/// @brief Set whether parking related information should be shown856bool showParkingInfo;857858/// @brief Set whether the charging search related information should be shown859bool showChargingInfo;860861// Setting bundles for controling the size of the drawn vehicles862GUIVisualizationSizeSettings vehicleSize;863864// Setting bundles for optional drawing vehicle names or color value865GUIVisualizationTextSettings vehicleName, vehicleValue, vehicleScaleValue, vehicleText;866867GUIVisualizationRainbowSettings vehicleValueRainBow;868/// @}869870871/// @name person visualization settings872/// @{873874/// @brief The person colorer875GUIColorer personColorer;876877/// @brief The quality of person drawing878int personQuality;879880// Setting bundles for controling the size of the drawn persons881GUIVisualizationSizeSettings personSize;882883// Setting bundles for optional drawing person names884GUIVisualizationTextSettings personName, personValue;885886/// @brief Flag for visualizing the pedestrian network generated for JuPedSim887bool showPedestrianNetwork;888889/// @brief The color of the pedestrian network generated for JuPedSim890RGBColor pedestrianNetworkColor;891/// @}892893894/// @name container visualization settings895/// @{896897/// @brief The container colorer898GUIColorer containerColorer;899900/// @brief The quality of container drawing901int containerQuality;902903// Setting bundles for controling the size of the drawn containers904GUIVisualizationSizeSettings containerSize;905906// Setting bundles for optional drawing container names907GUIVisualizationTextSettings containerName;908/// @}909910911/// @name junction visualization settings912/// @{913914/// @brief The junction colorer915GUIColorer junctionColorer;916917// Setting bundles for optional drawing junction names and indices918GUIVisualizationTextSettings drawLinkTLIndex, drawLinkJunctionIndex, junctionID, junctionName, internalJunctionName, tlsPhaseIndex, tlsPhaseName;919920/// @brief Information whether lane-to-lane arrows shall be drawn921bool showLane2Lane;922/// @brief whether the shape of the junction should be drawn923bool drawJunctionShape;924/// @brief whether crossings and walkingareas shall be drawn925bool drawCrossingsAndWalkingareas;926// Setting bundles for controling the size of the drawn junction927GUIVisualizationSizeSettings junctionSize;928929GUIVisualizationRainbowSettings junctionValueRainBow;930/// @}931932933/// @name Additional structures visualization settings934/// @{935936/// @brief The additional structures visualization scheme937// @todo decouple addExaggeration for POIs, Polygons, Triggers etc938int addMode;939// Setting bundles for controling the size of additional items940GUIVisualizationSizeSettings addSize;941// Setting bundles for optional drawing additional names942GUIVisualizationTextSettings addName;943// Setting bundles for optional drawing additional full names944GUIVisualizationTextSettings addFullName;945/// @}946947948/// @name shapes visualization settings949/// @{950951/// @brief The POI colorer952GUIColorer poiColorer;953954// Setting bundles for controling the size of the drawn POIs955GUIVisualizationSizeSettings poiSize;956957/// @brief The detail level for drawing POIs958int poiDetail;959960// Setting bundles for optional drawing poi names961GUIVisualizationTextSettings poiName;962963// Setting bundles for optional drawing poi types964GUIVisualizationTextSettings poiType;965966// Setting bundles for optional drawing poi text967GUIVisualizationTextSettings poiText;968969/// @brief key for rendering poi textual parameter970std::string poiTextParam;971972/// @brief whether the rendering layer of POIs should be overriden973bool poiUseCustomLayer;974975/// @brief the custom layer for POIs976double poiCustomLayer;977978/// @brief The polygon colorer979GUIColorer polyColorer;980981// Setting bundles for controling the size of the drawn polygons982GUIVisualizationSizeSettings polySize;983984// Setting bundles for optional drawing polygon names985GUIVisualizationTextSettings polyName;986987// Setting bundles for optional drawing polygon types988GUIVisualizationTextSettings polyType;989990/// @brief whether the rendering layer of polygons should be overriden991bool polyUseCustomLayer;992993/// @brief the custom layer for polygons994double polyCustomLayer;995/// @}996997998/// @name data mode visualization settings999/// @{1000/// @brief the edgeRelation / tazRelation colorer1001GUIColorer dataColorer;1002GUIVisualizationTextSettings dataValue;10031004/// @brief The tazRelation exaggeration (upscale thickness)1005double tazRelWidthExaggeration;10061007/// @brief The edgeRelation exaggeration (upscale thickness)1008double edgeRelWidthExaggeration;10091010/// @brief key for coloring by edgeRelation / tazRelation attribute1011std::string relDataAttr;10121013/// @brief value below which edgeData and edgeRelation data value should not be rendered1014GUIVisualizationRainbowSettings dataValueRainBow;1015/// @}101610171018/// @name 3D visualization settings1019/// @{1020/// @brief whether the coloring schemes of vehicles should be ignored1021bool ignoreColorSchemeFor3DVehicles;10221023/// @brief whether the TLS link markers should be drawn1024bool show3DTLSLinkMarkers;10251026/// @brief whether the semi-transparent domes around 3D TL models should be drawn1027bool show3DTLSDomes;10281029/// @brief whether 3D TLS models should be generated automatically1030bool generate3DTLSModels;10311032/// @brief whether to draw the head up display items1033bool show3DHeadUpDisplay;10341035/// @brief 3D material light components1036RGBColor ambient3DLight;1037RGBColor diffuse3DLight;10381039/// @brief sky background color1040RGBColor skyColor;10411042/// @}104310441045/// @brief Information whether the size legend shall be drawn1046bool showSizeLegend;10471048/// @brief Information whether the edge color legend shall be drawn1049bool showColorLegend;10501051/// @brief Information whether the vehicle color legend shall be drawn1052bool showVehicleColorLegend;10531054/// @brief information about a lane's width (temporary, used for a single view)1055double scale;10561057/// @brief whether the application is in gaming mode or not1058bool gaming;10591060/// @brief enable or disable draw boundaries1061bool drawBoundaries;10621063/// @brief the current selection scaling in netedit (set in SelectorFrame)1064double selectorFrameScale;10651066/// @brief whether drawing is performed for the purpose of selecting objects in view using ViewObjectsHandler1067bool drawForViewObjectsHandler;10681069/// @brief whether drawing is performed for the purpose of selecting objects using a rectangle1070bool drawForRectangleSelection;10711072/// @brief flag to force draw for rectangle selection (see drawForRectangleSelection)1073bool forceDrawForRectangleSelection;10741075/// @brief flag for disable dotted contours in netedit1076bool disableDottedContours;10771078// Setting bundles for optional drawing geometry point indices1079GUIVisualizationTextSettings geometryIndices;10801081/// @brief whether secondary lane shape shall be drawn1082bool secondaryShape;10831084/**@brief whether drawing is performed in left-hand networks1085* @note used to avoid calls to OptionsCont::getOptions() in every drawgl(...) function, and1086* updated in every doPaintGL(int mode, const Boundary& bound) call1087*/1088bool lefthand;10891090/**@brief whether drawing is performed in left-hand networks1091* @note used to avoid calls to OptionsCont::getOptions() in every drawgl(...) function, and1092* updated in every doPaintGL(int mode, const Boundary& bound) call1093*/1094bool disableLaneIcons;10951096/// @brief scheme names1097static const std::string SCHEME_NAME_EDGE_PARAM_NUMERICAL;1098static const std::string SCHEME_NAME_LANE_PARAM_NUMERICAL;1099static const std::string SCHEME_NAME_PARAM_NUMERICAL;1100static const std::string SCHEME_NAME_EDGEDATA_NUMERICAL;1101static const std::string SCHEME_NAME_DATA_ATTRIBUTE_NUMERICAL;1102static const std::string SCHEME_NAME_SELECTION;1103static const std::string SCHEME_NAME_TYPE;1104static const std::string SCHEME_NAME_PERMISSION_CODE;1105static const std::string SCHEME_NAME_EDGEDATA_LIVE;11061107static const double MISSING_DATA;1108static RGBColor COL_MISSING_DATA;11091110static std::map<std::string, std::vector<RGBColor> > RAINBOW_SCHEMES;11111112/// @brief color settings1113GUIVisualizationColorSettings colorSettings;11141115/// @brief candidate color settings1116GUIVisualizationCandidateColorSettings candidateColorSettings;11171118/// @brief netedit size settings1119GUIVisualizationNeteditSizeSettings neteditSizeSettings;11201121/// @brief connection settings1122GUIVisualizationConnectionSettings connectionSettings;11231124/// @brief Additional settings1125GUIVisualizationAdditionalSettings additionalSettings;11261127/// @brief Detector settings1128GUIVisualizationDetectorSettings detectorSettings;11291130/// @brief StoppingPlace settings1131GUIVisualizationStoppingPlaceSettings stoppingPlaceSettings;11321133/// @brief dotted contour settings1134GUIVisualizationDottedContourSettings dottedContourSettings;11351136/// @brief width settings1137GUIVisualizationWidthSettings widthSettings;11381139/// @brief detail settings1140GUIVisualizationDetailSettings detailSettings;11411142/// @brief constant for boundary size drawing (20 for slow computers, 10 for quick computers)1143double BoundarySizeDrawing = 15;11441145protected:1146/// @brief flag for ignore hide by zoom (used if we're drawing elements with constant size, their ID/name/etc. texts, etc.)1147bool myIgnoreHideByZoom;11481149private:1150/// @brief set copy constructor private1151GUIVisualizationSettings(const GUIVisualizationSettings&) = default;11521153/// @brief set assignment operator private1154GUIVisualizationSettings& operator=(const GUIVisualizationSettings&) = default;1155};115611571158