Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
GNEParkingSpace.cpp
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2001-2026 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/****************************************************************************/
18// A lane area vehicles can halt at (GNE version)
19/****************************************************************************/
20
23#include <netedit/GNENet.h>
26
27#include "GNEParkingSpace.h"
28
29// ===========================================================================
30// method definitions
31// ===========================================================================
32
33#ifdef _MSC_VER
34#pragma warning(push)
35#pragma warning(disable: 4355) // mask warning about "this" in initializers
36#endif
39 myMoveElementViewResizable(new GNEMoveElementViewResizable(this, GNEMoveElementView::AttributesFormat::CARTESIAN,
40 GNEMoveElementViewResizable::ResizingFormat::WIDTH_LENGTH, SUMO_ATTR_POSITION,
41 myPosOverView)) {
42}
43
44
46 const double width, const double length, const double angle,
47 const double slope, const std::string& name,
48 const Parameterised::Map& parameters) :
49 GNEAdditional(parkingAreaParent, SUMO_TAG_PARKING_SPACE, name),
50 Parameterised(parameters),
51 myPosOverView(pos),
52 myWidth(width),
53 myLength(length),
54 myMoveElementViewResizable(new GNEMoveElementViewResizable(this, GNEMoveElementView::AttributesFormat::CARTESIAN,
55 GNEMoveElementViewResizable::ResizingFormat::WIDTH_LENGTH, SUMO_ATTR_POSITION,
56 myPosOverView)),
57 myAngle(angle),
58 mySlope(slope) {
59 // set parents
60 setParent<GNEAdditional*>(parkingAreaParent);
61 // update centering boundary without updating grid
63}
64#ifdef _MSC_VER
65#pragma warning(pop)
66#endif
67
68
72
73
78
79
82 return this;
83}
84
85
86const Parameterised*
88 return this;
89}
90
91
92void
94 device.openTag(getTagProperty()->getTag());
95 // write common additional attributes
97 // write move atributes
99 // write specific attributes
100 if (myWidth != INVALID_DOUBLE) {
102 }
103 if (myLength != INVALID_DOUBLE) {
105 }
106 if (myAngle != INVALID_DOUBLE) {
108 }
111 }
112 // write parameters (Always after children to avoid problems with additionals.xsd)
113 writeParams(device);
114 device.closeTag();
115}
116
117
118bool
120 return true;
121}
122
123
124std::string
126 return "";
127}
128
129
130void
132 // nothing to fix
133}
134
135
136bool
138 // get edit modes
139 const auto& editModes = myNet->getViewNet()->getEditModes();
140 // check if we're in move mode
141 if (!myNet->getViewNet()->isCurrentlyMovingElements() && editModes.isCurrentSupermodeNetwork() &&
143 (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
144 // only move the first element
146 } else {
147 return false;
148 }
149}
150
151
152void
154 // get width an length
155 const double width = getAttributeDouble(SUMO_ATTR_WIDTH) <= 0 ? POSITION_EPS : getAttributeDouble(SUMO_ATTR_WIDTH);
156 const double length = getAttributeDouble(SUMO_ATTR_LENGTH) <= 0 ? POSITION_EPS : getAttributeDouble(SUMO_ATTR_LENGTH);
157 // calculate shape length
161 // rotate
163 // move
165 // calculate shape width
167 leftShape.move2side(width * -0.5);
169 rightShape.move2side(width * 0.5);
170 myMoveElementViewResizable->myShapeWidth = {leftShape.getCentroid(), rightShape.getCentroid()};
171 // update centering boundary
173}
174
175
180
181
182void
184 // remove additional from grid
185 if (updateGrid) {
187 }
188 // first reset boundary
190 // add position
192 // add center
194 // add width
195 for (const auto& pos : myMoveElementViewResizable->myShapeWidth) {
197 }
198 // add length
199 for (const auto& pos : myMoveElementViewResizable->myShapeHeight) {
201 }
202 // grow
204 // add additional into RTREE again
205 if (updateGrid) {
207 }
208}
209
210
211void
212GNEParkingSpace::splitEdgeGeometry(const double /*splitPosition*/, const GNENetworkElement* /*originalElement*/, const GNENetworkElement* /*newElement*/, GNEUndoList* /*undoList*/) {
213 // geometry of this element cannot be splitted
214}
215
216
217std::string
219 return getParentAdditionals().at(0)->getID();
220}
221
222
223void
225 // first check if additional has to be drawn
227 // draw boundaries
229 // get exaggeration
230 const double spaceExaggeration = getExaggeration(s);
231 // get witdh
232 const double parkingSpaceWidth = myMoveElementViewResizable->myShapeWidth.length2D() * 0.5 + (spaceExaggeration * 0.1);
233 // get detail level
234 const auto d = s.getDetailLevel(spaceExaggeration);
235 // check if draw moving geometry points
236 const bool movingGeometryPoints = drawMovingGeometryPoints();
237 // draw geometry only if we'rent in drawForObjectUnderCursor mode
239 // draw space
240 drawSpace(s, d, parkingSpaceWidth, movingGeometryPoints);
241 // draw parent and child lines
243 // draw lock icon
245 // Draw additional ID
247 // draw additional name
249 // draw dotted contours
250 if (movingGeometryPoints) {
251 // get snap radius
253 const double snapRadiusSquared = snapRadius * snapRadius;
254 // get mouse position
255 const Position mousePosition = myNet->getViewNet()->getPositionInformation();
256 // check if we're editing width or height
257 if (myMoveElementViewResizable->myShapeHeight.back().distanceSquaredTo2D(mousePosition) <= snapRadiusSquared) {
260 } else if ((myMoveElementViewResizable->myShapeWidth.front().distanceSquaredTo2D(mousePosition) <= snapRadiusSquared) ||
261 (myMoveElementViewResizable->myShapeWidth.back().distanceSquaredTo2D(mousePosition) <= snapRadiusSquared)) {
264 }
265 } else {
267 }
268
269 }
270 // calculate contour
271 calculateSpaceContour(s, d, parkingSpaceWidth, spaceExaggeration, movingGeometryPoints);
272 }
273}
274
275
276std::string
278 switch (key) {
279 case SUMO_ATTR_ID:
280 return getMicrosimID();
281 case SUMO_ATTR_NAME:
282 return myAdditionalName;
283 case SUMO_ATTR_WIDTH:
284 return (myWidth != INVALID_DOUBLE) ? toString(myWidth) : "";
285 case SUMO_ATTR_LENGTH:
286 return (myLength != INVALID_DOUBLE) ? toString(myLength) : "";
287 case SUMO_ATTR_ANGLE:
288 return (myAngle != INVALID_DOUBLE) ? toString(myAngle) : "";;
289 case SUMO_ATTR_SLOPE:
290 return toString(mySlope);
291 case GNE_ATTR_PARENT:
292 if (isTemplate()) {
293 return "";
294 } else {
295 return getParentAdditionals().at(0)->getID();
296 }
297 default:
299 }
300}
301
302
303double
305 switch (key) {
306 case SUMO_ATTR_WIDTH:
307 return (myWidth != INVALID_DOUBLE) ? myWidth : getParentAdditionals().front()->getAttributeDouble(SUMO_ATTR_WIDTH);
308 case SUMO_ATTR_LENGTH:
309 return (myLength != INVALID_DOUBLE) ? myLength : getParentAdditionals().front()->getAttributeDouble(SUMO_ATTR_LENGTH);
310 case SUMO_ATTR_ANGLE:
311 return (myAngle != INVALID_DOUBLE) ? myAngle : getParentAdditionals().front()->getAttributeDouble(SUMO_ATTR_ANGLE);
312 default:
314 }
315}
316
317
322
323
328
329
330void
331GNEParkingSpace::setAttribute(SumoXMLAttr key, const std::string& value, GNEUndoList* undoList) {
332 if (value == getAttribute(key)) {
333 return; //avoid needless changes, later logic relies on the fact that attributes have changed
334 }
335 switch (key) {
336 case SUMO_ATTR_NAME:
337 case SUMO_ATTR_WIDTH:
338 case SUMO_ATTR_LENGTH:
339 case SUMO_ATTR_ANGLE:
340 case SUMO_ATTR_SLOPE:
341 case GNE_ATTR_PARENT:
342 GNEChange_Attribute::changeAttribute(this, key, value, undoList);
343 break;
344 default:
345 myMoveElementViewResizable->setMovingAttribute(key, value, undoList);
346 break;
347 }
348}
349
350
351bool
352GNEParkingSpace::isValid(SumoXMLAttr key, const std::string& value) {
353 switch (key) {
354 case SUMO_ATTR_NAME:
356 case SUMO_ATTR_WIDTH:
357 return value.empty() || (canParse<double>(value) && (parse<double>(value) > 0));
358 case SUMO_ATTR_LENGTH:
359 return value.empty() || (canParse<double>(value) && (parse<double>(value) > 0));
360 case SUMO_ATTR_ANGLE:
361 return value.empty() || canParse<double>(value);
362 case SUMO_ATTR_SLOPE:
363 return canParse<double>(value);
364 case GNE_ATTR_PARENT:
365 return (myNet->getAttributeCarriers()->retrieveAdditional(SUMO_TAG_PARKING_AREA, value, false) != nullptr);
366 default:
368 }
369}
370
371
372std::string
374 return getTagStr();
375}
376
377
378std::string
382
383// ===========================================================================
384// private
385// ===========================================================================
386
387void
389 const double width, const bool movingGeometryPoints) const {
390 // get angle
391 const double angle = getAttributeDouble(SUMO_ATTR_ANGLE);
392 // get contour color
394 if (drawUsingSelectColor()) {
395 contourColor = s.colorSettings.selectedAdditionalColor;
398 }
399 // push later matrix
401 // translate to front
403 // set contour color
404 GLHelper::setColor(contourColor);
405 // draw extern
407 // make a copy of myShapeLength and scale
409 shapeLengthInner.scaleAbsolute(-0.1);
410 // draw intern
412 // Traslate to front
413 glTranslated(0, 0, 0.1);
414 // set base color
416 //draw intern
417 GLHelper::drawBoxLines(shapeLengthInner, width - 0.1);
418 }
419 // draw geometry points
420 if (movingGeometryPoints) {
423 }
427 }
428 }
429 // pop layer matrix
431}
432
433
434void
436 const double width, const double exaggeration, const bool movingGeometryPoints) const {
437 // check if we're calculating the contour or the moving geometry points
438 if (movingGeometryPoints) {
440 getType(), exaggeration, nullptr);
442 exaggeration, nullptr);
444 exaggeration, nullptr);
445 } else {
446 myAdditionalContour.calculateContourExtrudedShape(s, d, this, myMoveElementViewResizable->myShapeHeight, getType(), width, exaggeration, true, true, 0, nullptr, nullptr);
447 }
448}
449
450
451void
452GNEParkingSpace::setAttribute(SumoXMLAttr key, const std::string& value) {
453 switch (key) {
454 case SUMO_ATTR_NAME:
455 myAdditionalName = value;
456 break;
457 case SUMO_ATTR_WIDTH:
458 if (value.empty()) {
460 } else {
461 myWidth = parse<double>(value);
462 }
463 break;
464 case SUMO_ATTR_LENGTH:
465 if (value.empty()) {
467 } else {
468 myLength = parse<double>(value);
469 }
470 break;
471 case SUMO_ATTR_ANGLE:
472 if (value.empty()) {
474 } else {
475 myAngle = parse<double>(value);
476 }
477 break;
478 case SUMO_ATTR_SLOPE:
479 mySlope = parse<double>(value);
480 break;
481 case GNE_ATTR_PARENT:
483 break;
484 default:
486 break;
487 }
488 // update geometry (except for template)
489 if (getParentAdditionals().size() > 0) {
491 }
492}
493
494/****************************************************************************/
@ NETWORK_MOVE
mode for moving network elements
@ GLO_PARKING_SPACE
a ParkingSpace
#define DEG2RAD(x)
Definition GeomHelper.h:35
@ SUMO_TAG_PARKING_AREA
A parking area.
@ SUMO_TAG_PARKING_SPACE
A parking space for a single vehicle within a parking area.
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
@ GNE_ATTR_PARENT
parent of an additional element
@ SUMO_ATTR_NAME
@ SUMO_ATTR_SLOPE
@ SUMO_ATTR_ANGLE
@ SUMO_ATTR_LENGTH
@ SUMO_ATTR_ID
@ SUMO_ATTR_WIDTH
@ SUMO_ATTR_POSITION
const double INVALID_DOUBLE
invalid double
Definition StdDefs.h:68
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition ToString.h:49
void add(double x, double y, double z=0)
Makes the boundary include the given coordinate.
Definition Boundary.cpp:75
void reset()
Resets the boundary.
Definition Boundary.cpp:63
Boundary & grow(double by)
extends the boundary by the given amount
Definition Boundary.cpp:340
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
Definition GLHelper.cpp:649
static void popMatrix()
pop matrix
Definition GLHelper.cpp:131
static void drawBoxLines(const PositionVector &geom, const std::vector< double > &rots, const std::vector< double > &lengths, double width, int cornerDetail=0, double offset=0)
Draws thick lines.
Definition GLHelper.cpp:348
static void drawBoundary(const GUIVisualizationSettings &s, const Boundary &b)
Draw a boundary (used for debugging)
Definition GLHelper.cpp:952
static void pushMatrix()
push matrix
Definition GLHelper.cpp:118
double getExaggeration(const GUIVisualizationSettings &s) const override
return exaggeration associated with this GLObject
void replaceAdditionalParent(SumoXMLTag tag, const std::string &value, const int parentIndex)
replace additional parent
void drawRightGeometryPoint(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const Position &pos, const double rot, const RGBColor &baseColor, const bool ignoreShift=false) const
draw right geometry point
GNEContour myAdditionalContour
variable used for draw additional contours
void drawAdditionalID(const GUIVisualizationSettings &s) const
draw additional ID
Boundary getCenteringBoundary() const override
Returns the boundary to which the view shall be centered in order to show the object.
void drawUpGeometryPoint(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const Position &pos, const double rot, const RGBColor &baseColor, const bool ignoreShift=false) const
draw up geometry point
std::string myAdditionalName
name of additional
void drawAdditionalName(const GUIVisualizationSettings &s) const
draw additional name
void writeAdditionalAttributes(OutputDevice &device) const
write common additional attributes
Boundary myAdditionalBoundary
Additional Boundary (used only by additionals placed over grid)
void drawLeftGeometryPoint(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const Position &pos, const double rot, const RGBColor &baseColor, const bool ignoreShift=false) const
draw left geometry point
void drawParentChildLines(const GUIVisualizationSettings &s, const RGBColor &color, const bool onlySymbols=false) const
draw parent and child lines
bool drawMovingGeometryPoints() const
check if draw moving geometry points
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
bool mySelected
boolean to check if this AC is selected (more quickly as checking GUIGlObjectStorage)
const std::string & getTagStr() const
get tag assigned to this object in string format
bool isTemplate() const
check if this AC is template
bool drawUsingSelectColor() const
check if attribute carrier must be drawn using selecting color.
void drawInLayer(const double typeOrLayer, const double extraOffset=0) const
draw element in the given layer, or in front if corresponding flag is enabled
const GNETagProperties * getTagProperty() const
get tagProperty associated with this Attribute Carrier
GNENet * myNet
pointer to net
const GNETagProperties * myTagProperty
reference to tagProperty associated with this attribute carrier
static void changeAttribute(GNEAttributeCarrier *AC, SumoXMLAttr key, const std::string &value, GNEUndoList *undoList, const bool force=false)
change attribute
void calculateContourExtrudedShape(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const GUIGlObject *glObject, const PositionVector &shape, const double layer, const double extrusionWidth, const double scale, const bool closeFirstExtrem, const bool closeLastExtrem, const double offset, const GNESegment *segment, const GUIGlObject *boundaryParent, const bool addToSelectedObjects=true) const
calculate contour extruded (used in elements formed by a central shape)
void calculateContourCircleShape(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const GUIGlObject *glObject, const Position &pos, double radius, const double layer, const double scale, const GUIGlObject *boundaryParent) const
calculate contour (circle elements)
bool drawDottedContours(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const GNEAttributeCarrier *AC, const double lineWidth, const bool addOffset) const
draw dotted contours (basics, select, delete, inspect...)
const GNEHierarchicalContainerParents< GNEAdditional * > & getParentAdditionals() const
get parent additionals
Position getMovingAttributePosition(SumoXMLAttr key) const override
get moving attribute position
void writeMoveAttributes(OutputDevice &device) const
write move attributes
void setMovingAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList) override
set moving attribute (using undo-list)
PositionVector getMovingAttributePositionVector(SumoXMLAttr key) const override
get moving attribute positionVector
double getMovingAttributeDouble(SumoXMLAttr key) const override
get moving attribute double
std::string getMovingAttribute(SumoXMLAttr key) const override
get moving attribute
bool isMovingAttributeValid(SumoXMLAttr key, const std::string &value) const override
check if the given moving attribute is valid
GNEContour myMovingContourLeft
variable used for moving geometry point contour left
GNEContour myMovingContourRight
variable used for moving geometry point contour right
GNEContour myMovingContourUp
variable used for moving geometry point contour up
GNEContour myMovingContourDown
variable used for moving geometry point contour down
PositionVector myShapeWidth
shape width
PositionVector myShapeHeight
shape height
GNEAdditional * retrieveAdditional(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named additional.
void addGLObjectIntoGrid(GNEAttributeCarrier *AC)
add GL Object into net
Definition GNENet.cpp:1449
void removeGLObjectFromGrid(GNEAttributeCarrier *AC)
add GL Object into net
Definition GNENet.cpp:1459
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
Definition GNENet.cpp:174
GNEViewNet * getViewNet() const
get view net (used for simplify code)
Definition GNENet.cpp:144
Position myPosOverView
position over view
GNEMoveElement * getMoveElement() const override
methods to retrieve the elements linked to this space
void calculateSpaceContour(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const double width, const double exaggeration, const bool movingGeometryPoints) const
calculate space contour
std::string getAdditionalProblem() const override
return a string with the current additional problem (must be reimplemented in all detector children)
std::string getParentName() const override
Returns the name of the parent object.
void splitEdgeGeometry(const double splitPosition, const GNENetworkElement *originalElement, const GNENetworkElement *newElement, GNEUndoList *undoList) override
split geometry
void drawSpace(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const double width, const bool movingGeometryPoints) const
draw space
PositionVector getAttributePositionVector(SumoXMLAttr key) const override
void updateCenteringBoundary(const bool updateGrid) override
update centering boundary (implies change in RTREE)
void writeAdditional(OutputDevice &device) const override
write additional element into a xml file
std::string getPopUpID() const override
get PopPup ID (Used in AC Hierarchy)
Position getPositionInView() const override
Returns position of additional in view.
double myWidth
width
std::string getAttribute(SumoXMLAttr key) const override
std::string getHierarchyName() const override
get Hierarchy Name (Used in AC Hierarchy)
double mySlope
Slope of Parking Space.
~GNEParkingSpace()
Destructor.
void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList) override
Position getAttributePosition(SumoXMLAttr key) const override
Parameterised * getParameters() override
get parameters associated with this space
GNEParkingSpace(GNENet *net)
Constructor.
bool isAdditionalValid() const override
check if current additional is valid to be written into XML (must be reimplemented in all detector ch...
bool checkDrawMoveContour() const override
check if draw move contour (red)
double myLength
length
GNEMoveElementViewResizable * myMoveElementViewResizable
move element view resizable
void drawGL(const GUIVisualizationSettings &s) const override
Draws the object.
void fixAdditionalProblem() override
fix additional problem (must be reimplemented in all detector children)
double myAngle
Angle of Parking Space.
void updateGeometry() override
update pre-computed geometry information
double getAttributeDouble(SumoXMLAttr key) const override
bool isValid(SumoXMLAttr key, const std::string &value) override
double getDefaultDoubleValue(SumoXMLAttr attr) const
get default double value
const GUIGlObject * getGUIGlObjectFront() const
get front GUIGLObject or a pointer to nullptr
bool isCurrentlyMovingElements() const
check if an element is being moved
const GNEViewNetHelper::DataViewOptions & getDataViewOptions() const
get data view options
const GNEViewNetHelper::EditModes & getEditModes() const
get edit modes
const GNEViewNetHelper::EditNetworkElementShapes & getEditNetworkElementShapes() const
get Edit Shape module
bool checkOverLockedElement(const GUIGlObject *GLObject, const bool isSelected) const
check if given element is locked (used for drawing select and delete contour)
const GNEViewNetHelper::ViewObjectsSelector & getViewObjectsSelector() const
get objects under cursor
const std::string & getMicrosimID() const
Returns the id of the object as known to microsim.
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
const GUIVisualizationSettings & getVisualisationSettings() const
get visualization settings (read only)
virtual Position getPositionInformation() const
Returns the cursor's x/y position within the network.
Stores the information about how to visualize structures.
bool checkDrawAdditional(Detail d, const bool selected) const
check if draw additionals
Detail getDetailLevel(const double exaggeration) const
return the detail level
GUIVisualizationColorSettings colorSettings
color settings
GUIVisualizationDottedContourSettings dottedContourSettings
dotted contour settings
GUIVisualizationAdditionalSettings additionalSettings
Additional settings.
GUIVisualizationNeteditSizeSettings neteditSizeSettings
netedit size settings
Static storage of an output device and its base (abstract) implementation.
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
OutputDevice & writeAttr(const ATTR_TYPE &attr, const T &val, const bool isNull=false)
writes a named attribute
bool closeTag(const std::string &comment="")
Closes the most recently opened tag and optionally adds a comment.
An upper class for objects with additional parameters.
std::map< std::string, std::string > Map
parameters map
void writeParams(OutputDevice &device) const
write Params in the given outputdevice
A point in 2D or 3D with translation and scaling methods.
Definition Position.h:37
A list of positions.
void scaleAbsolute(double offset)
enlarges/shrinks the polygon by an absolute offset based at the centroid
double length2D() const
Returns the length.
void rotate2D(double angle)
Position getPolygonCenter() const
Returns the arithmetic of all corner points.
void add(double xoff, double yoff, double zoff)
void move2side(double amount, double maxExtension=100)
move position vector to side using certain amount
Position getCentroid() const
Returns the centroid (closes the polygon if unclosed)
static const RGBColor ORANGE
Definition RGBColor.h:198
static bool isValidAttribute(const std::string &value)
whether the given string is a valid attribute for a certain key (for example, a name)
bool showAdditionals() const
check if additionals has to be drawn
GNENetworkElement * getEditedNetworkElement() const
pointer to edited network element
static void drawLockIcon(const GUIVisualizationSettings::Detail d, const GNEAttributeCarrier *AC, GUIGlObjectType type, const Position position, const double exaggeration, const double size=0.5, const double offsetx=0, const double offsety=0)
draw lock icon
static const RGBColor connectionColor
connection color
RGBColor parkingSpaceColorContour
color for parkingSpace contour
RGBColor parkingSpaceColor
color for parkingSpace innen
RGBColor selectedAdditionalColor
additional selection color (busStops, Detectors...)
static const double segmentWidthSmall
width of small dotted contour segments
static const double segmentWidth
width of dotted contour segments
static const double additionalGeometryPointRadius
moving additional geometry point radius