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 (std::vector<NBEdge::Connection>::const_iterator i = edgeCons.begin(); i != edgeCons.end(); ++i) {
165 if ((*i).fromLane ==
myIndex) {
207 glTranslated(0, 5, 0);
209 glTranslated(0, -5, 0);
227 for (std::vector<NBEdge::Connection>::iterator it = connections.begin(); it != connections.end(); it++) {
241 glColor3d(.4, .4, .4);
244 glColor3d(.7, .4, .4);
247 glColor3d(.7, .7, .7);
250 glColor3d(.7, .7, 1);
252 glColor3d(.75, .5, 0.25);
257 const Position& endPos = it->toEdge->getLaneShape(it->toLane)[0];
259 glVertex2d(startPos.
x(), startPos.
y());
260 glVertex2d(endPos.
x(), endPos.
y());
299 const double selectionScale = selected || selectedEdge ? s.
selectionScale : 1;
306 glGetFloatv(GL_CURRENT_COLOR, color);
310 }
else if (s.
scale * exaggeration < 1.) {
322 const double halfRailWidth = 0.725 * exaggeration;
334 glTranslated(0, 0, .1);
340 drawCrossties(0.3 * exaggeration, 1 * exaggeration, 1 * exaggeration);
376 double iconWidth = 1;
391 glRotated(-90, 0, 0, 1);
419 int e = (int)
getShape().size() - 1;
420 for (
int i = 0; i < e; ++i) {
425 const double length =
MIN2((
double)3, myShapeLengths[i] - t);
428 glVertex2d(-mw, -t - length);
429 glVertex2d(halfWidth * 0.5 * scale, -t - length);
430 glVertex2d(halfWidth * 0.5 * scale, -t);
439 glTranslated(0, 0, 0.2);
486 FXMenuPane* addSpecialLanes =
new FXMenuPane(ret);
488 FXMenuPane* removeSpecialLanes =
new FXMenuPane(ret);
490 FXMenuPane* transformSlanes =
new FXMenuPane(ret);
507 new FXMenuCascade(ret, (
"remove special" +
toString(
SUMO_TAG_LANE) +
"s").c_str(), 0, removeSpecialLanes);
508 new FXMenuCascade(ret, (
"transform to special" +
toString(
SUMO_TAG_LANE) +
"s").c_str(), 0, transformSlanes);
516 FXMenuPane* addSpecialLanes =
new FXMenuPane(ret);
518 FXMenuPane* removeSpecialLanes =
new FXMenuPane(ret);
520 FXMenuPane* transformSlanes =
new FXMenuPane(ret);
523 FXMenuCommand* addSidewalk =
new FXMenuCommand(addSpecialLanes,
"Sidewalk", pedestrianIcon, &parent,
MID_GNE_LANE_ADD_SIDEWALK);
524 FXMenuCommand* addBikelane =
new FXMenuCommand(addSpecialLanes,
"Bikelane", bikeIcon, &parent,
MID_GNE_LANE_ADD_BIKE);
525 FXMenuCommand* addBuslane =
new FXMenuCommand(addSpecialLanes,
"Buslane", busIcon, &parent,
MID_GNE_LANE_ADD_BUS);
527 FXMenuCommand* removeSidewalk =
new FXMenuCommand(removeSpecialLanes,
"Sidewalk", pedestrianIcon, &parent,
MID_GNE_LANE_REMOVE_SIDEWALK);
528 removeSidewalk->disable();
529 FXMenuCommand* removeBikelane =
new FXMenuCommand(removeSpecialLanes,
"Bikelane", bikeIcon, &parent,
MID_GNE_LANE_REMOVE_BIKE);
530 removeBikelane->disable();
531 FXMenuCommand* removeBuslane =
new FXMenuCommand(removeSpecialLanes,
"Buslane", busIcon, &parent,
MID_GNE_LANE_REMOVE_BUS);
532 removeBuslane->disable();
535 FXMenuCommand* transformLaneToBikelane =
new FXMenuCommand(transformSlanes,
"Bikelane", bikeIcon, &parent,
MID_GNE_LANE_TRANSFORM_BIKE);
536 FXMenuCommand* transformLaneToBuslane =
new FXMenuCommand(transformSlanes,
"Buslane", busIcon, &parent,
MID_GNE_LANE_TRANSFORM_BUS);
539 FXMenuCascade* cascadeAddSpecialLane =
new FXMenuCascade(ret, (
"add special" +
toString(
SUMO_TAG_LANE)).c_str(), 0, addSpecialLanes);
540 FXMenuCascade* cascadeRemoveSpecialLane =
new FXMenuCascade(ret, (
"remove special" +
toString(
SUMO_TAG_LANE)).c_str(), 0, removeSpecialLanes);
541 new FXMenuCascade(ret, (
"transform to special" +
toString(
SUMO_TAG_LANE)).c_str(), 0, transformSlanes);
543 if (edgeHasSidewalk) {
544 transformLaneToSidewalk->disable();
545 addSidewalk->disable();
546 removeSidewalk->enable();
548 if (edgeHasBikelane) {
549 transformLaneToBikelane->disable();
550 addBikelane->disable();
551 removeBikelane->enable();
553 if (edgeHasBuslane) {
554 transformLaneToBuslane->disable();
555 addBuslane->disable();
556 removeBuslane->enable();
559 if (edgeHasSidewalk && edgeHasBikelane && edgeHasBuslane) {
560 cascadeAddSpecialLane->disable();
562 if (!edgeHasSidewalk && !edgeHasBikelane && !edgeHasBuslane) {
563 cascadeRemoveSpecialLane->disable();
567 revertTransformation->enable();
569 revertTransformation->disable();
575 new FXMenuCommand(ret,
"Select state for all links from this edge:", 0, 0, 0);
577 for (std::vector<std::string>::const_iterator it = names.begin(); it != names.end(); it++) {
579 FXMenuRadio* mc =
new FXMenuRadio(ret, (*it).c_str(),
this, FXDataTarget::ID_OPTION + state);
585 FXMenuCommand* mc =
new FXMenuCommand(ret,
"Additional options available in 'Inspect Mode'", 0, 0, 0);
586 mc->handle(&parent, FXSEL(SEL_COMMAND, FXWindow::ID_DISABLE), 0);
589 new FXMenuSeparator(ret);
592 new FXMenuCommand(ret, (
"Shape pos: " +
toString(pos)).c_str(), 0, 0, 0);
594 new FXMenuCommand(ret, (
"Height: " +
toString(height)).c_str(), 0, 0, 0);
599 (
dynamic_cast<GNEViewNet&
>(parent)).markPopupPosition();
630 const std::vector<double>&
636 const std::vector<double>&
659 int segments = (int)
getShape().size() - 1;
663 for (
int i = 0; i < segments; ++i) {
672 (*i)->updateGeometry();
678 for (std::vector<GNEConnection*>::iterator i = incomingConnections.begin(); i != incomingConnections.end(); i++) {
679 (*i)->updateGeometry();
683 for (std::vector<GNEConnection*>::iterator i = outGoingConnections.begin(); i != outGoingConnections.end(); i++) {
684 (*i)->updateGeometry();
721 if (laneParametricLenght > 0) {
722 return laneParametricLenght;
724 throw ProcessError(
"Lane Parametric Lenght cannot be never 0");
757 const std::vector<GNEAdditional*>&
838 return canParse<double>(value);
843 if (value ==
"default") {
849 return canParse<double>(value);
851 return canParse<bool>(value);
858 return canParse<int>(value) && (parse<int>(value) ==
myIndex);
894 if (value ==
"default") {
921 switch (activeScheme) {
937 switch (activeScheme) {
939 for (PositionVector::const_iterator ii =
getShape().begin(); ii !=
getShape().end() - 1; ++ii) {
944 for (
int ii = 1; ii < (int)
getShape().size(); ++ii) {
958 switch (activeScheme) {
960 switch (myPermissions) {
981 return (
double)myPermissions;
1023 glTranslated(0, 0, 0.1);
1024 int e = (int)
getShape().size() - 1;
1025 for (
int i = 0; i < e; ++i) {
1031 glVertex2d(-halfWidth, -t);
1032 glVertex2d(-halfWidth, -t - length);
1033 glVertex2d(halfWidth, -t - length);
1034 glVertex2d(halfWidth, -t);
1046 glColor3d(0.3, 0.3, 0.3);
1049 int e = (int)
getShape().size() - 1;
1050 for (
int i = 0; i < e; ++i) {
1055 const double length =
MIN2(width * 0.5, myShapeLengths[i] - t);
1056 glBegin(GL_TRIANGLES);
1057 glVertex2d(0, -t - length);
1058 glVertex2d(-width * 0.25, -t);
1059 glVertex2d(+width * 0.25, -t);
1090 std::vector<GNEConnection*>
1093 std::vector<GNEConnection*> incomingConnections;
1096 if (junctionSource) {
1100 for (std::vector<GNEConnection*>::const_iterator j = (*i)->getGNEConnections().begin(); j != (*i)->getGNEConnections().end(); j++) {
1101 if ((*j)->getNBEdgeConnection().fromLane ==
getIndex()) {
1102 incomingConnections.push_back(*j);
1107 return incomingConnections;
1111 std::vector<GNEConnection*>
1115 std::vector<GNEConnection*> outcomingConnections;
1117 for (std::vector<GNEConnection*>::const_iterator i = edgeConnections.begin(); i != edgeConnections.end(); i++) {
1118 if ((*i)->getNBEdgeConnection().fromLane ==
getIndex()) {
1119 outcomingConnections.push_back(*i);
1122 return outcomingConnections;
1130 for (std::vector<GNEConnection*>::iterator i = incomingConnections.begin(); i != incomingConnections.end(); i++) {
1135 for (std::vector<GNEConnection*>::iterator i = outcomingConnections.begin(); i != outcomingConnections.end(); i++) {
bool drawAsWaterway(const GUIVisualizationSettings &s) const
whether to draw this lane as a waterways
static void drawTexturedBox(int which, double size)
Draws a named texture as a box with the given size.
double getLaneShapeLength() const
returns the length of the lane's shape
EditMode getCurrentEditMode() const
get the current edit mode
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 z() const
Returns the z-position.
std::vector< double > myShapeLengths
The lengths of the shape parts.
bool controlsEdge(GNEEdge &edge) const
whether the given edge is controlled by the currently edited tlDef
const std::string & getParentName() const
Returns the name of the parent object.
double scale
information about a lane's width (temporary, used for a single view)
double laneWidthExaggeration
The lane exaggeration (upscale thickness)
GNEJunction * getGNEJunctionSource() const
returns the source-junction
void closeBuilding(const Parameterised *p=0)
Closes the building of the table.
double distanceTo2D(const Position &p2) const
returns the euclidean distance in the x-y-plane
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.
AdditionalVector myAdditionals
list with the additionals vinculated with this lane
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)
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.
std::vector< Connection > getConnectionsFromLane(int lane) const
Returns connections from a given lane.
static GUIGlID getTexture(GUITexture which)
returns a texture previously defined in the enum GUITexture
double getLoadedLength() const
Returns the length was set explicitly or the computed length if it wasn't set.
Copy edge name (for lanes only)
double nearest_offset_to_point2D(const Position &p, bool perpendicular=true) const
return the nearest offest to point 2D
int getConnectionIndex(const NBEdge *from, const NBEdge::Connection &con) const
return the index of the given connection
void setSpeed(int lane, double speed)
set lane specific speed (negative lane implies set for all lanes)
GUIColorer laneColorer
The lane colorer.
double x() const
Returns the x-position.
Stores the information about how to visualize structures.
This is an uncontrolled, minor link, has to stop.
bool isRestricted(SUMOVehicleClass vclass) const
check if this lane is restricted
const std::vector< GNEAdditional * > & getAdditionalChilds() const
get additional childs of lane
int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
void removeAdditionalChild(GNEAdditional *additional)
remove additional child to this lane
std::string getAttributeForSelection(SumoXMLAttr key) const
method for getting the attribute in the context of object selection
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
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
void buildCenterPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to center to the object.
bool setFunctionalColor(int activeScheme) const
sets the color according to the current scheme index and some lane function
double getColorValue(int activeScheme) const
return value for lane coloring according to the given scheme
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.
bool setMultiColor(const GUIColorer &c) const
sets multiple colors according to the current scheme index and some lane function ...
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.
const double SUMO_const_laneOffset
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
bool isRailway(SVCPermissions permissions)
Returns whether an edge with the given permission is a railway edge.
const SVCPermissions SVCAll
all VClasses are allowed
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.
Boundary getBoundary() const
returns the boundry (including lanes)
int getIndex() const
returns the index of the lane
GUIGlID getGlID() const
Returns the numerical id of the object.
static const double UNSPECIFIED_WIDTH
unspecified lane width
A class that stores a 2D geometrical boundary.
int myIndex
The index of this lane.
This is an uncontrolled, zipper-merge link.
The link is a (hard) left direction.
transform lane to sidewalk
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
LinkDirection
The different directions a link between two lanes may take (or a stream between two edges)...
std::vector< std::string > getStrings() const
The link is a straight direction.
virtual const std::string & getMicrosimID() const
Returns the id of the object as known to microsim.
double getSpeed() const
returns the current speed of lane
void p_add(GNEChange_Attribute *cmd)
special method, avoid empty changes, always execute
bool drawAsRailway(const GUIVisualizationSettings &s) const
whether to draw this lane as a railway
void drawDirectionIndicators() const
direction indicators for lanes
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
static double naviDegree(const double angle)
transform lane to busLane
void drawLane2LaneConnections() const
draw lane to lane connections
double getLaneWidth() const
Returns the default width of lanes of this edge.
void drawArrows() const
draw arrows
int getPriority() const
Returns the priority of the edge.
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)
void drawTLSLinkNo(const GUIVisualizationSettings &s) const
draw TLS Link Number
set non-default geometry endpoint
This is an uncontrolled, minor link, has to brake.
A point in 2D or 3D with translation and scaling methods.
const std::vector< double > & getShapeRotations() const
returns the vector with the shape rotations
void addAdditionalChild(GNEAdditional *additional)
add additional child to this lane
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.
std::vector< double > myShapeRotations
friend class GNEChange_Attribute
declare friend class
double y() const
Returns the y-position.
std::vector< GNEConnection * > getGNEIncomingConnections()
returns a vector with the incoming GNEConnections of this lane
int getNumLanes() const
Returns the number of lanes.
LinkState
The right-of-way state of a link between two lanes used when constructing a NBTrafficLightLogic, in MSLink and GNEInternalLane.
const T getColor(const double value) const
double length() const
Returns the length.
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.
LinkState getLinkState(const NBEdge *incoming, NBEdge *outgoing, int fromLane, int toLane, bool mayDefinitelyPass, const std::string &tlID) const
get link state
Position positionAtOffset2D(double pos, double lateralOffset=0) const
Returns the position at the given length.
Boundary & grow(double by)
extends the boundary by the given amount
SVCPermissions parseVehicleClasses(const std::string &allowedS)
Parses the given definition of allowed vehicle classes into the given containers Deprecated classes g...
void drawMarkings(const bool &selectedEdge, double scale) const
draw lane markings
static void drawLine(const Position &beg, double rot, double visLength)
Draws a thin line.
const std::string getID() const
function to support debugging
std::vector< GNEConnection * > getGNEOutcomingConnections()
returns a vector with the outgoing GNEConnections of this lane
LinkDirection getDirection(const NBEdge *const incoming, const NBEdge *const outgoing, bool leftHand=false) const
Returns the representation of the described stream's direction.
std::vector< Connection > myConnections
List of connections to following edges.
double laneMinSize
The minimum visual lane width for drawing.
The link is a partial right direction.
double width
This lane's width.
vehicle is a passenger car (a "normal" car)
void updateGeometry()
update pre-computed geometry information
begin/end of the description of an edge
bool canParseVehicleClasses(const std::string &classes)
Checks whether the given string contains only known vehicle classes.
std::string getAttribute(SumoXMLAttr key) const
This functions has to be implemented in allGNEAttributeCarrier.
A road/street connecting two junctions (netedit-version)
const std::vector< double > & getShapeLengths() const
returns the vector with the shape lengths
SVCPermissions getPermissions(int lane=-1) const
get the union of allowed classes over all lanes or for a specific lane
void drawLinkRules() const
draw link rules
GNEEdge & myParentEdge
The Edge that to which this lane belongs.
double getLaneSpeed(int lane) const
get lane speed
NBNode * getToNode() const
Returns the destination node of the edge.
double getLength() const
Returns the computed length of the edge.
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)
void updateConnectionIDs()
long onDefault(FXObject *, FXSelector, void *)
multiplexes message to two targets
virtual void setMicrosimID(const std::string &newID)
Changes the microsimID of the object.
An Element which don't belongs to GNENet but has influency in the simulation.
The link is controlled by a tls which is off and blinks, has to brake.
std::vector< Position > myLaneRestrictedTexturePositions
Position of textures of restricted lanes.
void setSpecialColor(const RGBColor *Color2)
transform lane to bikelane
This is an uncontrolled, major link, may pass.
void buildSelectionPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to (de)select the object.
Boundary getCenteringBoundary() const
Returns the boundary to which the view shall be centered in order to show the object.
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.
T get(const std::string &str) const
The link is a 180 degree turn (left-hand network)
SumoXMLTag getTag() const
get XML Tag assigned to this object
GUIVisualizationSettings * getVisualisationSettings() const
get visualitation settings
static void drawTriangleAtEnd(const Position &p1, const Position &p2, double tLength, double tWidth)
Draws a triangle at the end of the given line.
void drawCrossties(double length, double spacing, double halfWidth) const
draw crossties for railroads
std::string getLaneID(int lane) const
get Lane ID (Secure)
const std::vector< GNEEdge * > & getGNEIncomingEdges() const
Returns incoming GNEEdges.
static const RGBColor selectionColor
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
Position getPositionInformation() const
Returns the cursor's x/y position within the network.
double getLaneParametricLength() const
returns the parameteric length of the lane
Boundary getBoxBoundary() const
Returns a boundary enclosing this list of lines.
void mkItem(const char *name, bool dynamic, ValueSource< unsigned > *src)
Adds a row which obtains its value from an unsigned-ValueSource.
GUIParameterTableWindow * getParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own parameter window.
GUISelectedStorage gSelected
A global holder of selected objects.
PositionVector customShape
A custom shape for this lane set by the user.
A window containing a gl-object's parameter.
GNEViewNet * getViewNet() const
get view net
restore geometry endpoint to node position
static FXIcon * getIcon(GUIIcon which)
returns a icon previously defined in the enum GUIIcon
GUIVisualizationTextSettings drawLinkJunctionIndex
const PositionVector & getLaneShape(int i) const
Returns the shape of the nth lane.
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
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.
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.
void drawLinkNo(const GUIVisualizationSettings &s) const
draw link Number
The link has no direction (is a dead end link)
GNEJunction * getGNEJunctionDestiny() const
returns the destination-junction
static RGBColor getColor()
gets the gl-color