Eclipse SUMO - Simulation of Urban MObility
GUIBaseVehicle.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 // A MSVehicle extended by some values for usage within the gui
18 /****************************************************************************/
19 #ifndef GUIBaseVehicle_h
20 #define GUIBaseVehicle_h
21 
22 
23 // ===========================================================================
24 // included modules
25 // ===========================================================================
26 #include <config.h>
27 
28 #include <vector>
29 #include <set>
30 #include <string>
31 #include <fx.h>
32 #include <utils/common/RGBColor.h>
33 #include <utils/geom/GeomHelper.h>
38 #include <microsim/MSVehicle.h>
39 
40 
41 // ===========================================================================
42 // class declarations
43 // ===========================================================================
46 class MSDevice_Vehroutes;
47 
48 
49 // ===========================================================================
50 // class definitions
51 // ===========================================================================
61 class GUIBaseVehicle : public GUIGlObject {
62 public:
63 
64  GUIBaseVehicle(MSBaseVehicle& vehicle);
65 
68 
69 
77  virtual Position getPosition(const double offset = 0) const = 0;
78 
82  virtual double getAngle() const = 0;
83 
85  double getNaviDegree() const {
87  }
88 
90  virtual double getColorValue(const GUIVisualizationSettings& s, int activeScheme) const = 0;
91 
93  virtual void drawAction_drawCarriageClass(const GUIVisualizationSettings& s, bool asImage) const = 0;
94 
99  virtual double getLastLaneChangeOffset() const = 0;
100 
104  virtual void drawRouteHelper(const GUIVisualizationSettings& s, const MSRoute& r, bool future, const RGBColor& col) const = 0;
105 
107  virtual std::string getStopInfo() const = 0;
108 
110  virtual void selectBlockingFoes() const = 0;
111 
120 
128 
129  virtual void drawAction_drawVehicleBlinker(double /*length*/) const {}
130  virtual void drawAction_drawVehicleBrakeLight(double length, bool onlyOne = false) const {
131  UNUSED_PARAMETER(length);
132  UNUSED_PARAMETER(onlyOne);
133  }
134  virtual void drawAction_drawLinkItems(const GUIVisualizationSettings& /*s*/) const {}
137  virtual void drawBestLanes() const {};
138  virtual void drawAction_drawVehicleBlueLight() const {}
139 
140 
141 
142 
143 
145 
146 
155 
157  void removedPopupMenu();
158 
165 
167  const std::string getOptionalName() const;
168 
174  void drawOnPos(const GUIVisualizationSettings& s, const Position& pos, const double angle) const;
175 
176 
181  void drawGL(const GUIVisualizationSettings& s) const;
182 
183 
188  virtual void drawGLAdditional(GUISUMOAbstractView* const parent, const GUIVisualizationSettings& s) const;
190 
191 
192 
195 
201  bool hasActiveAddVisualisation(GUISUMOAbstractView* const parent, int which) const;
202 
203 
209  void addActiveAddVisualisation(GUISUMOAbstractView* const parent, int which);
210 
211 
217  void removeActiveAddVisualisation(GUISUMOAbstractView* const parent, int which);
219 
221  int getNumPassengers() const;
222 
224  int getNumContainers() const;
225 
226 
227 
235  FXDECLARE(GUIBaseVehiclePopupMenu)
236  public:
243 
246 
248  long onCmdShowAllRoutes(FXObject*, FXSelector, void*);
250  long onCmdHideAllRoutes(FXObject*, FXSelector, void*);
252  long onCmdShowCurrentRoute(FXObject*, FXSelector, void*);
254  long onCmdHideCurrentRoute(FXObject*, FXSelector, void*);
256  long onCmdShowFutureRoute(FXObject*, FXSelector, void*);
258  long onCmdHideFutureRoute(FXObject*, FXSelector, void*);
260  long onCmdShowBestLanes(FXObject*, FXSelector, void*);
262  long onCmdHideBestLanes(FXObject*, FXSelector, void*);
264  long onCmdStartTrack(FXObject*, FXSelector, void*);
266  long onCmdStopTrack(FXObject*, FXSelector, void*);
268  long onCmdShowLFLinkItems(FXObject*, FXSelector, void*);
270  long onCmdHideLFLinkItems(FXObject*, FXSelector, void*);
272  long onCmdShowFoes(FXObject*, FXSelector, void*);
274  long onCmdRemoveObject(FXObject*, FXSelector, void*);
275 
276  protected:
278 
279  };
280 
281 
284 
300  };
301 
303  std::map<GUISUMOAbstractView*, int> myAdditionalVisualizations;
304 
305 
311  void drawRoute(const GUIVisualizationSettings& s, int routeNo, double darken, bool future = false) const;
312 
313 
315 
317  static bool setFunctionalColor(int activeScheme, const MSBaseVehicle* veh, RGBColor& col);
318 
319 protected:
322 
324  const Position& getSeatPosition(int personIndex) const;
325 
326  static void drawLinkItem(const Position& pos, SUMOTime arrivalTime, SUMOTime leaveTime, double exagerate);
327 
329  inline const MSVehicleType& getVType() const {
330  return myVehicle.getVehicleType();
331  }
332 
334  bool drawAction_drawVehicleAsPolyWithCarriagges(const GUIVisualizationSettings& s, bool asImage = false) const;
335 
337  void computeSeats(const Position& front, const Position& back, int maxSeats, double exaggeration, int& requiredSeats) const;
338 
339 
340 protected:
342  mutable FXMutex myLock;
343 
346 
347 private:
350 
352 
355 
356 };
357 
358 
359 #endif
360 
361 /****************************************************************************/
362 
GUIBaseVehicle::GUIBaseVehiclePopupMenu::GUIBaseVehiclePopupMenu
GUIBaseVehiclePopupMenu(GUIMainWindow &app, GUISUMOAbstractView &parent, GUIGlObject &o)
Constructor.
Definition: GUIBaseVehicle.cpp:95
MSVehicleType
The car-following model and parameter.
Definition: MSVehicleType.h:65
UNUSED_PARAMETER
#define UNUSED_PARAMETER(x)
Definition: StdDefs.h:31
GUIGlObject.h
GUIBaseVehicle::setFunctionalColor
static bool setFunctionalColor(int activeScheme, const MSBaseVehicle *veh, RGBColor &col)
sets the color according to the current scheme index and some vehicle function
Definition: GUIBaseVehicle.cpp:599
GUIParameterTableWindow
A window containing a gl-object's parameter.
Definition: GUIParameterTableWindow.h:62
GUIBaseVehicle::removedPopupMenu
void removedPopupMenu()
notify object about popup menu removal
Definition: GUIBaseVehicle.cpp:319
GUIBaseVehicle::getTypeParameterWindow
virtual GUIParameterTableWindow * getTypeParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent)=0
Returns an own type parameter window.
GUIBaseVehicle
A MSVehicle extended by some values for usage within the gui.
Definition: GUIBaseVehicle.h:61
GUIBaseVehicle::getNumPassengers
int getNumPassengers() const
return the number of passengers
Definition: GUIBaseVehicle.cpp:799
GUISUMOAbstractView
Definition: GUISUMOAbstractView.h:72
GUIBaseVehicle::drawRoute
void drawRoute(const GUIVisualizationSettings &s, int routeNo, double darken, bool future=false) const
Chooses the route to draw and draws it, darkening it as given.
Definition: GUIBaseVehicle.cpp:721
GUIBaseVehicle::getNumContainers
int getNumContainers() const
return the number of passengers
Definition: GUIBaseVehicle.cpp:808
GUIBaseVehicle::drawAction_drawVehicleAsPolyWithCarriagges
bool drawAction_drawVehicleAsPolyWithCarriagges(const GUIVisualizationSettings &s, bool asImage=false) const
draw vehicle body and return whether carriages are being drawn
Definition: GUIBaseVehicle.cpp:783
GUIBaseVehicle::getStopInfo
virtual std::string getStopInfo() const =0
retrieve information about the current stop state
GUIBaseVehicle::GUIBaseVehiclePopupMenu::onCmdHideAllRoutes
long onCmdHideAllRoutes(FXObject *, FXSelector, void *)
Called if all routes of the vehicle shall be hidden.
Definition: GUIBaseVehicle.cpp:114
GUIBaseVehicle::VO_DRAW_OUTSIDE_NETWORK
@ VO_DRAW_OUTSIDE_NETWORK
draw vehicle outside the road network
Definition: GUIBaseVehicle.h:297
GUIBaseVehicle::GUIBaseVehiclePopupMenu::onCmdHideFutureRoute
long onCmdHideFutureRoute(FXObject *, FXSelector, void *)
Called if the current route of the vehicle shall be hidden.
Definition: GUIBaseVehicle.cpp:148
GUIGLObjectPopupMenu.h
GUIBaseVehicle::setColor
RGBColor setColor(const GUIVisualizationSettings &s) const
sets the color according to the currente settings
Definition: GUIBaseVehicle.cpp:587
GUIBaseVehicle::GUIBaseVehiclePopupMenu::onCmdShowLFLinkItems
long onCmdShowLFLinkItems(FXObject *, FXSelector, void *)
Called if all routes of the vehicle shall be shown.
Definition: GUIBaseVehicle.cpp:190
GUIBaseVehicle::VO_SHOW_LFLINKITEMS
@ VO_SHOW_LFLINKITEMS
LFLinkItems.
Definition: GUIBaseVehicle.h:295
SUMOTime
long long int SUMOTime
Definition: SUMOTime.h:34
GeomHelper::naviDegree
static double naviDegree(const double angle)
Definition: GeomHelper.cpp:193
GUIBaseVehicle::GUIBaseVehiclePopupMenu::onCmdStopTrack
long onCmdStopTrack(FXObject *, FXSelector, void *)
Called if the current shall not be tracked any longer.
Definition: GUIBaseVehicle.cpp:182
GUIBaseVehicle::~GUIBaseVehicle
~GUIBaseVehicle()
destructor
Definition: GUIBaseVehicle.cpp:248
GUIBaseVehicle::getSeatPosition
const Position & getSeatPosition(int personIndex) const
returns the seat position for the person with the given index
Definition: GUIBaseVehicle.cpp:736
GUIBaseVehicle::getLastLaneChangeOffset
virtual double getLastLaneChangeOffset() const =0
Returns the time since the last lane change in seconds.
GUIBaseVehicle::mySeatPositions
PositionVector mySeatPositions
positions of seats in the vehicle (updated at every drawing step)
Definition: GUIBaseVehicle.h:345
GUIBaseVehicle::getVType
const MSVehicleType & getVType() const
A shortcut to myVehicle.myType.
Definition: GUIBaseVehicle.h:329
GUIBaseVehicle::hasActiveAddVisualisation
bool hasActiveAddVisualisation(GUISUMOAbstractView *const parent, int which) const
Returns whether the named feature is enabled in the given view.
Definition: GUIBaseVehicle.cpp:695
PositionVector
A list of positions.
Definition: PositionVector.h:45
GUIGLObjectPopupMenu
The popup menu of a globject.
Definition: GUIGLObjectPopupMenu.h:47
GUIBaseVehicle::GUIBaseVehiclePopupMenu::onCmdShowAllRoutes
long onCmdShowAllRoutes(FXObject *, FXSelector, void *)
Called if all routes of the vehicle shall be shown.
Definition: GUIBaseVehicle.cpp:105
GUIBaseVehicle::GUIBaseVehiclePopupMenu::onCmdShowFutureRoute
long onCmdShowFutureRoute(FXObject *, FXSelector, void *)
Called if the current route of the vehicle shall be shown.
Definition: GUIBaseVehicle.cpp:139
MSRoute
Definition: MSRoute.h:66
GUIBaseVehicle::drawRouteHelper
virtual void drawRouteHelper(const GUIVisualizationSettings &s, const MSRoute &r, bool future, const RGBColor &col) const =0
Draws the route.
RGBColor.h
GUIBaseVehicle::GUIBaseVehiclePopupMenu::onCmdHideBestLanes
long onCmdHideBestLanes(FXObject *, FXSelector, void *)
Called if the vehicle's best lanes shall be hidden.
Definition: GUIBaseVehicle.cpp:165
GUIBaseVehicle::GUIBaseVehiclePopupMenu::onCmdRemoveObject
long onCmdRemoveObject(FXObject *, FXSelector, void *)
Called when removing the vehicle.
Definition: GUIBaseVehicle.cpp:215
MSVehicle.h
GUIBaseVehicle::VO_SHOW_ALL_ROUTES
@ VO_SHOW_ALL_ROUTES
show all vehicle's routes
Definition: GUIBaseVehicle.h:293
GUIBaseVehicle::drawBestLanes
virtual void drawBestLanes() const
Draws the vehicle's best lanes.
Definition: GUIBaseVehicle.h:137
GUIBaseVehicle::GUIBaseVehiclePopupMenu
Definition: GUIBaseVehicle.h:234
GUIBaseVehicle::drawOnPos
void drawOnPos(const GUIVisualizationSettings &s, const Position &pos, const double angle) const
Draws the object on the specified position with the specified angle.
Definition: GUIBaseVehicle.cpp:339
RGBColor
Definition: RGBColor.h:39
GUIBaseVehicle::drawAction_drawVehicleBlueLight
virtual void drawAction_drawVehicleBlueLight() const
Definition: GUIBaseVehicle.h:138
GUIBaseVehicle::removeActiveAddVisualisation
void removeActiveAddVisualisation(GUISUMOAbstractView *const parent, int which)
Adds the named visualisation feature to the given view.
Definition: GUIBaseVehicle.cpp:711
GUIBaseVehicle::GUIBaseVehiclePopupMenu::onCmdStartTrack
long onCmdStartTrack(FXObject *, FXSelector, void *)
Called if the vehicle shall be tracked.
Definition: GUIBaseVehicle.cpp:173
GUIBaseVehicle::selectBlockingFoes
virtual void selectBlockingFoes() const =0
adds the blocking foes to the current selection
GUIBaseVehicle::GUIBaseVehiclePopupMenu::onCmdHideLFLinkItems
long onCmdHideLFLinkItems(FXObject *, FXSelector, void *)
Called if all routes of the vehicle shall be hidden.
Definition: GUIBaseVehicle.cpp:199
GUIBaseVehicle::computeSeats
void computeSeats(const Position &front, const Position &back, int maxSeats, double exaggeration, int &requiredSeats) const
add seats to mySeatPositions and update requiredSeats
Definition: GUIBaseVehicle.cpp:817
GUIBaseVehicle::getColorValue
virtual double getColorValue(const GUIVisualizationSettings &s, int activeScheme) const =0
gets the color value according to the current scheme index
Boundary
A class that stores a 2D geometrical boundary.
Definition: Boundary.h:41
FOX_CONSTRUCTOR
#define FOX_CONSTRUCTOR(classname)
Definition: config.h:13
GUIBaseVehicle::myAdditionalVisualizations
std::map< GUISUMOAbstractView *, int > myAdditionalVisualizations
Enabled visualisations, per view.
Definition: GUIBaseVehicle.h:303
Position
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:38
GUIBaseVehicle::drawAction_drawLinkItems
virtual void drawAction_drawLinkItems(const GUIVisualizationSettings &) const
Definition: GUIBaseVehicle.h:134
GUIBaseVehicle::GUIBaseVehicle
GUIBaseVehicle(MSBaseVehicle &vehicle)
Definition: GUIBaseVehicle.cpp:237
GUIBaseVehicle::myLock
FXMutex myLock
The mutex used to avoid concurrent updates of the vehicle buffer.
Definition: GUIBaseVehicle.h:342
GUIGlObject
Definition: GUIGlObject.h:65
MSBaseVehicle::getVehicleType
const MSVehicleType & getVehicleType() const
Returns the vehicle's type definition.
Definition: MSBaseVehicle.h:123
GUIBaseVehicle::VO_SHOW_ROUTE
@ VO_SHOW_ROUTE
show vehicle's current route
Definition: GUIBaseVehicle.h:291
GUIBaseVehicle::myVehicle
MSBaseVehicle & myVehicle
The vehicle to which all calls should be delegated.
Definition: GUIBaseVehicle.h:349
GUIBaseVehicle::drawAction_drawCarriageClass
virtual void drawAction_drawCarriageClass(const GUIVisualizationSettings &s, bool asImage) const =0
draws the given guiShape with distinct carriages/modules
GUIBaseVehicle::getNaviDegree
double getNaviDegree() const
return the current angle in navigational degrees
Definition: GUIBaseVehicle.h:85
GUIBaseVehicle::GUIBaseVehiclePopupMenu::onCmdShowBestLanes
long onCmdShowBestLanes(FXObject *, FXSelector, void *)
Called if the vehicle's best lanes shall be shown.
Definition: GUIBaseVehicle.cpp:156
GUIBaseVehicle::VO_SHOW_BEST_LANES
@ VO_SHOW_BEST_LANES
show vehicle's best lanes
Definition: GUIBaseVehicle.h:289
GUIBaseVehicle::getCenteringBoundary
Boundary getCenteringBoundary() const
Returns the boundary to which the view shall be centered in order to show the object.
Definition: GUIBaseVehicle.cpp:324
GUIBaseVehicle::getPosition
virtual Position getPosition(const double offset=0) const =0
Return current position (x/y, cartesian)
GUIBaseVehicle::VO_SHOW_FUTURE_ROUTE
@ VO_SHOW_FUTURE_ROUTE
show vehicle's current continued from the current position
Definition: GUIBaseVehicle.h:299
GUIBaseVehicle::getAngle
virtual double getAngle() const =0
Returns the vehicle's direction in radians.
GUIBaseVehicle::getOptionalName
const std::string getOptionalName() const
Returns the value for generic parameter 'name' or ''.
Definition: GUIBaseVehicle.cpp:333
GUIMainWindow
Definition: GUIMainWindow.h:46
GUIBaseVehicle::VisualisationFeatures
VisualisationFeatures
Additional visualisation feature ids.
Definition: GUIBaseVehicle.h:287
MSDevice_Vehroutes
A device which collects info on the vehicle trip (mainly on departure and arrival)
Definition: MSDevice_Vehroutes.h:52
GUIBaseVehicle::drawAction_drawPersonsAndContainers
virtual void drawAction_drawPersonsAndContainers(const GUIVisualizationSettings &s) const
Definition: GUIBaseVehicle.cpp:743
GUIBaseVehicle::getPopUpMenu
GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own popup-menu.
Definition: GUIBaseVehicle.cpp:265
GUIPropertySchemeStorage.h
MSBaseVehicle
The base class for microscopic and mesoscopic vehicles.
Definition: MSBaseVehicle.h:51
GUIBaseVehicle::drawLinkItem
static void drawLinkItem(const Position &pos, SUMOTime arrivalTime, SUMOTime leaveTime, double exagerate)
Definition: GUIBaseVehicle.cpp:577
GUIBaseVehicle::drawAction_drawVehicleBrakeLight
virtual void drawAction_drawVehicleBrakeLight(double length, bool onlyOne=false) const
Definition: GUIBaseVehicle.h:130
config.h
GUIBaseVehicle::myPopup
GUIGLObjectPopupMenu * myPopup
current popup (to clean up in destructor). GUIBaseVehicle is not responsible for removal
Definition: GUIBaseVehicle.h:354
GUIBaseVehicle::GUIBaseVehiclePopupMenu::onCmdHideCurrentRoute
long onCmdHideCurrentRoute(FXObject *, FXSelector, void *)
Called if the current route of the vehicle shall be hidden.
Definition: GUIBaseVehicle.cpp:131
GeomHelper.h
GUIBaseVehicle::drawGLAdditional
virtual void drawGLAdditional(GUISUMOAbstractView *const parent, const GUIVisualizationSettings &s) const
Draws additionally triggered visualisations.
Definition: GUIBaseVehicle.cpp:541
GUIBaseVehicle::drawAction_drawVehicleBlinker
virtual void drawAction_drawVehicleBlinker(double) const
Definition: GUIBaseVehicle.h:129
GUIBaseVehicle::drawGL
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
Definition: GUIBaseVehicle.cpp:535
GUIBaseVehicle::getParameterWindow
virtual GUIParameterTableWindow * getParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent)=0
Returns an own parameter window.
GUIBaseVehicle::myRoutes
MSDevice_Vehroutes * myRoutes
Definition: GUIBaseVehicle.h:351
GUIVisualizationSettings
Stores the information about how to visualize structures.
Definition: GUIVisualizationSettings.h:345
PositionVector.h
GUIBaseVehicle::GUIBaseVehiclePopupMenu::~GUIBaseVehiclePopupMenu
~GUIBaseVehiclePopupMenu()
Destructor.
Definition: GUIBaseVehicle.cpp:101
GUIBaseVehicle::GUIBaseVehiclePopupMenu::onCmdShowCurrentRoute
long onCmdShowCurrentRoute(FXObject *, FXSelector, void *)
Called if the current route of the vehicle shall be shown.
Definition: GUIBaseVehicle.cpp:122
GUIBaseVehicle::GUIBaseVehiclePopupMenu::onCmdShowFoes
long onCmdShowFoes(FXObject *, FXSelector, void *)
Called when show a vehicles foes.
Definition: GUIBaseVehicle.cpp:206
GUIBaseVehicle::addActiveAddVisualisation
void addActiveAddVisualisation(GUISUMOAbstractView *const parent, int which)
Adds the named visualisation feature to the given view.
Definition: GUIBaseVehicle.cpp:701