54 GNENetElement(from->getNet(),
"from" + from->getMicrosimID() +
"to" + to->getMicrosimID(),
59 mySpecialColor(nullptr),
60 myShapeDeprecated(true) {
99 if (nbCon.
shape.size() != 0) {
111 (
double) 5. * (
double)
getEdgeFrom()->getNBEdge()->getNumLanes(),
122 const double orthoLength = 0.5;
132 int segments = (int)
myShape.size() - 1;
136 for (
int i = 0; i < segments; ++i) {
160 return Boundary(junctionParentPosition.
x() - 0.1, junctionParentPosition.
y() - 0.1,
161 junctionParentPosition.
x() + 0.1, junctionParentPosition.
x() + 0.1);
275 mcCustomShape->disable();
316 glTranslated(0, 0, 0.1);
405 undoList->
p_begin(
"change tls linkIndex for connection");
411 if (tllogic !=
nullptr) {
415 std::vector<NBNode*> nodes = tlDef->getNodes();
416 for (
NBNode* node : nodes) {
418 undoList->add(
new GNEChange_TLS(junction, tlDef,
false),
true);
419 undoList->add(
new GNEChange_TLS(junction, newDef,
true),
true);
444 return canParse<bool>(value);
446 return canParse<bool>(value);
448 return canParse<double>(value);
450 return canParse<bool>(value);
452 return canParse<double>(value) && (parse<double>(value) > 0);
456 && canParse<int>(value)
457 && parse<int>(value) >= 0) {
464 return canParse<double>(value) && (parse<double>(value) > 0);
467 return canParse<PositionVector>(value);
470 return canParse<bool>(value);
484 result += i.first +
"=" + i.second +
"|";
487 if (!result.empty()) {
494 std::vector<std::pair<std::string, std::string> >
496 std::vector<std::pair<std::string, std::string> > result;
499 result.push_back(std::make_pair(i.first, i.second));
510 std::vector<std::string> parsedValues;
513 parsedValues.push_back(stValues.
next());
516 for (
auto i : parsedValues) {
517 std::vector<std::string> parsedParameters;
520 parsedParameters.push_back(stParam.
next());
547 nbCon.
contPos = parse<double>(value);
553 nbCon.
speed = parse<double>(value);
556 const bool init = (
myShape.size() == 0);
569 if (parse<bool>(value)) {
Position getPositionInView() const
Return current position.
std::vector< double > myShapeLengths
The lengths of the shape parts.
A structure which describes a connection between edges or lanes.
LinkState getLinkState(const NBEdge *incoming, NBEdge *outgoing, int fromLane, int toLane, bool mayDefinitelyPass, const std::string &tlID) const
get link state
int toLane
The lane the connections yields in.
double scale
information about a lane's width (temporary, used for a single view)
bool isValid(SumoXMLAttr key, const std::string &value)
Whether vehicles must keep the junction clear.
whether a given shape is user-defined
GNENet * myNet
the net to inform about updates
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.
void append(const PositionVector &v, double sameThreshold=2.0)
PositionVector getOrthogonal(const Position &p, double extend, bool before, double length=1.0) const
return orthogonal through p (extending this vector if necessary)
void buildNameCopyPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds entries which allow to copy the name / typed name into the clipboard.
NBEdge * toEdge
The edge the connections yields in.
RGBColor selectedConnectionColor
GNENet * getNet() const
get Net in which this element is placed
A loaded (complete) traffic light logic.
LinkState getLinkState() const
get LinkState
double distanceTo2D(const Position &p2) const
returns the euclidean distance in the x-y-plane
A SUMO-compliant built logic for a traffic light.
Stores the information about how to visualize structures.
connectio between two lanes
double y() const
Returns the y-position.
foe visibility distance of a link
static RGBColor colorForLinksState(FXuint state)
return the color for each linkstate
double x() const
Returns the x-position.
The base class for traffic light logic definitions.
void buildCenterPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to center to the object.
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
void p_begin(const std::string &description)
Begin undo command sub-group. This begins a new group of commands that are treated as a single comman...
const std::vector< NBEdge::Lane > & getLanes() const
Returns the lane definitions.
bool mayDefinitelyPass
Information about being definitely free to drive (on-ramps)
GNELane * myFromLane
incoming lane of this connection
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
double visibility
custom foe visiblity for connection
const std::string & getID() const
Returns the id.
void buildShowParamsPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to open the parameter window.
The link is controlled by a tls which is off, not blinking, may pass.
void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)
static bool isValidGenericParameterKey(const std::string &value)
whether the given string is a valid key for a generic parameter
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.
A class that stores a 2D geometrical boundary.
void setSpecialColor(const RGBColor *Color2)
PositionVector customShape
custom shape for connection
GNEEdge * getEdgeTo() const
get the name of the edge the vehicles may reach when leaving "from"
static OptionsCont & getOptions()
Retrieves the options.
void mouseOverObject(const GUIVisualizationSettings &s) const
method for check if mouse is over objects
GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own popup-menu.
GNELane * getLaneFrom() const
get lane of the incoming lane
double area() const
Returns the area (0 for non-closed)
PositionVector shape
shape of Connection
bool keepClear
whether the junction must be kept clear when using this connection
void p_add(GNEChange_Attribute *cmd)
special method, avoid empty changes, always execute
NBEdge::Connection & getNBEdgeConnection() const
get Edge::Connection
bool myShapeDeprecated
flag to indicate that connection's shape has to be updated
int getFromLaneIndex() const
get lane index of the incoming lane
int getToLaneIndex() const
get lane index of the outgoing lane
PositionVector myShape
the shape of the connection
int getIndex() const
returns the index of the lane
static bool isValidGenericParameterValue(const std::string &value)
whether the given string is a valid value for a generic parameter
double speed
custom speed for connection
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
void updateID()
update internal ID of Connection
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.
std::vector< double > myShapeRotations
LinkState myLinkState
Linkstate.
std::string tlID
The id of the traffic light that controls this connection.
int getNumLanes() const
Returns the number of lanes.
int fromLane
The lane the connections starts at.
GNEConnection(GNELane *from, GNELane *to)
void p_end()
End undo command sub-group. If the sub-group is still empty, it will be deleted; otherwise, the sub-group will be added as a new command into parent group. A matching begin() must have been called previously.
A point in 2D or 3D with translation and scaling methods.
GNEJunction * retrieveJunction(const std::string &id, bool failHard=true)
get junction by id
GNELane * getLaneTo() const
get lane of the outgoing lane
GNEEdge * getEdgeFrom() const
get the name of the edge the vehicles leave
static bool isGenericParametersValid(const std::string &value)
check if given string can be parsed to a map/list of generic parameters
void removeGLObjectFromGrid(GUIGlObject *o)
add GL Object into net
void addConnection(NBEdge *from, NBEdge *to, int fromLane, int toLane, int linkIndex, bool reconstruct=true)
Adds a connection and immediately informs the edges.
friend class GNEChange_Attribute
declare friend class
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.
Boundary getBoundary() const
Returns the street's geometry.
GNELane * myToLane
outgoing lane of this connection
NBTrafficLightLogic * getLogic()
Returns the internal logic.
void setParameter(const std::string &key, const std::string &value)
Sets a parameter.
~GNEConnection()
Destructor.
Boundary & grow(double by)
extends the boundary by the given amount
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
static void drawLine(const Position &beg, double rot, double visLength)
Draws a thin line.
void selectAttributeCarrier(bool changeFlag=true)
select attribute carrier using GUIGlobalSelection
int tlLinkIndex
The index of this connection within the controlling traffic light.
void unselectAttributeCarrier(bool changeFlag=true)
unselect attribute carrier using GUIGlobalSelection
EditMode getCurrentEditMode() const
get the current edit mode
const PositionVector & getShape() const
retrieve the junction shape
std::vector< std::pair< std::string, std::string > > getGenericParameters() const
return generic parameters as vector of pairs format
A road/street connecting two junctions (netedit-version)
void updateGeometry(bool updateGrid)
update pre-computed geometry information
void extrapolate(const double val, const bool onlyFirst=false, const bool onlyLast=false)
extrapolate position vector
void buildSelectionACPopupEntry(GUIGLObjectPopupMenu *ret, GNEAttributeCarrier *AC)
Builds an entry which allows to (de)select the object.
double length() const
Returns the length.
PositionVector viaShape
shape of via
NBConnection getNBConnection() const
get NBConnection
virtual void setMicrosimID(const std::string &newID)
Changes the microsimID of the object.
static void drawShapeDottedContour(const int type, const PositionVector &shape, const double width)
draw a dotted contour around the given Non closed shape with certain width
const GNEAttributeCarrier * getDottedAC() const
get AttributeCarrier under cursor
const std::set< NBTrafficLightDefinition * > & getControllingTLS() const
Returns the traffic lights that were assigned to this node (The set of tls that control this node) ...
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
bool showConnections()
show connections over junctions
const std::string & getTagStr() const
get tag assigned to this object in string format
PositionVector myInternalJunctionMarker
waiting position for internal junction
double contPos
custom position for internal junction on this connection
bool uncontrolled
check if Connection is uncontrolled
void markConnectionGeometryDeprecated()
check that connection's Geometry has to be updated
std::string getAttribute(SumoXMLAttr key) const
Represents a single node (junction) during network building.
GUIGlID getGlID() const
Returns the numerical id of the object.
void updateLinkState()
recompute cached myLinkState
link: the index of the link within the traffic light
Boundary getBoxBoundary() const
Returns a boundary enclosing this list of lines.
virtual int getMaxValidIndex()
Returns the maximum index controlled by this traffic light.
Boundary getCenteringBoundary() const
Returns the boundary to which the view shall be centered in order to show the object.
mode for connecting lanes
mode for creating new edges
NBEdge * getNBEdge()
returns the internal NBEdge
const PositionVector & getShape() const
get Position vector calculated in updateGeometry(bool updateGrid)
bool haveVia
check if Connection have a Via
bool drawForSelecting
whether drawing is performed for the purpose of selecting objects
PositionVector computeSmoothShape(const PositionVector &begShape, const PositionVector &endShape, int numPoints, bool isTurnaround, double extrapolateBeg, double extrapolateEnd, NBNode *recordError=0, int shapeFlag=0) const
Compute a smooth curve between the given geometries.
void addGLObjectIntoGrid(GUIGlObject *o)
add GL Object into net
Position positionAtOffset(double pos, double lateralOffset=0) const
Returns the position at the given length.
Connection & getConnectionRef(int fromLane, const NBEdge *to, int toLane)
Returns reference to the specified connection This method goes through "myConnections" and returns th...
NBNode * getToNode() const
Returns the destination node of the edge.
std::string getGenericParametersStr() const
return generic parameters in string format
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
void buildPopupHeader(GUIGLObjectPopupMenu *ret, GUIMainWindow &app, bool addSeparator=true)
Builds the header.
const RGBColor * mySpecialColor
optional special color
GNEViewNet * getViewNet() const
get view net
void clearParameter()
Clears the parameter map.
void setGenericParametersStr(const std::string &value)
set generic parameters in string format
static RGBColor getColor()
gets the gl-color