52 FXIMPLEMENT(
GNELane, FXDelegator, 0, 0)
62 mySpecialColor(
nullptr) {
67 myParentEdge(
GNEEdge::getDummyEdge()),
69 mySpecialColor(nullptr) {
122 for (
auto i : incomingConnections) {
127 for (
auto i : outGoingConnections) {
155 int noLinks = (int)cons.size();
165 for (
int i = noLinks; --i >= 0;) {
166 double x2 = x1 - (double)(w / 2.);
168 cons[lefthand ? noLinks - 1 - i : i]);
179 int noLinks = (int)cons.size();
189 for (
int i = noLinks; --i >= 0;) {
190 double x2 = x1 - (double)(w / 2.);
191 int linkNo = cons[lefthand ? noLinks - 1 - i : i].tlLinkIndex;
208 double rot = (double) atan2((end.
x() - f.
x()), (f.
y() - end.
y())) * (double) 180.0 / (
double)
M_PI;
213 glTranslated(end.
x(), end.
y(), 0);
214 glRotated(rot, 0, 0, 1);
218 for (
auto i : edgeCons) {
261 glTranslated(0, 5, 0);
263 glTranslated(0, -5, 0);
281 for (
auto it : connections) {
294 glColor3d(.4, .4, .4);
297 glColor3d(.7, .4, .4);
300 glColor3d(.7, .7, .7);
303 glColor3d(.7, .7, 1);
306 glColor3d(.75, .5, 0.25);
311 const Position& endPos = it.toEdge->getLaneShape(it.toLane)[0];
313 glVertex2d(startPos.
x(), startPos.
y());
314 glVertex2d(endPos.
x(), endPos.
y());
343 }
else if (s.
scale * exaggeration < 1.) {
370 if (spreadSuperposed) {
375 const double halfInnerFeetWidth = halfGauge - 0.039 * exaggeration;
376 const double halfRailWidth = halfInnerFeetWidth + 0.15 * exaggeration;
377 const double halfCrossTieWidth = halfGauge * 1.81;
387 glColor3d(0.8, 0.8, 0.8);
388 glTranslated(0, 0, .1);
401 if (halfWidth != halfWidth2 && !spreadSuperposed) {
404 glTranslated(0, 0, -.1);
429 glColor3d(0.3, 0.3, 0.3);
443 double iconWidth = 1;
458 glRotated(90, 0, 0, 1);
491 if (!i->getTagProperty().isPlacedInRTree()) {
497 if (!i->getTagProperty().isPlacedInRTree()) {
519 for (
int i = 0; i < e; ++i) {
527 glVertex2d(-mw, -t - length);
528 glVertex2d(-mw2, -t - length);
529 glVertex2d(-mw2, -t);
555 new FXMenuCommand(ret,
"Copy edge parent name to clipboard",
nullptr, ret,
MID_COPY_EDGE_NAME);
579 bool edgeHasSidewalk =
false;
580 bool edgeHasBikelane =
false;
581 bool edgeHasBuslane =
false;
582 bool edgeHasGreenVerge =
false;
583 bool differentLaneShapes =
false;
586 for (
auto i : selectedLanes) {
588 edgeHasSidewalk =
true;
590 if (i->getParentEdge().hasRestrictedLane(
SVC_BICYCLE)) {
591 edgeHasBikelane =
true;
593 if (i->getParentEdge().hasRestrictedLane(
SVC_BUS)) {
594 edgeHasBuslane =
true;
596 if (i->getParentEdge().hasRestrictedLane(
SVC_IGNORING)) {
597 edgeHasGreenVerge =
true;
599 if (i->getParentEdge().getNBEdge()->getLaneStruct(i->getIndex()).customShape.size() != 0) {
600 differentLaneShapes =
true;
611 FXMenuPane* edgeOperations =
new FXMenuPane(ret);
613 new FXMenuCascade(ret,
"edge operations",
nullptr, edgeOperations);
615 new FXMenuCommand(edgeOperations,
"Split edge here",
nullptr, &parent,
MID_GNE_EDGE_SPLIT);
616 new FXMenuCommand(edgeOperations,
"Split edge in both directions here",
nullptr, &parent,
MID_GNE_EDGE_SPLIT_BIDI);
619 new FXMenuCommand(edgeOperations, (
"Reverse " + edgeDescPossibleMulti).c_str(),
nullptr, &parent,
MID_GNE_EDGE_REVERSE);
620 new FXMenuCommand(edgeOperations, (
"Add reverse direction for " + edgeDescPossibleMulti).c_str(),
nullptr, &parent,
MID_GNE_EDGE_ADD_REVERSE);
621 new FXMenuCommand(edgeOperations, (
"Straighten " + edgeDescPossibleMulti).c_str(),
nullptr, &parent,
MID_GNE_EDGE_STRAIGHTEN);
622 new FXMenuCommand(edgeOperations, (
"Smooth " + edgeDescPossibleMulti).c_str(),
nullptr, &parent,
MID_GNE_EDGE_SMOOTH);
624 new FXMenuCommand(edgeOperations, (
"Smooth elevation of " + edgeDescPossibleMulti).c_str(),
nullptr, &parent,
MID_GNE_EDGE_SMOOTH_ELEVATION);
626 FXMenuPane* laneOperations =
new FXMenuPane(ret);
628 new FXMenuCascade(ret,
"lane operations",
nullptr, laneOperations);
630 if (differentLaneShapes) {
634 FXMenuPane* addSpecialLanes =
new FXMenuPane(laneOperations);
636 FXMenuPane* removeSpecialLanes =
new FXMenuPane(laneOperations);
638 FXMenuPane* transformSlanes =
new FXMenuPane(laneOperations);
641 FXMenuCommand* addSidewalk =
new FXMenuCommand(addSpecialLanes,
"Sidewalk", pedestrianIcon, &parent,
MID_GNE_LANE_ADD_SIDEWALK);
642 FXMenuCommand* addBikelane =
new FXMenuCommand(addSpecialLanes,
"Bikelane", bikeIcon, &parent,
MID_GNE_LANE_ADD_BIKE);
643 FXMenuCommand* addBuslane =
new FXMenuCommand(addSpecialLanes,
"Buslane", busIcon, &parent,
MID_GNE_LANE_ADD_BUS);
644 FXMenuCommand* addGreenVerge =
new FXMenuCommand(addSpecialLanes,
"Greenverge", greenVergeIcon, &parent,
MID_GNE_LANE_ADD_GREENVERGE);
646 FXMenuCommand* removeSidewalk =
new FXMenuCommand(removeSpecialLanes,
"Sidewalk", pedestrianIcon, &parent,
MID_GNE_LANE_REMOVE_SIDEWALK);
647 removeSidewalk->disable();
648 FXMenuCommand* removeBikelane =
new FXMenuCommand(removeSpecialLanes,
"Bikelane", bikeIcon, &parent,
MID_GNE_LANE_REMOVE_BIKE);
649 removeBikelane->disable();
650 FXMenuCommand* removeBuslane =
new FXMenuCommand(removeSpecialLanes,
"Buslane", busIcon, &parent,
MID_GNE_LANE_REMOVE_BUS);
651 removeBuslane->disable();
653 removeGreenVerge->disable();
656 FXMenuCommand* transformLaneToBikelane =
new FXMenuCommand(transformSlanes,
"Bikelane", bikeIcon, &parent,
MID_GNE_LANE_TRANSFORM_BIKE);
657 FXMenuCommand* transformLaneToBuslane =
new FXMenuCommand(transformSlanes,
"Buslane", busIcon, &parent,
MID_GNE_LANE_TRANSFORM_BUS);
660 FXMenuCascade* cascadeAddSpecialLane =
new FXMenuCascade(laneOperations, (
"add restricted " +
toString(
SUMO_TAG_LANE)).c_str(),
nullptr, addSpecialLanes);
661 FXMenuCascade* cascadeRemoveSpecialLane =
new FXMenuCascade(laneOperations, (
"remove restricted " +
toString(
SUMO_TAG_LANE)).c_str(),
nullptr, removeSpecialLanes);
662 new FXMenuCascade(laneOperations, (
"transform to restricted " +
toString(
SUMO_TAG_LANE)).c_str(),
nullptr, transformSlanes);
664 if (edgeHasSidewalk) {
665 transformLaneToSidewalk->disable();
666 addSidewalk->disable();
667 removeSidewalk->enable();
669 if (edgeHasBikelane) {
670 transformLaneToBikelane->disable();
671 addBikelane->disable();
672 removeBikelane->enable();
674 if (edgeHasBuslane) {
675 transformLaneToBuslane->disable();
676 addBuslane->disable();
677 removeBuslane->enable();
679 if (edgeHasGreenVerge) {
680 transformLaneToGreenVerge->disable();
681 addGreenVerge->disable();
682 removeGreenVerge->enable();
685 if (edgeHasSidewalk && edgeHasBikelane && edgeHasBuslane && edgeHasGreenVerge) {
686 cascadeAddSpecialLane->disable();
688 if (!edgeHasSidewalk && !edgeHasBikelane && !edgeHasBuslane && !edgeHasGreenVerge) {
689 cascadeRemoveSpecialLane->disable();
693 new FXMenuCommand(ret,
"Select state for all links from this edge:",
nullptr,
nullptr, 0);
695 for (
auto it : names) {
697 FXMenuRadio* mc =
new FXMenuRadio(ret, it.c_str(),
this, FXDataTarget::ID_OPTION + state);
703 FXMenuCommand* mc =
new FXMenuCommand(ret,
"Additional options available in 'Inspect Mode'",
nullptr,
nullptr, 0);
704 mc->handle(&parent, FXSEL(SEL_COMMAND, FXWindow::ID_DISABLE),
nullptr);
709 new FXMenuSeparator(ret);
712 new FXMenuCommand(ret, (
"Shape pos: " +
toString(pos)).c_str(),
nullptr,
nullptr, 0);
714 new FXMenuCommand(ret, (
"Height: " +
toString(height)).c_str(),
nullptr,
nullptr, 0);
753 if (laneParametricLenght > 0) {
754 return laneParametricLenght;
756 throw ProcessError(
"Lane Parametric Lenght cannot be never 0");
844 return canParse<double>(value);
851 return canParse<double>(value) && (parse<double>(value) >= 0);
853 return canParse<bool>(value);
858 }
else if (canParse<PositionVector>(value)) {
859 return parse<PositionVector>(value).
size() > 1;
864 return canParse<int>(value) && (parse<int>(value) ==
myIndex);
866 return canParse<bool>(value);
880 result += i.first +
"=" + i.second +
"|";
883 if (!result.empty()) {
890 std::vector<std::pair<std::string, std::string> >
892 std::vector<std::pair<std::string, std::string> > result;
895 result.push_back(std::make_pair(i.first, i.second));
906 std::vector<std::string> parsedValues;
909 parsedValues.push_back(stValues.
next());
912 for (
auto i : parsedValues) {
913 std::vector<std::string> parsedParameters;
916 parsedParameters.push_back(stParam.
next());
970 if (parse<bool>(value)) {
994 for (
const auto& i : viaEdges) {
1028 switch (activeScheme) {
1044 switch (activeScheme) {
1070 switch (activeScheme) {
1072 switch (myPermissions) {
1094 return (
double)myPermissions;
1161 * (spreadSuperposed ? 0.4 : 1)));
1162 const double sideOffset = spreadSuperposed ? width * -0.5 : 0;
1166 for (
int i = 0; i < e; ++i) {
1172 glBegin(GL_TRIANGLES);
1173 glVertex2d(sideOffset, -t - length);
1174 glVertex2d(sideOffset - width * 0.25, -t);
1175 glVertex2d(sideOffset + width * 0.25, -t);
1194 glScaled(exaggeration, exaggeration, 1);
1195 glTranslated(lanePos.
x(), lanePos.
y(), vss->
getType());
1196 glRotated(-1 * laneRot, 0, 0, 1);
1197 glTranslated(0, -1.5, 0);
1201 noPoints = (int)(9.0 + s.
scale / 10.0);
1202 if (noPoints > 36) {
1209 glTranslated(0, 0, .1);
1214 glTranslated(0, 0, .1);
1215 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
1248 glTranslated(customShape.front().x(), customShape.front().y(),
GLO_JUNCTION + 0.01);
1250 glTranslated(0, 0, 0.01);
1263 glTranslated(customShape.back().x(), customShape.back().y(),
GLO_JUNCTION + 0.01);
1265 glTranslated(0, 0, 0.01);
1303 std::vector<GNEConnection*>
1306 std::vector<GNEConnection*> incomingConnections;
1309 if (junctionSource) {
1313 for (
auto j : i->getGNEConnections()) {
1314 if (j->getNBEdgeConnection().fromLane ==
getIndex()) {
1315 incomingConnections.push_back(j);
1320 return incomingConnections;
1324 std::vector<GNEConnection*>
1328 std::vector<GNEConnection*> outcomingConnections;
1330 for (
auto i : edgeConnections) {
1331 if (i->getNBEdgeConnection().fromLane ==
getIndex()) {
1332 outcomingConnections.push_back(i);
1335 return outcomingConnections;
1343 for (
auto i : incomingConnections) {
1348 for (
auto i : outcomingConnections) {
1370 i->startGeometryMoving();
1374 i->startGeometryMoving();
1378 i->startGeometryMoving();
1382 i->startGeometryMoving();
1386 i->startGeometryMoving();
1390 i->startGeometryMoving();
1400 i->endGeometryMoving();
1404 i->endGeometryMoving();
1408 i->endGeometryMoving();
1412 i->endGeometryMoving();
1416 i->endGeometryMoving();
1420 i->endGeometryMoving();
static void drawTexturedBox(int which, double size)
Draws a named texture as a box with the given size.
RGBColor setLaneColor(const GUIVisualizationSettings &s) const
set color according to edit mode and visualisation settings
int getConnectionIndex(const NBEdge *from, const NBEdge::Connection &con) const
return the index of the given connection
The link is a partial left direction.
double rotationDegreeAtOffset(double pos) const
Returns the rotation at the given length.
double getLength() const
Returns the computed length of the edge.
std::vector< GNELane * > retrieveLanes(bool onlySelected=false)
return all lanes
Position getPositionInView() const
Returns position of hierarchical element in view.
SumoXMLTag
Numbers representing SUMO-XML - element names.
void drawLane2LaneConnections() const
draw lane to lane connections
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
const std::vector< T > & getSchemes() const
std::string getParentName() const
Returns the name of the parent object (if any)
const Position & getChildPosition(const GNELane *lane)
get child position calculated in ChildConnections
double scale
information about a lane's width (temporary, used for a single view)
double laneWidthExaggeration
The lane exaggeration (upscale thickness)
RGBColor changedBrightness(int change, int toChange=3) const
Returns a new color with altered brightness.
bool setFunctionalColor(int activeScheme, RGBColor &col) const
sets the color according to the current scheme index and some lane function
void drawVSSSymbol(const GUIVisualizationSettings &s, GNEAdditional *vss) const
draw VSS symbol
PositionVector shape
The shape of the netElement element.
PositionVector shape
The lane's shape.
whether a given shape is user-defined
GNENet * myNet
the net to inform about updates
std::string next()
returns the next substring when it exists. Otherwise the behaviour is undefined
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)
a flow definitio nusing a from-to edges instead of a route (used by router)
double getLaneSpeed(int lane) const
get lane speed
bool drawUsingSelectColor() const
check if attribute carrier must be drawn using selecting color.
const RGBColor * mySpecialColor
optional special color
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, inspired by http://alvyray.com/Papers/CG/hsv2rgb.htm.
static const RGBColor WHITE
NetworkEditMode
enum for network edit modes
RGBColor selectedLaneColor
lane selection color
static GUIGlID getTexture(GUITexture which)
returns a texture previously defined in the enum GUITexture
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.
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.
const double SUMO_const_laneWidth
static const double SNAP_RADIUS
GNEViewParent * getViewParent() const
get the net object
double y() const
Returns the y-position.
int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
interpolate z values linear between junctions
The representation of a single edge during network building.
bool showRails
Information whether rails shall be drawn.
The link is a 180 degree turn.
smooth elevation with regard to adjoining edges
const std::vector< GNEConnection * > & getGNEConnections() const
returns a reference to the GNEConnection vector
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.
bool isBidiRail(bool ignoreSpread=false) const
whether this edge is part of a bidirectional railway
NetElementGeometry myGeometry
netElement geometry
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.
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, int align=0, double width=-1)
bool drawDetail(const double detail, const double exaggeration) const
check if details can be drawn for the given GUIVisualizationDetailSettings and current scale and exxa...
transform lane to bikelane
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.
double getChildRotation(const GNELane *lane)
get child rotation calculated in ChildConnections
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
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
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.
bool hasNext()
returns the information whether further substrings exist
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.
static void drawFilledCircle(double width, int steps=8)
Draws a filled circle around (0,0)
virtual std::string getAttribute(SumoXMLAttr key) const =0
static bool isValidGenericParameterKey(const std::string &value)
whether the given string is a valid key for a generic parameter
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.
const std::vector< GNEAdditional * > & getAdditionalChildren() const
return vector of additionals that have as Parent this edge (For example, Calibrators) ...
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.
std::vector< std::string > getStrings() const
#define WRITE_WARNING(msg)
double getDistance() const
mode for moving network elements
GNETLSEditorFrame * getTLSEditorFrame() const
get frame for GNE_NMODE_TLS
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.
const std::vector< GNEDemandElement * > & getDemandElementChildren() const
return vector of demand elements that have as Parent this edge (For example, Calibrators) ...
const std::vector< GNEShape * > & getShapeChildren() const
get shapes of VSS
LinkDirection
The different directions a link between two lanes may take (or a stream between two edges)...
The link is a straight direction.
std::string edgeParam
key for coloring by edge parameter
void p_add(GNEChange_Attribute *cmd)
special method, avoid empty changes, always execute
NBEdge * getNBEdge() const
returns the internal NBEdge
int getCircleResolution() const
function to calculate circle resolution for all circles drawn in drawGL(...) functions ...
const std::vector< GNEShape * > & getShapeParents() const
get shapes of VSS
GUIVisualizationSizeSettings addSize
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
std::vector< std::pair< std::string, std::string > > getGenericParameters() const
return generic parameters as vector of pairs format
std::vector< double > shapeRotations
The rotations of the single shape parts.
static const RGBColor GREEN
double getLaneParametricLength() const
returns the parameteric length of the lane
static bool isValidGenericParameterValue(const std::string &value)
whether the given string is a valid value for a generic parameter
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
SumoXMLTag getTag() const
get Tag vinculated with this attribute Property
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
GNEEdge & getParentEdge()
Returns underlying parent edge.
void endGeometryMoving()
begin movement (used when user click over edge to start a movement, to avoid problems with problems w...
void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)
virtual FXuint size() const
return actual size
bool setMultiColor(const GUIVisualizationSettings &s, const GUIColorer &c, RGBColor &col) const
sets multiple colors according to the current scheme index and some lane function ...
std::string getGenericParametersStr() const
return generic parameters in string format
transform lane to busLane
Copy edge name (for lanes only)
double beginEndAngle() const
returns the angle in radians of the line connecting the first and the last position ...
const std::vector< GNEEdge * > & getGNEIncomingEdges() const
Returns incoming GNEEdges.
static double toDouble(const std::string &sData)
converts a string into the double value described by it by calling the char-type converter ...
This is an uncontrolled, minor link, has to brake.
std::string getLaneID(int lane) const
get lane ID
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
static bool isGenericParametersValid(const std::string &value)
check if given string can be parsed to a map/list of generic parameters
double mySpecialColorValue
optional value that corresponds to which the special color corresponds
bool isLogicValid()
whether this junction has a valid logic
void removeGLObjectFromGrid(GUIGlObject *o)
add GL Object into net
bool isWaterway(SVCPermissions permissions)
Returns whether an edge with the given permission is a waterway edge.
friend class GNEChange_Attribute
declare friend class
void move2side(double amount, double maxExtension=100)
move position vector to side using certain ammount
T get(const std::string &str) const
mode for creating new edges
virtual bool isAttributeCarrierSelected() const =0
check if attribute carrier is selected
const double SUMO_const_laneMarkWidth
std::vector< GNEConnection * > getGNEIncomingConnections()
returns a vector with the incoming GNEConnections of 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.
static const double laneTextures
details for lane textures
const std::vector< GNEAdditional * > & getAdditionalParents() const
return vector of additionals that have as Parent this edge (For example, Calibrators) ...
void drawArrows() const
draw arrows
double getLengthGeometryFactor() const
get length geometry factor
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.
void drawMarkings(const GUIVisualizationSettings &s, double scale) const
draw lane markings
void setParameter(const std::string &key, const std::string &value)
Sets a parameter.
GUIColorer junctionColorer
The junction colorer.
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
void setGenericParametersStr(const std::string &value)
set generic parameters in string format
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
void startGeometryMoving()
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
double getFinalLength() const
get length that will be assigned to the lanes in the final network
vehicle is a passenger car (a "normal" car)
void updateGeometry()
update pre-computed geometry information
void selectAttributeCarrier(bool changeFlag=true)
select attribute carrier using GUIGlobalSelection
std::vector< double > shapeLengths
The lengths of the single shape parts.
void setSpecialColor(const RGBColor *Color2, double colorValue=std::numeric_limits< double >::max())
static void drawShapeDottedContourAroundShape(const GUIVisualizationSettings &s, const int type, const PositionVector &shape, const double width)
draw a dotted contour around the given Non closed shape with certain width
std::string getAttribute(SumoXMLAttr key) const
begin/end of the description of an edge
LinkDirection getDirection(const NBEdge *const incoming, const NBEdge *const outgoing, bool leftHand=false) const
Returns the representation of the described stream's direction.
void unselectAttributeCarrier(bool changeFlag=true)
unselect attribute carrier using GUIGlobalSelection
bool canParseVehicleClasses(const std::string &classes)
Checks whether the given string contains only known vehicle classes.
static void drawShapeDottedContourRectangle(const GUIVisualizationSettings &s, const int type, const Position ¢er, const double width, const double height, const double rotation=0, const double offsetX=0, const double offsetY=0)
draw a dotted contour around the given Position with certain width and height
transform lane to sidewalk
A road/street connecting two junctions (netedit-version)
GUIVisualizationDetailSettings detailSettings
detail settings
const std::vector< GNEDemandElement * > & getDemandElementParents() const
return vector of demand elements that have as Parent this edge (For example, Calibrators) ...
GNEEdge & myParentEdge
The Edge that to which this lane belongs.
double getLaneWidth() const
Returns the default width of lanes of this edge.
change default geometry endpoints
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
double selectionScale
the current selection scaling in NETEDIT (temporary)
void buildSelectionACPopupEntry(GUIGLObjectPopupMenu *ret, GNEAttributeCarrier *AC)
Builds an entry which allows to (de)select the object.
double length() const
Returns the length.
void updateConnectionIDs()
update IDs of incoming connections of this lane
std::string generateChildID(SumoXMLTag childTag)
gererate a new ID for an element child
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.
const std::string & getVehicleClassNames(SVCPermissions permissions, bool expand)
Returns the ids of the given classes, divided using a ' '.
void drawTLSLinkNo(const GUIVisualizationSettings &s) const
draw TLS Link Number
void drawChildConnections(const GUIVisualizationSettings &s, const GUIGlObjectType GLTypeParent) const
An Element which don't belongs to GNENet but has influency in the simulation.
const GNEAttributeCarrier * getDottedAC() const
get AttributeCarrier under cursor
The link is controlled by a tls which is off and blinks, has to brake.
static void drawCrossTies(const PositionVector &geom, const std::vector< double > &rots, const std::vector< double > &lengths, double length, double spacing, double halfWidth, bool drawForSelecting)
draw crossties for railroads or pedestrian crossings
const std::string & getTagStr() const
get tag assigned to this object in string format
std::vector< Position > myLaneRestrictedTexturePositions
Position of textures of restricted lanes.
const std::string getParameter(const std::string &key, const std::string &defaultValue="") const
Returns the value for a given key.
This is an uncontrolled, major link, may pass.
reset default geometry endpoints
void drawLinkNo(const GUIVisualizationSettings &s) const
draw link Number
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.
mode for connecting lanes
const std::map< std::string, std::string > & getParametersMap() const
Returns the inner key/value map.
GUIGlID getGlID() const
Returns the numerical id of the object.
std::vector< Connection > getConnectionsFromLane(int lane, NBEdge *to=nullptr, int toLane=-1) const
Returns connections from a given lane.
The link is a 180 degree turn (left-hand network)
void drawDirectionIndicators(double exaggeration, bool spreadSuperposed) const
direction indicators for lanes
static void drawTriangleAtEnd(const Position &p1, const Position &p2, double tLength, double tWidth)
Draws a triangle at the end of the given line.
const TagProperties & getTagProperty() const
get Tag Property assigned to this object
void calculateShapeRotationsAndLengths()
calculate shape rotations and lengths
NetworkEditMode networkEditMode
the current Network edit mode
Position getPositionInformation() const
Returns the cursor's x/y position within the network.
GUIVisualizationColorSettings colorSettings
color settings
Boundary getBoxBoundary() const
Returns a boundary enclosing this list of lines.
void drawStartEndShapePoints(const GUIVisualizationSettings &s) const
draw start and end shape points
a single trip definition (used by router)
RGBColor selectedEdgeColor
edge selection color
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)
double getLoadedLength() const
Returns the length was set explicitly or the computed length if it wasn't set.
bool drawForSelecting
whether drawing is performed for the purpose of selecting objects
const GNEViewNetHelper::EditModes & getEditModes() const
get edit modes
double getExaggeration(const GUIVisualizationSettings &s, const GUIGlObject *o, double factor=20) const
return the drawing size including exaggeration and constantSize values
static const double geometryPointsText
details for Geometry Points Texts
double getColorValue(const GUIVisualizationSettings &s, int activeScheme) const
return value for lane coloring according to the given scheme
bool spreadSuperposed
Whether to improve visualisation of superposed (rail) edges.
double nearest_offset_to_point2D(const Position &p, bool perpendicular=true) const
return the nearest offest to point 2D
void addGLObjectIntoGrid(GUIGlObject *o)
add GL Object into net
Position positionAtOffset(double pos, double lateralOffset=0) const
Returns the position at the given length.
void clearGeometry()
reset geometry
PositionVector customShape
A custom shape for this lane set by the user.
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.
vehicles ignoring classes
Boundary getCenteringBoundary() const
Returns the boundary to which the view shall be centered in order to show the object.
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
void setLaneWidth(int lane, double width)
set lane specific width (negative lane implies set for all lanes)
transform lane to greenVerge
Position getPositionInView() const
Returns position of hierarchical element in view.
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)
void clearParameter()
Clears the parameter map.
static RGBColor getColor()
gets the gl-color