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

#include <GNEMoveElementShape.h>

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

Public Member Functions

GNEMoveOperationgetMoveOperation () override
 get move operation
 
 GNEMoveElementShape (GNEAttributeCarrier *element)
 constructor
 
 GNEMoveElementShape (GNEAttributeCarrier *element, PositionVector &shape, const bool alwaysClosed)
 constructor
 
 GNEMoveElementShape (GNEAttributeCarrier *element, PositionVector &shape, const Position &position, const bool alwaysClosed)
 constructor
 
void removeGeometryPoint (const Position clickedPosition, GNEUndoList *undoList) override
 remove geometry point in the clicked position
 
 ~GNEMoveElementShape ()
 
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 position vector
 
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

Position myCenterPosition
 center position
 
double myMovingLateralOffset = 0
 move element lateral offset
 

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
 
 GNEMoveElementShape (const GNEMoveElementShape &)=delete
 Invalidated copy constructor.
 
GNEMoveElementShapeoperator= (const GNEMoveElementShape &)=delete
 Invalidated assignment operator.
 
void setMoveShape (const GNEMoveResult &moveResult) override
 set move shape
 

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

const bool myAlwaysClosed = false
 check if shape must be always closed
 
PositionVectormyMovingShape
 reference to Shape
 

Static Private Attributes

static PositionVector EMPTY_SHAPE
 empty position vector
 

Detailed Description

Definition at line 29 of file GNEMoveElementShape.h.

Constructor & Destructor Documentation

◆ GNEMoveElementShape() [1/4]

GNEMoveElementShape::GNEMoveElementShape ( GNEAttributeCarrier element)

constructor

Definition at line 41 of file GNEMoveElementShape.cpp.

◆ GNEMoveElementShape() [2/4]

GNEMoveElementShape::GNEMoveElementShape ( GNEAttributeCarrier element,
PositionVector shape,
const bool  alwaysClosed 
)

constructor

Definition at line 47 of file GNEMoveElementShape.cpp.

◆ GNEMoveElementShape() [3/4]

GNEMoveElementShape::GNEMoveElementShape ( GNEAttributeCarrier element,
PositionVector shape,
const Position position,
const bool  alwaysClosed 
)

constructor

Definition at line 54 of file GNEMoveElementShape.cpp.

◆ ~GNEMoveElementShape()

GNEMoveElementShape::~GNEMoveElementShape ( )

Definition at line 62 of file GNEMoveElementShape.cpp.

◆ GNEMoveElementShape() [4/4]

GNEMoveElementShape::GNEMoveElementShape ( const GNEMoveElementShape )
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 420 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 280 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 323 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 344 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 333 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 388 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 181 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()

◆ getEditShapeOperation()

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

◆ getMoveOperation()

◆ getMovingAttribute()

std::string GNEMoveElementShape::getMovingAttribute ( SumoXMLAttr  key) const
overridevirtual

get moving attribute

Implements GNEMoveElement.

Definition at line 118 of file GNEMoveElementShape.cpp.

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

Referenced by GNETAZ::getAttribute().

Here is the caller graph for this function:

◆ getMovingAttributeDouble()

double GNEMoveElementShape::getMovingAttributeDouble ( SumoXMLAttr  key) const
overridevirtual

get moving attribute double

Implements GNEMoveElement.

Definition at line 124 of file GNEMoveElementShape.cpp.

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

Referenced by GNEPoly::getAttributeDouble(), and GNETAZ::getAttributeDouble().

Here is the caller graph for this function:

◆ getMovingAttributePosition()

Position GNEMoveElementShape::getMovingAttributePosition ( SumoXMLAttr  key) const
overridevirtual

get moving attribute position

Implements GNEMoveElement.

Definition at line 130 of file GNEMoveElementShape.cpp.

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

Referenced by GNEPoly::getAttributePosition(), and GNETAZ::getAttributePosition().

Here is the caller graph for this function:

◆ getMovingAttributePositionVector()

PositionVector GNEMoveElementShape::getMovingAttributePositionVector ( SumoXMLAttr  key) const
overridevirtual

get moving attribute position vector

Implements GNEMoveElement.

Definition at line 136 of file GNEMoveElementShape.cpp.

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

Referenced by GNETAZ::getAttributePositionVector().

Here is the caller graph for this function:

◆ isMovingAttributeValid()

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

check if the given moving attribute is valid

Implements GNEMoveElement.

Definition at line 148 of file GNEMoveElementShape.cpp.

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

Referenced by GNETAZ::isValid().

Here is the caller graph for this function:

◆ moveElement()

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

◆ operator=()

GNEMoveElementShape & GNEMoveElementShape::operator= ( const GNEMoveElementShape )
privatedelete

Invalidated assignment operator.

◆ removeGeometryPoint()

◆ setMoveShape()

◆ setMovingAttribute() [1/2]

void GNEMoveElementShape::setMovingAttribute ( SumoXMLAttr  key,
const std::string &  value 
)
overridevirtual

set moving attribute

Implements GNEMoveElement.

Definition at line 154 of file GNEMoveElementShape.cpp.

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

◆ setMovingAttribute() [2/2]

void GNEMoveElementShape::setMovingAttribute ( SumoXMLAttr  key,
const std::string &  value,
GNEUndoList undoList 
)
overridevirtual

set moving attribute (using undo-list)

Implements GNEMoveElement.

Definition at line 142 of file GNEMoveElementShape.cpp.

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

Referenced by GNETAZ::setAttribute(), and GNETAZ::setAttribute().

Here is the caller graph for this function:

Field Documentation

◆ EMPTY_SHAPE

PositionVector GNEMoveElementShape::EMPTY_SHAPE
staticprivate

empty position vector

Definition at line 88 of file GNEMoveElementShape.h.

◆ myAlwaysClosed

const bool GNEMoveElementShape::myAlwaysClosed = false
private

check if shape must be always closed

Definition at line 91 of file GNEMoveElementShape.h.

Referenced by getMoveOperation().

◆ myCenterPosition

◆ myMovedElement

GNEAttributeCarrier* GNEMoveElement::myMovedElement = nullptr
protectedinherited

pointer to element

Definition at line 96 of file GNEMoveElement.h.

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

◆ myMovingLateralOffset

◆ myMovingShape

PositionVector& GNEMoveElementShape::myMovingShape
private

reference to Shape

Definition at line 85 of file GNEMoveElementShape.h.

Referenced by commitMoveShape(), getMoveOperation(), removeGeometryPoint(), and setMoveShape().


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