70 FXIMPLEMENT(
GNELane, FXDelegator, 0, 0)
86 myParentEdge(*static_cast<
GNEEdge*>(0)),
100 int noLinks = (int)cons.size();
110 for (
int i = noLinks; --i >= 0;) {
111 double x2 = x1 - (double)(w / 2.);
113 cons[lefthand ? noLinks - 1 - i : i]);
124 int noLinks = (int)cons.size();
134 for (
int i = noLinks; --i >= 0;) {
135 double x2 = x1 - (double)(w / 2.);
136 int linkNo = cons[lefthand ? noLinks - 1 - i : i].tlLinkNo;
153 double rot = (double) atan2((end.
x() - f.
x()), (f.
y() - end.
y())) * (double) 180.0 / (
double)
M_PI;
158 glTranslated(end.
x(), end.
y(), 0);
159 glRotated(rot, 0, 0, 1);
164 for (
auto i : edgeCons) {
207 glTranslated(0, 5, 0);
209 glTranslated(0, -5, 0);
227 for (
auto it : connections) {
240 glColor3d(.4, .4, .4);
243 glColor3d(.7, .4, .4);
246 glColor3d(.7, .7, .7);
249 glColor3d(.7, .7, 1);
251 glColor3d(.75, .5, 0.25);
256 const Position& endPos = it.toEdge->getLaneShape(it.toLane)[0];
258 glVertex2d(startPos.
x(), startPos.
y());
259 glVertex2d(endPos.
x(), endPos.
y());
281 const double selectionScale = selected || selectedEdge ? s.
selectionScale : 1;
288 glGetFloatv(GL_CURRENT_COLOR, color);
292 }
else if (s.
scale * exaggeration < 1.) {
304 const double halfRailWidth = 0.725 * exaggeration;
316 glTranslated(0, 0, .1);
322 drawCrossties(0.3 * exaggeration, 1 * exaggeration, 1 * exaggeration);
350 glColor3d(0.3, 0.3, 0.3);
364 double iconWidth = 1;
379 glRotated(-90, 0, 0, 1);
407 int e = (int)
getShape().size() - 1;
408 for (
int i = 0; i < e; ++i) {
413 const double length =
MIN2((
double)3, myShapeLengths[i] - t);
416 glVertex2d(-mw, -t - length);
417 glVertex2d(halfWidth * 0.5 * scale, -t - length);
418 glVertex2d(halfWidth * 0.5 * scale, -t);
427 glTranslated(0, 0, 0.2);
464 std::string edgeDescPossibleMulti = edgeDesc;
466 if (edgeSelSize && edgeSelSize > 1) {
467 edgeDescPossibleMulti =
toString(edgeSelSize) +
" " + edgeDesc +
"s";
476 new FXMenuCommand(ret, (
"Smooth " + edgeDescPossibleMulti).c_str(), 0, &parent,
MID_GNE_EDGE_SMOOTH);
483 FXMenuPane* addSpecialLanes =
new FXMenuPane(ret);
485 FXMenuPane* removeSpecialLanes =
new FXMenuPane(ret);
487 FXMenuPane* transformSlanes =
new FXMenuPane(ret);
502 new FXMenuCascade(ret, (
"add restricted " +
toString(
SUMO_TAG_LANE) +
"s").c_str(), 0, addSpecialLanes);
503 new FXMenuCascade(ret, (
"remove restricted " +
toString(
SUMO_TAG_LANE) +
"s").c_str(), 0, removeSpecialLanes);
504 new FXMenuCascade(ret, (
"transform to restricted " +
toString(
SUMO_TAG_LANE) +
"s").c_str(), 0, transformSlanes);
512 FXMenuPane* addSpecialLanes =
new FXMenuPane(ret);
514 FXMenuPane* removeSpecialLanes =
new FXMenuPane(ret);
516 FXMenuPane* transformSlanes =
new FXMenuPane(ret);
519 FXMenuCommand* addSidewalk =
new FXMenuCommand(addSpecialLanes,
"Sidewalk", pedestrianIcon, &parent,
MID_GNE_LANE_ADD_SIDEWALK);
520 FXMenuCommand* addBikelane =
new FXMenuCommand(addSpecialLanes,
"Bikelane", bikeIcon, &parent,
MID_GNE_LANE_ADD_BIKE);
521 FXMenuCommand* addBuslane =
new FXMenuCommand(addSpecialLanes,
"Buslane", busIcon, &parent,
MID_GNE_LANE_ADD_BUS);
523 FXMenuCommand* removeSidewalk =
new FXMenuCommand(removeSpecialLanes,
"Sidewalk", pedestrianIcon, &parent,
MID_GNE_LANE_REMOVE_SIDEWALK);
524 removeSidewalk->disable();
525 FXMenuCommand* removeBikelane =
new FXMenuCommand(removeSpecialLanes,
"Bikelane", bikeIcon, &parent,
MID_GNE_LANE_REMOVE_BIKE);
526 removeBikelane->disable();
527 FXMenuCommand* removeBuslane =
new FXMenuCommand(removeSpecialLanes,
"Buslane", busIcon, &parent,
MID_GNE_LANE_REMOVE_BUS);
528 removeBuslane->disable();
531 FXMenuCommand* transformLaneToBikelane =
new FXMenuCommand(transformSlanes,
"Bikelane", bikeIcon, &parent,
MID_GNE_LANE_TRANSFORM_BIKE);
532 FXMenuCommand* transformLaneToBuslane =
new FXMenuCommand(transformSlanes,
"Buslane", busIcon, &parent,
MID_GNE_LANE_TRANSFORM_BUS);
534 FXMenuCascade* cascadeAddSpecialLane =
new FXMenuCascade(ret, (
"add restricted " +
toString(
SUMO_TAG_LANE)).c_str(), 0, addSpecialLanes);
535 FXMenuCascade* cascadeRemoveSpecialLane =
new FXMenuCascade(ret, (
"remove restricted " +
toString(
SUMO_TAG_LANE)).c_str(), 0, removeSpecialLanes);
536 new FXMenuCascade(ret, (
"transform to restricted " +
toString(
SUMO_TAG_LANE)).c_str(), 0, transformSlanes);
538 if (edgeHasSidewalk) {
539 transformLaneToSidewalk->disable();
540 addSidewalk->disable();
541 removeSidewalk->enable();
543 if (edgeHasBikelane) {
544 transformLaneToBikelane->disable();
545 addBikelane->disable();
546 removeBikelane->enable();
548 if (edgeHasBuslane) {
549 transformLaneToBuslane->disable();
550 addBuslane->disable();
551 removeBuslane->enable();
554 if (edgeHasSidewalk && edgeHasBikelane && edgeHasBuslane) {
555 cascadeAddSpecialLane->disable();
557 if (!edgeHasSidewalk && !edgeHasBikelane && !edgeHasBuslane) {
558 cascadeRemoveSpecialLane->disable();
564 new FXMenuCommand(ret,
"Select state for all links from this edge:", 0, 0, 0);
566 for (
auto it : names) {
568 FXMenuRadio* mc =
new FXMenuRadio(ret, it.c_str(),
this, FXDataTarget::ID_OPTION + state);
574 FXMenuCommand* mc =
new FXMenuCommand(ret,
"Additional options available in 'Inspect Mode'", 0, 0, 0);
575 mc->handle(&parent, FXSEL(SEL_COMMAND, FXWindow::ID_DISABLE), 0);
578 new FXMenuSeparator(ret);
581 new FXMenuCommand(ret, (
"Shape pos: " +
toString(pos)).c_str(), 0, 0, 0);
583 new FXMenuCommand(ret, (
"Height: " +
toString(height)).c_str(), 0, 0, 0);
604 const std::vector<double>&
610 const std::vector<double>&
633 int segments = (int)
getShape().size() - 1;
637 for (
int i = 0; i < segments; ++i) {
660 for (
auto i : incomingConnections) {
665 for (
auto i : outGoingConnections) {
703 if (laneParametricLenght > 0) {
704 return laneParametricLenght;
706 throw ProcessError(
"Lane Parametric Lenght cannot be never 0");
742 const std::vector<GNEShape*>&
823 return canParse<double>(value);
828 if (value ==
"default") {
834 return canParse<double>(value);
836 return canParse<bool>(value);
843 return canParse<int>(value) && (parse<int>(value) ==
myIndex);
879 if (value ==
"default") {
928 switch (activeScheme) {
944 switch (activeScheme) {
946 for (PositionVector::const_iterator ii =
getShape().begin(); ii !=
getShape().end() - 1; ++ii) {
951 for (
int ii = 1; ii < (int)
getShape().size(); ++ii) {
965 switch (activeScheme) {
967 switch (myPermissions) {
988 return (
double)myPermissions;
1019 std::vector<std::string> laneIDs = parse<std::vector<std::string> >(i->getAttribute(
SUMO_ATTR_LANES));
1021 if (laneIDs.empty()) {
1023 }
else if ((laneIDs.size() == 1) && (allowEmpty ==
false)) {
1025 if (laneIDs.front() ==
getID()) {
1028 throw ProcessError(
"lane ID wasnt' found in Additional");
1031 auto it = std::find(laneIDs.begin(), laneIDs.end(),
getID());
1032 if (it != laneIDs.end()) {
1037 throw ProcessError(
"lane ID wasnt' found in Additional");
1060 glTranslated(0, 0, 0.1);
1061 int e = (int)
getShape().size() - 1;
1062 for (
int i = 0; i < e; ++i) {
1068 glVertex2d(-halfWidth, -t);
1069 glVertex2d(-halfWidth, -t - length);
1070 glVertex2d(halfWidth, -t - length);
1071 glVertex2d(halfWidth, -t);
1085 int e = (int)
getShape().size() - 1;
1086 for (
int i = 0; i < e; ++i) {
1091 const double length =
MIN2(width * 0.5, myShapeLengths[i] - t);
1092 glBegin(GL_TRIANGLES);
1093 glVertex2d(0, -t - length);
1094 glVertex2d(-width * 0.25, -t);
1095 glVertex2d(+width * 0.25, -t);
1126 std::vector<GNEConnection*>
1129 std::vector<GNEConnection*> incomingConnections;
1132 if (junctionSource) {
1136 for (
auto j : i->getGNEConnections()) {
1137 if (j->getNBEdgeConnection().fromLane ==
getIndex()) {
1138 incomingConnections.push_back(j);
1143 return incomingConnections;
1147 std::vector<GNEConnection*>
1151 std::vector<GNEConnection*> outcomingConnections;
1153 for (
auto i : edgeConnections) {
1154 if (i->getNBEdgeConnection().fromLane ==
getIndex()) {
1155 outcomingConnections.push_back(i);
1158 return outcomingConnections;
1166 for (
auto i : incomingConnections) {
1171 for (
auto i : outcomingConnections) {
static void drawTexturedBox(int which, double size)
Draws a named texture as a box with the given size.
int getConnectionIndex(const NBEdge *from, const NBEdge::Connection &con) const
return the index of the given connection
The link is a partial left direction.
std::string getVehicleClassNames(SVCPermissions permissions, bool expand)
Returns the ids of the given classes, divided using a ' '.
double getLength() const
Returns the computed length of the edge.
bool setMultiColor(const GUIColorer &c) const
sets multiple colors according to the current scheme index and some lane function ...
std::vector< double > myShapeLengths
The lengths of the shape parts.
std::vector< GNELane * > retrieveLanes(bool onlySelected=false)
return all lanes
std::vector< GNEAdditional * > myAdditionalParents
list of Additional parents of this NetElement
void drawLane2LaneConnections() const
draw lane to lane connections
set non-default geometry endpoint
LinkState getLinkState(const NBEdge *incoming, NBEdge *outgoing, int fromLane, int toLane, bool mayDefinitelyPass, const std::string &tlID) const
get link state
bool isRestricted(SUMOVehicleClass vclass) const
check if this lane is restricted
double scale
information about a lane's width (temporary, used for a single view)
double laneWidthExaggeration
The lane exaggeration (upscale thickness)
Copy edge name (for lanes only)
PositionVector shape
The lane's shape.
whether a given shape is user-defined
GNENet * myNet
the net to inform about updates
GNETLSEditorFrame * myTLSEditor
the tls-editor for setting multiple links in TLS-mode
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.
double z() const
Returns the z-position.
void buildNameCopyPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds entries which allow to copy the name / typed name into the clipboard.
begin/end of the description of a single lane
GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own popup-menu.
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types...
void setEndOffset(int lane, double offset)
set lane specific end-offset (negative lane implies set for all lanes)
double getLaneSpeed(int lane) const
get lane speed
const RGBColor * mySpecialColor
optional special color
static const RGBColor selectedLaneColor
color of selected lane
static void drawTextAtEnd(const std::string &text, const PositionVector &shape, double x, double size, RGBColor color)
draw text and the end of shape
static RGBColor fromHSV(double h, double s, double v)
Converts the given hsv-triplet to rgb.
static GUIGlID getTexture(GUITexture which)
returns a texture previously defined in the enum GUITexture
double distanceTo2D(const Position &p2) const
returns the euclidean distance in the x-y-plane
void setSpeed(int lane, double speed)
set lane specific speed (negative lane implies set for all lanes)
Position positionAtOffset2D(double pos, double lateralOffset=0) const
Returns the position at the given length.
Boundary getBoundary() const
returns the boundry (including lanes)
GUIColorer laneColorer
The lane colorer.
Stores the information about how to visualize structures.
This is an uncontrolled, minor link, has to stop.
int getPriority() const
Returns the priority of the edge.
double y() const
Returns the y-position.
GUIVisualizationSettings * getVisualisationSettings() const
get visualitation settings
int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
The representation of a single edge during network building.
bool showRails
Information whether rails shall be drawn.
The link is a 180 degree turn.
static RGBColor colorForLinksState(FXuint state)
return the color for each linkstate
bool hasRestrictedLane(SUMOVehicleClass vclass) const
check if edge has a restricted lane
double x() const
Returns the x-position.
const std::vector< double > & getShapeRotations() const
returns the vector with the shape rotations
std::string getAttributeForSelection(SumoXMLAttr key) const
method for getting the attribute in the context of object selection
void buildCenterPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to center to the object.
bool isSelected(GUIGlObjectType type, GUIGlID id)
Returns the information whether the object with the given type and id is selected.
void setPermissions(SVCPermissions permissions, int lane=-1)
set allowed/disallowed classes for the given lane or for all lanes if -1 is given ...
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
int editMode
the current NETEDIT mode (temporary)
bool showLaneDirection
Whether to show direction indicators for lanes.
double getSpeed() const
returns the current speed of lane
double endOffset
This lane's offset to the intersection begin.
bool laneShowBorders
Information whether lane borders shall be drawn.
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
std::vector< RGBColor > myShapeColors
The color of the shape parts (cached)
This is an uncontrolled, right-before-left link.
bool drawAsRailway(const GUIVisualizationSettings &s) const
whether to draw this lane as a railway
interpolate z values linear between junctions
const double SUMO_const_laneOffset
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
const std::vector< GNEConnection * > & getGNEConnections()
returns a reference to the GNEConnection vector
void handleMultiChange(GNELane *lane, FXObject *obj, FXSelector sel, void *data)
update phase definition for the current traffic light and phase
void buildShowParamsPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to open the parameter window.
bool isRailway(SVCPermissions permissions)
Returns whether an edge with the given permission is a railway edge.
const SVCPermissions SVCAll
all VClasses are allowed
double getColorValue(int activeScheme) const
return value for lane coloring according to the given scheme
Lane & getLaneStruct(int lane)
The link is controlled by a tls which is off, not blinking, may pass.
This is an uncontrolled, all-way stop link.
void buildPositionCopyEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to copy the cursor position if geo projection is used, also builds an entry for copying the geo-position.
static const double UNSPECIFIED_WIDTH
unspecified lane width
A class that stores a 2D geometrical boundary.
int myIndex
The index of this lane.
bool setFunctionalColor(int activeScheme) const
sets the color according to the current scheme index and some lane function
This is an uncontrolled, zipper-merge link.
The link is a (hard) left direction.
std::vector< std::string > getStrings() const
static OptionsCont & getOptions()
Retrieves the options.
void setLaneShape(int lane, const PositionVector &shape)
sets a custom lane shape
bool accelRamp
Whether this lane is an acceleration lane.
void setAcceleration(int lane, bool accelRamp)
marks one lane as acceleration lane
std::vector< double > myLaneRestrictedTextureRotations
Rotations of textures of restricted lanes.
SVCPermissions invertPermissions(SVCPermissions permissions)
negate the given permissions and ensure that only relevant bits are set
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
LinkDirection
The different directions a link between two lanes may take (or a stream between two edges)...
The link is a straight direction.
void p_add(GNEChange_Attribute *cmd)
special method, avoid empty changes, always execute
std::vector< Connection > getConnectionsFromLane(int lane) const
Returns connections from a given lane.
bool drawAsWaterway(const GUIVisualizationSettings &s) const
whether to draw this lane as a waterways
static double naviDegree(const double angle)
int getIndex() const
returns the index of the lane
double getLaneParametricLength() const
returns the parameteric length of the lane
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
GNEEdge & getParentEdge()
Returns underlying parent edge.
void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)
const std::vector< GNEEdge * > & getGNEIncomingEdges() const
Returns incoming GNEEdges.
This is an uncontrolled, minor link, has to brake.
std::string getLaneID(int lane) const
get Lane ID (Secure)
int getNumLanes() const
Returns the number of lanes.
A point in 2D or 3D with translation and scaling methods.
bool controlsEdge(GNEEdge &edge) const
whether the given edge is controlled by the currently edited tlDef
transform lane to busLane
bool isLogicValid()
whether this junction has a valid logic
bool isWaterway(SVCPermissions permissions)
Returns whether an edge with the given permission is a waterway edge.
void removeLaneOfAdditionalParents(GNEUndoList *undoList, bool allowEmpty)
remove lane of Additional Parent
std::vector< double > myShapeRotations
friend class GNEChange_Attribute
declare friend class
T get(const std::string &str) const
std::vector< GNEConnection * > getGNEIncomingConnections()
returns a vector with the incoming GNEConnections of this lane
void addShapeChild(GNEShape *shape)
add shape child to this lane
GNEJunction * getGNEJunctionDestiny() const
returns the destination-junction
LinkState
The right-of-way state of a link between two lanes used when constructing a NBTrafficLightLogic, in MSLink and GNEInternalLane.
transform lane to bikelane
virtual void updateGeometry()=0
update pre-computed geometry information
void drawArrows() const
draw arrows
GUIVisualizationTextSettings drawLinkTLIndex
static void drawOutlineCircle(double width, double iwidth, int steps=8)
Draws an unfilled circle around (0,0)
The link is a (hard) right direction.
Boundary & grow(double by)
extends the boundary by the given amount
std::vector< GNEShape * > myShapes
list with the shapes vinculated with this lane
SVCPermissions parseVehicleClasses(const std::string &allowedS)
Parses the given definition of allowed vehicle classes into the given containers Deprecated classes g...
virtual const std::string & getMicrosimID() const
Returns the id of the object as known to microsim.
const std::string getID() const
function to support debugging
const T getColor(const double value) const
static void drawLine(const Position &beg, double rot, double visLength)
Draws a thin line.
std::vector< GNEConnection * > getGNEOutcomingConnections()
returns a vector with the outgoing GNEConnections of this lane
std::vector< Connection > myConnections
List of connections to following edges.
GNEJunction * getGNEJunctionSource() const
returns the source-junction
double laneMinSize
The minimum visual lane width for drawing.
The link is a partial right direction.
double getLaneShapeLength() const
returns the length of the lane's shape
double width
This lane's width.
SVCPermissions getPermissions(int lane=-1) const
get the union of allowed classes over all lanes or for a specific lane
vehicle is a passenger car (a "normal" car)
void updateGeometry()
update pre-computed geometry information
std::string getAttribute(SumoXMLAttr key) const
This functions has to be implemented in all GNEAttributeCarriers.
begin/end of the description of an edge
restore geometry endpoint to node position
LinkDirection getDirection(const NBEdge *const incoming, const NBEdge *const outgoing, bool leftHand=false) const
Returns the representation of the described stream's direction.
EditMode getCurrentEditMode() const
get the current edit mode
bool canParseVehicleClasses(const std::string &classes)
Checks whether the given string contains only known vehicle classes.
A road/street connecting two junctions (netedit-version)
void drawDirectionIndicators() const
direction indicators for lanes
GNEEdge & myParentEdge
The Edge that to which this lane belongs.
smooth elevation with regard to adjoining edges
double getLaneWidth() const
Returns the default width of lanes of this edge.
transform lane to sidewalk
const PositionVector & getShape() const
returns the shape of the lane
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
double selectionScale
the current selection scaling in NETEDIT (temporary)
double length() const
Returns the length.
void updateConnectionIDs()
void drawMarkings(const bool &selectedEdge, double scale) const
draw lane markings
long onDefault(FXObject *, FXSelector, void *)
multiplexes message to two targets
const PositionVector & getLaneShape(int i) const
Returns the shape of the nth lane.
std::vector< GNEEdge * > retrieveEdges(bool onlySelected=false)
return all edges
virtual void setMicrosimID(const std::string &newID)
Changes the microsimID of the object.
void drawTLSLinkNo(const GUIVisualizationSettings &s) const
draw TLS Link Number
The link is controlled by a tls which is off and blinks, has to brake.
void drawCrossties(double length, double spacing, double halfWidth) const
draw crossties for railroads
std::vector< Position > myLaneRestrictedTexturePositions
Position of textures of restricted lanes.
void setSpecialColor(const RGBColor *Color2)
This is an uncontrolled, major link, may pass.
void drawLinkNo(const GUIVisualizationSettings &s) const
draw link Number
void buildSelectionPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to (de)select the object.
void drawLinkRules() const
draw link rules
static const StringBijection< FXuint > LinkStateNames
long names for link states
static FXColor getFXColor(const RGBColor &col)
converts FXColor to RGBColor
Represents a single node (junction) during network building.
GUIGlID getGlID() const
Returns the numerical id of the object.
The link is a 180 degree turn (left-hand network)
std::vector< GNEAdditional * > myAdditionalChilds
list of Additional Childs of this NetElement
static void drawTriangleAtEnd(const Position &p1, const Position &p2, double tLength, double tWidth)
Draws a triangle at the end of the given line.
Position getPositionInformation() const
Returns the cursor's x/y position within the network.
void removeShapeChild(GNEShape *shape)
remove shape child of this lane
Boundary getBoxBoundary() const
Returns a boundary enclosing this list of lines.
const std::string & getParentName() const
Returns the name of the parent object.
static const RGBColor selectionColor
void setLaneColor(const GUIVisualizationSettings &s) const
set color according to edit mode and visualisation settings
mode for connecting lanes
mode for creating new edges
static void drawBoxLine(const Position &beg, double rot, double visLength, double width, double offset=0)
Draws a thick line.
bool isValid(SumoXMLAttr key, const std::string &value)
NBEdge * getNBEdge()
returns the internal NBEdge
const std::vector< double > & getShapeLengths() const
returns the vector with the shape lengths
double getLoadedLength() const
Returns the length was set explicitly or the computed length if it wasn't set.
double nearest_offset_to_point2D(const Position &p, bool perpendicular=true) const
return the nearest offest to point 2D
GUISelectedStorage gSelected
A global holder of selected objects.
PositionVector customShape
A custom shape for this lane set by the user.
const std::vector< GNEShape * > & getShapeChilds() const
get shape childs of lane
static FXIcon * getIcon(GUIIcon which)
returns a icon previously defined in the enum GUIIcon
GUIVisualizationTextSettings drawLinkJunctionIndex
NBNode * getToNode() const
Returns the destination node of the edge.
static PositionVector parseShapeReporting(const std::string &shpdef, const std::string &objecttype, const char *objectid, bool &ok, bool allowEmpty, bool report=true)
Builds a PositionVector from a string representation, reporting occured errors.
Boundary getCenteringBoundary() const
Returns the boundary to which the view shall be centered in order to show the object.
void setLaneWidth(int lane, double width)
set lane specific width (negative lane implies set for all lanes)
void buildPopupHeader(GUIGLObjectPopupMenu *ret, GUIMainWindow &app, bool addSeparator=true)
Builds the header.
GNEViewNet * getViewNet() const
get view net
The link has no direction (is a dead end link)
static RGBColor getColor()
gets the gl-color
SumoXMLTag getTag() const
get XML Tag assigned to this object