174 contourBoundary.
grow(5);
175 return contourBoundary;
178 geometryBoundary.
grow(5);
179 return geometryBoundary;
183 Boundary centerBoundary(0, 0, 0, 0);
184 centerBoundary.
grow(5);
185 return centerBoundary;
194 const auto& modes =
myNet->getViewNet()->getEditModes();
195 const auto& viewParent =
myNet->getViewParent();
196 const auto& inspectedElements =
myNet->getViewNet()->getInspectedElements();
198 if (inspectedElements.isInspectingSingleElement()) {
199 const auto inspectedAC = inspectedElements.getFirstAC();
203 }
else if ((inspectedAC->getTagProperty()->getTag() ==
SUMO_TAG_TAZREL)) {
206 }
else if (modes.isCurrentSupermodeDemand()) {
210 planCreator = viewParent->getPersonFrame()->getPlanCreator();
212 planCreator = viewParent->getPersonPlanFrame()->getPlanCreator();
214 planCreator = viewParent->getContainerFrame()->getPlanCreator();
216 planCreator = viewParent->getContainerPlanFrame()->getPlanCreator();
221 const auto additionalID =
getID();
232 const auto& selectedTAZs = viewParent->getVehicleFrame()->getPathCreator()->getSelectedTAZs();
234 if ((selectedTAZs.size() > 0) && (selectedTAZs.front() ==
this)) {
238 }
else if (modes.isCurrentSupermodeData()) {
240 const auto& TAZRelDataFrame = viewParent->getTAZRelDataFrame();
241 if (TAZRelDataFrame->shown() && (TAZRelDataFrame->getFirstTAZ() ==
this)) {
253 const auto& modes =
myNet->getViewNet()->getEditModes();
254 const auto& viewParent =
myNet->getViewParent();
255 const auto& inspectedElements =
myNet->getViewNet()->getInspectedElements();
257 if (
myNet->getViewParent()->getInspectorFrame()->getAttributesEditor()->isReparenting()) {
259 }
else if (inspectedElements.isInspectingSingleElement()) {
260 const auto inspectedAC = inspectedElements.getFirstAC();
264 }
else if (inspectedAC->getTagProperty()->getTag() ==
SUMO_TAG_TAZREL) {
268 const auto& parentTags = inspectedAC->getTagProperty()->getXMLParentTags();
269 if (std::find(parentTags.begin(), parentTags.end(),
myTagProperty->getTag()) != parentTags.end()) {
273 }
else if (modes.isCurrentSupermodeDemand()) {
277 planCreator = viewParent->getPersonFrame()->getPlanCreator();
279 planCreator = viewParent->getPersonPlanFrame()->getPlanCreator();
281 planCreator = viewParent->getContainerFrame()->getPlanCreator();
283 planCreator = viewParent->getContainerPlanFrame()->getPlanCreator();
288 const auto additionalID =
getID();
299 const auto& selectedTAZs = viewParent->getVehicleFrame()->getPathCreator()->getSelectedTAZs();
301 if ((selectedTAZs.size() > 1) && (selectedTAZs.back() ==
this)) {
305 }
else if (modes.isCurrentSupermodeData()) {
307 const auto& TAZRelDataFrame = viewParent->getTAZRelDataFrame();
308 if (TAZRelDataFrame->shown() && (TAZRelDataFrame->getSecondTAZ() ==
this)) {
319 const auto& neteditAttributesEditor =
myNet->getViewParent()->getInspectorFrame()->getAttributesEditor();
320 if (neteditAttributesEditor->isReparenting()) {
321 return neteditAttributesEditor->checkNewParent(
this);
324 if (
myNet->getViewNet()->getPopup()) {
325 return myNet->getViewNet()->getPopup()->getGLObject() ==
this;
333 const auto& modes =
myNet->getViewNet()->getEditModes();
334 if (
myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() !=
this) {
337 const auto& viewParent =
myNet->getViewParent();
338 if (modes.isCurrentSupermodeDemand()) {
342 planSelector = viewParent->getPersonFrame()->getPlanSelector();
344 planSelector = viewParent->getPersonPlanFrame()->getPlanSelector();
346 planSelector = viewParent->getContainerFrame()->getPlanSelector();
348 planSelector = viewParent->getContainerPlanFrame()->getPlanSelector();
358 const auto& vehicleTemplate = viewParent->getVehicleFrame()->getVehicleTagSelector()->getCurrentTemplateAC();
360 if (vehicleTemplate && vehicleTemplate->getTagProperty()->vehicleTAZs()) {
364 }
else if (modes.isCurrentSupermodeData()) {
366 const auto& TAZRelDataFrame = viewParent->getTAZRelDataFrame();
367 if (TAZRelDataFrame->shown()) {
368 if (TAZRelDataFrame->getFirstTAZ() && TAZRelDataFrame->getSecondTAZ()) {
370 }
else if (TAZRelDataFrame->getFirstTAZ() ==
this) {
372 }
else if (TAZRelDataFrame->getSecondTAZ() ==
this) {
387 const auto& editModes =
myNet->getViewNet()->getEditModes();
400 const auto& editModes =
myNet->getViewNet()->getEditModes();
403 const auto additional =
myNet->getViewNet()->getViewObjectsSelector().getAdditionalFront();
404 if (additional && (additional ==
myNet->getViewNet()->getViewObjectsSelector().getAttributeCarrierFront())) {
415 const auto& editModes =
myNet->getViewNet()->getEditModes();
434 new FXMenuSeparator(ret);
440 const double innerPos =
myAdditionalGeometry.getShape().nearest_offset_to_point2D(parent.getPositionInformation());
450 const double innerPos =
myAdditionalGeometry.getShape().nearest_offset_to_point2D(parent.getPositionInformation());
458 const auto mousePos =
myNet->getViewNet()->getPositionInformation();
470 for (
const auto& attributeProperty :
myTagProperty->getAttributeProperties()) {
472 if (attributeProperty->isUnique()) {
473 ret->
mkItem(attributeProperty->getAttrStr().c_str(),
false,
getAttribute(attributeProperty->getAttr()));
475 ret->
mkItem(attributeProperty->getAttrStr().c_str(),
true,
getAttribute(attributeProperty->getAttr()));
492 if (
myNet->getViewNet()->getEditModes().isCurrentSupermodeNetwork()) {
508 myNet->deleteAdditional(
this,
myNet->getUndoList());
520 myNet->getViewParent()->getSelectorFrame()->getSelectionInformation()->updateInformationLabel();
588 return (
myNet->getAttributeCarriers()->retrieveAdditionals(tags,
value,
false) ==
nullptr);
614 return (
myNet->getAttributeCarriers()->retrieveAdditionals(tags,
value,
false) ==
nullptr);
629 myNet->getAttributeCarriers()->updateAdditionalID(
this, newID);
634 const auto tag = additionalChild->getTagProperty()->getTag();
637 additionalChild->setAdditionalID(
getID());
642 myNet->getSavingStatus()->requireSaveDemandElements();
646 myNet->getSavingStatus()->requireSaveDataElements();
717 std::vector<GNEAdditional*> newParentAdditionals;
719 if (
value.size() > 0) {
721 if ((newParentAdditionals.size() == 0) && (parentIndex == 0)) {
722 newParentAdditionals.push_back(
myNet->getAttributeCarriers()->retrieveAdditional(tag,
value));
724 newParentAdditionals[parentIndex] =
myNet->getAttributeCarriers()->retrieveAdditional(tag,
value);
733 auto newDemandElement =
myNet->getAttributeCarriers()->retrieveDemandElement(tag,
value);
740 const std::vector<GNELane*> newLanes = {
getParentLanes().front()->getParentEdge()->getChildLanes().at(
getParentLanes().front()->getIndex() + 1)};
760 const double lanePosition = firstLaneShape.
length2D() >= endLaneposition ? endLaneposition : firstLaneShape.
length2D();
771 if (!demandElement->getTagProperty()->isPlacedInRTree()) {
772 demandElement->drawGL(s);
783 return "jupedsim.walkable_area";
785 return "jupedsim.obstacle";
835 const double layer,
const double exaggeration,
const bool filledShape)
const {
844 const auto& editModes =
myNet->getViewNet()->getEditModes();
846 if (editModes.isCurrentSupermodeNetwork() && !
myNet->getViewParent()->getMoveFrame()->getNetworkMoveOptions()->getMoveWholePolygons()) {
871 const auto& inspectedElements =
myNet->getViewNet()->getInspectedElements();
881 const bool parentInspected = inspectedElements.isACInspected(parent);
885 currentDrawEntire || parentInspected || parent->isAttributeCarrierSelected(), .05);
891 for (
const auto& rerouterElement : rerouterInterval->getChildAdditionals()) {
894 const auto parkingArea = rerouterElement->getParentAdditionals().at(1);
896 const bool parkingAreaInspected = inspectedElements.isACInspected(parkingArea);
900 currentDrawEntire || parkingAreaInspected || parkingArea->isAttributeCarrierSelected(), .05);
908 const bool childInspected = inspectedElements.isACInspected(child);
914 currentDrawEntire || childInspected || child->isAttributeCarrierSelected(), .05);
915 }
else if (!onlySymbols || child->getTagProperty()->isSymbol()) {
919 currentDrawEntire || childInspected || child->isAttributeCarrierSelected(), .05);
929 const double rot,
const RGBColor& baseColor,
const bool ignoreShift)
const {
935 const double rot,
const RGBColor& baseColor,
const bool ignoreShift)
const {
941 const double rot,
const RGBColor& baseColor,
const bool ignoreShift)
const {
948 const double rot,
const RGBColor& baseColor,
const bool ignoreShift)
const {
958 while (laneIt < ((
int)lanes.size() - 1)) {
960 bool consecutiveFound =
false;
962 const auto lane = lanes.at(laneIt);
963 const auto nextLane = lanes.at(laneIt + 1);
965 for (
const auto& outgoingEdge : lane->getParentEdge()->getToJunction()->getGNEOutgoingEdges()) {
966 for (
const auto& outgoingLane : outgoingEdge->getChildLanes()) {
967 if (outgoingLane == nextLane) {
968 consecutiveFound =
true;
973 if (!consecutiveFound) {
989 while (laneIt < ((
int)lanes.size() - 1)) {
991 bool connectionFound =
false;
993 const auto lane = lanes.at(laneIt);
994 const auto nextLane = lanes.at(laneIt + 1);
997 connectionFound =
true;
1000 for (
const auto& connection : lane->getParentEdge()->getNBEdge()->getConnections()) {
1001 if ((connection.toEdge == nextLane->getParentEdge()->getNBEdge()) &&
1002 (connection.fromLane == lane->getIndex()) &&
1003 (connection.toLane == nextLane->getIndex())) {
1004 connectionFound =
true;
1008 if (!connectionFound) {
1028 const Position& pos,
const double rot,
const RGBColor& baseColor,
const double fromAngle,
const double toAngle,
1029 const bool )
const {
1035 glTranslated(0, 0, 0.1);
1039 glTranslated(pos.
x(), pos.
y(), 0.1);
1040 glRotated(rot, 0, 0, 1);
std::vector< ParentType > GNEHierarchicalContainerParents
@ NETWORK_DELETE
mode for deleting network elements
@ NETWORK_MOVE
mode for moving network elements
@ NETWORK_SELECT
mode for selecting network elements
@ 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_OPEN_ADDITIONAL_DIALOG
open additional dialog (used in netedit)
@ GLO_PARENTCHILDLINE
line between parent and childrens
const std::string invalid_return< std::string >::value
SumoXMLTag
Numbers representing SUMO-XML - element names.
@ SUMO_TAG_REROUTER
A rerouter.
@ SUMO_TAG_ACCESS
An access point for a train stop.
@ SUMO_TAG_PARKING_AREA_REROUTE
entry for an alternative parking zone
@ SUMO_TAG_DET_ENTRY
an e3 entry point
@ SUMO_TAG_PARKING_SPACE
A parking space for a single vehicle within a parking area.
@ GNE_TAG_JPS_OBSTACLE
polygon used for draw juPedSim obstacles
@ SUMO_TAG_DET_EXIT
an e3 exit point
@ SUMO_TAG_VAPORIZER
vaporizer of vehicles
@ SUMO_TAG_TAZREL
a relation between two TAZs
@ GNE_TAG_JPS_WALKABLEAREA
polygon used for draw juPedSim walkable areas
@ GNE_ATTR_PARENT
parent of an additional element
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
A class that stores a 2D geometrical boundary.
bool isInitialised() const
check if Boundary is Initialised
Boundary & grow(double by)
extends the boundary by the given amount
std::string fromContainerStop
from containerStop
std::string toTrainStop
to trainStop
std::string fromTrainStop
from trainStop
std::string toParkingArea
to parkingArea
std::string fromBusStop
from busStop
std::string toBusStop
to busStop
std::string fromChargingStation
from chargingStation
std::string fromTAZ
from TAZ
std::string toChargingStation
to chargingStation
std::string fromParkingArea
from parkingArea
std::string toContainerStop
to containerStop
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
static void popMatrix()
pop matrix
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 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)
GUIParameterTableWindow * getParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent) override
Returns an own parameter window.
bool isPathElementSelected() const override
check if path element is selected
void markAsFrontElement() override
mark element as front element
virtual const std::string getOptionalName() const override
Returns the name of the object (default "").
double getExaggeration(const GUIVisualizationSettings &s) const override
return exaggeration associated with this GLObject
virtual void drawJunctionPartialGL(const GUIVisualizationSettings &s, const GNESegment *segment, const double offsetFront) const override
Draws partial object over junction.
virtual void drawLanePartialGL(const GUIVisualizationSettings &s, const GNESegment *segment, const double offsetFront) const override
Draws partial object over lane.
bool isValidAdditionalID(const std::string &value) const
check if a new additional ID is valid
void deleteGLObject() override
delete element
void replaceAdditionalParent(SumoXMLTag tag, const std::string &value, const int parentIndex)
replace additional parent
static bool areLaneConnected(const std::vector< GNELane * > &lanes)
check if the given lanes are connected
bool checkDrawFromContour() const override
check if draw from contour (green)
void drawRightGeometryPoint(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const Position &pos, const double rot, const RGBColor &baseColor, const bool ignoreShift=false) const
draw right geometry point
virtual bool isAdditionalValid() const =0
check if current additional is valid to be written into XML (by default true, can be reimplemented in...
void updateGLObject() override
update GLObject (geometry, ID, etc.)
virtual std::string getAdditionalProblem() const =0
return a string with the current additional problem (by default empty, can be reimplemented in childr...
static std::string getJuPedSimType(SumoXMLTag tag)
get JuPedSim type
void replaceAdditionalChildLanes(const std::string &value)
replace additional child lanes
void setAdditionalID(const std::string &newID)
set additional ID
GNEContour myAdditionalContour
variable used for draw additional contours
virtual GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent) override
Returns an own popup-menu.
GUIGeometry myAdditionalGeometry
geometry to be precomputed in updateGeometry(...)
void replaceAdditionalParentEdges(const std::string &value)
replace additional parent edges
void drawAdditionalID(const GUIVisualizationSettings &s) const
draw additional ID
bool checkDrawOverContour() const override
check if draw over contour (orange)
bool checkDrawDeleteContour() const override
check if draw delete contour (pink/white)
bool isValidDetectorID(const std::string &value) const
check if a new detector ID is valid
Boundary getCenteringBoundary() const override
Returns the boundary to which the view shall be centered in order to show the object.
void drawUpGeometryPoint(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const Position &pos, const double rot, const RGBColor &baseColor, const bool ignoreShift=false) const
draw up geometry point
void replaceAdditionalParentLanes(const std::string &value)
replace additional parent lanes
GNEHierarchicalElement * getHierarchicalElement() override
methods to retrieve the elements linked to this additional
void shiftLaneIndex()
shift lane index
GNELane * getFirstPathLane() const override
get first path lane
bool checkDrawRelatedContour() const override
check if draw related contour (cyan)
void calculatePerpendicularLine(const double endLaneposition)
calculate perpendicular line between lane parents
bool isGLObjectLocked() const override
check if element is locked
std::string myAdditionalName
name of additional
void drawAdditionalName(const GUIVisualizationSettings &s) const
draw additional name
void resetAdditionalContour()
reset additional contour
bool checkDrawSelectContour() const override
check if draw select contour (blue)
void drawDemandElementChildren(const GUIVisualizationSettings &s) const
draw demand element children
static double getJuPedSimLayer(SumoXMLTag tag)
get JuPedSim color
bool checkDrawToContour() const override
check if draw from contour (magenta)
void setSpecialColor(const RGBColor *color)
set special color
const RGBColor * mySpecialColor
pointer to special color (used for drawing Additional with a certain color, mainly used for selection...
virtual bool checkChildAdditionalRestriction() const
check restriction with the number of children
void drawSemiCircleGeometryPoint(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const Position &pos, const double rot, const RGBColor &baseColor, const double fromAngle, const double toAngle, const bool ignoreShift) const
draw geometry point
static bool areLaneConsecutives(const std::vector< GNELane * > &lanes)
check if the given lanes are consecutive
bool checkDrawDeleteContourSmall() const override
check if draw delete contour small (pink/white)
void replaceAdditionalChildEdges(const std::string &value)
replace additional child edges
virtual void openAdditionalDialog(FXWindow *restoringFocusWindow)
open Additional Dialog
GNELane * getLastPathLane() const override
get last path lane
void calculateContourPolygons(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const double layer, const double exaggeration, const bool filledShape) const
calculate contour for polygons
void selectGLObject() override
select element
FileBucket * getFileBucket() const override
get reference to fileBucket in which save this AC
void drawDownGeometryPoint(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const Position &pos, const double rot, const RGBColor &baseColor, const bool ignoreShift=false) const
draw down geometry point
static RGBColor getJuPedSimColor(SumoXMLTag tag)
get JuPedSim color
void writeAdditionalAttributes(OutputDevice &device) const
write common additional attributes
const GUIGeometry & getAdditionalGeometry() const
obtain additional geometry
Boundary myAdditionalBoundary
Additional Boundary (used only by additionals placed over grid).
void drawLeftGeometryPoint(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const Position &pos, const double rot, const RGBColor &baseColor, const bool ignoreShift=false) const
draw left geometry point
void replaceDemandElementParent(SumoXMLTag tag, const std::string &value, const int parentIndex)
replace demand element parent
static bool getJuPedSimFill(SumoXMLTag tag)
get JuPedSim fill
~GNEAdditional()
Destructor.
const std::string & getOptionalAdditionalName() const
Returns the additional name.
virtual void computePathElement() override
compute pathElement
GUIGlObject * getGUIGlObject() override
get GUIGlObject associated with this additional
GNEAdditional(GNENet *net, SumoXMLTag tag)
Constructor for templates.
virtual Position getPositionInView() const =0
Returns position of additional in view.
virtual void fixAdditionalProblem()=0
fix additional problem (by default throw an exception, has to be reimplemented in children)
void drawParentChildLines(const GUIVisualizationSettings &s, const RGBColor &color, const bool onlySymbols=false) const
draw parent and child lines
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
void markForDrawingFront()
mark for drawing front
void selectAttributeCarrier()
GNEAttributeCarrier(const SumoXMLTag tag, GNENet *net)
Constructor for templates.
bool myDrawInFront
boolean to check if drawn this AC over other elements
FXIcon * getACIcon() const
get FXIcon associated to this AC
bool mySelected
boolean to check if this AC is selected (more quickly as checking GUIGlObjectStorage)
FileBucket * myFileBucket
filebucket vinculated whith this AC
const std::string getID() const override
get ID (all Attribute Carriers have one)
static T parse(const std::string &string)
parses a value of type T from string (used for basic types: int, double, bool, etc....
void unselectAttributeCarrier()
unselect attribute carrier using GUIGlobalSelection
const std::string & getTagStr() const
get tag assigned to this object in string format
bool isTemplate() const
check if this AC is template
const GNETagProperties * getTagProperty() const
get tagProperty associated with this Attribute Carrier
GNENet * myNet
pointer to net
GNENet * getNet() const
get pointer to net
virtual void updateGeometry()=0
update pre-computed geometry information
virtual std::string getAttribute(SumoXMLAttr key) const =0
const GNETagProperties * myTagProperty
reference to tagProperty associated with this attribute carrier
NBEdge * getNBEdge() const
returns the internal NBEdge
const GNEHierarchicalContainerParents< GNEAdditional * > & getParentAdditionals() const
get parent additionals
const GNEHierarchicalContainerParents< GNEEdge * > & getParentEdges() const
get parent edges
const GNEHierarchicalContainerChildren< GNEGenericData * > & getChildGenericDatas() const
return child generic data elements
static void updateChildren(ElementType element, GNEHierarchicalContainerChildren< ChildType > newChildren)
update all children elements
const GNEHierarchicalContainerChildren< GNELane * > & getChildLanes() const
get child lanes
const GNEHierarchicalContainerChildren< GNEAdditional * > & getChildAdditionals() const
return child additionals
const GNEHierarchicalContainerParents< GNELane * > & getParentLanes() const
get parent lanes
static void updateParent(ElementType element, const int index, ParentType newParent)
update single parent element
const GNEHierarchicalContainerChildren< GNEDemandElement * > & getChildDemandElements() const
return child demand elements
static void updateParents(ElementType element, GNEHierarchicalContainerParents< ParentType > newParents)
update all parent elements
const PositionVector & getLaneShape() const
get elements shape
int getIndex() const
returns the index of the lane
GNEEdge * getParentEdge() const
get parent edge
GNEPathElement(const GNEPathElement::Options options)
constructor
const CommonXMLStructure::PlanParameters & getPlanParameteres() const
get plan parameters
bool markTAZs() const
check if mark TAZs with dotted contours
bool markStoppingPlaces() const
check if mark stoppingPlaces with dotted contours
static FXMenuCommand * buildFXMenuCommand(FXComposite *p, const std::string &text, FXIcon *icon, FXObject *tgt, FXSelector sel, const bool disable=false)
build menu command
static void drawChildLine(const GUIVisualizationSettings &s, const Position &child, const Position &parent, const RGBColor &color, const bool drawEntire, const double lineWidth)
draw line between child and parent (used in netedit)
static void drawParentLine(const GUIVisualizationSettings &s, const Position &parent, const Position &child, const RGBColor &color, const bool drawEntire, const double lineWidth)
draw line between parent and children (used in netedit)
const std::string & getMicrosimID() const
Returns the id of the object as known to microsim.
virtual void setMicrosimID(const std::string &newID)
Changes the microsimID of the object.
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)
GUIGlObject(GUIGlObjectType type, const std::string µsimID, FXIcon *icon)
Constructor.
A window containing a gl-object's parameter.
void mkItem(const char *name, bool dynamic, ValueSource< T > *src)
Adds a row which obtains its value from a ValueSource.
void closeBuilding(const Parameterised *p=0)
Closes the building of the table.
Stores the information about how to visualize structures.
GUIVisualizationTextSettings addName
GUIVisualizationSizeSettings addSize
GUIVisualizationTextSettings addFullName
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
GUIVisualizationAdditionalSettings additionalSettings
Additional settings.
double getTextAngle(double objectAngle) const
return an angle that is suitable for reading text aligned with the given angle (degrees)
GUIVisualizationNeteditSizeSettings neteditSizeSettings
netedit size settings
double getLaneWidth() const
Returns the default width of lanes of this edge.
Static storage of an output device and its base (abstract) implementation.
OutputDevice & writeAttr(const ATTR_TYPE &attr, const T &val, const bool isNull=false)
writes a named attribute
A point in 2D or 3D with translation and scaling methods.
double x() const
Returns the x-position.
double y() const
Returns the y-position.
double length2D() const
Returns the length.
double nearest_offset_to_point2D(const Position &p, bool perpendicular=true) const
return the nearest offest to point 2D
void move2side(double amount, double maxExtension=100)
move position vector to side using certain amount
Position positionAtOffset2D(double pos, double lateralOffset=0, bool extrapolateBeyond=false) const
Returns the position at the given length.
RGBColor changedBrightness(int change, int toChange=3) const
Returns a new color with altered brightness.
static bool isValidAdditionalID(const std::string &value)
whether the given string is a valid id for an additional object
static bool isValidDetectorID(const std::string &value)
whether the given string is a valid id for an detector
static std::string escapeXML(const std::string &orig, const bool maskDoubleHyphen=false)
Replaces the standard escapes by their XML entities.
static const std::string format(const std::string &format, T value, Targs... Fargs)
adds a new formatted message
static const RGBColor connectionColorSelected
connection color selected
static const double polygonGeometryPointRadius
moving geometry point radius
static const double additionalGeometryPointRadius
moving additional geometry point radius
static const double polylineWidth
poly line width
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