 |
Eclipse SUMO - Simulation of Urban MObility
|
Go to the documentation of this file.
54 GNENetElement(from->getNet(),
"from" + from->getMicrosimID() +
"to" + to->getMicrosimID(),
59 mySpecialColor(nullptr),
60 myShapeDeprecated(true) {
101 if (nbCon.
shape.size() != 0) {
113 (
double) 5. * (
double)
getEdgeFrom()->getNBEdge()->getNumLanes(),
123 const double orthoLength = 0.5;
152 return Boundary(junctionParentPosition.
x() - 0.1, junctionParentPosition.
y() - 0.1,
153 junctionParentPosition.
x() + 0.1, junctionParentPosition.
x() + 0.1);
267 mcCustomShape->disable();
284 bool drawConnection =
true;
292 drawConnection =
false;
295 if (drawConnection) {
325 if (spreadSuperposed) {
329 glTranslated(0, 0, 0.1);
424 undoList->
p_begin(
"change tls linkIndex for connection");
430 if (tllogic !=
nullptr) {
434 std::vector<NBNode*> nodes = tlDef->getNodes();
435 for (
NBNode* node : nodes) {
437 undoList->add(
new GNEChange_TLS(junction, tlDef,
false),
true);
438 undoList->add(
new GNEChange_TLS(junction, newDef,
true),
true);
467 return canParse<bool>(value);
469 return canParse<bool>(value);
471 return canParse<double>(value) && (parse<double>(value) >= -1);
473 return canParse<bool>(value);
475 return canParse<double>(value) && (parse<double>(value) >= -1);
479 && canParse<int>(value)
480 && parse<int>(value) >= 0) {
487 return canParse<double>(value) && (parse<double>(value) >= -1);
490 return canParse<PositionVector>(value);
497 return canParse<bool>(value);
511 result += i.first +
"=" + i.second +
"|";
514 if (!result.empty()) {
521 std::vector<std::pair<std::string, std::string> >
523 std::vector<std::pair<std::string, std::string> > result;
526 result.push_back(std::make_pair(i.first, i.second));
537 std::vector<std::string> parsedValues;
540 parsedValues.push_back(stValues.
next());
543 for (
auto i : parsedValues) {
544 std::vector<std::string> parsedParameters;
547 parsedParameters.push_back(stParam.
next());
574 nbCon.
contPos = parse<double>(value);
580 nbCon.
speed = parse<double>(value);
591 if (parse<bool>(value)) {
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
std::string tlID
The id of the traffic light that controls this connection.
std::string getGenericParametersStr() const
return generic parameters in string format
bool isValid(SumoXMLAttr key, const std::string &value)
Position getPositionInView() const
Returns position of hierarchical element in view.
const RGBColor * mySpecialColor
optional special color
NBEdge * toEdge
The edge the connections yields in.
void unselectAttributeCarrier(bool changeFlag=true)
unselect attribute carrier using GUIGlobalSelection
void setGenericParametersStr(const std::string &value)
set generic parameters in string format
static RGBColor getColor()
gets the gl-color
void updateGeometry()
update pre-computed geometry information
LinkState getLinkState(const NBEdge *incoming, NBEdge *outgoing, int fromLane, int toLane, bool mayDefinitelyPass, const std::string &tlID) const
get link state
bool haveVia
check if Connection have a Via
const std::string getID() const
function to support debugging
virtual int getMaxValidIndex()
Returns the maximum index controlled by this traffic light.
The link is controlled by a tls which is off, not blinking, may pass.
void p_end()
End undo command sub-group. If the sub-group is still empty, it will be deleted; otherwise,...
bool uncontrolled
check if Connection is uncontrolled
bool drawBoundaries
enable or disable draw boundaries
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.
bool hasNext()
returns the information whether further substrings exist
whether a given shape is user-defined
double contPos
custom position for internal junction on this connection
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.
LinkState getLinkState() const
get LinkState
bool isBidiRail(bool ignoreSpread=false) const
whether this edge is part of a bidirectional railway
static bool isGenericParametersValid(const std::string &value)
check if given string can be parsed to a map/list of generic parameters
GNELane * myFromLane
incoming lane of this connection
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
static OptionsCont & getOptions()
Retrieves the options.
std::string next()
returns the next substring when it exists. Otherwise the behaviour is undefined
void extrapolate(const double val, const bool onlyFirst=false, const bool onlyLast=false)
extrapolate position vector
foe visibility distance of a link
double length() const
Returns the length.
std::string generateChildID(SumoXMLTag childTag)
gererate a new ID for an element child
NBTrafficLightLogic * getLogic()
Returns the internal logic.
mode for creating new edges
void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)
int tlLinkIndex
The index of this connection within the controlling traffic light.
bool drawUsingSelectColor() const
check if attribute carrier must be drawn using selecting color.
RGBColor selectedConnectionColor
connection selection color
GNEEdge * getEdgeTo() const
get the name of the edge the vehicles may reach when leaving "from"
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own popup-menu.
Boundary getBoxBoundary() const
Returns a boundary enclosing this list of lines.
GNELane * getLaneFrom() const
@briefthe get lane of the incoming lane
The abstract direction of a link.
SumoXMLTag
Numbers representing SUMO-XML - element names.
bool drawAsRailway(const GUIVisualizationSettings &s) const
whether to draw this lane as a railway
int fromLane
The lane the connections starts at.
PositionVector shape
The shape of the netElement element.
static void drawBoundary(const Boundary &b)
Draw a boundary (used for debugging)
int getIndex() const
returns the index of the lane
double speed
custom speed for connection
A road/street connecting two junctions (netedit-version)
friend class GNEChange_Attribute
declare friend class
void p_add(GNEChange_Attribute *cmd)
special method, avoid empty changes, always execute
int toLane
The lane the connections yields in.
std::vector< double > shapeRotations
The rotations of the single shape parts.
LinkState
The right-of-way state of a link between two lanes used when constructing a NBTrafficLightLogic,...
virtual void setMicrosimID(const std::string &newID)
Changes the microsimID of the object.
void setSpecialColor(const RGBColor *Color2)
void addConnection(NBEdge *from, NBEdge *to, int fromLane, int toLane, int linkIndex, bool reconstruct=true)
Adds a connection and immediately informs the edges.
NetElementGeometry myGeometry
netElement geometry
void updateID()
update internal ID of Connection
NBNode * getToNode() const
Returns the destination node of the edge.
PositionVector viaShape
shape of via
GUIVisualizationDetailSettings detailSettings
detail settings
bool mayDefinitelyPass
Information about being definitely free to drive (on-ramps)
Whether vehicles must keep the junction clear.
GNELane * getLaneTo() const
@briefthe get lane of the outgoing lane
void buildNameCopyPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds entries which allow to copy the name / typed name into the clipboard.
GNEConnection(GNELane *from, GNELane *to)
GNEEdge * getEdgeFrom() const
get the name of the edge the vehicles leave
NBEdge * getNBEdge() const
returns the internal NBEdge
int getToLaneIndex() const
@briefthe get lane index of the outgoing lane
void buildSelectionACPopupEntry(GUIGLObjectPopupMenu *ret, GNEAttributeCarrier *AC)
Builds an entry which allows to (de)select the object.
void calculateShapeRotationsAndLengths()
calculate shape rotations and lengths
int getFromLaneIndex() const
@briefthe get lane index of the incoming lane
NBEdge::Connection & getNBEdgeConnection() const
get Edge::Connection
bool myShapeDeprecated
flag to indicate that connection's shape has to be updated
const GNEViewNetHelper::NetworkViewOptions & getNetworkViewOptions() const
get network view options
Position positionAtOffset(double pos, double lateralOffset=0) const
Returns the position at the given length.
PositionVector shape
shape of Connection
GUIGlID getGlID() const
Returns the numerical id of the object.
const GNEAttributeCarrier * getDottedAC() const
get AttributeCarrier under cursor
A class that stores a 2D geometrical boundary.
GNEEdge & getParentEdge()
Returns underlying parent edge.
Boundary getBoundary() const
Returns the street's geometry.
int getNumLanes() const
Returns the number of lanes.
static RGBColor colorForLinksState(FXuint state)
return the color for each linkstate
double scale
information about a lane's width (temporary, used for a single view)
Network mode (Edges, junctions, etc..)
GNEJunction * retrieveJunction(const std::string &id, bool failHard=true)
get junction by id
Supermode currentSupermode
the current supermode
GNELane * myToLane
outgoing lane of this connection
A point in 2D or 3D with translation and scaling methods.
LinkState myLinkState
Linkstate.
mode for connecting lanes
double x() const
Returns the x-position.
~GNEConnection()
Destructor.
static bool isValidGenericParameterKey(const std::string &value)
whether the given string is a valid key for a generic parameter
double selectionScale
the current selection scaling in NETEDIT (temporary)
void append(const PositionVector &v, double sameThreshold=2.0)
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
static void drawLine(const Position &beg, double rot, double visLength)
Draws a thin line.
bool showConnections() const
check if select show connections checkbox is enabled
Connection & getConnectionRef(int fromLane, const NBEdge *to, int toLane)
Returns reference to the specified connection This method goes through "myConnections" and returns th...
GNEJunction * getGNEJunctionDestiny() const
returns the destination-junction
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
void clearGeometry()
reset geometry
NetworkEditMode
@brie enum for network edit modes
static bool isValidGenericParameterValue(const std::string &value)
whether the given string is a valid value for a generic parameter
const std::vector< NBEdge::Lane > & getLanes() const
Returns the lane definitions.
GNEViewNet * getViewNet() const
get view net
void buildPopupHeader(GUIGLObjectPopupMenu *ret, GUIMainWindow &app, bool addSeparator=true)
Builds the header.
PositionVector getOrthogonal(const Position &p, double extend, bool before, double length=1.0) const
return orthogonal through p (extending this vector if necessary)
GUIVisualizationColorSettings colorSettings
color settings
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
NBConnection getNBConnection() const
get NBConnection
const PositionVector & getShape() const
retrieve the junction shape
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
double y() const
Returns the y-position.
PositionVector myInternalJunctionMarker
waiting position for internal junction
link: the index of the link within the traffic light
std::vector< std::pair< std::string, std::string > > getGenericParameters() const
return generic parameters as vector of pairs format
GNENet * getNet() const
get Net in which this element is placed
Demanding mode (Routes, Vehicles etc..)
const std::set< NBTrafficLightDefinition * > & getControllingTLS() const
Returns the traffic lights that were assigned to this node (The set of tls that control this node)
bool keepClear
whether the junction must be kept clear when using this connection
std::string getAttribute(SumoXMLAttr key) const
void buildShowParamsPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to open the parameter window.
connectio between two lanes
void buildCenterPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to center to the object.
void buildPositionCopyEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to copy the cursor position if geo projection is used,...
PositionVector customShape
custom shape for connection
void setParameter(const std::string &key, const std::string &value)
Sets a parameter.
GNENet * myNet
the net to inform about updates
void updateLinkState()
recompute cached myLinkState
void clearParameter()
Clears the parameter map.
GUIVisualizationSizeSettings addSize
void markConnectionGeometryDeprecated()
check that connection's Geometry has to be updated
const GNEViewNetHelper::EditModes & getEditModes() const
get edit modes
bool spreadSuperposed
Whether to improve visualisation of superposed (rail) edges.
Boundary & grow(double by)
extends the boundary by the given amount
bool drawDetail(const double detail, const double exaggeration) const
check if details can be drawn for the given GUIVisualizationDetailSettings and current scale and exxa...
void selectAttributeCarrier(bool changeFlag=true)
select attribute carrier using GUIGlobalSelection
A SUMO-compliant built logic for a traffic light.
const std::string & getTagStr() const
get tag assigned to this object in string format
Represents a single node (junction) during network building.
static const double connectionsDemandMode
draw connections in demand mode
Stores the information about how to visualize structures.
A structure which describes a connection between edges or lanes.
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...
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
double visibility
custom foe visiblity for connection
double area() const
Returns the area (0 for non-closed)
virtual const std::string & getMicrosimID() const
Returns the id of the object as known to microsim.
Boundary getCenteringBoundary() const
Returns the boundary to which the view shall be centered in order to show the object.
NetworkEditMode networkEditMode
the current Network edit mode
Position getPositionInView() const
Returns position of hierarchical element in view.
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
const PositionVector & getShape() const
get Position vector calculated in updateGeometry()
double getExaggeration(const GUIVisualizationSettings &s, const GUIGlObject *o, double factor=20) const
return the drawing size including exaggeration and constantSize values
void move2side(double amount, double maxExtension=100)
move position vector to side using certain ammount
The base class for traffic light logic definitions.
std::vector< double > shapeLengths
The lengths of the single shape parts.
bool drawForSelecting
whether drawing is performed for the purpose of selecting objects
const std::string & getID() const
A loaded (complete) traffic light logic.