66 myDrawingToggle(new int),
67 myLogicStatus(loaded ? FEATURE_LOADED : FEATURE_GUESSED),
68 myHasValidLogic(loaded),
69 myTesselation(nbn->getID(),
"",
RGBColor::MAGENTA, nbn->getShape(), false, true, 0) {
81 if (crossing->unreferenced()) {
91 walkingArea->decRef();
92 if (walkingArea->unreferenced()) {
144 if (inspectedElements.isInspectingSingleElement()) {
150 }
else if (modes.isCurrentSupermodeNetwork()) {
152 if (viewParent->getCreateEdgeFrame()->getJunctionSource()) {
153 return viewParent->getCreateEdgeFrame()->getJunctionSource() ==
this;
158 viewParent->getTLSEditorFrame()->getTLSJunction()->isJoiningJunctions()) {
159 for (
const auto&
id : viewParent->getTLSEditorFrame()->getTLSJunction()->getSelectedJunctionIDs()) {
165 }
else if (modes.isCurrentSupermodeDemand()) {
169 planCreator = viewParent->getPersonFrame()->getPlanCreator();
171 planCreator = viewParent->getPersonPlanFrame()->getPlanCreator();
173 planCreator = viewParent->getContainerFrame()->getPlanCreator();
175 planCreator = viewParent->getContainerPlanFrame()->getPlanCreator();
183 const auto& selectedJunctions = viewParent->getVehicleFrame()->getPathCreator()->getSelectedJunctions();
185 if ((selectedJunctions.size() > 0) && (selectedJunctions.front() ==
this)) {
202 if (inspectedElements.isInspectingSingleElement()) {
204 if (inspectedElements.getFirstAC()->getTagProperty()->vehicleJunctions() &&
208 }
else if (modes.isCurrentSupermodeNetwork()) {
210 if (viewParent->getCreateEdgeFrame()->getJunctionSource() &&
211 (viewParent->getCreateEdgeFrame()->getJunctionSource() !=
this)) {
217 if (movedJunction && (movedJunction !=
this)) {
237 }
else if (modes.isCurrentSupermodeDemand()) {
241 planCreator = viewParent->getPersonFrame()->getPlanCreator();
243 planCreator = viewParent->getPersonPlanFrame()->getPlanCreator();
245 planCreator = viewParent->getContainerFrame()->getPlanCreator();
247 planCreator = viewParent->getContainerPlanFrame()->getPlanCreator();
255 const auto& selectedJunctions = viewParent->getVehicleFrame()->getPathCreator()->getSelectedJunctions();
257 if ((selectedJunctions.size() > 1) && (selectedJunctions.back() ==
this)) {
286 if (viewObjectsSelector.getJunctionFront() !=
this) {
289 if (modes.isCurrentSupermodeNetwork()) {
291 return (viewObjectsSelector.getJunctionFront() ==
this);
293 }
else if (modes.isCurrentSupermodeDemand()) {
297 planSelector = viewParent->getPersonFrame()->getPlanSelector();
299 planSelector = viewParent->getPersonPlanFrame()->getPlanSelector();
301 planSelector = viewParent->getContainerFrame()->getPlanSelector();
303 planSelector = viewParent->getContainerPlanFrame()->getPlanSelector();
307 return (viewObjectsSelector.getAttributeCarrierFront() == viewObjectsSelector.getJunctionFront());
310 const auto& vehicleTemplate = viewParent->getVehicleFrame()->getVehicleTagSelector()->getCurrentTemplateAC();
312 if (vehicleTemplate && vehicleTemplate->getTagProperty()->vehicleJunctions()) {
313 return (viewObjectsSelector.getAttributeCarrierFront() == viewObjectsSelector.getJunctionFront());
363 if (editedNetworkElement) {
364 return editedNetworkElement ==
this;
395 if (shape.size() > 2) {
401 if ((index != -1) && shape[index].distanceSquaredTo2D(clickedPosition) < (snap_radius * snap_radius)) {
403 shape.erase(shape.begin() + index);
418 if (rebuildNBNodeCrossings) {
425 std::vector<GNECrossing*> retrievedCrossings;
430 retrievedCrossings.push_back(retrievedGNECrossing);
441 retrievedGNECrossing->
incRef();
448 if (crossing->isAttributeCarrierSelected()) {
449 crossing->unselectAttributeCarrier();
459 if (crossing->unreferenced()) {
484 FXMenuPane* TLSOperations =
new FXMenuPane(ret);
493 mcAddJoinedTLS->disable();
498 mcAddJoinedTLS->enable();
500 mcAddJoinedTLS->disable();
542 const std::string menuEntryInfo =
TLF(
"Convert to roundabout (using junction attribute radius %)",
toString(radius));
547 mcRoundabout->disable();
556 mcCustomShape->disable();
557 mcClearConnections->disable();
558 mcResetConnections->disable();
561 if (handlingSelection) {
562 mcResetCustomShape->setText(
TL(
"Reset junction shapes"));
566 mcClearConnections->disable();
570 mcResetCustomShape->disable();
576 std::string reason =
TL(
"wrong edit mode");
578 mcReplaceByGeometryPoint->setText(mcReplaceByGeometryPoint->getText() +
" (" + reason.c_str() +
")");
579 mcReplaceByGeometryPoint->disable();
582 if (numEndpoints == 1) {
583 mcSplitJunction->disable();
584 mcSplitJunctionAndReconnect->disable();
621 for (
const auto& connection : edge->getGNEConnections()) {
622 const auto boundary = connection->getCenteringBoundary();
623 if (boundary.isInitialised()) {
629 const auto boundary = crossing->getCenteringBoundary();
630 if (boundary.isInitialised()) {
635 const auto boundary = walkingArea->getCenteringBoundary();
636 if (boundary.isInitialised()) {
664 if (junctionExaggeration > 0) {
670 const bool drawBubble =
drawAsBubble(s, junctionShapeArea);
698 if (editedNetworkElement && (editedNetworkElement ==
this)) {
708 if (junctionShapeArea >= 4) {
746std::vector<GNEJunction*>
749 std::set<GNEJunction*> junctions;
751 junctions.insert(incomingEdge->getFromJunction());
754 junctions.insert(outgoingEdge->getToJunction());
756 return std::vector<GNEJunction*>(junctions.begin(), junctions.end());
817const std::vector<GNEEdge*>&
823const std::vector<GNEEdge*>&
829const std::vector<GNECrossing*>&
835const std::vector<GNEWalkingArea*>&
841std::vector<GNEConnection*>
843 std::vector<GNEConnection*> connections;
845 for (
const auto& connection : incomingEdge->getGNEConnections()) {
846 connections.push_back(connection);
889 assert(undoList != 0);
893 for (EdgeVector::iterator it = incoming.begin(); it != incoming.end(); it++) {
913 std::vector<NBEdge::Connection> connections = srcNBE->
getConnections();
915 for (std::vector<NBEdge::Connection>::reverse_iterator con_it = connections.rbegin(); con_it != connections.rend(); con_it++) {
916 if (lane >= 0 && (*con_it).fromLane != lane) {
919 bool hasTurn = con_it->toEdge == turnEdge;
928 std::vector<NBConnection> removeConnections;
930 removeConnections.push_back(
NBConnection(srcNBE, con.fromLane, con.toEdge, con.toLane));
940 std::vector<NBConnection> removeConnections;
943 std::vector<NBEdge::Connection> connections = srcNBE->getConnections();
944 for (std::vector<NBEdge::Connection>::reverse_iterator con_it = connections.rbegin(); con_it != connections.rend(); con_it++) {
945 if ((*con_it).toEdge == destNBE) {
946 if (lane >= 0 && (*con_it).toLane != lane) {
949 bool hasTurn = srcNBE->getTurnDestination() == destNBE;
956 removeConnections.push_back(
NBConnection(srcNBE, (*con_it).fromLane, destNBE, (*con_it).toLane));
968 if (connections.size() > 0) {
970 for (
const auto&
TLS : coypOfTls) {
973 if (tlDef !=
nullptr) {
974 std::string newID = tlDef->
getID();
981 undoList->
add(
new GNEChange_TLS(
this, replacementDef,
true,
false, newID),
true);
983 const std::vector<NBNode*> copyOfNodes = tlDef->
getNodes();
984 for (
const auto& node : copyOfNodes) {
987 undoList->
add(
new GNEChange_TLS(sharing, replacementDef,
true,
false, newID),
true);
1006 for (
const auto&
TLS : coypOfTls) {
1009 if (tlDef !=
nullptr) {
1010 std::string newID = tlDef->
getID();
1013 for (
int i = 0; i < (int)which->
getChildLanes().size(); ++i) {
1017 undoList->
add(
new GNEChange_TLS(
this, replacementDef,
true,
false, newID),
true);
1019 const std::vector<NBNode*> copyOfNodes = tlDef->
getNodes();
1020 for (
const auto& node : copyOfNodes) {
1023 undoList->
add(
new GNEChange_TLS(sharing, replacementDef,
true,
false, newID),
true);
1033 for (EdgeVector::iterator it = incoming.begin(); it != incoming.end(); it++) {
1046 for (
const auto&
TLS : coypOfTls) {
1048 if (tlDef !=
nullptr) {
1050 const std::vector<NBNode*> copyOfNodes = tlDef->
getNodes();
1055 for (
const auto& node : copyOfNodes) {
1057 if (sharing !=
this) {
1063 std::string newID = tlDef->
getID();
1068 replacementDef = repl;
1085 replacementDef = repl;
1096 undoList->
add(
new GNEChange_TLS(
this, replacementDef,
true,
false, newID),
true);
1098 for (
const auto& node : copyOfNodes) {
1100 if (sharing !=
this) {
1110 undoList->
add(
new GNEChange_TLS(sharing, replacementDef,
true,
false, newID),
true);
1122 for (
const auto& crossing : copyOfGNECrossings) {
1124 EdgeSet edgeSet(crossing->getCrossingEdges().begin(), crossing->getCrossingEdges().end());
1126 if (edgeSet.count(edge->
getNBEdge()) == 1) {
1128 if ((crossing->getCrossingEdges().size() == 1) && (crossing->getCrossingEdges().front() == edge->
getNBEdge())) {
1132 std::vector<std::string> edges = GNEAttributeCarrier::parse<std::vector<std::string>>(crossing->getAttribute(
SUMO_ATTR_EDGES));
1133 edges.erase(std::find(edges.begin(), edges.end(), edge->
getID()));
1152 if (crossing->getCrossingEdges() == NBNodeCrossing->
edges) {
1156 if (createIfNoExist) {
1165 return createdGNECrossing;
1177 if (walkingArea->getID() == NBNodeWalkingAreaID) {
1181 if (createIfNoExist) {
1190 return createdGNEWalkingArea;
1201 for (
const auto& j : i->getGNEConnections()) {
1202 j->markConnectionGeometryDeprecated();
1204 if (includingNeighbours) {
1205 i->getFromJunction()->markConnectionsDeprecated(
false);
1222 for (
const auto&
TLS : copyOfTls) {
1234 for (
const auto&
TLS : copyOfTls) {
1236 const std::vector<NBNode*> copyOfNodes =
TLS->getNodes();
1237 for (
const auto& node : copyOfNodes) {
1257 walkingArea->decRef();
1259 if (walkingArea->isAttributeCarrierSelected()) {
1260 walkingArea->unselectAttributeCarrier();
1268 if (walkingArea->unreferenced()) {
1285 retrievedGNEWalkingArea->
incRef();
1363 for (
const auto& j : i->getGNEConnections()) {
1364 if (j->getNBEdgeConnection().keepClear) {
1410 bool alreadyAsked =
false;
1412 Position newPosition = GNEAttributeCarrier::parse<Position>(value);
1418 b.
add(edge->getNBEdge()->getGeometry().back());
1421 b.
add(edge->getNBEdge()->getGeometry().front());
1429 if ((junctionToMerge ==
nullptr) && (junction !=
this) && (junction->getPositionInView().distanceTo2D(newPosition) < POSITION_EPS) &&
1431 junctionToMerge = junction;
1438 junctionToMerge = junction;
1442 if (junctionToMerge) {
1446 undoList->
begin(
this,
TL(
"change junction position"));
1456 const Position newEnd = edge->getNBEdge()->getGeometry().back() + delta;
1460 const Position newStart = edge->getNBEdge()->getGeometry().front() + delta;
1469 undoList->
begin(
this,
TL(
"change keepClear for whole junction"));
1471 for (
const auto& junction : incomingEdge->getGNEConnections()) {
1486 for (
const auto&
TLS : copyOfTls) {
1488 if (oldLoaded !=
nullptr) {
1500 for (
const auto& node : nodes) {
1514 for (
const auto& oldTLS : copyOfTls) {
1515 std::vector<NBNode*> copyOfNodes = oldTLS->getNodes();
1519 for (
const auto& node : copyOfNodes) {
1523 for (
const auto& node : copyOfNodes) {
1534 assert(copyOfTls.size() > 0);
1537 const bool currentIsSingle = currentTLS->
getNodes().size() == 1;
1538 const bool currentIsLoaded =
dynamic_cast<NBLoadedSUMOTLDef*
>(currentTLS) !=
nullptr;
1539 if (currentIsLoaded) {
1544 for (
const auto&
TLS : copyOfTls) {
1549 const std::map<std::string, NBTrafficLightDefinition*> programs = tlCont.
getPrograms(value);
1550 if (programs.size() > 0) {
1551 for (
const auto& TLSProgram : programs) {
1553 if (
dynamic_cast<NBOwnTLDef*
>(oldTLS) !=
nullptr) {
1561 newTLSJoined->
joinLogic(currentTLSCopy);
1568 std::vector<NBNode*> copyOfNodes = oldTLS->
getNodes();
1569 for (
const auto& node : copyOfNodes) {
1577 if (currentIsSingle && currentIsLoaded) {
1580 renamedLogic->
setID(value);
1582 renamedTLS->
setID(value);
1589 delete currentTLSCopy;
1608 if (value.empty()) {
1611 return canParse<Position>(value);
1615 return canParse<PositionVector>(value);
1617 if (value.empty() || (value ==
"default")) {
1620 return canParse<double>(value) && ((parse<double>(value) >= 0) || (parse<double>(value) == -1));
1629 return canParse<bool>(value);
1652 if (incomingEdge->getGNEConnections().size() > 0) {
1697 if (junctionShapeArea < 4) {
1704 if (editModes.isCurrentSupermodeDemand() &&
1712 if (inspectedElements.isInspectingSingleElement()) {
1730 if (junctionShapeArea >= 4) {
1734 if (!editModes.isCurrentSupermodeNetwork()) {
1744 const double exaggeration)
const {
1796 if (exaggeration > 1) {
1838 glTranslated(pos.
x(), pos.
y(), 2.2);
1840 const double halfWidth = 32 / s.
scale;
1841 const double halfHeight = 64 / s.
scale;
1877 crossing->drawGL(s);
1881 walkingArea->drawGL(s);
1885 internalLanes->drawGL(s);
1889 for (
const auto& connection : incomingEdge->getGNEConnections()) {
1890 connection->drawGL(s);
1895 demandElement->drawGL(s);
1899 demandElement->drawGL(s);
1911 const double exaggeration,
const bool drawBubble)
const {
1926 exaggeration,
true);
1970 i->clearGNEConnections();
1985 if (value.empty() || (value ==
"default")) {
1995 for (
const auto&
TLS : copyOfTls) {
2073 switch (activeScheme) {
2133 if (edge->getGNEConnections().size() > 0) {
2159 std::set<GNEJunction*> affectedJunctions;
2160 std::set<GNEEdge*> affectedEdges;
2164 affectedJunctions.insert(edge->getFromJunction());
2165 affectedJunctions.insert(edge->getToJunction());
2167 for (
const auto& junctionSourceEdge : edge->getFromJunction()->getChildEdges()) {
2168 affectedEdges.insert(junctionSourceEdge);
2171 for (
const auto& junctionDestinationEdge : edge->getToJunction()->getChildEdges()) {
2172 affectedEdges.insert(junctionDestinationEdge);
2176 for (
const auto& affectedJunction : affectedJunctions) {
2177 affectedJunction->clearWalkingAreas();
2180 for (
const auto& affectedEdge : affectedEdges) {
2182 if (updateEdgeBoundaries) {
2183 affectedEdge->updateCenteringBoundary(
true);
2186 affectedEdge->updateGeometry();
2241 tlCont.
insert(tlDef, forceInsert);
2249 if (tlDef->
getNodes().size() == 1) {
@ NETWORK_DELETE
mode for deleting network elements
@ NETWORK_MOVE
mode for moving network elements
@ NETWORK_CREATE_EDGE
mode for creating new edges
@ NETWORK_TLS
mode for editing tls
@ NETWORK_CROSSING
Mode for editing crossing.
@ NETWORK_SELECT
mode for selecting network elements
@ NETWORK_CONNECT
mode for connecting lanes
@ DEMAND_PERSONPLAN
Mode for editing person plan.
@ DEMAND_CONTAINER
Mode for editing container.
@ DEMAND_PERSON
Mode for editing person.
@ DEMAND_VEHICLE
Mode for editing vehicles.
@ DEMAND_CONTAINERPLAN
Mode for editing container plan.
@ MID_GNE_JUNCTION_ADDTLS
Add TLS into junction.
@ MID_GNE_JUNCTION_RESET_EDGE_ENDPOINTS
reset edge endpoints
@ MID_GNE_JUNCTION_CLEAR_CONNECTIONS
clear junction's connections
@ MID_GNE_JUNCTION_SELECT_ROUNDABOUT
select all roundabout nodes and edges of the current roundabout
@ MID_GNE_JUNCTION_RESET_SHAPE
reset junction shape
@ MID_GNE_JUNCTION_RESET_CONNECTIONS
reset junction's connections
@ MID_GNE_JUNCTION_SPLIT
turn junction into multiple junctions
@ MID_GNE_JUNCTION_REPLACE
turn junction into geometry node
@ MID_GNE_JUNCTION_CONVERT_ROUNDABOUT
convert junction to roundabout
@ MID_GNE_JUNCTION_SPLIT_RECONNECT
turn junction into multiple junctions and reconnect them heuristically
@ MID_GNE_JUNCTION_EDIT_SHAPE
edit junction shape
@ MID_GNE_JUNCTION_ADDJOINTLS
Add join TLS into junctions.
GUIViewObjectsHandler gViewObjectsHandler
std::set< NBEdge * > EdgeSet
container for unique edges
std::vector< NBEdge * > EdgeVector
container for (sorted) edges
@ SUMO_TAG_JUNCTION
begin/end of the description of a junction
@ SUMO_TAG_TRAFFIC_LIGHT
a traffic light
@ SUMO_TAG_EDGE
begin/end of the description of an edge
SumoXMLNodeType
Numbers representing special SUMO-XML-attribute values for representing node- (junction-) types used ...
@ TRAFFIC_LIGHT_RIGHT_ON_RED
@ TRAFFIC_LIGHT_NOJUNCTION
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
@ SUMO_ATTR_TLLINKINDEX2
link: the index of the opposite direction link of a pedestrian crossing
@ SUMO_ATTR_FROM_JUNCTION
@ SUMO_ATTR_RADIUS
The turning radius at an intersection in m.
@ SUMO_ATTR_TLLAYOUT
node: the layout of the traffic light program
@ SUMO_ATTR_EDGES
the edges of a route
@ SUMO_ATTR_FRINGE
Fringe type of node.
@ GNE_ATTR_MODIFICATION_STATUS
whether a feature has been loaded,guessed,modified or approved
@ SUMO_ATTR_SHAPE
edge: the shape in xml-definition
@ SUMO_ATTR_TLTYPE
node: the type of traffic light
@ GNE_ATTR_SHAPE_END
last coordinate of edge shape
@ SUMO_ATTR_TLID
link,node: the traffic light id responsible for this link
@ SUMO_ATTR_RIGHT_OF_WAY
How to compute right of way.
@ GNE_ATTR_SHAPE_START
first coordinate of edge shape
@ SUMO_ATTR_TLLINKINDEX
link: the index of the link within the traffic light
@ SUMO_ATTR_KEEP_CLEAR
Whether vehicles must keep the junction clear.
const unsigned char TLS[]
std::string joinToString(const std::vector< T > &v, const T_BETWEEN &between, std::streamsize accuracy=gPrecision)
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
A class that stores a 2D geometrical boundary.
Position getCenter() const
Returns the center of the boundary.
void add(double x, double y, double z=0)
Makes the boundary include the given coordinate.
Boundary & grow(double by)
extends the boundary by the given amount
std::string fromJunction
from junction
std::string toJunction
to junction
static void drawFilledPoly(const PositionVector &v, bool close)
Draws a filled polygon described by the list of points.
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
static void popMatrix()
pop matrix
static void drawBoundary(const GUIVisualizationSettings &s, const Boundary &b)
Draw a boundary (used for debugging)
static void drawFilledCircleDetailled(const GUIVisualizationSettings::Detail d, const double radius)
Draws a filled circle around (0,0) depending of level of detail.
static void pushMatrix()
push matrix
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, const int align=0, double width=-1)
static void drawTextSettings(const GUIVisualizationTextSettings &settings, const std::string &text, const Position &pos, const double scale, const double angle=0, const double layer=2048, const int align=0)
const std::string getID() const
get ID (all Attribute Carriers have one)
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
bool mySelected
boolean to check if this AC is selected (more quickly as checking GUIGlObjectStorage)
std::string getCommonAttribute(const Parameterised *parameterised, SumoXMLAttr key) const
static const std::string True
true value in string format (used for comparing boolean values in getAttribute(......
void setCommonAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)
const std::string & getTagStr() const
get tag assigned to this object in string format
static const std::string FEATURE_GUESSED
feature has been reguessed (may still be unchanged be we can't tell (yet)
bool drawUsingSelectColor() const
check if attribute carrier must be drawn using selecting color.
void drawInLayer(const double typeOrLayer, const double extraOffset=0) const
draw element in the given layer, or in front if corresponding flag is enabled
GNENet * myNet
pointer to net
bool inGrid() const
check if this AC was inserted in grid
bool isCommonValid(SumoXMLAttr key, const std::string &value) const
static const std::string FEATURE_MODIFIED
feature has been manually modified (implies approval)
static const std::string False
true value in string format(used for comparing boolean values in getAttribute(...))
const GNETagProperties * myTagProperty
reference to tagProperty associated with this attribute carrier
bool myPossibleCandidate
flag to mark this element as possible candidate
bool mySpecialCandidate
flag to mark this element as special candidate
bool myTargetCandidate
flag to mark this element as target candidate
bool myConflictedCandidate
flag to mark this element as conflicted candidate
bool mySourceCandidate
flag to mark this element as source candidate
static void changeAttribute(GNEAttributeCarrier *AC, SumoXMLAttr key, const std::string &value, GNEUndoList *undoList, const bool force=false)
change attribute
void clearContour() const
void clear contour
void drawDottedContourGeometryPoints(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const GNEAttributeCarrier *AC, const PositionVector &shape, const double radius, const double scale, const double lineWidth) const
draw dotted contour for geometry points
void calculateContourCircleShape(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const GUIGlObject *glObject, const Position &pos, double radius, const double layer, const double scale, const GUIGlObject *boundaryParent) const
calculate contour (circle elements)
void calculateContourClosedShape(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const GUIGlObject *glObject, const PositionVector &shape, const double layer, const double scale, const GUIGlObject *boundaryParent, const bool addToSelectedObjects=true) const
calculate contours
bool drawDottedContours(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const GNEAttributeCarrier *AC, const double lineWidth, const bool addOffset) const
draw dotted contours (basics, select, delete, inspect...)
void calculateContourAllGeometryPoints(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const GUIGlObject *glObject, const PositionVector &shape, const double layer, const double radius, const double scale, const bool calculatePosOverShape) const
calculate contour for all geometry points
GNEJunction * getCurrentJunction() const
get current junction
GNECrossingFrame::EdgesSelector * getEdgesSelector() const
get edge selector modul
This object is responsible for drawing a shape and for supplying a a popup menu. Messages are routete...
void updateCenteringBoundary(const bool updateGrid)
update centering boundary (implies change in RTREE)
void updateGeometry()
update pre-computed geometry information
struct for saving subordinated elements (Junction->Edge->Lane->(Additional | DemandElement)
ProtectElements * getProtectElements() const
get protect elements modul
A road/street connecting two junctions (netedit-version)
NBEdge * getNBEdge() const
returns the internal NBEdge
const GNEHierarchicalContainerChildren< GNEEdge * > & getChildEdges() const
get child edges
const GNEHierarchicalContainerChildren< GNELane * > & getChildLanes() const
get child lanes
const GNEHierarchicalContainerChildren< GNEDemandElement * > & getChildDemandElements() const
return child demand elements
This object is responsible for drawing a shape and for supplying a a popup menu. Messages are routete...
void removeTLSConnections(std::vector< NBConnection > &connections, GNEUndoList *undoList)
remove the given connections from all traffic light definitions of this junction
bool checkDrawRelatedContour() const
check if draw related contour (cyan)
void updateGLObject()
update GLObject (geometry, ID, etc.)
void markAsCreateEdgeSource()
marks as first junction in createEdge-mode
void addTrafficLight(NBTrafficLightDefinition *tlDef, bool forceInsert)
adds a traffic light
const std::vector< GNEEdge * > & getGNEIncomingEdges() const
Returns incoming GNEEdges.
void rebuildGNEWalkingAreas()
rebuilds WalkingAreas objects for this junction
void updateGeometryAfterNetbuild(bool rebuildNBNodeCrossings=false)
update pre-computed geometry information without modifying netbuild structures
bool myAmResponsible
whether we are responsible for deleting myNBNode
void removeGeometryPoint(const Position clickedPosition, GNEUndoList *undoList)
remove geometry point in the clicked position
const std::vector< GNECrossing * > & getGNECrossings() const
Returns GNECrossings.
friend class GNEChange_TLS
Declare friend class.
TesselatedPolygon myTesselation
An object that stores the shape and its tesselation.
const std::vector< GNEWalkingArea * > & getGNEWalkingAreas() const
Returns GNEWalkingAreas.
std::string getAttribute(SumoXMLAttr key) const
void setResponsible(bool newVal)
set responsibility for deleting internal structures
bool checkDrawDeleteContourSmall() const
check if draw delete contour small (pink/white)
void deleteGLObject()
delete element
bool myColorForMissingConnections
whether this junction probably should have some connections but doesn't
std::vector< const GNEInternalLane * > myInternalLanes
internal lanes related placed in this junction
GNEJunction(GNENet *net, NBNode *nbn, bool loaded=false)
Constructor.
void unMarkAsCreateEdgeSource()
removes mark as first junction in createEdge-mode
void moveJunctionGeometry(const Position &pos, const bool updateEdgeBoundaries)
reposition the node at pos without updating GRID and informs the edges
double getExaggeration(const GUIVisualizationSettings &s) const
return exaggeration associated with this GLObject
GNEContour myCircleContour
variable used for draw circle contours
void updateGeometry()
update pre-computed geometry information (including crossings)
bool isLogicValid()
whether this junction has a valid logic
void drawTLSIcon(const GUIVisualizationSettings &s) const
draw TLS icon
std::vector< GNEEdge * > myGNEOutgoingEdges
vector with the (child) outgoings GNEEdges vinculated with this junction
double getColorValue(const GUIVisualizationSettings &s, int activeScheme) const
determines color value
void commitMoveShape(const GNEMoveResult &moveResult, GNEUndoList *undoList)
commit move shape
void selectTLS(bool selected)
notify the junction of being selected in tls-mode. (used to control drawing)
void replaceIncomingConnections(GNEEdge *which, GNEEdge *by, GNEUndoList *undoList)
replace one edge by another in all tls connections
void removeOutgoingGNEEdge(GNEEdge *edge)
remove outgoing GNEEdge
void markAsModified(GNEUndoList *undoList)
prevent re-guessing connections at this junction
void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)
std::vector< GNECrossing * > myGNECrossings
the built crossing objects
bool checkDrawMoveContour() const
check if draw move contour (red)
void invalidateTLS(GNEUndoList *undoList, const NBConnection &deletedConnection=NBConnection::InvalidConnection, const NBConnection &addedConnection=NBConnection::InvalidConnection)
PositionVector getAttributePositionVector(SumoXMLAttr key) const
void clearWalkingAreas()
clear walking areas
void removeIncomingGNEEdge(GNEEdge *edge)
remove incoming GNEEdge
std::vector< GNEConnection * > getGNEConnections() const
Returns all GNEConnections vinculated with this junction.
bool checkDrawSelectContour() const
check if draw select contour (blue)
GNEWalkingArea * retrieveGNEWalkingArea(const std::string &NBNodeWalkingAreaID, bool createIfNoExist=true)
get GNEWalkingArea if exist, and if not create it if create is enabled
GNEMoveOperation * getMoveOperation()
get move operation
bool checkDrawFromContour() const
check if draw from contour (green)
bool checkDrawOverContour() const
check if draw over contour (orange)
GNECrossing * retrieveGNECrossing(NBNode::Crossing *NBNodeCrossing, bool createIfNoExist=true)
get GNECrossing if exist, and if not create it if create is enabled
std::vector< GNEEdge * > myGNEIncomingEdges
vector with the (child) incomings GNEEdges vinculated with this junction
Boundary myJunctionBoundary
edge boundary
void calculateJunctioncontour(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const double exaggeration, const bool drawBubble) const
calculate contour
void addInternalLane(const GNEInternalLane *internalLane)
add internal lane
const PositionVector & getJunctionShape() const
void setMoveShape(const GNEMoveResult &moveResult)
set move shape
void drawJunctionName(const GUIVisualizationSettings &s) const
draw junction name
void markConnectionsDeprecated(bool includingNeighbours)
mark connections as deprecated
bool checkDrawToContour() const
check if draw from contour (magenta)
const Parameterised::Map & getACParametersMap() const
get parameters map
void mirrorXLeftHand()
temporarily mirror coordinates in lefthand network to compute correct crossing geometries
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
Boundary getCenteringBoundary() const
Returns the boundary to which the view shall be centered in order to show the object.
Position getPositionInView() const
Returns position of hierarchical element in view.
void drawJunctionAsBubble(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const double exaggeration) const
draw junction as bubble
bool isAttributeComputed(SumoXMLAttr key) const
void removeInternalLane(const GNEInternalLane *internalLane)
remove internal lane
bool myAmTLSSelected
whether this junction is selected in tls-mode
void removeConnectionsFrom(GNEEdge *edge, GNEUndoList *undoList, bool updateTLS, int lane=-1)
remove all connections from the given edge
bool isValid(SumoXMLAttr key, const std::string &value)
void addIncomingGNEEdge(GNEEdge *edge)
add incoming GNEEdge
RGBColor setColor(const GUIVisualizationSettings &s, bool bubble) const
sets junction color depending on circumstances
bool myHasValidLogic
whether this junctions logic is valid
std::string myLogicStatus
modification status of the junction logic (all connections across this junction)
void updateCenteringBoundary(const bool updateGrid)
update centering boundary (implies change in RTREE)
const std::vector< GNEEdge * > & getGNEOutgoingEdges() const
Returns incoming GNEEdges.
void removeEdgeFromCrossings(GNEEdge *edge, GNEUndoList *undoList)
removes the given edge from all pedestrian crossings
void drawJunctionChildren(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d) const
draw junction childs
bool drawAsBubble(const GUIVisualizationSettings &s, const double junctionShapeArea) const
check if draw junction as bubble
NBNode * getNBNode() const
Return net build node.
void drawJunctionCenter(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d) const
draw junction center (only in move mode)
void drawElevation(const GUIVisualizationSettings &s) const
draw elevation
NBNode * myNBNode
A reference to the represented junction.
GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own popup-menu.
int * myDrawingToggle
drawing toggle (used to avoid double draws)
void checkMissingConnections()
compute whether this junction probably should have some connections but doesn't
std::vector< GNEJunction * > getJunctionNeighbours() const
return GNEJunction neighbours
void setJunctionType(const std::string &value, GNEUndoList *undoList)
set junction Type (using undo/redo)
bool checkDrawDeleteContour() const
check if draw delete contour (pink/white)
void drawJunctionAsShape(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const double exaggeration) const
draw junction as bubble
double myExaggeration
exaggeration used in tesselation
~GNEJunction()
Destructor.
void setLogicValid(bool valid, GNEUndoList *undoList, const std::string &status=FEATURE_GUESSED)
std::vector< GNEWalkingArea * > myGNEWalkingAreas
the built walkingArea objects
void removeConnectionsTo(GNEEdge *edge, GNEUndoList *undoList, bool updateTLS, int lane=-1)
remove all connections to the given edge
bool myAmCreateEdgeSource
whether this junction is the first junction for a newly creatededge
void buildTLSOperations(GUISUMOAbstractView &parent, GUIGLObjectPopupMenu *ret, const int numSelectedJunctions)
build TLS operations contextual menu
void addOutgoingGNEEdge(GNEEdge *edge)
add outgoing GNEEdge
void rebuildGNECrossings(bool rebuildNBNodeCrossings=true)
rebuilds crossing objects for this junction
bool isAttributeEnabled(SumoXMLAttr key) const
void removeTrafficLight(NBTrafficLightDefinition *tlDef)
removes a traffic light
GNEMoveOperation * calculateMoveShapeOperation(const GUIGlObject *obj, const PositionVector originalShape, const bool maintainShapeClosed)
calculate move shape operation
bool getMoveOnlyJunctionCenter() const
check if option "move only junction center" is enabled
NetworkMoveOptions * getNetworkMoveOptions() const
get network mode options
PositionVector shapeToUpdate
shape to update (edited in moveElement)
void insertWalkingArea(GNEWalkingArea *walkingArea)
insert walkingArea in container
const std::unordered_map< const GUIGlObject *, GNECrossing * > & getCrossings() const
get crossings
GNEJunction * retrieveJunction(const std::string &id, bool hardFail=true) const
get junction by id
void updateJunctionID(GNEJunction *junction, const std::string &newID)
update junction ID in container
void insertCrossing(GNECrossing *crossing)
insert crossing in container
void deleteWalkingArea(GNEWalkingArea *walkingArea)
delete walkingArea from container
int getNumberOfSelectedJunctions() const
get number of selected junctions
GNEEdge * retrieveEdge(const std::string &id, bool hardFail=true) const
get edge by id
const std::unordered_map< const GUIGlObject *, GNEWalkingArea * > & getWalkingAreas() const
get walkingAreas
void deleteCrossing(GNECrossing *crossing)
delete crossing from container
A NBNetBuilder extended by visualisation and editing capabilities.
void deleteCrossing(GNECrossing *crossing, GNEUndoList *undoList)
remove crossing
NBNetBuilder * getNetBuilder() const
get net builder
void addGLObjectIntoGrid(GNEAttributeCarrier *AC)
add GL Object into net
GNEPathManager * getDataPathManager()
get data path manager
void removeGLObjectFromGrid(GNEAttributeCarrier *AC)
add GL Object into net
NBTrafficLightLogicCont & getTLLogicCont()
returns the tllcont of the underlying netbuilder
void mergeJunctions(GNEJunction *moved, const GNEJunction *target, GNEUndoList *undoList)
merge the given junctions edges between the given junctions will be deleted
GNEPathManager * getDemandPathManager()
get demand path manager
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
GNEPathManager * getNetworkPathManager()
get network path manager
void requireRecompute()
inform the net about the need for recomputation
void addExplicitTurnaround(std::string id)
add edge id to the list of explicit turnarounds
void deleteJunction(GNEJunction *junction, GNEUndoList *undoList)
removes junction and all incident edges
GNEViewNet * getViewNet() const
get view net
bool checkDrawingBoundarySelection() const
GNEContour myNetworkElementContour
network element contour
bool myShapeEdited
flag to check if element shape is being edited
GUIGLObjectPopupMenu * getShapeEditedPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent, const PositionVector &shape)
get shape edited popup menu
bool isShapeEdited() const
check if shape is being edited
void invalidatePathCalculator()
invalidate pathCalculator
PathCalculator * getPathCalculator()
obtain instance of PathCalculator
void drawJunctionPathElements(const GUIVisualizationSettings &s, const GNEJunction *junction) const
draw junction path elements
const CommonXMLStructure::PlanParameters & getPlanParameteres() const
get plan parameters
bool markJunctions() const
check if mark junctions with dotted contours
void incRef(const std::string &debugMsg="")
Increase reference.
SumoXMLTag getTag() const
get Tag vinculated with this attribute Property
void end()
End undo command sub-group. If the sub-group is still empty, it will be deleted; otherwise,...
bool hasCommandGroup() const
Check if undoList has command group.
void begin(GUIIcon icon, const std::string &description)
Begin undo command sub-group with current supermode. This begins a new group of commands that are tre...
void add(GNEChange *command, bool doit=false, bool merge=true)
Add new command, executing it if desired. The new command will be merged with the previous command if...
void uninspectAC(GNEAttributeCarrier *AC)
uninspect AC
const std::vector< const GNEJunction * > & getMergingJunctions() const
get merging junctions
const GUIGlObject * getGUIGlObjectFront() const
get front GUIGLObject or a pointer to nullptr
GNEJunction * getJunctionFront() const
get front junction or a pointer to nullptr
const std::vector< GNEJunction * > & getJunctions() const
get vector with junctions
bool isCurrentlyMovingElements() const
check if an element is being moved
const GNEViewNetHelper::EditModes & getEditModes() const
get edit modes
const GNEViewNetHelper::EditNetworkElementShapes & getEditNetworkElementShapes() const
get Edit Shape module
void updateObjectsInPosition(const Position &pos)
update objects and boundaries in position
GNEViewNetHelper::InspectedElements & getInspectedElements()
get inspected elements
const GNEViewNetHelper::MoveSingleElementModul & getMoveSingleElementValues() const
get move single element values
bool askMergeJunctions(const GNEJunction *movedJunction, const GNEJunction *targetJunction, bool &alreadyAsked)
ask merge junctions
bool showJunctionAsBubbles() const
return true if junction must be showed as bubbles
const GNEViewNetHelper::NetworkViewOptions & getNetworkViewOptions() const
get network view options
int getDrawingToggle() const
get draw toggle (used to avoid drawing junctions twice)
GNEViewParent * getViewParent() const
get the net object
bool checkOverLockedElement(const GUIGlObject *GLObject, const bool isSelected) const
check if given element is locked (used for drawing select and delete contour)
GNEUndoList * getUndoList() const
get the undoList object
const GNEViewNetHelper::ViewObjectsSelector & getViewObjectsSelector() const
get objects under cursor
GNECrossingFrame * getCrossingFrame() const
get frame for NETWORK_CROSSING
GNEMoveFrame * getMoveFrame() const
get frame for move elements
GNEDeleteFrame * getDeleteFrame() const
get frame for delete elements
This object is responsible for drawing a shape and for supplying a a popup menu. Messages are routete...
void updateCenteringBoundary(const bool updateGrid)
update centering boundary (implies change in RTREE)
void updateGeometry()
update pre-computed geometry information
static FXMenuCommand * buildFXMenuCommand(FXComposite *p, const std::string &text, FXIcon *icon, FXObject *tgt, FXSelector sel, const bool disable=false)
build menu command
static void drawGeometryPoints(const GUIVisualizationSettings::Detail d, const PositionVector &shape, const RGBColor &color, const double radius, const double exaggeration, const bool editingElevation)
draw geometry points
static void drawGeometry(const GUIVisualizationSettings::Detail d, const GUIGeometry &geometry, const double width, double offset=0)
draw geometry
void updateGeometry(const PositionVector &shape)
update entire geometry
const std::string & getMicrosimID() const
Returns the id of the object as known to microsim.
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
void buildPopUpMenuCommonOptions(GUIGLObjectPopupMenu *ret, GUIMainWindow &app, GUISUMOAbstractView *parent, const SumoXMLTag tag, const bool selected, bool addSeparator=true)
void drawName(const Position &pos, const double scale, const GUIVisualizationTextSettings &settings, const double angle=0, bool forceShow=false) const
draw name of item
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
T getColor(const double value) const
const GUIVisualizationSettings & getVisualisationSettings() const
get visualization settings (read only)
GUIGLObjectPopupMenu * getPopup() const
ge the current popup-menu
static GUIGlID getTexture(GUITexture which)
returns a texture previously defined in the enum GUITexture
static void drawTexturedBox(int which, double size)
Draws a named texture as a box with the given size.
const Triangle & getSelectionTriangle() const
get selection triangle
bool selectObject(const GUIGlObject *GLObject, const double layer, const bool checkDuplicated, const bool fullBoundary, const GNESegment *segment)
bool addMergingJunctions(const GNEJunction *junction)
add to merging junctions (used for marking junctions to merge)
bool selectingUsingRectangle() const
return true if we're selecting using a triangle
Stores the information about how to visualize structures.
GUIVisualizationTextSettings junctionName
GUIVisualizationSizeSettings junctionSize
bool drawJunctionShape
whether the shape of the junction should be drawn
Detail getDetailLevel(const double exaggeration) const
return the detail level
GUIVisualizationCandidateColorSettings candidateColorSettings
candidate color settings
GUIVisualizationTextSettings junctionID
bool drawMovingGeometryPoint(const double exaggeration, const double radius) const
check if moving geometry point can be draw
GUIVisualizationColorSettings colorSettings
color settings
GUIVisualizationDottedContourSettings dottedContourSettings
dotted contour settings
double scale
information about a lane's width (temporary, used for a single view)
bool drawForViewObjectsHandler
whether drawing is performed for the purpose of selecting objects in view using ViewObjectsHandler
GUIColorer junctionColorer
The junction colorer.
GUIVisualizationNeteditSizeSettings neteditSizeSettings
netedit size settings
double angle
The current view rotation angle.
NBEdge * getFrom() const
returns the from-edge (start of the connection)
int getFromLane() const
returns the from-lane
int getTLIndex() const
returns the index within the controlling tls or InvalidTLIndex if this link is unontrolled
static const int InvalidTlIndex
int getToLane() const
returns the to-lane
NBEdge * getTo() const
returns the to-edge (end of the connection)
static const NBConnection InvalidConnection
void removeRoundabout(const NBNode *node)
remove roundabout that contains the given node
The representation of a single edge during network building.
const std::vector< Connection > & getConnections() const
Returns the connections.
const std::string & getID() const
bool isTurningDirectionAt(const NBEdge *const edge) const
Returns whether the given edge is the opposite direction to this edge.
NBEdge * getTurnDestination(bool possibleDestination=false) const
A loaded (complete) traffic light logic.
void setID(const std::string &newID)
resets the id
NBTrafficLightLogic * getLogic()
Returns the internal logic.
void removeConnection(const NBConnection &conn, bool reconstruct=true)
removes the given connection from the traffic light if recontruct=true, reconstructs the logic and in...
void joinLogic(NBTrafficLightDefinition *def)
join nodes and states from the given logic (append red state)
void addConnection(NBEdge *from, NBEdge *to, int fromLane, int toLane, int linkIndex, int linkIndex2, bool reconstruct=true)
Adds a connection and immediately informs the edges.
void guessMinMaxDuration()
heuristically add minDur and maxDur when switching from tlType fixed to actuated
void replaceRemoved(NBEdge *removed, int removedLane, NBEdge *by, int byLane, bool incoming)
Replaces a removed edge/lane.
bool haveNetworkCrossings()
notify about style of loaded network (Without Crossings)
void setHaveNetworkCrossings(bool value)
enable crossing in networks
NBEdgeCont & getEdgeCont()
A definition of a pedestrian crossing.
EdgeVector edges
The edges being crossed.
Represents a single node (junction) during network building.
RightOfWay getRightOfWay() const
Returns hint on how to compute right of way.
Position getCenter() const
Returns a position that is guaranteed to lie within the node shape.
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 reinit(const Position &position, SumoXMLNodeType type, bool updateEdgeGeometries=false)
Resets initial values.
static const double UNSPECIFIED_RADIUS
unspecified lane width
FringeType getFringeType() const
Returns fringe type.
void buildCrossingsAndWalkingAreas()
build crossings, and walkingareas. Also removes invalid loaded crossings if wished
SumoXMLNodeType getType() const
Returns the type of this node.
bool isTrafficLight() const
void setRightOfWay(RightOfWay rightOfWay)
set method for computing right-of-way
void setCustomShape(const PositionVector &shape)
set the junction shape
void invalidateIncomingConnections(bool reallowSetting=false)
invalidate incoming connections
const EdgeVector & getIncomingEdges() const
Returns this node's incoming edges (The edges which yield in this node)
void mirrorX()
mirror coordinates along the x-axis
std::vector< std::pair< Position, std::string > > getEndPoints() const
return list of unique endpoint coordinates of all edges at this node
const std::vector< std::unique_ptr< Crossing > > & getCrossingsIncludingInvalid() const
const EdgeVector & getOutgoingEdges() const
Returns this node's outgoing edges (The edges which start at this node)
bool hasCustomShape() const
return whether the shape was set by the user
std::vector< Crossing * > getCrossings() const
return this junctions pedestrian crossings
const std::string & getName() const
Returns intersection name.
void setRadius(double radius)
set the turning radius
void setName(const std::string &name)
set intersection name
const Position & getPosition() const
void removeTrafficLight(NBTrafficLightDefinition *tlDef)
Removes the given traffic light from this node.
const EdgeVector & getEdges() const
Returns all edges which participate in this node (Edges that start or end at this node)
const PositionVector & getShape() const
retrieve the junction shape
double getRadius() const
Returns the turning radius of this node.
bool isRoundabout() const
return whether this node is part of a roundabout
bool checkIsRemovableReporting(std::string &reason) const
check if node is removable and return reason if not
const std::vector< WalkingArea > & getWalkingAreas() const
return this junctions pedestrian walking areas
PositionVector myPoly
the (outer) shape of the junction
void setFringeType(FringeType fringeType)
set method for computing right-of-way
bool isTLControlled() const
Returns whether this node is controlled by any tls.
A traffic light logics which must be computed (only nodes/edges are given)
void setLayout(TrafficLightLayout layout)
sets the layout for the generated signal plan
The base class for traffic light logic definitions.
const std::vector< NBNode * > & getNodes() const
Returns the list of controlled nodes.
const std::string & getProgramID() const
Returns the ProgramID.
TrafficLightType getType() const
get the algorithm type (static etc..)
virtual void setProgramID(const std::string &programID)
Sets the programID.
virtual void addNode(NBNode *node)
Adds a node to the traffic light logic.
SUMOTime getOffset()
Returns the offset.
A container for traffic light definitions and built programs.
const std::map< std::string, NBTrafficLightDefinition * > & getPrograms(const std::string &id) const
Returns all programs for the given tl-id.
bool insert(NBTrafficLightDefinition *logic, bool forceInsert=false)
Adds a logic definition to the dictionary.
void extract(NBTrafficLightDefinition *definition)
Extracts a traffic light definition from myDefinitions but keeps it in myExtracted for eventual * del...
A SUMO-compliant built logic for a traffic light.
static void computeTurnDirectionsForNode(NBNode *node, bool warn)
Computes turnaround destinations for all incoming edges of the given nodes (if any)
virtual void setID(const std::string &newID)
resets the id
const std::string & getID() const
Returns the id.
double getFloat(const std::string &name) const
Returns the double-value of the named option (only for Option_Float)
static OptionsCont & getOptions()
Retrieves the options.
std::map< std::string, std::string > Map
parameters map
const Parameterised::Map & getParametersMap() const
Returns the inner key/value map.
A point in 2D or 3D with translation and scaling methods.
double distanceSquaredTo2D(const Position &p2) const
returns the square of the distance to another position (Only using x and y positions)
static const Position INVALID
used to indicate that a position is valid
double x() const
Returns the x-position.
double z() const
Returns the z-position.
double y() const
Returns the y-position.
PositionVector added(const Position &offset) const
void closePolygon()
ensures that the last position equals the first
int indexOfClosest(const Position &p, bool twoD=false) const
Boundary getBoxBoundary() const
Returns a boundary enclosing this list of lines.
void scaleRelative(double factor)
enlarges/shrinks the polygon by a factor based at the centroid
double area() const
Returns the area (0 for non-closed)
bool around(const Position &p, double offset=0) const
Returns the information whether the position vector describes a polygon lying around the given point.
RGBColor changedBrightness(int change, int toChange=3) const
Returns a new color with altered brightness.
const PositionVector & getShape() const
Returns the shape of the polygon.
virtual void setShape(const PositionVector &shape)
Sets the shape of the polygon.
PositionVector & getShapeRef()
Return the exterior shape of the polygon.
static StringBijection< SumoXMLNodeType > NodeTypes
node types
static StringBijection< TrafficLightType > TrafficLightTypes
traffic light types
static StringBijection< TrafficLightLayout > TrafficLightLayouts
traffic light layouts
static bool isValidNetID(const std::string &value)
whether the given string is a valid id for a network element
static StringBijection< RightOfWay > RightOfWayValues
righ of way algorithms
static StringBijection< FringeType > FringeTypeValues
fringe types
const std::string & getString(const T key) const
get string
bool hasString(const std::string &str) const
check if the given string exist
T get(const std::string &str) const
get key
std::vector< GLPrimitive > myTesselation
id of the display list for the cached tesselation
void drawTesselation(const PositionVector &shape) const
perform the tesselation / drawing
bool isBoundaryFullWithin(const Boundary &boundary) const
check if the given position is FULL within this triangle
NetworkEditMode networkEditMode
the current Network edit mode
bool isCurrentSupermodeData() const
@check if current supermode is Data
bool isCurrentSupermodeNetwork() const
@check if current supermode is Network
GNENetworkElement * getEditedNetworkElement() const
pointer to edited network element
static void drawLockIcon(const GUIVisualizationSettings::Detail d, const GNEAttributeCarrier *AC, GUIGlObjectType type, const Position position, const double exaggeration, const double size=0.5, const double offsetx=0, const double offsety=0)
draw lock icon
GNEMoveElement * getMovedElement() const
get moved element
bool editingElevation() const
check if we're editing elevation
static const RGBColor special
color for selected special candidate element (Usually selected using shift+click)
static const RGBColor conflict
color for selected conflict candidate element (Usually selected using ctrl+click)
static const RGBColor target
color for selected candidate target
static const RGBColor possible
color for possible candidate element
static const RGBColor source
color for selected candidate source
RGBColor selectionColor
basic selection color
static const RGBColor editShapeColor
color for edited shapes (Junctions, crossings and connections)
static const double segmentWidthSmall
width of small dotted contour segments
static const double segmentWidth
width of dotted contour segments
static const double junctionGeometryPointRadius
moving junction geometry point radius
static const double junctionBubbleRadius
junction bubble radius
static const double edgeGeometryPointRadius
moving edge geometry point radius
double getExaggeration(const GUIVisualizationSettings &s, const GUIGlObject *o, double factor=20) const
return the drawing size including exaggeration and constantSize values
bool show(const GUIGlObject *o) const
whether to show the text
double scaledSize(double scale, double constFactor=0.1) const
get scale size
A structure which describes a connection between edges or lanes.