Eclipse SUMO - Simulation of Urban MObility
GUIGlObject.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
17 // Base class for all objects that may be displayed within the openGL-gui
18 /****************************************************************************/
19 #ifndef GUIGlObject_h
20 #define GUIGlObject_h
21 
22 
23 // ===========================================================================
24 // included modules
25 // ===========================================================================
26 #include <config.h>
27 
28 #include <string>
29 #include <set>
30 #include "GUIGlObjectTypes.h"
31 #include <utils/geom/Boundary.h>
32 #include <utils/common/StdDefs.h>
35 #include <utils/common/RGBColor.h>
36 
37 
38 // ===========================================================================
39 // definitions
40 // ===========================================================================
41 
42 typedef unsigned int GUIGlID;
43 
44 // ===========================================================================
45 // class declarations
46 // ===========================================================================
47 
48 class GUIGlObjectStorage;
50 class GUIMainWindow;
55 #ifdef HAVE_OSG
56 namespace osg {
57 class Node;
58 }
59 #endif
60 
61 // ===========================================================================
62 // class definitions
63 // ===========================================================================
64 
65 class GUIGlObject {
66 public:
69  static const GUIGlID INVALID_ID;
70 
80  GUIGlObject(GUIGlObjectType type, const std::string& microsimID);
81 
83  virtual ~GUIGlObject();
84 
89  const std::string& getFullName() const;
90 
93  virtual std::string getParentName() const;
94 
97  GUIGlID getGlID() const;
99 
102 
109 
111  virtual void removedPopupMenu() {}
112 
120 
128 
130  virtual const std::string& getMicrosimID() const;
131 
133  virtual const std::string getOptionalName() const;
134 
137  virtual void setMicrosimID(const std::string& newID);
138 
141  GUIGlObjectType getType() const;
142 
144  virtual Boundary getCenteringBoundary() const = 0;
145 
148  virtual void drawGL(const GUIVisualizationSettings& s) const = 0;
149 
150  virtual double getColorValue(const GUIVisualizationSettings& /*s*/, int /*activeScheme*/) const {
151  return 0;
152  }
154 
159  virtual void drawGLAdditional(GUISUMOAbstractView* const parent, const GUIVisualizationSettings& s) const;
160 
162  virtual void removeActiveAddVisualisation(GUISUMOAbstractView* const /*parent*/, int /*which*/) {}
163 
165  virtual void onLeftBtnPress(void* /*data*/) {}
166 
167 #ifdef HAVE_OSG
168  osg::Node* getNode() const;
170 
172  void setNode(osg::Node* node);
173 #endif
174 
180 
185 
187  void drawName(const Position& pos, const double scale, const GUIVisualizationTextSettings& settings, const double angle = 0) const;
188 
189 protected:
192 
196  void buildPopupHeader(GUIGLObjectPopupMenu* ret, GUIMainWindow& app, bool addSeparator = true);
197 
202  void buildCenterPopupEntry(GUIGLObjectPopupMenu* ret, bool addSeparator = true);
203 
208  void buildNameCopyPopupEntry(GUIGLObjectPopupMenu* ret, bool addSeparator = true);
209 
214  void buildSelectionPopupEntry(GUIGLObjectPopupMenu* ret, bool addSeparator = true);
215 
220  void buildShowParamsPopupEntry(GUIGLObjectPopupMenu* ret, bool addSeparator = true);
221 
226  void buildShowTypeParamsPopupEntry(GUIGLObjectPopupMenu* ret, bool addSeparator = true);
227 
233  void buildPositionCopyEntry(GUIGLObjectPopupMenu* ret, bool addSeparator = true);
234 
239  void buildShowManipulatorPopupEntry(GUIGLObjectPopupMenu* ret, bool addSeparator = true);
241 
242 protected:
244  void buildShapePopupOptions(GUIMainWindow& app, GUIGLObjectPopupMenu* ret, const std::string& type);
245 
247  void buildAdditionalsPopupOptions(GUIMainWindow& app, GUIGLObjectPopupMenu* ret, const std::string& type);
248 
249 private:
252 
255 
257  std::string myMicrosimID;
258 
260  std::string myFullName;
261 
263  std::set<GUIParameterTableWindow*> myParamWindows;
264 
266  std::string createFullName() const;
267 
268 #ifdef HAVE_OSG
269  osg::Node* myOSGNode;
271 #endif
272 
274  // static StringBijection<SumoXMLLinkStateValue> LinkStates;
275 
278 
279 private:
281  GUIGlObject(const GUIGlObject&) = delete;
282 
284  GUIGlObject& operator=(const GUIGlObject&) = delete;
285 };
286 #endif
287 
288 /****************************************************************************/
289 
GUIGlObject::getType
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
Definition: GUIGlObject.cpp:180
Boundary.h
GUIGlObjectTypes.h
GUIParameterTableWindow
A window containing a gl-object's parameter.
Definition: GUIParameterTableWindow.h:62
GUIGlObject::removeParameterTable
void removeParameterTable(GUIParameterTableWindow *w)
Lets this object know a parameter window showing the object's values was closed.
Definition: GUIGlObject.cpp:293
GUIGlObject::myMicrosimID
std::string myMicrosimID
ID of GL object.
Definition: GUIGlObject.h:257
GUISUMOAbstractView
Definition: GUISUMOAbstractView.h:72
GUIGlObjectStorage
A storage for of displayed objects via their numerical id.
Definition: GUIGlObjectStorage.h:51
GUIGlObject::getTypeParameterWindow
virtual GUIParameterTableWindow * getTypeParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own type parameter window (optional)
Definition: GUIGlObject.cpp:155
GUIGlObject::getColorValue
virtual double getColorValue(const GUIVisualizationSettings &, int) const
Definition: GUIGlObject.h:150
GUIGlObject::drawName
void drawName(const Position &pos, const double scale, const GUIVisualizationTextSettings &settings, const double angle=0) const
draw name of item
Definition: GUIGlObject.cpp:354
StringBijection.h
GUIGlObject::myGLObjectType
const GUIGlObjectType myGLObjectType
The type of the object.
Definition: GUIGlObject.h:254
GUIGlObject::buildSelectionPopupEntry
void buildSelectionPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to (de)select the object.
Definition: GUIGlObject.cpp:235
GUIGlObject::getPopUpMenu
virtual GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)=0
Returns an own popup-menu.
GUIGlObject::getParameterWindow
virtual GUIParameterTableWindow * getParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent)=0
Returns an own parameter window.
GUIGlObject::GUIGlObjectTypeNamesInitializer
static StringBijection< GUIGlObjectType >::Entry GUIGlObjectTypeNamesInitializer[]
LinkStates (Currently unused)
Definition: GUIGlObject.h:277
GUIGlObject::removeActiveAddVisualisation
virtual void removeActiveAddVisualisation(GUISUMOAbstractView *const, int)
remove additional user-griggered visualisations
Definition: GUIGlObject.h:162
GUIGlObject::removedPopupMenu
virtual void removedPopupMenu()
notify object about popup menu removal
Definition: GUIGlObject.h:111
GUIGlObject::TypeNames
static StringBijection< GUIGlObjectType > TypeNames
associates object types with strings
Definition: GUIGlObject.h:68
GUIGlObject::buildShowManipulatorPopupEntry
void buildShowManipulatorPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to open the manipulator window.
Definition: GUIGlObject.cpp:278
GUIGlObject::getFullName
const std::string & getFullName() const
Definition: GUIGlObject.cpp:137
GUIVisualizationTextSettings
Definition: GUIVisualizationSettings.h:50
GUIGlObject::myFullName
std::string myFullName
full name of GL Object
Definition: GUIGlObject.h:260
GUIGlObject::getOptionalName
virtual const std::string getOptionalName() const
Returns the name of the object (default "")
Definition: GUIGlObject.cpp:168
GUIGLObjectPopupMenu
The popup menu of a globject.
Definition: GUIGLObjectPopupMenu.h:47
GUIGlObject::buildAdditionalsPopupOptions
void buildAdditionalsPopupOptions(GUIMainWindow &app, GUIGLObjectPopupMenu *ret, const std::string &type)
build basic additional popup options. Used to unify pop-ups menu in netedit and SUMO-GUI
Definition: GUIGlObject.cpp:325
RGBColor.h
GUIGlObject::createFullName
std::string createFullName() const
create full name
Definition: GUIGlObject.cpp:348
GUIGlObjectType
GUIGlObjectType
Definition: GUIGlObjectTypes.h:39
GUIGlObject::GUIGlObject
GUIGlObject(GUIGlObjectType type, const std::string &microsimID)
Constructor.
Definition: GUIGlObject.cpp:117
GUIGlObject::setMicrosimID
virtual void setMicrosimID(const std::string &newID)
Changes the microsimID of the object.
Definition: GUIGlObject.cpp:173
GUIGlObject::INVALID_ID
static const GUIGlID INVALID_ID
Definition: GUIGlObject.h:69
StringBijection< GUIGlObjectType >
GUIGlObject::drawGLAdditional
virtual void drawGLAdditional(GUISUMOAbstractView *const parent, const GUIVisualizationSettings &s) const
Draws additional, user-triggered visualisations.
Definition: GUIGlObject.cpp:186
GUIGlObject::buildNameCopyPopupEntry
void buildNameCopyPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds entries which allow to copy the name / typed name into the clipboard.
Definition: GUIGlObject.cpp:225
GUIGlObject::myParamWindows
std::set< GUIParameterTableWindow * > myParamWindows
Parameter table windows which refer to this object.
Definition: GUIGlObject.h:263
GUIGlObject::getGlID
GUIGlID getGlID() const
Returns the numerical id of the object.
Definition: GUIGlObject.cpp:149
Boundary
A class that stores a 2D geometrical boundary.
Definition: Boundary.h:41
Position
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:38
GUIGlObject
Definition: GUIGlObject.h:65
GUIGlObject::buildPopupHeader
void buildPopupHeader(GUIGLObjectPopupMenu *ret, GUIMainWindow &app, bool addSeparator=true)
Builds the header.
Definition: GUIGlObject.cpp:207
GUIGlObject::myGlID
GUIGlID myGlID
The numerical id of the object.
Definition: GUIGlObject.h:251
GUIGlObject::operator=
GUIGlObject & operator=(const GUIGlObject &)=delete
Invalidated assignment operator.
StringUtils.h
GUIMainWindow
Definition: GUIMainWindow.h:46
GUIGlObject::getCenteringBoundary
virtual Boundary getCenteringBoundary() const =0
GUIGlObject::buildShapePopupOptions
void buildShapePopupOptions(GUIMainWindow &app, GUIGLObjectPopupMenu *ret, const std::string &type)
build basic shape popup options. Used to unify pop-ups menu in netedit and SUMO-GUI
Definition: GUIGlObject.cpp:302
GUIGlID
unsigned int GUIGlID
Definition: GUIGlObject.h:42
GUIGlObject::buildShowTypeParamsPopupEntry
void buildShowTypeParamsPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to open the type parameter window.
Definition: GUIGlObject.cpp:257
GUIGlObject::drawGL
virtual void drawGL(const GUIVisualizationSettings &s) const =0
Draws the object.
GUIGlObject::buildShowParamsPopupEntry
void buildShowParamsPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to open the parameter window.
Definition: GUIGlObject.cpp:248
GUIGlObject::buildCenterPopupEntry
void buildCenterPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to center to the object.
Definition: GUIGlObject.cpp:216
GUIGlObject::buildPositionCopyEntry
void buildPositionCopyEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to copy the cursor position if geo projection is used,...
Definition: GUIGlObject.cpp:266
config.h
StdDefs.h
GUIGlObject::onLeftBtnPress
virtual void onLeftBtnPress(void *)
notify object about left click
Definition: GUIGlObject.h:165
GUIGlObject::addParameterTable
void addParameterTable(GUIParameterTableWindow *w)
Definition: GUIGlObject.cpp:287
GUIGlObject::~GUIGlObject
virtual ~GUIGlObject()
Destructor.
Definition: GUIGlObject.cpp:127
GUIVisualizationSettings
Stores the information about how to visualize structures.
Definition: GUIVisualizationSettings.h:345
GUIGlObject::getMicrosimID
virtual const std::string & getMicrosimID() const
Returns the id of the object as known to microsim.
Definition: GUIGlObject.cpp:163
GUIGlObject::getParentName
virtual std::string getParentName() const
Returns the name of the parent object (if any)
Definition: GUIGlObject.cpp:143