Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
GNEMoveElementLaneDouble Class Reference

#include <GNEMoveElementLaneDouble.h>

Inheritance diagram for GNEMoveElementLaneDouble:
[legend]
Collaboration diagram for GNEMoveElementLaneDouble:
[legend]

Public Member Functions

void fixMovingProblem ()
 fix moving problem
 
double getEndFixedPositionOverLane (const bool adjustGeometryFactor) const
 get end offset position over lane
 
GNEMoveOperationgetMoveOperation ()
 get lane movable move operation for elements with
 
std::string getMovingProblem () const
 return a string with the current moving problem
 
double getStartFixedPositionOverLane (const bool adjustGeometryFactor) const
 get start offset position over lane
 
 GNEMoveElementLaneDouble (GNEAttributeCarrier *element, SumoXMLAttr startPosAttr, double &startPosValue, SumoXMLAttr endPosAttr, double &endPosValue, bool &friendlyPosition)
 Constructor.
 
bool isMoveElementValid () const
 check if current moving element is valid to be written into XML
 
void removeGeometryPoint (const Position clickedPosition, GNEUndoList *undoList) override
 remove geometry point in the clicked position
 
void writeMoveAttributes (OutputDevice &device, const bool writeLength) const
 write move attributes
 
 ~GNEMoveElementLaneDouble ()
 Destructor.
 
functions related with moving attributes
std::string getMovingAttribute (SumoXMLAttr key) const override
 get moving attribute
 
double getMovingAttributeDouble (SumoXMLAttr key) const override
 get moving attribute double
 
Position getMovingAttributePosition (SumoXMLAttr key) const override
 get moving attribute position
 
PositionVector getMovingAttributePositionVector (SumoXMLAttr key) const override
 get moving attribute positionVector
 
void setMovingAttribute (SumoXMLAttr key, const std::string &value, GNEUndoList *undoList) override
 set moving attribute (using undo-list)
 
bool isMovingAttributeValid (SumoXMLAttr key, const std::string &value) const override
 check if the given moving attribute is valid
 
void setMovingAttribute (SumoXMLAttr key, const std::string &value) override
 set moving attribute
 

Static Public Member Functions

static void commitMove (const GNEViewNet *viewNet, GNEMoveOperation *moveOperation, const GNEMoveOffset &offset, GNEUndoList *undoList)
 commit move element for the given offset
 
static void moveElement (const GNEViewNet *viewNet, GNEMoveOperation *moveOperation, const GNEMoveOffset &offset)
 move element the for given offset (note: offset can be X-Y-0, 0-0-Z or X-Y-Z)
 

Data Fields

double myMovingLateralOffset = 0
 move element lateral offset
 

Static Public Attributes

static const double defaultSize = 10
 default element size
 

Protected Member Functions

GNEMoveOperationgetEditShapeOperation (const GUIGlObject *obj, const PositionVector originalShape, const bool maintainShapeClosed)
 calculate move shape operation
 

Protected Attributes

GNEAttributeCarriermyMovedElement = nullptr
 pointer to element
 

Private Member Functions

void commitMoveShape (const GNEMoveResult &moveResult, GNEUndoList *undoList) override
 commit move shape
 
 GNEMoveElementLaneDouble (const GNEMoveElementLaneDouble &)=delete
 Invalidated copy constructor.
 
GNEMoveElementLaneDoubleoperator= (const GNEMoveElementLaneDouble &src)=delete
 Invalidated assignment operator.
 
void setMoveShape (const GNEMoveResult &moveResult) override
 set move shape
 
void setSize (const std::string &value, GNEUndoList *undoList)
 set size
 

Static Private Member Functions

static PositionVector calculateExtrapolatedVector (const GNEMoveOperation *moveOperation, const GNEMoveResult &moveResult)
 calculate width/height shape
 
static double calculateLaneOffset (const GNEViewNet *viewNet, const GNELane *lane, const double firstPosition, const double lastPosition, const GNEMoveOffset &offset)
 calculate lane offset (used in calculateLanePosition)
 
static void calculateLanePosition (double &starPos, const GNEViewNet *viewNet, const GNELane *lane, const double posOverLane, const GNEMoveOffset &offset)
 calculate lane position over one lane with only one position (accesss, E1, star/end positions, etc.)
 
static void calculateLanePositions (double &starPos, double &endPos, const GNEViewNet *viewNet, const GNELane *firstLane, const double firstPosOverLane, const GNELane *lastLane, const double lastPosOverLane, const bool firstLaneClicked, const GNEMoveOffset &offset)
 calculate lane position over two lane with two positions (E2 Multilanes)
 
static void calculateLanePositions (double &starPos, double &endPos, const GNEViewNet *viewNet, const GNELane *lane, const double firstPosOverLane, const double lastPosOverLane, const GNEMoveOffset &offset)
 calculate lane position over one lane with two positions (stoppingPlaces, E2 single lanes)
 
static void calculateNewLaneChange (const GNEViewNet *viewNet, const GNELane *originalLane, const GNELane *&newLane, double &laneOffset)
 calculate new lane change
 

Private Attributes

GNEMoveElementLaneSinglemyEndPos
 end position
 
ReferencePosition myReferencePosition = ReferencePosition::CENTER
 reference position
 
GNEMoveElementLaneSinglemyStartPos
 start position
 
bool myTemplateForceSize = false
 force size (only used in AttributeCarrier templates
 
double myTemplateSize = defaultSize
 size (only use in AttributeCarrier templates)
 

Detailed Description

Definition at line 37 of file GNEMoveElementLaneDouble.h.

Constructor & Destructor Documentation

◆ GNEMoveElementLaneDouble() [1/2]

GNEMoveElementLaneDouble::GNEMoveElementLaneDouble ( GNEAttributeCarrier element,
SumoXMLAttr  startPosAttr,
double &  startPosValue,
SumoXMLAttr  endPosAttr,
double &  endPosValue,
bool &  friendlyPosition 
)

Constructor.

Parameters
[in]elementmoved element
[in]startPosAttrStart position attribute
[in]startPosValueStart position value
[in]endPosAttrEnd position attribute
[in]endPosValueEnd position value
[in]friendlyPosenable or disable friendly position

Definition at line 44 of file GNEMoveElementLaneDouble.cpp.

◆ ~GNEMoveElementLaneDouble()

GNEMoveElementLaneDouble::~GNEMoveElementLaneDouble ( )

Destructor.

Definition at line 55 of file GNEMoveElementLaneDouble.cpp.

References myEndPos, and myStartPos.

◆ GNEMoveElementLaneDouble() [2/2]

GNEMoveElementLaneDouble::GNEMoveElementLaneDouble ( const GNEMoveElementLaneDouble )
privatedelete

Invalidated copy constructor.

Member Function Documentation

◆ calculateExtrapolatedVector()

PositionVector GNEMoveElement::calculateExtrapolatedVector ( const GNEMoveOperation moveOperation,
const GNEMoveResult moveResult 
)
staticprivateinherited

calculate width/height shape

Definition at line 419 of file GNEMoveElement.cpp.

References PositionVector::extrapolate2D(), GNEMoveOperation::firstGeometryPoint, PositionVector::length2D(), PositionVector::nearest_offset_to_point2D(), GNEMoveOperation::originalShape, PositionVector::reverse(), GNEMoveOperation::shapeToMove, and GNEMoveResult::shapeToUpdate.

Referenced by GNEMoveElement::commitMove(), and GNEMoveElement::moveElement().

Here is the caller graph for this function:

◆ calculateLaneOffset()

double GNEMoveElement::calculateLaneOffset ( const GNEViewNet viewNet,
const GNELane lane,
const double  firstPosition,
const double  lastPosition,
const GNEMoveOffset offset 
)
staticprivateinherited

calculate lane offset (used in calculateLanePosition)

Definition at line 279 of file GNEMoveElement.cpp.

References Position::add(), GNELane::getLaneShape(), PositionVector::length2D(), PositionVector::nearest_offset_to_point2D(), PositionVector::positionAtOffset2D(), GUISUMOAbstractView::snapToActiveGrid(), GNEMoveOffset::x, GNEMoveOffset::y, and GNEMoveOffset::z.

Referenced by GNEMoveElement::calculateLanePosition(), and GNEMoveElement::calculateLanePositions().

Here is the caller graph for this function:

◆ calculateLanePosition()

void GNEMoveElement::calculateLanePosition ( double &  starPos,
const GNEViewNet viewNet,
const GNELane lane,
const double  posOverLane,
const GNEMoveOffset offset 
)
staticprivateinherited

calculate lane position over one lane with only one position (accesss, E1, star/end positions, etc.)

Definition at line 322 of file GNEMoveElement.cpp.

References GNEMoveElement::calculateLaneOffset(), and GNELane::getLengthGeometryFactor().

Referenced by GNEMoveElement::calculateLanePositions(), GNEMoveElement::commitMove(), and GNEMoveElement::moveElement().

Here is the caller graph for this function:

◆ calculateLanePositions() [1/2]

void GNEMoveElement::calculateLanePositions ( double &  starPos,
double &  endPos,
const GNEViewNet viewNet,
const GNELane firstLane,
const double  firstPosOverLane,
const GNELane lastLane,
const double  lastPosOverLane,
const bool  firstLaneClicked,
const GNEMoveOffset offset 
)
staticprivateinherited

calculate lane position over two lane with two positions (E2 Multilanes)

Definition at line 343 of file GNEMoveElement.cpp.

References GNEMoveElement::calculateLanePosition(), GNELane::getLaneShape(), and PositionVector::length2D().

◆ calculateLanePositions() [2/2]

void GNEMoveElement::calculateLanePositions ( double &  starPos,
double &  endPos,
const GNEViewNet viewNet,
const GNELane lane,
const double  firstPosOverLane,
const double  lastPosOverLane,
const GNEMoveOffset offset 
)
staticprivateinherited

calculate lane position over one lane with two positions (stoppingPlaces, E2 single lanes)

Definition at line 332 of file GNEMoveElement.cpp.

References GNEMoveElement::calculateLaneOffset(), and GNELane::getLengthGeometryFactor().

Referenced by GNEMoveElement::commitMove(), and GNEMoveElement::moveElement().

Here is the caller graph for this function:

◆ calculateNewLaneChange()

void GNEMoveElement::calculateNewLaneChange ( const GNEViewNet viewNet,
const GNELane originalLane,
const GNELane *&  newLane,
double &  laneOffset 
)
staticprivateinherited

calculate new lane change

Definition at line 387 of file GNEMoveElement.cpp.

References Position::distanceSquaredTo2D(), Position::distanceTo2D(), GNEHierarchicalElement::getChildLanes(), GNELane::getIndex(), GNELane::getLaneShape(), GNELane::getParentEdge(), GUISUMOAbstractView::getPositionInformation(), PositionVector::nearest_offset_to_point2D(), and PositionVector::positionAtOffset2D().

Referenced by GNEMoveElement::commitMove(), and GNEMoveElement::moveElement().

Here is the caller graph for this function:

◆ commitMove()

void GNEMoveElement::commitMove ( const GNEViewNet viewNet,
GNEMoveOperation moveOperation,
const GNEMoveOffset offset,
GNEUndoList undoList 
)
staticinherited

commit move element for the given offset

Definition at line 180 of file GNEMoveElement.cpp.

References PositionVector::add(), GNEMoveOperation::allowChangeLane, GNEMoveElement::calculateExtrapolatedVector(), GNEMoveElement::calculateLanePosition(), GNEMoveElement::calculateLanePositions(), GNEMoveElement::calculateNewLaneChange(), GNEMoveOperation::clickedFirstLane, GNEMoveElement::commitMoveShape(), GNEMoveOperation::firstLane, GNEMoveResult::firstLaneOffset, GNEMoveOperation::firstPosition, GNEMoveOperation::geometryPointsToMove, GNEMoveResult::geometryPointsToMove, GNEMoveFrame::getCommonMoveOptions(), GNEMoveFrame::CommonMoveOptions::getMergeGeometryPoints(), GNEViewParent::getMoveFrame(), GNEViewNet::getViewParent(), GNEMoveOperation::HEIGHT, Position::INVALID, INVALID_DOUBLE, GNEMoveOperation::lastLane, GNEMoveOperation::lastPosition, GNEMoveOperation::LENGTH, GNEMoveOperation::moveElement, GNEMoveResult::newFirstLane, GNEMoveResult::newFirstPos, GNEMoveResult::newLastLane, GNEMoveResult::newLastPos, GNEMoveOperation::operationType, GNEMoveOperation::originalGeometryPoints, GNEMoveOperation::originalShape, PositionVector::removeDoublePoints(), GNEMoveElement::setMoveShape(), GNEMoveOperation::shapeToMove, GNEMoveResult::shapeToUpdate, GUISUMOAbstractView::snapToActiveGrid(), GNEMoveOperation::WIDTH, GNEMoveOffset::x, GNEMoveOffset::y, and GNEMoveOffset::z.

Referenced by GNEViewNetHelper::MoveMultipleElementModul::finishMoveSelection(), GNEViewNetHelper::MoveSingleElementModul::finishMoveSingleElement(), GNEViewNetHelper::MoveMultipleElementModul::moveSelection(), and GNEViewNetHelper::MoveSingleElementModul::moveSingleElement().

Here is the caller graph for this function:

◆ commitMoveShape()

void GNEMoveElementLaneDouble::commitMoveShape ( const GNEMoveResult moveResult,
GNEUndoList undoList 
)
overrideprivatevirtual

◆ fixMovingProblem()

◆ getEditShapeOperation()

GNEMoveOperation * GNEMoveElement::getEditShapeOperation ( const GUIGlObject obj,
const PositionVector  originalShape,
const bool  maintainShapeClosed 
)
protectedinherited

◆ getEndFixedPositionOverLane()

double GNEMoveElementLaneDouble::getEndFixedPositionOverLane ( const bool  adjustGeometryFactor) const

get end offset position over lane

Definition at line 422 of file GNEMoveElementLaneDouble.cpp.

References GNEMoveElementLaneSingle::getFixedPositionOverLane(), myEndPos, and myStartPos.

Referenced by getMovingAttributeDouble(), setSize(), GNEStoppingPlace::setStoppingPlaceGeometry(), and GNELaneAreaDetector::updateGeometry().

Here is the caller graph for this function:

◆ getMoveOperation()

◆ getMovingAttribute()

◆ getMovingAttributeDouble()

double GNEMoveElementLaneDouble::getMovingAttributeDouble ( SumoXMLAttr  key) const
overridevirtual

◆ getMovingAttributePosition()

Position GNEMoveElementLaneDouble::getMovingAttributePosition ( SumoXMLAttr  key) const
overridevirtual

get moving attribute position

Implements GNEMoveElement.

Definition at line 171 of file GNEMoveElementLaneDouble.cpp.

References GNEAttributeCarrier::getCommonAttributePosition(), and GNEMoveElement::myMovedElement.

Referenced by GNEOverheadWire::getAttributePosition(), and GNEStoppingPlace::getStoppingPlaceAttributePosition().

Here is the caller graph for this function:

◆ getMovingAttributePositionVector()

PositionVector GNEMoveElementLaneDouble::getMovingAttributePositionVector ( SumoXMLAttr  key) const
overridevirtual

get moving attribute positionVector

Implements GNEMoveElement.

Definition at line 177 of file GNEMoveElementLaneDouble.cpp.

References GNEAttributeCarrier::getCommonAttributePositionVector(), and GNEMoveElement::myMovedElement.

◆ getMovingProblem()

◆ getStartFixedPositionOverLane()

double GNEMoveElementLaneDouble::getStartFixedPositionOverLane ( const bool  adjustGeometryFactor) const

get start offset position over lane

Definition at line 410 of file GNEMoveElementLaneDouble.cpp.

References GNEMoveElementLaneSingle::getFixedPositionOverLane(), myEndPos, and myStartPos.

Referenced by getMovingAttributeDouble(), setMovingAttribute(), setSize(), GNEStoppingPlace::setStoppingPlaceGeometry(), and GNELaneAreaDetector::updateGeometry().

Here is the caller graph for this function:

◆ isMoveElementValid()

bool GNEMoveElementLaneDouble::isMoveElementValid ( ) const

◆ isMovingAttributeValid()

bool GNEMoveElementLaneDouble::isMovingAttributeValid ( SumoXMLAttr  key,
const std::string &  value 
) const
overridevirtual

◆ moveElement()

void GNEMoveElement::moveElement ( const GNEViewNet viewNet,
GNEMoveOperation moveOperation,
const GNEMoveOffset offset 
)
staticinherited

◆ operator=()

GNEMoveElementLaneDouble & GNEMoveElementLaneDouble::operator= ( const GNEMoveElementLaneDouble src)
privatedelete

Invalidated assignment operator.

◆ removeGeometryPoint()

void GNEMoveElementLaneDouble::removeGeometryPoint ( const Position  clickedPosition,
GNEUndoList undoList 
)
overridevirtual

remove geometry point in the clicked position

Implements GNEMoveElement.

Definition at line 298 of file GNEMoveElementLaneDouble.cpp.

◆ setMoveShape()

◆ setMovingAttribute() [1/2]

◆ setMovingAttribute() [2/2]

◆ setSize()

void GNEMoveElementLaneDouble::setSize ( const std::string &  value,
GNEUndoList undoList 
)
private

◆ writeMoveAttributes()

Field Documentation

◆ defaultSize

const double GNEMoveElementLaneDouble::defaultSize = 10
static

◆ myEndPos

◆ myMovedElement

GNEAttributeCarrier* GNEMoveElement::myMovedElement = nullptr
protectedinherited

pointer to element

Definition at line 96 of file GNEMoveElement.h.

Referenced by commitMoveShape(), GNEMoveElementLaneSingle::commitMoveShape(), GNEMoveElementShape::commitMoveShape(), GNEMoveElementView::commitMoveShape(), GNEMoveElementViewResizable::commitMoveShape(), fixMovingProblem(), GNEMoveElementLaneSingle::fixMovingProblem(), GNEMoveElementLaneSingle::getFixedPositionOverLane(), getMoveOperation(), GNEMoveElementLaneSingle::getMoveOperation(), GNEMoveElementShape::getMoveOperation(), GNEMoveElementViewResizable::getMoveOperation(), GNEMoveElement::getMovingAttribute(), GNEMoveElementConnection::getMovingAttribute(), GNEMoveElementCrossing::getMovingAttribute(), GNEMoveElementEdge::getMovingAttribute(), GNEMoveElementJunction::getMovingAttribute(), GNEMoveElementLane::getMovingAttribute(), getMovingAttribute(), GNEMoveElementLaneSingle::getMovingAttribute(), GNEMoveElementPlan::getMovingAttribute(), GNEMoveElementPlanParent::getMovingAttribute(), GNEMoveElementShape::getMovingAttribute(), GNEMoveElementVehicle::getMovingAttribute(), GNEMoveElementView::getMovingAttribute(), GNEMoveElement::getMovingAttributeDouble(), GNEMoveElementConnection::getMovingAttributeDouble(), GNEMoveElementCrossing::getMovingAttributeDouble(), GNEMoveElementEdge::getMovingAttributeDouble(), GNEMoveElementJunction::getMovingAttributeDouble(), GNEMoveElementLane::getMovingAttributeDouble(), getMovingAttributeDouble(), GNEMoveElementLaneSingle::getMovingAttributeDouble(), GNEMoveElementPlan::getMovingAttributeDouble(), GNEMoveElementPlanParent::getMovingAttributeDouble(), GNEMoveElementShape::getMovingAttributeDouble(), GNEMoveElementVehicle::getMovingAttributeDouble(), GNEMoveElementView::getMovingAttributeDouble(), GNEMoveElementConnection::getMovingAttributePosition(), GNEMoveElementCrossing::getMovingAttributePosition(), GNEMoveElementEdge::getMovingAttributePosition(), GNEMoveElementJunction::getMovingAttributePosition(), GNEMoveElementLane::getMovingAttributePosition(), getMovingAttributePosition(), GNEMoveElementLaneSingle::getMovingAttributePosition(), GNEMoveElementPlan::getMovingAttributePosition(), GNEMoveElementPlanParent::getMovingAttributePosition(), GNEMoveElementShape::getMovingAttributePosition(), GNEMoveElementVehicle::getMovingAttributePosition(), GNEMoveElementView::getMovingAttributePosition(), GNEMoveElementConnection::getMovingAttributePositionVector(), GNEMoveElementCrossing::getMovingAttributePositionVector(), GNEMoveElementEdge::getMovingAttributePositionVector(), GNEMoveElementJunction::getMovingAttributePositionVector(), GNEMoveElementLane::getMovingAttributePositionVector(), getMovingAttributePositionVector(), GNEMoveElementLaneSingle::getMovingAttributePositionVector(), GNEMoveElementPlan::getMovingAttributePositionVector(), GNEMoveElementPlanParent::getMovingAttributePositionVector(), GNEMoveElementShape::getMovingAttributePositionVector(), GNEMoveElementVehicle::getMovingAttributePositionVector(), GNEMoveElementView::getMovingAttributePositionVector(), getMovingProblem(), GNEMoveElementLaneSingle::getMovingProblem(), isMoveElementValid(), GNEMoveElementLaneSingle::isMoveElementValid(), GNEMoveElement::isMovingAttributeValid(), GNEMoveElementConnection::isMovingAttributeValid(), GNEMoveElementCrossing::isMovingAttributeValid(), GNEMoveElementEdge::isMovingAttributeValid(), GNEMoveElementJunction::isMovingAttributeValid(), GNEMoveElementLane::isMovingAttributeValid(), isMovingAttributeValid(), GNEMoveElementLaneSingle::isMovingAttributeValid(), GNEMoveElementPlan::isMovingAttributeValid(), GNEMoveElementPlanParent::isMovingAttributeValid(), GNEMoveElementShape::isMovingAttributeValid(), GNEMoveElementVehicle::isMovingAttributeValid(), GNEMoveElementView::isMovingAttributeValid(), GNEMoveElementShape::removeGeometryPoint(), setMoveShape(), GNEMoveElementLaneSingle::setMoveShape(), GNEMoveElementShape::setMoveShape(), GNEMoveElementView::setMoveShape(), GNEMoveElementConnection::setMovingAttribute(), GNEMoveElementCrossing::setMovingAttribute(), GNEMoveElementEdge::setMovingAttribute(), GNEMoveElementJunction::setMovingAttribute(), GNEMoveElementLane::setMovingAttribute(), setMovingAttribute(), GNEMoveElementLaneSingle::setMovingAttribute(), GNEMoveElementPlan::setMovingAttribute(), GNEMoveElementPlanParent::setMovingAttribute(), GNEMoveElementShape::setMovingAttribute(), GNEMoveElementVehicle::setMovingAttribute(), GNEMoveElementView::setMovingAttribute(), GNEMoveElement::setMovingAttribute(), GNEMoveElementConnection::setMovingAttribute(), GNEMoveElementCrossing::setMovingAttribute(), GNEMoveElementEdge::setMovingAttribute(), GNEMoveElementJunction::setMovingAttribute(), GNEMoveElementLane::setMovingAttribute(), setMovingAttribute(), GNEMoveElementLaneSingle::setMovingAttribute(), GNEMoveElementPlan::setMovingAttribute(), GNEMoveElementPlanParent::setMovingAttribute(), GNEMoveElementShape::setMovingAttribute(), GNEMoveElementVehicle::setMovingAttribute(), GNEMoveElementView::setMovingAttribute(), GNEMoveElement::setMovingAttribute(), setSize(), GNEMoveElementLaneSingle::writeMoveAttributes(), GNEMoveElementView::writeMoveAttributes(), and writeMoveAttributes().

◆ myMovingLateralOffset

◆ myReferencePosition

ReferencePosition GNEMoveElementLaneDouble::myReferencePosition = ReferencePosition::CENTER
private

reference position

Definition at line 124 of file GNEMoveElementLaneDouble.h.

Referenced by getMovingAttribute(), and setMovingAttribute().

◆ myStartPos

◆ myTemplateForceSize

bool GNEMoveElementLaneDouble::myTemplateForceSize = false
private

force size (only used in AttributeCarrier templates

Definition at line 121 of file GNEMoveElementLaneDouble.h.

Referenced by getMovingAttribute(), and setMovingAttribute().

◆ myTemplateSize

double GNEMoveElementLaneDouble::myTemplateSize = defaultSize
private

size (only use in AttributeCarrier templates)

Definition at line 118 of file GNEMoveElementLaneDouble.h.

Referenced by getMovingAttribute(), getMovingAttributeDouble(), and setMovingAttribute().


The documentation for this class was generated from the following files: