65 myTransformToVehicle(nullptr),
66 myTransformToVehicleWithEmbeddedRoute(nullptr),
67 myTransformToRouteFlow(nullptr),
68 myTransformToRouteFlowWithEmbeddedRoute(nullptr),
69 myTransformToTrip(nullptr),
70 myTransformToFlow(nullptr) {
79 new FXMenuSeparator(
this);
91 FXMenuPane* transformOperation =
new FXMenuPane(
this);
93 new FXMenuCascade(
this,
"transform to",
nullptr, transformOperation);
124 if (obj == myTransformToVehicle) {
126 }
else if (obj == myTransformToVehicleWithEmbeddedRoute) {
128 }
else if (obj == myTransformToRouteFlow) {
130 }
else if (obj == myTransformToRouteFlowWithEmbeddedRoute) {
132 }
else if (obj == myTransformToTrip) {
134 }
else if (obj == myTransformToFlow) {
146 mySelectedVehicles(selectedVehicle),
148 myTransformToVehicle(nullptr),
149 myTransformToVehicleWithEmbeddedRoute(nullptr),
150 myTransformToRouteFlow(nullptr),
151 myTransformToRouteFlowWithEmbeddedRoute(nullptr),
152 myTransformToTrip(nullptr),
153 myTransformToFlow(nullptr),
154 myTransformAllVehiclesToVehicle(nullptr),
155 myTransformAllVehiclesToVehicleWithEmbeddedRoute(nullptr),
156 myTransformAllVehiclesToRouteFlow(nullptr),
157 myTransformAllVehiclesToRouteFlowWithEmbeddedRoute(nullptr),
158 myTransformAllVehiclesToTrip(nullptr),
159 myTransformAllVehiclesToFlow(nullptr) {
168 new FXMenuSeparator(
this);
180 FXMenuPane* transformOperation =
new FXMenuPane(
this);
182 new FXMenuCascade(
this,
"transform to",
nullptr, transformOperation);
197 new FXMenuSeparator(transformOperation);
215 for (
const auto& vehicle : mySelectedVehicles) {
216 if ((obj == myTransformToVehicle) &&
217 (vehicle->getTagProperty().getTag() == myVehicleTag)) {
219 }
else if ((obj == myTransformToVehicleWithEmbeddedRoute) &&
220 (vehicle->getTagProperty().getTag() == myVehicleTag)) {
222 }
else if ((obj == myTransformToRouteFlow) &&
223 (vehicle->getTagProperty().getTag() == myVehicleTag)) {
225 }
else if ((obj == myTransformToRouteFlowWithEmbeddedRoute) &&
226 (vehicle->getTagProperty().getTag() == myVehicleTag)) {
228 }
else if ((obj == myTransformToTrip) &&
229 (vehicle->getTagProperty().getTag() == myVehicleTag)) {
231 }
else if ((obj == myTransformToFlow) &&
232 (vehicle->getTagProperty().getTag() == myVehicleTag)) {
234 }
else if (obj == myTransformAllVehiclesToVehicle) {
236 }
else if (obj == myTransformAllVehiclesToVehicleWithEmbeddedRoute) {
238 }
else if (obj == myTransformAllVehiclesToRouteFlow) {
240 }
else if (obj == myTransformAllVehiclesToRouteFlowWithEmbeddedRoute) {
242 }
else if (obj == myTransformAllVehiclesToTrip) {
244 }
else if (obj == myTransformAllVehiclesToFlow) {
257 {}, {}, {}, {}, {}, {}, {}, {}),
269 {}, {}, {}, {}, {}, {}, {vehicleType, route}, {}),
274 vtypeid = vehicleType->getID();
280 {}, {}, {}, {}, {}, {}, {vehicleType, route}, {}),
283 id = vehicleParameters.
id;
285 vtypeid = vehicleType->getID();
291 {}, {}, {}, {}, {}, {}, {vehicleType}, {}),
294 id = vehicleParameters.
id;
298 vtypeid = vehicleType->getID();
303 const std::vector<GNEEdge*>& via) :
305 {}, {fromEdge, toEdge}, {}, {}, {}, {}, {vehicleType}, {}),
315 {}, {fromEdge, toEdge}, {}, {}, {}, {}, {vehicleType}, {}),
324 fromJunction, toJunction
325 }, {}, {}, {}, {}, {}, {vehicleType}, {}),
332 fromJunction, toJunction
333 }, {}, {}, {}, {}, {}, {vehicleType}, {}),
371 departStr.reserve(20 - departStr.size());
373 for (
int i = (
int)departStr.size(); i < 20; i++) {
374 departStr.insert(departStr.begin(),
'0');
405 if (
via.size() > 0) {
443 for (
const auto& stop : sortedStops) {
444 stop->writeDemandElement(device);
448 route->writeDemandElement(device);
478 std::vector<GNEDemandElement*> embeddedRouteStops;
480 if (routeChild->getTagProperty().isStop()) {
481 embeddedRouteStops.push_back(routeChild);
485 if (sortedStops.size() != embeddedRouteStops.size()) {
507 return (
"There is no valid path between edges '" +
getParentEdges().at((
int)i - 1)->getID() +
"' and '" +
getParentEdges().at(i)->getID() +
"'");
516 for (
int i = 1; i < (int)routeEdges.size(); i++) {
518 return (
"There is no valid path between route edges '" + routeEdges.at((
int)i - 1)->getID() +
"' and '" + routeEdges.at(i)->getID() +
"'");
525 std::vector<GNEDemandElement*> embeddedRouteStops;
527 if (routeChild->getTagProperty().isStop()) {
528 embeddedRouteStops.push_back(routeChild);
532 if (sortedStops.size() != embeddedRouteStops.size()) {
533 return toString(embeddedRouteStops.size() - sortedStops.size()) +
" stops are outside of embedded route (downstream)";
538 for (
int i = 1; i < (int)routeEdges.size(); i++) {
540 return (
"There is no valid path between embebbed route edges '" + routeEdges.at((
int)i - 1)->getID() +
"' and '" + routeEdges.at(i)->getID() +
"'");
575 const double rot = ((double)atan2((posB.
x() - posA.
x()), (posA.
y() - posB.
y())) * (double) -180.0 / (
double)
M_PI);
584 double posOverLane = 0;
593 demandElement->computePathElement();
595 demandElement->updateGeometry();
613 std::vector<GNEVehicle*> selectedVehicles;
614 selectedVehicles.reserve(selectedDemandElements.size());
615 for (
const auto& selectedDemandElement : selectedDemandElements) {
616 if (selectedDemandElement->getTagProperty().isVehicle()) {
617 selectedVehicles.push_back(
dynamic_cast<GNEVehicle*
>(selectedDemandElement));
651 vehicleBoundary.
grow(20);
652 return vehicleBoundary;
673 const double vehicleSizeSquared = (width * width) * (length * length) * (exaggeration * exaggeration);
691 glTranslated(vehiclePosition.
x(), vehiclePosition.
y(), 0);
692 glRotated(vehicleRotation, 0, 0, -1);
694 glTranslated(0, (-1) * length * exaggeration, 0);
705 glTranslated(vehiclePosition.
x(), vehiclePosition.
y(), 0);
706 glRotated(vehicleRotation, 0, 0, -1);
708 glTranslated(0, (-1) * length * exaggeration, 0);
711 double upscaleLength = exaggeration;
712 if ((exaggeration > 1) && (length > 5)) {
714 upscaleLength =
MAX2(1.0, upscaleLength * (5 + sqrt(length - 5)) / length);
716 glScaled(exaggeration, upscaleLength, 1);
733 glColor3d(0., 1., 0.);
736 glVertex2d(0., minGap);
737 glVertex2d(-.5, minGap);
738 glVertex2d(.5, minGap);
742 glTranslated(0,
MIN2(length / 2,
double(5)), -
getType());
743 glScaled(1 / exaggeration, 1 / upscaleLength, 1);
744 glRotated(vehicleRotation, 0, 0, -1);
756 drawStackLabel(vehiclePosition, vehicleRotation, width, length, exaggeration);
760 drawFlowLabel(vehiclePosition, vehicleRotation, width, length, exaggeration);
792 std::vector<GNELane*> laneStops;
797 laneStops.push_back(demandElement->getParentLanes().front());
799 laneStops.push_back(demandElement->getParentAdditionals().front()->getParentLanes().front());
803 std::vector<GNELane*> lanes;
808 if (firstLane && lastLane) {
812 if (laneStops.size() > 0) {
814 for (
const auto& laneStop : laneStops) {
815 lanes.push_back(laneStop);
858 geometryDepartPos, geometryEndPos,
862 geometryDepartPos, -1,
878 glTranslated(0, 0,
getType() + offsetFront);
919 glTranslated(geometryEndPosition.
x(), geometryEndPosition.
y(), 0);
970 glTranslated(0, 0,
getType() + offsetFront);
988 width, 1,
false,
false, 0.1);
993 width, 1,
false,
false, 0.1);
1040 if ((departLaneIndex >= 0) && (departLaneIndex < (
int)firstEdge->
getLanes().size())) {
1041 return firstEdge->
getLanes().at(departLaneIndex);
1088 if ((arrivalLaneIndex >= 0) && (arrivalLaneIndex < (
int)lastEdge->
getLanes().size())) {
1089 return lastEdge->
getLanes().at(arrivalLaneIndex);
1280 return laneShape.front();
1282 return laneShape.back();
1287 return laneShape.front();
1296 return laneShape.front();
1298 return laneShape.back();
1303 return laneShape.back();
1382 return canParse<RGBColor>(value);
1384 int dummyDepartLane;
1388 if (error.empty()) {
1399 double dummyDepartPos;
1403 return error.empty();
1406 double dummyDepartSpeed;
1410 if (error.empty()) {
1421 int dummyArrivalLane;
1425 return error.empty();
1428 double dummyArrivalPos;
1432 return error.empty();
1435 double dummyArrivalSpeed;
1439 return error.empty();
1444 return canParse<int>(value) && parse<int>(value) >= 0;
1446 return canParse<int>(value) && parse<int>(value) >= 0;
1450 double dummyDepartPosLat;
1454 return error.empty();
1457 double dummyArrivalPosLat;
1461 return error.empty();
1469 return error.empty();
1483 if (value.empty()) {
1485 }
else if (canParse<int>(value)) {
1487 const int index = parse<int>(value);
1503 if (value.empty()) {
1506 return canParse<std::vector<GNEEdge*> >(
myNet, value,
false);
1514 if (canParse<double>(value)) {
1515 return (parse<double>(value) >= 0);
1520 if (value.empty()) {
1522 }
else if (canParse<double>(value)) {
1523 return (parse<double>(value) >= 0);
1528 if (value.empty()) {
1530 }
else if (canParse<double>(value)) {
1531 return (parse<double>(value) > 0);
1536 if (value.empty()) {
1538 }
else if (canParse<double>(value)) {
1539 return (parse<double>(value) > 0);
1544 if (value.empty()) {
1546 }
else if (canParse<double>(value)) {
1547 return (parse<double>(value) >= 0);
1552 if (canParse<int>(value)) {
1553 return (parse<int>(value) >= 0);
1559 return canParse<bool>(value);
1629 for (
const auto& i :
via) {
1641 const std::map<std::string, std::string>&
1718 double hue = 180. + atan2(center.
x() - p.
x(), center.
y() - p.
y()) * 180. /
M_PI;
1727 double hue = 180. + atan2(center.
x() - p.
x(), center.
y() - p.
y()) * 180. /
M_PI;
1736 double hue = 180. + atan2(pb.
x() - pe.
x(), pb.
y() - pe.
y()) * 180. /
M_PI;
1744 std::hash<const GNEVehicle*> ptr_hash;
1745 const double hue = (double)(ptr_hash(
this) % 360);
1746 const double sat = ((ptr_hash(
this) / 360) % 67) / 100.0 + 0.33;
1766 bool updateSpreadStackGeometry =
false;
1775 childDemandElement->setMicrosimID(
getID());
1779 if (
getID().size() > 0) {
1787 color = parse<RGBColor>(value);
1820 if (
getID().size() > 0) {
1822 updateSpreadStackGeometry =
true;
1860 if (
getID().size() > 0) {
1862 updateSpreadStackGeometry =
true;
1957 updateSpreadStackGeometry =
true;
1965 updateSpreadStackGeometry =
true;
1973 updateSpreadStackGeometry =
true;
1977 if (!value.empty()) {
1979 via = parse< std::vector<std::string> >(value);
1992 updateSpreadStackGeometry =
true;
1997 if (value.empty()) {
2003 if (
getID().size() > 0) {
2005 updateSpreadStackGeometry =
true;
2011 if (value.empty()) {
2016 if (
getID().size() > 0) {
2019 updateSpreadStackGeometry =
true;
2029 updateSpreadStackGeometry =
true;
2037 updateSpreadStackGeometry =
true;
2062 if (parse<bool>(value)) {
2075 if (updateSpreadStackGeometry) {
2157 const double contourWidth = (0.05 * exaggeration);
2162 glRotated(vehicleRotation, 0, 0, -1);
2163 glTranslated((width * exaggeration * 0.5) + (0.35 * exaggeration), 0, 0);
2168 glTranslated(0, 0, 0.1);
2181 const double contourWidth = (0.05 * exaggeration);
2186 glRotated(vehicleRotation, 0, 0, -1);
2187 glTranslated(-1 * ((width * 0.5 * exaggeration) + (0.35 * exaggeration)), 0, 0);
2192 glTranslated(0, 0, 0.1);
2209 const double rot = ((double)atan2((posB.
x() - posA.
x()), (posA.
y() - posB.
y())) * (double) 180.0 / (
double)
M_PI);
FXDEFMAP(GNEVehicle::GNESingleVehiclePopupMenu) GNESingleVehiclePopupMenuMap[]
@ MID_COPY_TYPED_NAME
Copy typed object name - popup entry.
@ MID_GNE_VEHICLE_TRANSFORM
transform vehicle to another vehicle type (ej: flow to trip)
@ MID_COPY_NAME
Copy object name - popup entry.
@ GLO_ROUTEFLOW
a routeFlow
@ GLO_PERSONFLOW
a person flow
std::string time2string(SUMOTime t)
convert SUMOTime to string
SUMOTime string2time(const std::string &r)
convert string to SUMOTime
SUMOVehicleShape getVehicleShapeID(const std::string &name)
Returns the class id of the shape class given by its name.
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
SUMOVehicleShape
Definition of vehicle classes to differ between different appearences.
const std::string DEFAULT_VTYPE_ID
const int VEHPARS_PROB_SET
const int VEHPARS_VPH_SET
const int VEHPARS_END_SET
const int VEHPARS_ROUTE_SET
const int VEHPARS_COLOR_SET
DepartLaneDefinition
Possible ways to choose a lane on depart.
@ GIVEN
The lane is given.
ArrivalSpeedDefinition
Possible ways to choose the arrival speed.
DepartPosLatDefinition
Possible ways to choose the lateral departure position.
DepartPosDefinition
Possible ways to choose the departure position.
@ GIVEN
The position is given.
ArrivalLaneDefinition
Possible ways to choose the arrival lane.
const int VEHPARS_DEPARTPOS_SET
const int VEHPARS_CONTAINER_NUMBER_SET
const int VEHPARS_ARRIVALLANE_SET
DepartSpeedDefinition
Possible ways to choose the departure speed.
@ GIVEN
The speed is given.
const int VEHPARS_DEPARTLANE_SET
const int VEHPARS_ARRIVALPOSLAT_SET
const int VEHPARS_NUMBER_SET
const int VEHPARS_ARRIVALSPEED_SET
ArrivalPosDefinition
Possible ways to choose the arrival position.
@ GIVEN
The arrival position is given.
const int VEHPARS_LINE_SET
const int VEHPARS_PERSON_NUMBER_SET
const int VEHPARS_DEPARTSPEED_SET
const int VEHPARS_PERIOD_SET
ArrivalPosLatDefinition
Possible ways to choose the lateral arrival position.
const int VEHPARS_VTYPE_SET
const int VEHPARS_ARRIVALPOS_SET
DepartDefinition
Possible ways to depart.
const int VEHPARS_VIA_SET
const int VEHPARS_DEPARTPOSLAT_SET
SumoXMLTag
Numbers representing SUMO-XML - element names.
@ GNE_TAG_TRIP_JUNCTIONS
a trip between junctions (used in NETEDIT)
@ SUMO_TAG_VTYPE
description of a vehicle/person/container type
@ SUMO_TAG_STOP_LANE
stop placed over a lane (used in netedit)
@ SUMO_TAG_VEHICLE
description of a vehicle
@ GNE_TAG_FLOW_ROUTE
a flow definition using a route instead of a from-to edges route (used in NETEDIT)
@ GNE_TAG_FLOW_JUNCTIONS
a flow between junctions (used in NETEDIT)
@ GNE_TAG_FLOW_WITHROUTE
description of a vehicle with an embedded route (used in NETEDIT)
@ SUMO_TAG_FLOW
a flow definitio nusing a from-to edges instead of a route (used by router)
@ SUMO_TAG_ROUTE
begin/end of the description of a route
@ SUMO_TAG_STOP_BUSSTOP
stop placed over a busStop (used in netedit)
@ GNE_TAG_VEHICLE_WITHROUTE
description of a vehicle with an embedded route (used in NETEDIT)
@ GNE_TAG_ROUTE_EMBEDDED
embedded route (used in NETEDIT)
@ SUMO_TAG_TRIP
a single trip definition (used by router)
@ SUMO_TAG_EDGE
begin/end of the description of an edge
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
@ SUMO_ATTR_DEPARTPOS_LAT
@ GNE_ATTR_FLOWPARAMETERS
flow parameters (integer for mask end, number, etc...)
@ GNE_ATTR_SELECTED
element is selected
@ SUMO_ATTR_BEGIN
weights: time range begin
@ GNE_ATTR_PARAMETERS
parameters "key1=value1|key2=value2|...|keyN=valueN"
@ SUMO_ATTR_CONTAINER_NUMBER
@ SUMO_ATTR_END
weights: time range end
@ SUMO_ATTR_PERSON_NUMBER
@ SUMO_ATTR_COLOR
A color information.
@ SUMO_ATTR_ARRIVALPOS_LAT
const double INVALID_DOUBLE
const double SUMO_const_halfLaneWidth
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.
double ymin() const
Returns minimum y-coordinate.
double xmin() const
Returns minimum x-coordinate.
Boundary & grow(double by)
extends the boundary by the given amount
double ymax() const
Returns maximum y-coordinate.
double xmax() const
Returns maximum x-coordinate.
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
static void drawFilledCircle(double width, int steps=8)
Draws a filled circle around (0,0)
static void pushName(unsigned int name)
push Name
static void popMatrix()
pop matrix
static void drawBoxLine(const Position &beg, double rot, double visLength, double width, double offset=0)
Draws a thick line.
static void popName()
pop Name
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)
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
friend class GNEChange_EnableAttribute
friend class GNEChange_Attribute
declare friend class
const std::string & getTagStr() const
get tag assigned to this object in string format
const GNETagProperties & getTagProperty() const
get tagProperty associated with this Attribute Carrier
void unselectAttributeCarrier(const bool changeFlag=true)
unselect attribute carrier using GUIGlobalSelection
bool drawUsingSelectColor() const
check if attribute carrier must be drawn using selecting color.
void resetDefaultValues()
reset attribute carrier to their default values
GNENet * myNet
pointer to net
GNENet * getNet() const
get pointer to net
void selectAttributeCarrier(const bool changeFlag=true)
select attribute carrier using GUIGlobalSelection
const GNETagProperties & myTagProperty
reference to tagProperty associated with this attribute carrier
An Element which don't belongs to GNENet but has influency in the simulation.
void replaceDemandElementParent(SumoXMLTag tag, const std::string &value, const int parentIndex)
replace demand element parent
Position getPathElementArrivalPos() const
get path element arrival position
GUIGeometry myDemandElementGeometry
demand element geometry (also called "stacked geometry")
void replaceLastParentEdge(const std::string &value)
replace the last parent edge
GUIGeometry mySpreadGeometry
demand element spread geometry (Only used by vehicles and pedestrians)
void replaceFirstParentJunction(const std::string &value)
replace the first parent junction
std::vector< const GNEDemandElement * > getSortedStops(const std::vector< GNEEdge * > &edges) const
get sorted stops
void replaceFirstParentEdge(const std::string &value)
replace the first parent edge
int myStackedLabelNumber
stacked label number
Problem
enum class for demandElement problems
void replaceMiddleParentEdges(const std::string &value, const bool updateChildReferences)
replace middle (via) parent edges
void replaceLastParentJunction(const std::string &value)
replace the last parent junction
const std::string & getID() const
get ID
A road/street connecting two junctions (netedit-version)
const std::vector< GNELane * > & getLanes() const
returns a reference to the lane vector
GNELane * getLaneByAllowedVClass(const SUMOVehicleClass vClass) const
return the first lane that allow a vehicle of type vClass (or the first lane, if none was found)
const std::vector< GNEJunction * > & getParentJunctions() const
get parent junctions
const std::vector< GNEDemandElement * > & getChildDemandElements() const
return child demand elements
const std::vector< GNEDemandElement * > & getParentDemandElements() const
get parent demand elements
const std::vector< GNEEdge * > & getParentEdges() const
get parent edges
const std::vector< GNELane * > & getParentLanes() const
get parent lanes
bool exist(const GNELane *toLane) const
check if exist a lane2lane geometry for the given tolane
const GUIGeometry & getLane2laneGeometry(const GNELane *toLane) const
get lane2lane geometry
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
const PositionVector & getLaneShape() const
get elements shape
const GNELane2laneConnection & getLane2laneConnections() const
get Lane2laneConnection struct
int getIndex() const
returns the index of the lane
const GUIGeometry & getLaneGeometry() const
GNEEdge * getParentEdge() const
get arent edge
double myMoveElementLateralOffset
move element lateral offset (used by elements placed over lanes
bool getAllowChangeLane() const
allow change lane
CommonModeOptions * getCommonModeOptions() const
get common mode options
const GNELane * newFirstLane
new first Lane
double newFirstPos
new first position
const GNELane * newSecondLane
new second Lane
const GNEMoveOperation::OperationType operationType
move operation
double firstLaneOffset
lane offset
double newSecondPos
new second position
GNEJunction * retrieveJunction(const std::string &id, bool hardFail=true) const
get junction by id
std::vector< GNEDemandElement * > getSelectedDemandElements() const
get selected demand elements
GNEEdge * retrieveEdge(const std::string &id, bool hardFail=true) const
get edge by id
GNEDemandElement * retrieveDemandElement(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named demand element.
A NBNetBuilder extended by visualisation and editing capabilities.
const Boundary & getBoundary() const
returns the bounder of the network
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
GNEPathManager * getPathManager()
get path manager
GNEViewNet * getViewNet() const
get view net
bool consecutiveEdgesConnected(const SUMOVehicleClass vClass, const GNEEdge *from, const GNEEdge *to) const
check if exist a path between the two given consecutives edges for the given VClass
std::vector< GNEEdge * > calculateDijkstraPath(const SUMOVehicleClass vClass, const std::vector< GNEEdge * > &partialEdges) const
calculate Dijkstra path between a list of partial edges
bool drawPathGeometry(const bool dottedElement, const GNELane *lane, SumoXMLTag tag)
check if path element geometry must be drawn in the given lane
PathElement()
default constructor
virtual Position getPathElementArrivalPos() const =0
get path element arrival position
PathElement * getPathElement() const
get path element
Segment * getNextSegment() const
get next segment
bool isLastSegment() const
check if segment is the last path's segment
bool isFirstSegment() const
check if segment is the first path's segment
PathCalculator * getPathCalculator()
obtain instance of PathCalculator
PathDraw * getPathDraw()
obtain instance of PathDraw
void calculatePathLanes(PathElement *pathElement, SUMOVehicleClass vClass, const std::vector< GNELane * > lanes)
calculate path lanes (using dijkstra, require path calculator updated)
bool isPathValid(const PathElement *pathElement) const
check if path element is valid
static void transformToRouteFlow(GNEVehicle *originalVehicle, bool createEmbeddedRoute)
transform routeFlow over an existent route
static void transformToFlow(GNEVehicle *originalVehicle)
transform to flow
static void setFlowParameters(const SumoXMLAttr attribute, int ¶meters)
set flow parameters
static void transformToTrip(GNEVehicle *originalVehicle)
transform to trip
static void transformToVehicle(GNEVehicle *originalVehicle, bool createEmbeddedRoute)
transform vehicle functions
bool isFlow() const
return true if tag correspond to a flow element
GUIIcon getGUIIcon() const
get GUI icon associated to this Tag
SumoXMLTag getTag() const
get Tag vinculated with this attribute Property
const std::string & getDefaultValue(SumoXMLAttr attr) const
return the default value of the attribute of an element
SumoXMLTag getXMLTag() const
get XML tag
void end()
End undo command sub-group. If the sub-group is still empty, it will be deleted; otherwise,...
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 changeAttribute(GNEChange_Attribute *change)
special method for change attributes, avoid empty changes, always execute
void drawFlowLabel(const Position &vehiclePosition, const double vehicleRotation, const double width, const double length, const double exaggeration) const
draw flow label
GNELane * getLastPathLane() const
get last path lane
void setColor(const GUIVisualizationSettings &s) const
sets the color according to the currente settings
void disableAttribute(SumoXMLAttr key, GNEUndoList *undoList)
double getExaggeration(const GUIVisualizationSettings &s) const
return exaggeration asociated with this GLObject
void fixDemandElementProblem()
fix demand element problem (by default throw an exception, has to be reimplemented in children)
Boundary getCenteringBoundary() const
Returns the boundary to which the view shall be centered in order to show the object.
GNEMoveOperation * getMoveOperation()
get move operation
std::string getAttribute(SumoXMLAttr key) const
inherited from GNEAttributeCarrier
std::string getParentName() const
Returns the name of the parent object.
void drawPartialGL(const GUIVisualizationSettings &s, const GNELane *lane, const GNEPathManager::Segment *segment, const double offsetFront) const
Draws partial object.
void computePathElement()
compute pathElement
std::string getPopUpID() const
get PopPup ID (Used in AC Hierarchy)
double getAttributeDouble(SumoXMLAttr key) const
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
bool isAttributeEnabled(SumoXMLAttr key) const
const RGBColor & getColor() const
get color
const std::map< std::string, std::string > & getACParametersMap() const
get parameters map
void enableAttribute(SumoXMLAttr key, GNEUndoList *undoList)
GNELane * getFirstPathLane() const
get first path lane
Problem isDemandElementValid() const
check if current demand element is valid to be writed into XML (by default true, can be reimplemented...
static const double myArrivalPositionDiameter
vehicle arrival position radius
void setMoveShape(const GNEMoveResult &moveResult)
set move shape
void splitEdgeGeometry(const double splitPosition, const GNENetworkElement *originalElement, const GNENetworkElement *newElement, GNEUndoList *undoList)
split geometry
void drawJunctionLine() const
draw junction line
std::string getHierarchyName() const
get Hierarchy Name (Used in AC Hierarchy)
GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own popup-menu.
void toogleAttribute(SumoXMLAttr key, const bool value, const int previousParameters)
method for enable or disable the attribute and nothing else (used in GNEChange_EnableAttribute)
void updateGeometry()
update pre-computed geometry information
Position getAttributePosition(SumoXMLAttr key) const
std::string getBegin() const
get begin time of demand element
std::string getDemandElementProblem() const
return a string with the current demand element problem (by default empty, can be reimplemented in ch...
void drawStackLabel(const Position &vehiclePosition, const double vehicleRotation, const double width, const double length, const double exaggeration) const
draw stack label
void commitMoveShape(const GNEMoveResult &moveResult, GNEUndoList *undoList)
commit move shape
Position getPositionInView() const
Returns position of demand element in view.
bool isValid(SumoXMLAttr key, const std::string &value)
method for checking if the key and their conrrespond attribute are valids
void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)
method for setting the attribute and letting the object perform demand element changes
void writeDemandElement(OutputDevice &device) const
writte demand element element into a xml file
GNEVehicle(SumoXMLTag tag, GNENet *net)
default constructor
SUMOVehicleClass getVClass() const
const GNEViewNetHelper::DataViewOptions & getDataViewOptions() const
get data view options
const GNEAttributeCarrier * getFrontAttributeCarrier() const
get front attributeCarrier
const GNEViewNetHelper::EditModes & getEditModes() const
get edit modes
const GNEViewNetHelper::NetworkViewOptions & getNetworkViewOptions() const
get network view options
void drawTranslateFrontAttributeCarrier(const GNEAttributeCarrier *AC, double typeOrLayer, const double extraOffset=0)
draw front attributeCarrier
GNEViewParent * getViewParent() const
get the net object
const std::vector< GNEAttributeCarrier * > & getInspectedAttributeCarriers() const
get inspected attribute carriers
void buildSelectionACPopupEntry(GUIGLObjectPopupMenu *ret, GNEAttributeCarrier *AC)
Builds an entry which allows to (de)select the object.
bool isAttributeCarrierInspected(const GNEAttributeCarrier *AC) const
check if attribute carrier is being inspected
const GNEViewNetHelper::DemandViewOptions & getDemandViewOptions() const
get demand view options
GNEMoveFrame * getMoveFrame() const
get frame for move elements
static void drawAction_drawVehicleAsPoly(const GUIVisualizationSettings &s, const SUMOVehicleShape shape, const double width, const double length, int carriageIndex=-1)
draw vehicle as a polygon
static void drawAction_drawVehicleAsTrianglePlus(const double width, const double length)
draw vehicle as a triangle
static void drawAction_drawVehicleAsBoxPlus(const double width, const double length)
draw vehicle as a Box
static FXMenuCommand * buildFXMenuCommand(FXComposite *p, const std::string &text, FXIcon *icon, FXObject *tgt, FXSelector sel)
build menu command
static void drawDottedSquaredShape(const DottedContourType type, const GUIVisualizationSettings &s, const Position &pos, const double width, const double height, const double offsetX, const double offsetY, const double rot, const double exaggeration)
draw dotted squared contour (used by additionals and demand elements)
static void drawDottedContourShape(const DottedContourType type, const GUIVisualizationSettings &s, const PositionVector &shape, const double width, const double exaggeration, const bool drawFirstExtrem, const bool drawLastExtrem, const double lineWidth=-1)
draw dotted contour for the given shape (used by additionals)
const std::vector< double > & getShapeRotations() const
The rotations of the single shape parts.
static void drawGeometry(const GUIVisualizationSettings &s, const Position &mousePos, const GUIGeometry &geometry, const double width, double offset=0)
draw geometry
void updateSinglePosGeometry(const Position &position, const double rotation)
update position and rotation
const PositionVector & getShape() const
The shape of the additional element.
void updateGeometry(const PositionVector &shape)
update entire geometry
void buildPositionCopyEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to copy the cursor position if geo projection is used,...
void buildShowParamsPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to open the parameter window.
virtual void setMicrosimID(const std::string &newID)
Changes the microsimID of the object.
void buildCenterPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to center to the object.
void buildPopupHeader(GUIGLObjectPopupMenu *ret, GUIMainWindow &app, bool addSeparator=true)
Builds the header.
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
GUIGlID getGlID() const
Returns the numerical id of the object.
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
const T getColor(const double value) const
Position getPositionInformation() const
Returns the cursor's x/y position within the network.
Stores the information about how to visualize structures.
GUIVisualizationTextSettings addName
GUIVisualizationTextSettings vehicleName
GUIVisualizationSizeSettings vehicleSize
GUIColorer vehicleColorer
The vehicle colorer.
bool drawForRectangleSelection
whether drawing is performed for the purpose of selecting objects using a rectangle
GUIVisualizationDetailSettings detailSettings
detail settings
GUIVisualizationWidthSettings widthSettings
width settings
GUIVisualizationColorSettings colorSettings
color settings
double scale
information about a lane's width (temporary, used for a single view)
bool drawDetail(const double detail, const double exaggeration) const
check if details can be drawn for the given GUIVisualizationDetailSettings and current scale and exxa...
bool drawMinGap
Information whether the minimum gap shall be drawn.
GUIVisualizationTextSettings personName
int getCircleResolution() const
function to calculate circle resolution for all circles drawn in drawGL(...) functions
double angle
The current view rotation angle.
static OptionsCont & getOptions()
Retrieves the options.
Static storage of an output device and its base (abstract) implementation.
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
bool closeTag(const std::string &comment="")
Closes the most recently opened tag and optionally adds a comment.
static bool areParametersValid(const std::string &value, bool report=false, const std::string kvsep="=", const std::string sep="|")
check if given string can be parsed to a parameters map "key1=value1|key2=value2|....
void setParametersStr(const std::string ¶msString, const std::string kvsep="=", const std::string sep="|")
set the inner key/value map in string format "key1=value1|key2=value2|...|keyN=valueN"
void writeParams(OutputDevice &device) const
write Params in the given outputdevice
std::string getParametersStr(const std::string kvsep="=", const std::string sep="|") const
Returns the inner key/value map in string format "key1=value1|key2=value2|...|keyN=valueN".
const std::map< std::string, std::string > & 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 distanceTo2D(const Position &p2) const
returns the euclidean distance in the x-y-plane
double distanceTo(const Position &p2) const
returns the euclidean distance in 3 dimension
double distanceSquaredTo(const Position &p2) const
returns the square of the distance to another position
double x() const
Returns the x-position.
double angleTo2D(const Position &other) const
returns the angle in the plane of the vector pointing from here to the other position
double y() const
Returns the y-position.
double length2D() const
Returns the length.
Position positionAtOffset2D(double pos, double lateralOffset=0) const
Returns the position at the given length.
static const RGBColor WHITE
static const RGBColor BLUE
static const RGBColor GREY
static const RGBColor ORANGE
static const RGBColor CYAN
static RGBColor fromHSV(double h, double s, double v)
Converts the given hsv-triplet to rgb, inspired by http://alvyray.com/Papers/CG/hsv2rgb....
static const RGBColor BLACK
static const RGBColor DEFAULT_COLOR
The default color (for vehicle types and vehicles)
static const RGBColor RED
named colors
Structure representing possible vehicle parameter.
double departPosLat
(optional) The lateral position the vehicle shall depart from
double arrivalPosLat
(optional) The lateral position the vehicle shall arrive on
std::string getArrivalSpeed() const
obtain arrival speed parameter in string format
double repetitionProbability
The probability for emitting a vehicle per second.
int parametersSet
Information for the router which parameter were set, TraCI may modify this (when changing color)
int departLane
(optional) The lane the vehicle shall depart from (index in edge)
ArrivalSpeedDefinition arrivalSpeedProcedure
Information how the vehicle's end speed shall be chosen.
double departSpeed
(optional) The initial speed of the vehicle
SumoXMLTag tag
The vehicle tag.
std::string vtypeid
The vehicle's type id.
std::string getDepartLane() const
obtain depart lane parameter in string format
SUMOTime repetitionOffset
The time offset between vehicle reinsertions.
std::vector< std::string > via
List of the via-edges the vehicle must visit.
static bool parseArrivalLane(const std::string &val, const std::string &element, const std::string &id, int &lane, ArrivalLaneDefinition &ald, std::string &error)
Validates a given arrivalLane value.
static bool parseArrivalPosLat(const std::string &val, const std::string &element, const std::string &id, double &pos, ArrivalPosLatDefinition &apd, std::string &error)
Validates a given arrivalPosLat value.
ArrivalLaneDefinition arrivalLaneProcedure
Information how the vehicle shall choose the lane to arrive on.
void write(OutputDevice &dev, const OptionsCont &oc, const SumoXMLTag altTag=SUMO_TAG_VEHICLE, const std::string &typeID="") const
Writes the parameters as a beginning element.
DepartLaneDefinition departLaneProcedure
Information how the vehicle shall choose the lane to depart from.
std::string getArrivalLane() const
obtain arrival lane parameter in string format
static bool parseDepartSpeed(const std::string &val, const std::string &element, const std::string &id, double &speed, DepartSpeedDefinition &dsd, std::string &error)
Validates a given departSpeed value.
static bool parseArrivalPos(const std::string &val, const std::string &element, const std::string &id, double &pos, ArrivalPosDefinition &apd, std::string &error)
Validates a given arrivalPos value.
int personNumber
The static number of persons in the vehicle when it departs (not including boarding persons)
static bool parseArrivalSpeed(const std::string &val, const std::string &element, const std::string &id, double &speed, ArrivalSpeedDefinition &asd, std::string &error)
Validates a given arrivalSpeed value.
DepartPosLatDefinition departPosLatProcedure
Information how the vehicle shall choose the lateral departure position.
SUMOTime repetitionEnd
The time at which the flow ends (only needed when using repetitionProbability)
std::string getDepartSpeed() const
obtain depart speed parameter in string format
std::string getArrivalPos() const
obtain arrival pos parameter in string format
double departPos
(optional) The position the vehicle shall depart from
DepartSpeedDefinition departSpeedProcedure
Information how the vehicle's initial speed shall be chosen.
RGBColor color
The vehicle's color, TraCI may change this.
double arrivalPos
(optional) The position the vehicle shall arrive on
static bool parseDepartLane(const std::string &val, const std::string &element, const std::string &id, int &lane, DepartLaneDefinition &dld, std::string &error)
Validates a given departLane value.
std::string routeid
The vehicle's route id.
std::string id
The vehicle's id.
int departEdge
(optional) The initial edge within the route of the vehicle
static bool parseDepart(const std::string &val, const std::string &element, const std::string &id, SUMOTime &depart, DepartDefinition &dd, std::string &error, const std::string &attr="departure")
Validates a given depart value.
bool wasSet(int what) const
Returns whether the given parameter was set.
ArrivalPosDefinition arrivalPosProcedure
Information how the vehicle shall choose the arrival position.
static bool parseDepartPosLat(const std::string &val, const std::string &element, const std::string &id, double &pos, DepartPosLatDefinition &dpd, std::string &error)
Validates a given departPosLat value.
std::string getDepartPosLat() const
obtain depart pos lat parameter in string format
std::string getArrivalPosLat() const
obtain arrival pos lat parameter in string format
std::string getDepartPos() const
obtain depart pos parameter in string format
double arrivalSpeed
(optional) The final speed of the vehicle (not used yet)
DepartDefinition departProcedure
Information how the vehicle shall choose the depart time.
static bool parseDepartPos(const std::string &val, const std::string &element, const std::string &id, double &pos, DepartPosDefinition &dpd, std::string &error)
Validates a given departPos value.
int arrivalEdge
(optional) The final edge within the route of the vehicle
DepartPosDefinition departPosProcedure
Information how the vehicle shall choose the departure position.
std::string line
The vehicle's line (mainly for public transport)
int containerNumber
The static number of containers in the vehicle when it departs.
ArrivalPosLatDefinition arrivalPosLatProcedure
Information how the vehicle shall choose the lateral arrival position.
static bool isValidTypeID(const std::string &value)
whether the given string is a valid id for an edge or vehicle type
static bool isValidVehicleID(const std::string &value)
whether the given string is a valid id for a vehicle or flow
static bool isValidNetID(const std::string &value)
whether the given string is a valid id for a network element
bool showDemandElements() const
check if show demand elements checkbox is enabled
bool drawSpreadVehicles() const
check if vehicles must be drawn spread
bool showNonInspectedDemandElements(const GNEDemandElement *demandElement) const
check if non inspected element has to be hidden
bool showAllTrips() const
check if trips has to be drawn
bool isCurrentSupermodeDemand() const
@check if current supermode is Demand
bool isCurrentSupermodeNetwork() const
@check if current supermode is Network
static void drawLockIcon(const GNEAttributeCarrier *AC, GUIGlObjectType type, const Position viewPosition, const double exaggeration, const double size=0.5, const double offsetx=0, const double offsety=0)
draw lock icon
bool drawSpreadVehicles() const
check if vehicles must be drawn spread
bool showDemandElements() const
check if show demand elements checkbox is enabled
RGBColor vehicleTripColor
color for vehicle trips
RGBColor selectedVehicleColor
vehicle selection color
static const double vehicleTriangles
details for draw person as triangles
static const double vehicleShapes
details for draw person as shapes
static const double vehicleBoxes
details for draw person as boxes
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
double tripWidth
width for trips