SUMO - Simulation of Urban MObility
GNEAdditional.h
Go to the documentation of this file.
1 /****************************************************************************/
7 // A abstract class for representation of additional elements
8 /****************************************************************************/
9 // SUMO, Simulation of Urban MObility; see http://sumo.dlr.de/
10 // Copyright (C) 2001-2017 DLR (http://www.dlr.de/) and contributors
11 /****************************************************************************/
12 //
13 // This file is part of SUMO.
14 // SUMO is free software: you can redistribute it and/or modify
15 // it under the terms of the GNU General Public License as published by
16 // the Free Software Foundation, either version 3 of the License, or
17 // (at your option) any later version.
18 //
19 /****************************************************************************/
20 #ifndef GNEAdditional_h
21 #define GNEAdditional_h
22 
23 // ===========================================================================
24 // included modules
25 // ===========================================================================
26 
27 #ifdef _MSC_VER
28 #include <windows_config.h>
29 #else
30 #include <config.h>
31 #endif
32 
33 #include <string>
34 #include <vector>
38 
39 #include "GNEAttributeCarrier.h"
40 
41 // ===========================================================================
42 // class declarations
43 // ===========================================================================
44 
46 class PositionVector;
47 class GNEEdge;
48 class GNELane;
49 class GNENet;
50 class GNEViewNet;
52 
53 // ===========================================================================
54 // class definitions
55 // ===========================================================================
56 
63 public:
70  GNEAdditional(const std::string& id, GNEViewNet* viewNet, SumoXMLTag tag, GUIIcon icon);
71 
74 
79  virtual void writeAdditional(OutputDevice& device, bool volatileOptionsEnabled) const = 0;
80 
84  virtual void openAdditionalDialog();
85 
87  const std::string& getAdditionalID() const;
88 
90  GNEViewNet* getViewNet() const;
91 
93  PositionVector getShape() const;
94 
96  bool isAdditionalBlocked() const;
97 
99  bool isAdditionalInspectionable() const;
100 
102  bool isAdditionalSelectable() const;
103 
105  bool isAdditionalMovable() const;
106 
107  // @brief Check if additional item is selected
108  bool isAdditionalSelected() const;
109 
111  void setAdditionalID(const std::string& id);
112 
114  GNEEdge* getEdge() const;
115 
117  GNELane* getLane() const;
118 
121 
125  virtual void moveGeometry(const Position& newPosition) = 0;
126 
131  virtual void commitGeometryMoving(const Position& oldPos, GNEUndoList* undoList) = 0;
132 
134  virtual void updateGeometry() = 0;
135 
137  virtual Position getPositionInView() const = 0;
139 
143  virtual const std::string& getParentName() const = 0;
144 
153 
162 
168 
173  virtual void drawGL(const GUIVisualizationSettings& s) const = 0;
175 
178  /* @brief method for getting the Attribute of an XML key
179  * @param[in] key The attribute key
180  * @return string with the value associated to key
181  */
182  virtual std::string getAttribute(SumoXMLAttr key) const = 0;
183 
189  virtual void setAttribute(SumoXMLAttr key, const std::string& value, GNEUndoList* undoList) = 0;
190 
196  virtual bool isValid(SumoXMLAttr key, const std::string& value) = 0;
198 
199 protected:
204  void changeEdge(const std::string& edgeID);
205 
210  void changeLane(const std::string& laneID);
211 
212 protected:
215 
220 
225 
230 
234  std::vector<double> myShapeRotations;
235 
237  std::vector<double> myShapeLengths;
239 
242 
246  void setBlockIconRotation();
247 
249  void drawLockIcon(double size = 0.5) const;
250 
253 
256 
259 
263 
265  bool myBlocked;
266 
269 
272 
274  bool myMovable;
275 
278 
280  std::vector<std::vector<Position> > myConnectionPositions;
281 
282 private:
284  virtual void setAttribute(SumoXMLAttr key, const std::string& value) = 0;
285 
287  GNEAdditional(const GNEAdditional&) = delete;
288 
290  GNEAdditional& operator=(const GNEAdditional&) = delete;
291 };
292 
293 #endif
virtual bool isValid(SumoXMLAttr key, const std::string &value)=0
method for checking if the key and their conrrespond attribute are valids
virtual void openAdditionalDialog()
open Additional Dialog
Boundary getCenteringBoundary() const
Returns the boundary to which the view shall be centered in order to show the object.
virtual const std::string & getParentName() const =0
Returns the name of the parent object (if any)
void setBlockIconRotation()
SumoXMLTag
Numbers representing SUMO-XML - element names.
GUIIcon
An enumeration of icons used by the gui applications.
Definition: GUIIcons.h:43
PositionVector getShape() const
Returns additional element&#39;s shape.
GNELane * myLane
The lane this additional belongs.
Stores the information about how to visualize structures.
bool myRotationLefthand
rotation depending of the option "Lefthand"
bool isAdditionalSelected() const
Dialog to edit sequences, parameters, etc.. of Additionals.
virtual void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)=0
method for setting the attribute and letting the object perform additional changes ...
virtual Position getPositionInView() const =0
Returns position of additional in view.
virtual void drawGL(const GUIVisualizationSettings &s) const =0
Draws the object.
A NBNetBuilder extended by visualisation and editing capabilities.
Definition: GNENet.h:92
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
Definition: GNELane.h:54
GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own popup-menu.
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
GNEAdditionalDialog * myAdditionalDialog
pointer to additional dialog
std::vector< double > myShapeRotations
A class that stores a 2D geometrical boundary.
Definition: Boundary.h:48
virtual void commitGeometryMoving(const Position &oldPos, GNEUndoList *undoList)=0
commit geometry changes in the attributes of an element after use of moveGeometry(...)
GNEViewNet * myViewNet
The GNEViewNet this additional element belongs.
GNEViewNet * getViewNet() const
Returns a pointer to GNEViewNet in which additional element is located.
void changeEdge(const std::string &edgeID)
change edge of additional
GNEEdge * getEdge() const
get edge of additional, or NULL if additional isn&#39;t placed over an edge
GNELane * getLane() const
get lane of additional, or NULL if additional isn&#39;t placed over a Lane
bool myMovable
boolean to check if additional element is movable (with the mouse). By default true ...
const std::string & getAdditionalID() const
returns the ID of additional
PositionVector myShape
The shape of the additional element.
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:46
A list of positions.
std::vector< std::vector< Position > > myConnectionPositions
Matrix with the Vertex&#39;s positions of connections between Additional Parent an their childs...
GUIParameterTableWindow * getParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own parameter window.
std::vector< double > myShapeLengths
The lengths of the shape parts.
virtual void moveGeometry(const Position &newPosition)=0
change the position of the element geometry without saving in undoList
void setAdditionalID(const std::string &id)
set the ID of additional
void drawLockIcon(double size=0.5) const
draw lock icon
~GNEAdditional()
Destructor.
virtual std::string getAttribute(SumoXMLAttr key) const =0
This functions has to be implemented in allGNEAttributeCarrier.
void changeLane(const std::string &laneID)
change lane of additional
Position myBlockIconOffset
The offSet of the block icon.
A road/street connecting two junctions (netedit-version)
Definition: GNEEdge.h:58
void drawParentAndChildrenConnections() const
draw connections between Parent and childrens
bool myBlocked
boolean to check if additional element is blocked (i.e. cannot be moved with mouse) ...
An Element which don&#39;t belongs to GNENet but has influency in the simulation.
Definition: GNEAdditional.h:62
The popup menu of a globject.
bool isAdditionalBlocked() const
Check if additional item is currently blocked (i.e. cannot be moved with mouse)
bool mySelectable
boolean to check if additional element is selectable (With GNESelectorFrame). By default true ...
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:71
virtual void updateGeometry()=0
update pre-computed geometry information
GNEAdditional & operator=(const GNEAdditional &)=delete
Invalidated assignment operator.
bool myInspectionable
boolean to check if additional element is inspectionable (With GNEInspectorFrame). By default true
bool isAdditionalSelectable() const
check if additional element is selectable (With GNESelectorFrame)
bool isAdditionalInspectionable() const
check if additional element is inspectionable (With GNEInspectorFrame)
GNEEdge * myEdge
The edge this additional belongs.
A window containing a gl-object&#39;s parameter.
double myBlockIconRotation
The rotation of the block icon.
GNEAdditional(const std::string &id, GNEViewNet *viewNet, SumoXMLTag tag, GUIIcon icon)
Constructor.
Position myBlockIconPosition
position of the block icon
bool isAdditionalMovable() const
check if additional element is movable
virtual void writeAdditional(OutputDevice &device, bool volatileOptionsEnabled) const =0
writte additional element into a xml file