51FXIMPLEMENT(
GNELane, FXDelegator, 0, 0)
62 selectionScale(lane->isAttributeCarrierSelected() || lane->myParentEdge->isAttributeCarrierSelected() ? s.selectorFrameScale : 1),
63 exaggeration(selectionScale * s.laneWidthExaggeration),
64 halfWidth2(exaggeration * (lane->myParentEdge->getNBEdge()->getLaneWidth(lane->getIndex()) / 2 -
SUMO_const_laneMarkWidth / 2)),
65 halfWidth(lane->drawUsingSelectColor() ? halfWidth2 - exaggeration * 0.3 : halfWidth2) {
91#pragma warning(disable: 4355)
98 mySpecialColor(
nullptr),
99 mySpecialColorValue(-1),
100myLane2laneConnections(
this) {
102 updateCenteringBoundary(
false);
109myParentEdge(
nullptr),
111mySpecialColor(
nullptr),
112mySpecialColorValue(-1),
113myLane2laneConnections(
this) {
151const std::vector<double>&
157const std::vector<double>&
170 if (laneShape.length2D() < 1) {
171 laneShape.extrapolate2D(1 - laneShape.length2D());
179 additional->updateGeometry();
183 additional->updateGeometry();
187 demandElement->updateGeometry();
191 demandElement->updateGeometry();
195 additionalParent->updateGeometry();
199 childAdditionals->updateGeometry();
204 childAdditional->computePathElement();
207 childDemandElement->computePathElement();
210 childGenericData->computePathElement();
217 for (
const auto& connection : incomingConnections) {
218 connection->updateGeometry();
222 for (
const auto& connection : outGoingConnections) {
223 connection->updateGeometry();
266 if (shape.size() > 2) {
272 if ((index != -1) && shape[index].distanceSquaredTo2D(clickedPosition) < (snap_radius * snap_radius)) {
274 shape.erase(shape.begin() + index);
292 const int noLinks = (int)cons.size();
304 for (
int i = noLinks; --i >= 0;) {
306 const double x2 = x1 - (double)(width / 2.);
309 cons[s.
lefthand ? noLinks - 1 - i : i]);
329 const int noLinks = (int)cons.size();
341 for (
int i = noLinks; --i >= 0;) {
343 const double x2 = x1 - (double)(w / 2.);
345 const int linkNo = cons[s.
lefthand ? noLinks - 1 - i : i].tlLinkIndex;
374 glTranslated(0, 0, 0.5);
376 if (spreadSuperposed) {
382 glTranslated(end.
x(), end.
y(), 0);
384 glRotated(rot, 0, 0, 1);
393 if (connection.fromLane ==
myIndex) {
437 glTranslated(0, 5, 0);
439 glTranslated(0, -5, 0);
453 glTranslated(0, 0, 0.1);
457 for (
auto it : connections) {
470 glColor3d(.4, .4, .4);
473 glColor3d(.7, .4, .4);
476 glColor3d(.7, .7, .7);
479 glColor3d(.7, .7, 1);
482 glColor3d(.75, .5, 0.25);
487 const Position& endPos = it.toEdge->getLaneShape(it.toLane)[0];
489 glVertex2d(startPos.
x(), startPos.
y());
490 glVertex2d(endPos.
x(), endPos.
y());
543 double widthFactor = 1;
546 offset = laneDrawingConstants.
halfWidth * 0.5;
551 if (laneDrawingConstants.
halfWidth != laneDrawingConstants.
halfWidth2 && !spreadSuperposed) {
555 glTranslated(0, 0, -0.1);
579 if (laneStopOffset.isDefined() && (laneStopOffset.getPermissions() &
SVC_PASSENGER) != 0) {
611 glTranslated(0, 0, 1);
704 additional->drawGL(s);
708 if (!demandElement->getTagProperty().isPlacedInRTree()) {
709 demandElement->drawGL(s);
720 glTranslated(0, 0, 0.1);
722 bool haveChangeProhibitions =
false;
727 3, 6, myHalfLaneWidth, cl, cr, s.
lefthand, exaggeration);
728 haveChangeProhibitions = !(cl && cr);
732 if (haveChangeProhibitions) {
734 glTranslated(0, 0, -0.05);
736 const double offset = myHalfLaneWidth * exaggeration * (s.
lefthand ? -1 : 1);
738 glTranslated(0, 0, +0.05);
741 glTranslated(0, 0, -0.1);
784 new FXMenuSeparator(ret);
797 resetEndPoints->enable();
799 resetEndPoints->disable();
806 new FXMenuSeparator(ret);
816 new FXMenuSeparator(ret);
823 for (
auto it : names) {
825 FXMenuRadio* mc =
new FXMenuRadio(ret, it.c_str(),
this, FXDataTarget::ID_OPTION + state);
832 mc->handle(&parent, FXSEL(SEL_COMMAND, FXWindow::ID_DISABLE),
nullptr);
836 new FXMenuSeparator(ret);
841 const Position firstAnglePos = laneShape.positionAtOffset2D(pos - 0.001);
842 const Position secondAnglePos = laneShape.positionAtOffset2D(pos);
843 const double angle = firstAnglePos.
angleTo2D(secondAnglePos);
896 if (laneParametricLength > 0) {
897 return laneParametricLength;
899 throw ProcessError(
"Lane Parametric Length cannot be never 0");
1025 return canParse<double>(value);
1032 if (value.empty() || (value ==
"default")) {
1039 return canParse<double>(value) && (parse<double>(value) >= 0);
1041 return canParse<bool>(value);
1044 if (value.empty()) {
1046 }
else if (canParse<PositionVector>(value)) {
1047 return parse<PositionVector>(value).size() > 1;
1052 if (value.empty()) {
1061 WRITE_WARNING(
"Opposite lane '" + value +
"' does not connect the same nodes as edge '" + edge->
getID() +
"'!");
1070 return canParse<double>(value) && (parse<double>(value) >= 0);
1074 return canParse<bool>(value);
1151 if (value.empty() || (value ==
"default")) {
1183 if (oppEdge !=
nullptr) {
1197 if (value.empty()) {
1204 if (parse<bool>(value)) {
1217 if (updateTemplate) {
1250 const GNEAttributeCarrier* inspectedAC = inspectedACs.size() > 0 ? inspectedACs.front() :
nullptr;
1257 for (
const auto& edge : viaEdges) {
1338 switch (activeScheme) {
1354 switch (activeScheme) {
1380 switch (activeScheme) {
1382 switch (myPermissions) {
1400 if ((myPermissions &
SVC_BUS) != 0) {
1417 return (
double)myPermissions;
1513 const double rot =
RAD2DEG(atan2((end.
x() - f.
x()), (f.
y() - end.
y())));
1516 glTranslated(end.
x(), end.
y(), 1);
1517 glRotated(rot, 0, 0, 1);
1518 glTranslated(0, offset, 0);
1520 glVertex2d(-laneDrawingConstants.
halfWidth, 0.0);
1521 glVertex2d(-laneDrawingConstants.
halfWidth, 0.2);
1522 glVertex2d(laneDrawingConstants.
halfWidth, 0.2);
1523 glVertex2d(laneDrawingConstants.
halfWidth, 0.0);
1543 glColor3d(0.3, 0.3, 0.3);
1547 const double sideOffset = spreadSuperposed ? width * -0.5 : 0;
1551 glTranslated(0, 0, 0.1);
1565 glBegin(GL_TRIANGLES);
1566 glVertex2d(sideOffset, -subWidth - length);
1567 glVertex2d(sideOffset - width * 0.25, -subWidth);
1568 glVertex2d(sideOffset + width * 0.25, -subWidth);
1594 if (spreadSuperposed) {
1600 const double halfInnerFeetWidth = halfGauge - 0.039 * laneDrawingConstants.
exaggeration;
1601 const double halfRailWidth = halfInnerFeetWidth + 0.15 * laneDrawingConstants.
exaggeration;
1602 const double halfCrossTieWidth = halfGauge * 1.81;
1608 glColor3d(0.8, 0.8, 0.8);
1610 glTranslated(0, 0, 0.1);
1636 double iconWidth = 1;
1651 glRotated(90, 0, 0, 1);
1687 glTranslated(customShape.front().x(), customShape.front().y(), 0.1);
1693 glTranslated(0, 0, 0.1);
1703 glTranslated(0, 0, 0.1);
1715 glTranslated(customShape.back().x(), customShape.back().y(), 0.1);
1721 glTranslated(0, 0, 0.1);
1731 glTranslated(0, 0, 0.1);
1755std::vector<GNEConnection*>
1758 std::vector<GNEConnection*> incomingConnections;
1761 if (junctionSource) {
1765 for (
auto j : i->getGNEConnections()) {
1766 if (j->getNBEdgeConnection().fromLane ==
getIndex()) {
1767 incomingConnections.push_back(j);
1772 return incomingConnections;
1776std::vector<GNEConnection*>
1780 std::vector<GNEConnection*> outcomingConnections;
1782 for (
auto i : edgeConnections) {
1783 if (i->getNBEdgeConnection().fromLane ==
getIndex()) {
1784 outcomingConnections.push_back(i);
1787 return outcomingConnections;
1795 for (
auto i : incomingConnections) {
1800 for (
auto i : outcomingConnections) {
1812 return POSITION_EPS;
1826 FXMenuPane* edgeOperations =
new FXMenuPane(ret);
1828 if (edgeSelSize > 0) {
1829 new FXMenuCascade(ret, (
"edge operations (" +
toString(edgeSelSize) +
" selected)").c_str(),
nullptr, edgeOperations);
1831 new FXMenuCascade(ret,
"edge operations",
nullptr, edgeOperations);
1837 splitBothDirections->disable();
1839 if (oppositeEdges.size() == 0) {
1840 splitBothDirections->setText(
"Split edge in both directions here (no opposite edge)");
1842 for (
const auto& oppositeEdge : oppositeEdges) {
1844 const auto reverseGeometry = oppositeEdge->getNBEdge()->getInnerGeometry().reverse();
1846 splitBothDirections->enable();
1847 splitBothDirections->setText(
"Split edge in both directions here");
1854 if (edgeSelSize == 1) {
1884 int numSelectedLanes = 0;
1886 bool edgeHasSidewalk =
false;
1887 bool edgeHasBikelane =
false;
1888 bool edgeHasBuslane =
false;
1889 bool differentLaneShapes =
false;
1893 numSelectedLanes = (int)selectedLanes.size();
1895 for (
const auto& selectedLane : selectedLanes) {
1896 if (selectedLane->myParentEdge->hasRestrictedLane(
SVC_PEDESTRIAN)) {
1897 edgeHasSidewalk =
true;
1899 if (selectedLane->myParentEdge->hasRestrictedLane(
SVC_BICYCLE)) {
1900 edgeHasBikelane =
true;
1902 if (selectedLane->myParentEdge->hasRestrictedLane(
SVC_BUS)) {
1903 edgeHasBuslane =
true;
1905 if (selectedLane->myParentEdge->getNBEdge()->getLaneStruct(selectedLane->getIndex()).customShape.size() != 0) {
1906 differentLaneShapes =
true;
1916 FXMenuPane* laneOperations =
new FXMenuPane(ret);
1918 if (numSelectedLanes > 0) {
1919 new FXMenuCascade(ret, (
"lane operations (" +
toString(numSelectedLanes) +
" selected)").c_str(),
nullptr, laneOperations);
1921 new FXMenuCascade(ret,
"lane operations",
nullptr, laneOperations);
1926 if (!differentLaneShapes) {
1927 resetCustomShape->disable();
1931 resetOppositeLane->disable();
1934 FXMenuPane* addSpecialLanes =
new FXMenuPane(laneOperations);
1936 FXMenuPane* removeSpecialLanes =
new FXMenuPane(laneOperations);
1938 FXMenuPane* transformSlanes =
new FXMenuPane(laneOperations);
1948 removeSidewalk->disable();
1950 removeBikelane->disable();
1952 removeBuslane->disable();
1954 removeGreenVerge->disable();
1961 new FXMenuCascade(laneOperations, (
"add restricted " +
toString(
SUMO_TAG_LANE)).c_str(),
nullptr, addSpecialLanes);
1962 FXMenuCascade* cascadeRemoveSpecialLane =
new FXMenuCascade(laneOperations, (
"remove restricted " +
toString(
SUMO_TAG_LANE)).c_str(),
nullptr, removeSpecialLanes);
1963 new FXMenuCascade(laneOperations, (
"transform to restricted " +
toString(
SUMO_TAG_LANE)).c_str(),
nullptr, transformSlanes);
1965 if (edgeHasSidewalk) {
1966 transformLaneToSidewalk->disable();
1967 addSidewalk->disable();
1968 removeSidewalk->enable();
1970 if (edgeHasBikelane) {
1971 transformLaneToBikelane->disable();
1972 addBikelane->disable();
1973 removeBikelane->enable();
1975 if (edgeHasBuslane) {
1976 transformLaneToBuslane->disable();
1977 addBuslane->disable();
1978 removeBuslane->enable();
1981 transformLaneToGreenVerge->disable();
1982 removeGreenVerge->enable();
1986 cascadeRemoveSpecialLane->disable();
2001 FXMenuPane* edgeOperations =
new FXMenuPane(ret);
2003 if (edgeSelSize > 0) {
2004 new FXMenuCascade(ret, (
"template operations (" +
toString(edgeSelSize) +
" selected)").c_str(),
nullptr, edgeOperations);
2006 new FXMenuCascade(ret,
"template operations",
nullptr, edgeOperations);
2013 applyTemplate->disable();
2022 FXMenuPane* reachableByClass =
new FXMenuPane(ret);
2031 menuCommand->handle(&parent, FXSEL(SEL_COMMAND, FXWindow::ID_DISABLE),
nullptr);
NetworkEditMode
@brie enum for network edit modes
@ NETWORK_MOVE
mode for moving network elements
@ NETWORK_TLS
mode for editing tls
@ NETWORK_CONNECT
mode for connecting lanes
@ MID_GNE_ADDSELECT_EDGE
Add edge to selected items - menu entry.
@ MID_GNE_LANE_EDIT_SHAPE
edit lane shape
@ MID_GNE_LANE_TRANSFORM_BIKE
transform lane to bikelane
@ MID_GNE_EDGE_REVERSE
reverse an edge
@ MID_ADDSELECT
Add to selected items - menu entry.
@ MID_GNE_LANE_ADD_BUS
add busLane
@ MID_GNE_REMOVESELECT_EDGE
Remove edge from selected items - Menu Entry.
@ MID_GNE_EDGE_STRAIGHTEN_ELEVATION
interpolate z values linear between junctions
@ MID_GNE_EDGE_SMOOTH
smooth geometry
@ MID_GNE_LANE_RESET_CUSTOMSHAPE
reset custom shape
@ MID_GNE_EDGE_STRAIGHTEN
remove inner geometry
@ MID_GNE_LANE_TRANSFORM_BUS
transform lane to busLane
@ MID_COPY_EDGE_NAME
Copy edge name (for lanes only)
@ MID_GNE_LANE_DUPLICATE
duplicate a lane
@ MID_GNE_LANE_ADD_GREENVERGE_FRONT
add greenVerge front of current lane
@ MID_GNE_LANE_REMOVE_GREENVERGE
remove greenVerge
@ MID_GNE_EDGE_ADD_REVERSE_DISCONNECTED
add reverse edge disconnected (used for for spreadtype center)
@ MID_GNE_EDGE_SPLIT_BIDI
split an edge
@ MID_GNE_LANE_REMOVE_BIKE
remove bikelane
@ MID_GNE_LANE_RESET_OPPOSITELANE
reset opposite lane
@ MID_REACHABILITY
show reachability from a given lane
@ MID_GNE_EDGE_RESET_LENGTH
reset custom lengths
@ MID_GNE_LANE_REMOVE_BUS
remove busLane
@ MID_GNE_LANE_REMOVE_SIDEWALK
remove sidewalk
@ MID_GNE_EDGE_RESET_ENDPOINT
reset default geometry endpoints
@ MID_GNE_LANE_ADD_GREENVERGE_BACK
add greenVerge back of current lane
@ MID_GNE_EDGE_SMOOTH_ELEVATION
smooth elevation with regard to adjoining edges
@ MID_GNE_EDGE_ADD_REVERSE
add reverse edge
@ MID_GNE_EDGE_APPLYTEMPLATE
apply template
@ MID_GNE_EDGE_USEASTEMPLATE
use edge as tempalte
@ MID_GNE_LANE_ADD_SIDEWALK
add sidewalk
@ MID_GNE_RESET_GEOMETRYPOINT
reset geometry point
@ MID_GNE_LANE_TRANSFORM_SIDEWALK
transform lane to sidewalk
@ MID_GNE_LANE_ADD_BIKE
add bikelane
@ MID_GNE_EDGE_SPLIT
split an edge
@ MID_GNE_LANE_TRANSFORM_GREENVERGE
transform lane to greenVerge
@ MID_GNE_CUSTOM_GEOMETRYPOINT
set custom geometry point
@ MID_GNE_EDGE_EDIT_ENDPOINT
change default geometry endpoints
@ MID_REMOVESELECT
Remove from selected items - Menu Entry.
@ GLO_DOTTEDCONTOUR_FRONT
dotted contour front element (used in NETEDIT)
@ GLO_LANEARROWS
lane details
@ GLO_TEXTNAME
text element (used in NETEDIT)
GUIPostDrawing gPostDrawing
GUIIcon
An enumeration of icons used by the gui applications.
#define WRITE_WARNING(msg)
const SVCPermissions SVCAll
all VClasses are allowed
SVCPermissions invertPermissions(SVCPermissions permissions)
negate the given permissions and ensure that only relevant bits are set
bool isRailway(SVCPermissions permissions)
Returns whether an edge with the given permission is a railway edge.
bool isWaterway(SVCPermissions permissions)
Returns whether an edge with the given permission is a waterway edge.
const std::string & getVehicleClassNames(SVCPermissions permissions, bool expand)
Returns the ids of the given classes, divided using a ' '.
SVCPermissions parseVehicleClasses(const std::string &allowedS)
Parses the given definition of allowed vehicle classes into the given containers Deprecated classes g...
bool canParseVehicleClasses(const std::string &classes)
Checks whether the given string contains only known vehicle classes.
StringBijection< SUMOVehicleClass > SumoVehicleClassStrings(sumoVehicleClassStringInitializer, SVC_CUSTOM2, false)
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
@ SVC_SHIP
is an arbitrary ship
@ SVC_IGNORING
vehicles ignoring classes
@ SVC_RAIL_CLASSES
classes which drive on tracks
@ SVC_PASSENGER
vehicle is a passenger car (a "normal" car)
@ SVC_BICYCLE
vehicle is a bicycle
@ SVC_RAIL_FAST
vehicle that is allowed to drive on high-speed rail tracks
@ SVC_AUTHORITY
authorities vehicles
@ SVC_BUS
vehicle is a bus
@ SVC_PEDESTRIAN
pedestrian
int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
@ SUMO_TAG_FLOW
a flow definitio nusing a from-to edges instead of a route (used by router)
@ SUMO_TAG_LANE
begin/end of the description of a single lane
@ SUMO_TAG_TRIP
a single trip definition (used by router)
@ SUMO_TAG_EDGE
begin/end of the description of an edge
LinkDirection
The different directions a link between two lanes may take (or a stream between two edges)....
@ PARTLEFT
The link is a partial left direction.
@ RIGHT
The link is a (hard) right direction.
@ TURN
The link is a 180 degree turn.
@ LEFT
The link is a (hard) left direction.
@ STRAIGHT
The link is a straight direction.
@ TURN_LEFTHAND
The link is a 180 degree turn (left-hand network)
@ PARTRIGHT
The link is a partial right direction.
@ NODIR
The link has no direction (is a dead end link)
LinkState
The right-of-way state of a link between two lanes used when constructing a NBTrafficLightLogic,...
@ LINKSTATE_ALLWAY_STOP
This is an uncontrolled, all-way stop link.
@ LINKSTATE_MAJOR
This is an uncontrolled, major link, may pass.
@ LINKSTATE_STOP
This is an uncontrolled, minor link, has to stop.
@ LINKSTATE_EQUAL
This is an uncontrolled, right-before-left link.
@ LINKSTATE_ZIPPER
This is an uncontrolled, zipper-merge link.
@ LINKSTATE_TL_OFF_BLINKING
The link is controlled by a tls which is off and blinks, has to brake.
@ LINKSTATE_MINOR
This is an uncontrolled, minor link, has to brake.
@ LINKSTATE_TL_OFF_NOSIGNAL
The link is controlled by a tls which is off, not blinking, may pass.
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
@ GNE_ATTR_STOPOFFSET
stop offset (virtual, used by edge and lanes)
@ GNE_ATTR_OPPOSITE
neighboring lane, simplified lane attr instead of child element
@ GNE_ATTR_PARENT
parent of an additional element
@ GNE_ATTR_SELECTED
element is selected
@ SUMO_ATTR_CUSTOMSHAPE
whether a given shape is user-defined
@ GNE_ATTR_PARAMETERS
parameters "key1=value1|key2=value2|...|keyN=valueN"
@ GNE_ATTR_STOPOEXCEPTION
stop exceptions (virtual, used by edge and lanes)
const double SUMO_const_laneWidth
const double SUMO_const_laneMarkWidth
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
static void drawLine(const Position &beg, double rot, double visLength)
Draws a thin line.
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
static void drawFilledCircle(double width, int steps=8)
Draws a filled circle around (0,0)
static void drawTriangleAtEnd(const Position &p1, const Position &p2, double tLength, double tWidth, const double extraOffset=0)
Draws a triangle at the end of the given line.
static void drawTextAtEnd(const std::string &text, const PositionVector &shape, double x, const GUIVisualizationTextSettings &settings, const double scale)
draw text and the end of shape
static void pushName(unsigned int name)
push Name
static void drawOutlineCircle(double width, double iwidth, int steps=8)
Draws an unfilled circle around (0,0)
static void popMatrix()
pop matrix
static RGBColor getColor()
gets the gl-color
static void drawCrossTies(const PositionVector &geom, const std::vector< double > &rots, const std::vector< double > &lengths, double length, double spacing, double halfWidth, bool drawForSelection)
draw crossties for railroads or pedestrian crossings
static void drawBoxLine(const Position &beg, double rot, double visLength, double width, double offset=0)
Draws a thick line.
static void popName()
pop Name
static void pushMatrix()
push matrix
static void drawInverseMarkings(const PositionVector &geom, const std::vector< double > &rots, const std::vector< double > &lengths, double maxLength, double spacing, double halfWidth, bool cl, bool cr, bool lefthand, double scale)
@bried draw the space between markings (in road color)
static void drawText(const std::string &text, const Position &pos, const double layer, const double size, const RGBColor &col=RGBColor::BLACK, const double angle=0, const int align=0, double width=-1)
GNENetworkSelector * getLanesSelector() const
get edges selector
GNENetworkSelector * getEdgesSelector() const
get edges selector
const std::string getID() const
get ID (all Attribute Carriers have one)
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
friend class GNEChange_Attribute
declare friend class
static FXIcon * getVClassIcon(const SUMOVehicleClass vc)
returns icon associated to the given vClass
const std::string & getTagStr() const
get tag assigned to this object in string format
const GNETagProperties & getTagProperty() const
get tagProperty associated with this Attribute Carrier
void unselectAttributeCarrier(const bool changeFlag=true)
unselect attribute carrier using GUIGlobalSelection
bool drawUsingSelectColor() const
check if attribute carrier must be drawn using selecting color.
GNENet * myNet
pointer to net
GNENet * getNet() const
get pointer to net
void selectAttributeCarrier(const bool changeFlag=true)
select attribute carrier using GUIGlobalSelection
virtual std::string getAttribute(SumoXMLAttr key) const =0
bool myPossibleCandidate
flag to mark this element as possible candidate
bool mySpecialCandidate
flag to mark this element as special candidate
bool isSpecialCandidate() const
check if this element is a special candidate
bool isPossibleCandidate() const
check if this element is a possible candidate
bool isTargetCandidate() const
check if this element is a target candidate
bool isSourceCandidate() const
check if this element is a source candidate
bool isConflictedCandidate() const
check if this element is a conflicted candidate
bool myTargetCandidate
flag to mark this element as target candidate
bool myConflictedCandidate
flag to mark this element as conflicted candidate
bool mySourceCandidate
flag to mark this element as source candidate
struct for saving subordinated elements (Junction->Edge->Lane->(Additional | DemandElement)
ProtectElements * getProtectElements() const
get protect elements modul
A road/street connecting two junctions (netedit-version)
void updateCenteringBoundary(const bool updateGrid)
update centering boundary (implies change in RTREE)
NBEdge * getNBEdge() const
returns the internal NBEdge
GNEEdge * getReverseEdge() const
get reverse edge (if exist)
bool clickedOverGeometryPoint(const Position &pos) const
return true if user clicked over a Geometry Point
const std::vector< GNELane * > & getLanes() const
returns a reference to the lane vector
static const double SNAP_RADIUS
bool hasCustomEndPoints() const
bool hasRestrictedLane(SUMOVehicleClass vclass) const
check if edge has a restricted lane
std::vector< GNEEdge * > getOppositeEdges() const
get opposite edges
GNEJunction * getFromJunction() const
get from Junction (only used to increase readability)
const std::vector< GNEConnection * > & getGNEConnections() const
returns a reference to the GNEConnection vector
GNEJunction * getToJunction() const
get from Junction (only used to increase readability)
void drawEdgeGeometryPoints(const GUIVisualizationSettings &s, const GNELane *lane) const
draw edge geometry points (note: This function is called by GNELane::drawGL(...)
const std::vector< GNEDemandElement * > & getChildDemandElements() const
return child demand elements
const std::vector< GNEGenericData * > & getParentGenericDatas() const
get parent demand elements
const std::vector< GNEDemandElement * > & getParentDemandElements() const
get parent demand elements
const std::vector< GNEAdditional * > & getParentAdditionals() const
get parent additionals
const std::vector< GNEAdditional * > & getChildAdditionals() const
return child additionals
const std::vector< GNEGenericData * > & getChildGenericDatas() const
return child generic data elements
void setEdgeTemplate(const GNEEdge *edge)
set edge template
GNEEdgeTemplate * getEdgeTemplate() const
get edge template (to copy attributes from)
TemplateEditor * getTemplateEditor() const
get template editor
static RGBColor colorForLinksState(FXuint state)
return the color for each linkstate
static const StringBijection< FXuint > LinkStateNames
long names for link states
const std::vector< GNEEdge * > & getGNEIncomingEdges() const
Returns incoming GNEEdges.
bool isLogicValid()
whether this junction has a valid logic
Position getPositionInView() const
Returns position of hierarchical element in view.
NBNode * getNBNode() const
Return net build node.
class lane2lane connection geometry
void updateLane2laneConnection()
update
const double exaggeration
exaggeration
LaneDrawingConstants()
default constructor
const double halfWidth
Draw as a normal lane, and reduce width to make sure that a selected edge can still be seen.
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
GNELane2laneConnection myLane2laneConnections
lane2lane connections
const PositionVector & getLaneShape() const
get elements shape
long onDefault(FXObject *, FXSelector, void *)
multiplexes message to two targets
const GNELane2laneConnection & getLane2laneConnections() const
get Lane2laneConnection struct
std::string getParentName() const
Returns the name of the parent object (if any)
std::string getAttribute(SumoXMLAttr key) const
void drawLinkRules(const GUIVisualizationSettings &s) const
draw link rules
std::vector< double > myLaneRestrictedTextureRotations
Rotations of textures of restricted lanes.
bool allowPedestrians() const
check if current lane allow pedestrians
const RGBColor * mySpecialColor
optional special color
Position getPositionInView() const
Returns position of hierarchical element in view.
bool isAttributeComputed(SumoXMLAttr key) const
bool drawAsWaterway(const GUIVisualizationSettings &s) const
whether to draw this lane as a waterways
double getLengthGeometryFactor() const
get length geometry factor
bool isAttributeEnabled(SumoXMLAttr key) const
void updateGeometry()
update pre-computed geometry information
void setMoveShape(const GNEMoveResult &moveResult)
set move shape
GNEEdge * myParentEdge
parent edge (GNELanes cannot use hierarchical structures)
void deleteGLObject()
delete element
std::string getAttributeForSelection(SumoXMLAttr key) const
method for getting the attribute in the context of object selection
GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own popup-menu.
int getIndex() const
returns the index of the lane
double getExaggeration(const GUIVisualizationSettings &s) const
return exaggeration associated with this GLObject
void removeGeometryPoint(const Position clickedPosition, GNEUndoList *undoList)
remove geometry point in the clicked position
GUIGeometry myLaneGeometry
lane geometry
void drawStartEndShapePoints(const GUIVisualizationSettings &s) const
draw start and end shape points
void drawMarkings(const GUIVisualizationSettings &s, const double exaggeration, const bool drawRailway) const
draw lane markings
void drawOverlappedRoutes(const int numRoutes) const
draw overlapped routes
void updateGLObject()
update GLObject (geometry, ID, etc.)
GNEMoveOperation * getMoveOperation()
get move operation
void buildLaneOperations(GUISUMOAbstractView &parent, GUIGLObjectPopupMenu *ret)
build lane operations contextual menu
std::vector< GNEConnection * > getGNEOutcomingConnections()
returns a vector with the outgoing GNEConnections of this lane
const std::vector< double > & getShapeRotations() const
get rotations of the single shape parts
void drawTextures(const GUIVisualizationSettings &s, const LaneDrawingConstants &laneDrawingConstants) const
draw lane textures
void buildTemplateOperations(GUISUMOAbstractView &parent, GUIGLObjectPopupMenu *ret)
build template oerations contextual menu
bool setMultiColor(const GUIVisualizationSettings &s, const GUIColorer &c, RGBColor &col) const
sets multiple colors according to the current scheme index and some lane function
void drawLaneAsRailway(const GUIVisualizationSettings &s, const LaneDrawingConstants &laneDrawingConstants) const
draw lane as railway
void drawTLSLinkNo(const GUIVisualizationSettings &s) const
draw TLS Link Number
const Parameterised::Map & getACParametersMap() const
get parameters map
double getLaneParametricLength() const
returns the parameteric length of the lane
RGBColor setLaneColor(const GUIVisualizationSettings &s) const
set color according to edit mode and visualisation settings
bool isValid(SumoXMLAttr key, const std::string &value)
std::vector< GNEConnection * > getGNEIncomingConnections()
returns a vector with the incoming GNEConnections of this lane
bool drawAsRailway(const GUIVisualizationSettings &s) const
whether to draw this lane as a railway
bool isRestricted(SUMOVehicleClass vclass) const
check if this lane is restricted
int myIndex
The index of this lane.
void drawDirectionIndicators(const GUIVisualizationSettings &s, double exaggeration, const bool drawAsRailway, const bool spreadSuperposed) const
direction indicators for lanes
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
void setSpecialColor(const RGBColor *Color2, double colorValue=std::numeric_limits< double >::max())
const GUIGeometry & getLaneGeometry() const
void updateCenteringBoundary(const bool updateGrid)
update centering boundary (implies change in RTREE)
double mySpecialColorValue
optional value that corresponds to which the special color corresponds
void drawChildren(const GUIVisualizationSettings &s) const
draw children
std::vector< Position > myLaneRestrictedTexturePositions
Position of textures of restricted lanes.
void commitMoveShape(const GNEMoveResult &moveResult, GNEUndoList *undoList)
commit move shape
double getLaneShapeLength() const
returns the length of the lane's shape
std::vector< RGBColor > myShapeColors
The color of the shape parts (cached)
double getColorValue(const GUIVisualizationSettings &s, int activeScheme) const
return value for lane coloring according to the given scheme
bool setFunctionalColor(int activeScheme, RGBColor &col) const
sets the color according to the current scheme index and some lane function
void updateConnectionIDs()
update IDs of incoming connections of this lane
void drawArrows(const GUIVisualizationSettings &s, const bool spreadSuperposed) const
draw arrows
void buildRechableOperations(GUISUMOAbstractView &parent, GUIGLObjectPopupMenu *ret)
build rechable operations contextual menu
void drawLaneStopOffset(const GUIVisualizationSettings &s, const double offset) const
draw laneStopOffset
void drawLane2LaneConnections() const
draw lane to lane connections
void buildEdgeOperations(GUISUMOAbstractView &parent, GUIGLObjectPopupMenu *ret)
build edge operations contextual menu
const std::vector< double > & getShapeLengths() const
get lengths of the single shape parts
void drawLinkNo(const GUIVisualizationSettings &s) const
draw link Number
double getSpeed() const
returns the current speed of lane
void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)
GNEEdge * getParentEdge() const
get parent edge
GNEMoveOperation * calculateMoveShapeOperation(const PositionVector originalShape, const Position mousePosition, const double snapRadius, const bool onlyContour)
calculate move shape operation
PositionVector shapeToUpdate
shape to update (edited in moveElement)
std::vector< GNELane * > getSelectedLanes() const
get selected lanes
int getNumberOfSelectedEdges() const
get number of selected edges
void deleteLane(GNELane *lane, GNEUndoList *undoList, bool recomputeConnections)
removes lane
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
bool isNetRecomputed() const
check if net require recomputing
GNEPathManager * getPathManager()
get path manager
NBEdgeCont & getEdgeCont()
returns the NBEdgeCont of the underlying netbuilder
GNEViewNet * getViewNet() const
get view net
bool myShapeEdited
flag to check if element shape is being edited
bool isShapeEdited() const
check if shape is being edited
GUIGlObject * getGUIGlObject()
get GUIGlObject associated with this AttributeCarrier
Boundary myBoundary
object boundary
bool isNetworkElementSelected(const GNENetworkElement *networkElement) const
check if the given networkElement is being selected
bool drawCandidateEdgesWithSpecialColor() const
draw candidate edges with special color (Only for candidates, special and conflicted)
void invalidatePathCalculator()
invalidate pathCalculator
PathCalculator * getPathCalculator()
obtain instance of PathCalculator
void drawLanePathElements(const GUIVisualizationSettings &s, const GNELane *lane)
draw lane path elements
GNEPathCreator * getPathCreator() const
get path creator module
bool controlsEdge(GNEEdge *edge) const
whether the given edge is controlled by the currently edited tlDef
void handleMultiChange(GNELane *lane, FXObject *obj, FXSelector sel, void *data)
update phase definition for the current traffic light and phase
SumoXMLTag getTag() const
get Tag vinculated with this attribute Property
void end()
End undo command sub-group. If the sub-group is still empty, it will be deleted; otherwise,...
void begin(GUIIcon icon, const std::string &description)
Begin undo command sub-group with current supermode. This begins a new group of commands that are tre...
void changeAttribute(GNEChange_Attribute *change)
special method for change attributes, avoid empty changes, always execute
const GNEAttributeCarrier * getFrontAttributeCarrier() const
get front attributeCarrier
const GNEViewNetHelper::EditModes & getEditModes() const
get edit modes
const GNEViewNetHelper::MouseButtonKeyPressed & getMouseButtonKeyPressed() const
get Key Pressed module
bool drawSelectContour(const GUIGlObject *GLObject, const GNEAttributeCarrier *AC) const
check if draw select contour
bool drawDeleteContour(const GUIGlObject *GLObject, const GNEAttributeCarrier *AC) const
check if draw delete contour
const GNEViewNetHelper::NetworkViewOptions & getNetworkViewOptions() const
get network view options
void drawTranslateFrontAttributeCarrier(const GNEAttributeCarrier *AC, double typeOrLayer, const double extraOffset=0)
draw front attributeCarrier
GNEViewParent * getViewParent() const
get the net object
GNEUndoList * getUndoList() const
get the undoList object
const std::vector< GNEAttributeCarrier * > & getInspectedAttributeCarriers() const
get inspected attribute carriers
bool isAttributeCarrierInspected(const GNEAttributeCarrier *AC) const
check if attribute carrier is being inspected
GNEDeleteFrame * getDeleteFrame() const
get frame for delete elements
GNETLSEditorFrame * getTLSEditorFrame() const
get frame for NETWORK_TLS
GNEAdditionalFrame * getAdditionalFrame() const
get frame for NETWORK_ADDITIONAL
GNEInspectorFrame * getInspectorFrame() const
get frame for inspect elements
GNERouteFrame * getRouteFrame() const
get frame for DEMAND_ROUTE
static FXMenuCommand * buildFXMenuCommand(FXComposite *p, const std::string &text, FXIcon *icon, FXObject *tgt, FXSelector sel)
build menu command
static void drawDottedContourShape(const GUIVisualizationSettings &s, const DottedContourType type, const PositionVector &shape, const double width, const double exaggeration, const bool drawFirstExtrem, const bool drawLastExtrem)
draw dotted contour for the given shape (used by additionals)
static void drawGeometryPoints(const GUIVisualizationSettings &s, const Position &mousePos, const PositionVector &shape, const RGBColor &geometryPointColor, const RGBColor &textColor, const double radius, const double exaggeration, const bool editingElevation, const bool drawExtremeSymbols)
draw geometry points
const std::vector< double > & getShapeRotations() const
The rotations of the single shape parts.
static void drawGeometry(const GUIVisualizationSettings &s, const Position &mousePos, const GUIGeometry &geometry, const double width, double offset=0)
draw geometry
static double calculateRotation(const Position &first, const Position &second)
return angle between two points (used in geometric calculations)
const PositionVector & getShape() const
The shape of the additional element.
void updateGeometry(const PositionVector &shape)
update entire geometry
const std::vector< double > & getShapeLengths() const
The lengths of the single shape parts.
static void drawLaneGeometry(const GUIVisualizationSettings &s, const Position &mousePos, const PositionVector &shape, const std::vector< double > &rotations, const std::vector< double > &lengths, const std::vector< RGBColor > &colors, double width, const bool onlyContour=false, const double offset=0)
draw lane geometry (use their own function due colors)
const std::string & getMicrosimID() const
Returns the id of the object as known to microsim.
void buildShowParamsPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to open the parameter window.
virtual void setMicrosimID(const std::string &newID)
Changes the microsimID of the object.
void buildCenterPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to center to the object.
void mouseWithinGeometry(const Position center, const double radius) const
check if mouse is within elements geometry (for circles)
void buildNameCopyPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds entries which allow to copy the name / typed name into the clipboard.
void buildPopupHeader(GUIGLObjectPopupMenu *ret, GUIMainWindow &app, bool addSeparator=true)
Builds the header.
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
void buildPositionCopyEntry(GUIGLObjectPopupMenu *ret, const GUIMainWindow &app) const
Builds an entry which allows to copy the cursor position if geo projection is used,...
GUIGlID getGlID() const
Returns the numerical id of the object.
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
const GUIGlObject * markedLane
marked lane (used in create edge mode, for splitting)
const GUIGlObject * markedEdge
marked edge (used in create edge mode, for splitting)
const T getColor(const double value) const
const std::vector< T > & getSchemes() const
const GUIVisualizationSettings & getVisualisationSettings() const
get visualization settings (read only)
virtual Position getPositionInformation() const
Returns the cursor's x/y position within the network.
static GUIGlID getTexture(GUITexture which)
returns a texture previously defined in the enum GUITexture
static void drawTexturedBox(int which, double size)
Draws a named texture as a box with the given size.
Stores the information about how to visualize structures.
static const double MISSING_DATA
bool drawForRectangleSelection
whether drawing is performed for the purpose of selecting objects using a rectangle
GUIVisualizationDetailSettings detailSettings
detail settings
GUIVisualizationSizeSettings addSize
bool disableLaneIcons
whether drawing is performed in left-hand networks
GUIVisualizationTextSettings drawLinkJunctionIndex
bool drawForPositionSelection
whether drawing is performed for the purpose of selecting objects with a single click
bool showRails
Information whether rails shall be drawn.
GUIVisualizationCandidateColorSettings candidateColorSettings
candidate color settings
double laneWidthExaggeration
The lane exaggeration (upscale thickness)
bool lefthand
whether drawing is performed in left-hand networks
GUIVisualizationColorSettings colorSettings
color settings
static const RGBColor & getLinkColor(const LinkState &ls, bool realistic=false)
map from LinkState to color constants
double scale
information about a lane's width (temporary, used for a single view)
bool showLaneDirection
Whether to show direction indicators for lanes.
bool drawDetail(const double detail, const double exaggeration) const
check if details can be drawn for the given GUIVisualizationDetailSettings and current scale and exxa...
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
GUIColorer laneColorer
The lane colorer.
bool laneShowBorders
Information whether lane borders shall be drawn.
double laneMinSize
The minimum visual lane width for drawing.
GUIVisualizationTextSettings drawLinkTLIndex
int getCircleResolution() const
function to calculate circle resolution for all circles drawn in drawGL(...) functions
bool spreadSuperposed
Whether to improve visualisation of superposed (rail) edges.
GUIColorer junctionColorer
The junction colorer.
std::string edgeParam
key for coloring by edge parameter
GUIVisualizationNeteditSizeSettings neteditSizeSettings
netedit size settings
static double naviDegree(const double angle)
static FXColor getFXColor(const RGBColor &col)
converts FXColor to RGBColor
NBEdge * retrieve(const std::string &id, bool retrieveExtracted=false) const
Returns the edge that has the given id.
The representation of a single edge during network building.
double getLaneSpeed(int lane) const
get lane speed
void setPermittedChanging(int lane, SVCPermissions changeLeft, SVCPermissions changeRight)
set allowed classes for changing to the left and right from the given lane
double getLength() const
Returns the computed length of the edge.
SVCPermissions getPermissions(int lane=-1) const
get the union of allowed classes over all lanes or for a specific lane
double getDistancAt(double pos) const
get distance at the given offset
void setPermissions(SVCPermissions permissions, int lane=-1)
set allowed/disallowed classes for the given lane or for all lanes if -1 is given
double getLoadedLength() const
Returns the length was set explicitly or the computed length if it wasn't set.
void setSpeed(int lane, double speed)
set lane specific speed (negative lane implies set for all lanes)
double getLaneWidth() const
Returns the default width of lanes of this edge.
NBNode * getToNode() const
Returns the destination node of the edge.
std::vector< Connection > myConnections
List of connections to following edges.
Lane & getLaneStruct(int lane)
bool isBidiRail(bool ignoreSpread=false) const
whether this edge is part of a bidirectional railway
const std::string & getID() const
bool allowsChangingRight(int lane, SUMOVehicleClass vclass) const
Returns whether the given vehicle class may change left from this lane.
double getDistance() const
get distance
void setLaneWidth(int lane, double width)
set lane specific width (negative lane implies set for all lanes)
void setAcceleration(int lane, bool accelRamp)
marks one lane as acceleration lane
std::vector< Connection > getConnectionsFromLane(int lane, NBEdge *to=nullptr, int toLane=-1) const
Returns connections from a given lane.
int getNumLanes() const
Returns the number of lanes.
void setFriction(int lane, double friction)
set lane specific friction (negative lane implies set for all lanes)
std::string getLaneID(int lane) const
get lane ID
void setLaneShape(int lane, const PositionVector &shape)
sets a custom lane shape
const NBEdge * getBidiEdge() const
NBNode * getFromNode() const
Returns the origin node of the edge.
int getPriority() const
Returns the priority of the edge.
static const double UNSPECIFIED_WIDTH
unspecified lane width
void setEndOffset(int lane, double offset)
set lane specific end-offset (negative lane implies set for all lanes)
bool allowsChangingLeft(int lane, SUMOVehicleClass vclass) const
Returns whether the given vehicle class may change left from this lane.
bool isMacroscopicConnector() const
Returns whether this edge was marked as a macroscopic connector.
const PositionVector & getLaneShape(int i) const
Returns the shape of the nth lane.
const PositionVector getInnerGeometry() const
Returns the geometry of the edge without the endpoints.
double getFinalLength() const
get length that will be assigned to the lanes in the final network
Represents a single node (junction) during network building.
LinkState getLinkState(const NBEdge *incoming, NBEdge *outgoing, int fromLane, int toLane, bool mayDefinitelyPass, const std::string &tlID) const
get link state
LinkDirection getDirection(const NBEdge *const incoming, const NBEdge *const outgoing, bool leftHand=false) const
Returns the representation of the described stream's direction.
const std::set< NBTrafficLightDefinition * > & getControllingTLS() const
Returns the traffic lights that were assigned to this node (The set of tls that control this node)
int getConnectionIndex(const NBEdge *from, const NBEdge::Connection &con) const
return the index of the given connection
static bool areParametersValid(const std::string &value, bool report=false, const std::string kvsep="=", const std::string sep="|")
check if given string can be parsed to a parameters map "key1=value1|key2=value2|....
std::map< std::string, std::string > Map
parameters map
void setParametersStr(const std::string ¶msString, const std::string kvsep="=", const std::string sep="|")
set the inner key/value map in string format "key1=value1|key2=value2|...|keyN=valueN"
virtual const std::string getParameter(const std::string &key, const std::string defaultValue="") const
Returns the value for a given key.
const Parameterised::Map & getParametersMap() const
Returns the inner key/value map.
std::string getParametersStr(const std::string kvsep="=", const std::string sep="|") const
Returns the inner key/value map in string format "key1=value1|key2=value2|...|keyN=valueN".
bool knowsParameter(const std::string &key) const
Returns whether the parameter is known.
A point in 2D or 3D with translation and scaling methods.
double x() const
Returns the x-position.
double z() const
Returns the z-position.
double angleTo2D(const Position &other) const
returns the angle in the plane of the vector pointing from here to the other position
double y() const
Returns the y-position.
double length2D() const
Returns the length.
double beginEndAngle() const
returns the angle in radians of the line connecting the first and the last position
double length() const
Returns the length.
double rotationDegreeAtOffset(double pos) const
Returns the rotation at the given length.
Position positionAtOffset(double pos, double lateralOffset=0) const
Returns the position at the given length.
double distance2D(const Position &p, bool perpendicular=false) const
closest 2D-distance to point p (or -1 if perpendicular is true and the point is beyond this vector)
double nearest_offset_to_point2D(const Position &p, bool perpendicular=true) const
return the nearest offest to point 2D
int indexOfClosest(const Position &p, bool twoD=false) const
void move2side(double amount, double maxExtension=100)
move position vector to side using certain ammount
Boundary getBoxBoundary() const
Returns a boundary enclosing this list of lines.
Position positionAtOffset2D(double pos, double lateralOffset=0) const
Returns the position at the given length.
static const RGBColor WHITE
unsigned char alpha() const
Returns the alpha-amount of the color.
static const RGBColor ORANGE
static const RGBColor CYAN
static const RGBColor GREEN
static RGBColor fromHSV(double h, double s, double v)
Converts the given hsv-triplet to rgb, inspired by http://alvyray.com/Papers/CG/hsv2rgb....
static const RGBColor BLACK
RGBColor changedBrightness(int change, int toChange=3) const
Returns a new color with altered brightness.
void setOffset(const double offset)
set offset
bool isDefined() const
check if stopOffset was defined
void reset()
reset stopOffset
void setExceptions(const std::string permissions)
set exceptions (used in NETEDIT)
std::string getExceptions() const
get exceptions (used in NETEDIT)
double getOffset() const
get offset
std::vector< std::string > getStrings() const
T get(const std::string &str) const
static double toDouble(const std::string &sData)
converts a string into the double value described by it by calling the char-type converter
static bool toBool(const std::string &sData)
converts a string into the bool value described by it by calling the char-type converter
NetworkEditMode networkEditMode
the current Network edit mode
bool isCurrentSupermodeDemand() const
@check if current supermode is Demand
bool isCurrentSupermodeData() const
@check if current supermode is Data
bool isCurrentSupermodeNetwork() const
@check if current supermode is Network
static void drawLockIcon(const GNEAttributeCarrier *AC, GUIGlObjectType type, const Position viewPosition, const double exaggeration, const double size=0.5, const double offsetx=0, const double offsety=0)
draw lock icon
bool editingElevation() const
check if we're editing elevation
bool showDemandElements() const
check if show demand elements checkbox is enabled
bool selectEdges() const
check if select edges checkbox is enabled
static const RGBColor special
color for selected special candidate element (Usually selected using shift+click)
static const RGBColor conflict
color for selected conflict candidate element (Usually selected using ctrl+click)
static const RGBColor target
color for selected candidate target
static const RGBColor possible
color for possible candidate element
static const RGBColor source
color for selected candidate source
RGBColor selectedEdgeColor
edge selection color
RGBColor selectedLaneColor
lane selection color
static const RGBColor editShapeColor
color for edited shapes (Junctions, crossings and connections)
static const double laneTextures
details for lane textures
static const double geometryPointsText
details for Geometry Points Texts
static const double laneGeometryPointRadius
moving lane geometry point radius
static const double junctionBubbleRadius
junction bubble radius
double getExaggeration(const GUIVisualizationSettings &s, const GUIGlObject *o, double factor=20) const
return the drawing size including exaggeration and constantSize values
bool show(const GUIGlObject *o) const
whether to show the text
double width
This lane's width.
StopOffset laneStopOffset
stopOffsets.second - The stop offset for vehicles stopping at the lane's end. Applies if vClass is in...
PositionVector customShape
A custom shape for this lane set by the user.
double endOffset
This lane's offset to the intersection begin.
std::string type
the type of this lane
std::string oppositeID
An opposite lane ID, if given.
SVCPermissions changeRight
List of vehicle types that are allowed to change right from this lane.
double friction
The friction on this lane.
SVCPermissions changeLeft
List of vehicle types that are allowed to change Left from this lane.
bool accelRamp
Whether this lane is an acceleration lane.
PositionVector shape
The lane's shape.