Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
GUIBaseVehicle.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2001-2024 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
21// A MSVehicle extended by some values for usage within the gui
22/****************************************************************************/
23#pragma once
24#include <config.h>
25
26#include <vector>
27#include <set>
28#include <string>
36#include <microsim/MSVehicle.h>
37
38
39// ===========================================================================
40// class declarations
41// ===========================================================================
45
46
47// ===========================================================================
48// class definitions
49// ===========================================================================
60public:
61
63
66
67 struct Seat {
69
70 Seat(const Position& _pos, double _angle):
71 pos(_pos), angle(_angle) {}
72
74 double angle;
75 };
76 typedef std::vector<Seat> Seats;
77
85 virtual Position getPosition(const double offset = 0) const = 0;
86
91 virtual Position getVisualPosition(bool s2, const double offset = 0) const = 0;
92
96 virtual double getAngle() const = 0;
97
102 virtual double getVisualAngle(bool s2) const = 0;
103
105 double getNaviDegree() const {
107 }
108
110 virtual double getColorValue(const GUIVisualizationSettings& s, int activeScheme) const = 0;
111
113 virtual void drawAction_drawCarriageClass(const GUIVisualizationSettings& s, bool asImage) const = 0;
114
119 virtual double getLastLaneChangeOffset() const = 0;
120
124 virtual void drawRouteHelper(const GUIVisualizationSettings& s, ConstMSRoutePtr r, bool future, bool noLoop, const RGBColor& col) const = 0;
125
127 virtual std::string getStopInfo() const = 0;
128
130 virtual void selectBlockingFoes() const = 0;
131
140
148
149 virtual void drawAction_drawVehicleBlinker(double /*length*/) const {}
150 virtual void drawAction_drawVehicleBrakeLight(double length, bool onlyOne = false) const {
151 UNUSED_PARAMETER(length);
152 UNUSED_PARAMETER(onlyOne);
153 }
154 virtual void drawAction_drawLinkItems(const GUIVisualizationSettings& /*s*/) const {}
157 virtual void drawBestLanes() const {};
158 virtual void drawAction_drawVehicleBlueLight() const {}
159
160
161
162
163
165
166
175
177 void removedPopupMenu();
178
180 double getExaggeration(const GUIVisualizationSettings& s) const;
181
187 virtual Boundary getCenteringBoundary() const;
188
190 const std::string getOptionalName() const;
191
197 void drawOnPos(const GUIVisualizationSettings& s, const Position& pos, const double angle) const;
198
199
204 void drawGL(const GUIVisualizationSettings& s) const;
205
206
211 virtual void drawGLAdditional(GUISUMOAbstractView* const parent, const GUIVisualizationSettings& s) const;
213
214
215
218
224 bool hasActiveAddVisualisation(GUISUMOAbstractView* const parent, int which) const;
225
226
232 void addActiveAddVisualisation(GUISUMOAbstractView* const parent, int which);
233
234
240 void removeActiveAddVisualisation(GUISUMOAbstractView* const parent, int which);
242
244 int getNumPassengers() const;
245
247 int getNumContainers() const;
248
250 std::string getDeviceDescription();
251
259 FXDECLARE(GUIBaseVehiclePopupMenu)
260 public:
267
270
272 long onCmdShowAllRoutes(FXObject*, FXSelector, void*);
274 long onCmdHideAllRoutes(FXObject*, FXSelector, void*);
276 long onCmdShowCurrentRoute(FXObject*, FXSelector, void*);
278 long onCmdHideCurrentRoute(FXObject*, FXSelector, void*);
280 long onCmdShowFutureRoute(FXObject*, FXSelector, void*);
282 long onCmdHideFutureRoute(FXObject*, FXSelector, void*);
284 long onCmdShowRouteNoLoops(FXObject*, FXSelector, void*);
286 long onCmdHideRouteNoLoops(FXObject*, FXSelector, void*);
288 long onCmdShowBestLanes(FXObject*, FXSelector, void*);
290 long onCmdHideBestLanes(FXObject*, FXSelector, void*);
292 long onCmdStartTrack(FXObject*, FXSelector, void*);
294 long onCmdStopTrack(FXObject*, FXSelector, void*);
296 long onCmdShowLFLinkItems(FXObject*, FXSelector, void*);
298 long onCmdHideLFLinkItems(FXObject*, FXSelector, void*);
300 long onCmdShowFoes(FXObject*, FXSelector, void*);
302 long onCmdSelectTransported(FXObject*, FXSelector, void*);
304 long onCmdRemoveObject(FXObject*, FXSelector, void*);
306 long onCmdToggleStop(FXObject*, FXSelector, void*);
307
308 protected:
309 FOX_CONSTRUCTOR(GUIBaseVehiclePopupMenu)
310
311 };
312
313
316
337
339 std::map<GUISUMOAbstractView*, int> myAdditionalVisualizations;
340
341
347 void drawRoute(const GUIVisualizationSettings& s, int routeNo, double darken, bool future = false, bool noLoop = false) const;
348
349 void drawStopLabels(const GUIVisualizationSettings& s, bool noLoop, const RGBColor& col) const;
350
351 void drawParkingInfo(const GUIVisualizationSettings& s) const;
352
353 void drawChargingInfo(const GUIVisualizationSettings& s) const;
355
357 return myVehicle;
358 }
359
361 double getScaleValue(const GUIVisualizationSettings& s, int activeScheme) const;
362
364 static bool setFunctionalColor(int activeScheme, const MSBaseVehicle* veh, RGBColor& col);
365
366protected:
367
370
372 const Seat& getSeatPosition(int personIndex) const;
373 const Seat& getContainerPosition(int containerIndex) const;
374
375 static void drawLinkItem(const Position& pos, SUMOTime arrivalTime, SUMOTime leaveTime, double exagerate);
376
378 inline const MSVehicleType& getVType() const {
379 return myVehicle.getVehicleType();
380 }
381
383 bool drawAction_drawVehicleAsPolyWithCarriagges(const GUIVisualizationSettings& s, double scaledLength, bool asImage = false) const;
384
386 void computeSeats(const Position& front, const Position& back, double seatOffset, int maxSeats, double exaggeration, int& requiredSeats, Seats& into, double extraOffset = 0) const;
387
389 bool drawReversed(const GUIVisualizationSettings& s) const;
390
391
392protected:
394 mutable FXMutex myLock;
395
399
400private:
403
405
408
409};
long long int SUMOTime
Definition GUI.h:36
std::shared_ptr< const MSRoute > ConstMSRoutePtr
Definition Route.h:32
#define UNUSED_PARAMETER(x)
Definition StdDefs.h:30
A class that stores a 2D geometrical boundary.
Definition Boundary.h:39
long onCmdHideFutureRoute(FXObject *, FXSelector, void *)
Called if the current route of the vehicle shall be hidden.
long onCmdStartTrack(FXObject *, FXSelector, void *)
Called if the vehicle shall be tracked.
long onCmdHideBestLanes(FXObject *, FXSelector, void *)
Called if the vehicle's best lanes shall be hidden.
long onCmdHideCurrentRoute(FXObject *, FXSelector, void *)
Called if the current route of the vehicle shall be hidden.
long onCmdShowBestLanes(FXObject *, FXSelector, void *)
Called if the vehicle's best lanes shall be shown.
long onCmdShowRouteNoLoops(FXObject *, FXSelector, void *)
Called if the current route of the vehicle shall be shown.
long onCmdShowLFLinkItems(FXObject *, FXSelector, void *)
Called if all routes of the vehicle shall be shown.
long onCmdShowFoes(FXObject *, FXSelector, void *)
Called to show (select) a vehicles foes.
long onCmdHideRouteNoLoops(FXObject *, FXSelector, void *)
Called if the current route of the vehicle shall be hidden.
long onCmdShowFutureRoute(FXObject *, FXSelector, void *)
Called if the current route of the vehicle shall be shown.
long onCmdShowAllRoutes(FXObject *, FXSelector, void *)
Called if all routes of the vehicle shall be shown.
long onCmdToggleStop(FXObject *, FXSelector, void *)
Called when toggling stop state.
long onCmdStopTrack(FXObject *, FXSelector, void *)
Called if the current shall not be tracked any longer.
long onCmdSelectTransported(FXObject *, FXSelector, void *)
Called to select all riding persons and containers.
long onCmdRemoveObject(FXObject *, FXSelector, void *)
Called when removing the vehicle.
long onCmdHideAllRoutes(FXObject *, FXSelector, void *)
Called if all routes of the vehicle shall be hidden.
long onCmdHideLFLinkItems(FXObject *, FXSelector, void *)
Called if all routes of the vehicle shall be hidden.
long onCmdShowCurrentRoute(FXObject *, FXSelector, void *)
Called if the current route of the vehicle shall be shown.
A MSVehicle extended by some values for usage within the gui.
const Seat & getContainerPosition(int containerIndex) const
virtual GUIParameterTableWindow * getTypeParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent)=0
Returns an own type parameter window.
static bool setFunctionalColor(int activeScheme, const MSBaseVehicle *veh, RGBColor &col)
sets the color according to the current scheme index and some vehicle function
const std::string getOptionalName() const
Returns the value for generic parameter 'name' or ''.
virtual void drawAction_drawLinkItems(const GUIVisualizationSettings &) const
const Seat & getSeatPosition(int personIndex) const
returns the seat position for the person with the given index
RGBColor setColor(const GUIVisualizationSettings &s) const
sets the color according to the current settings
int getNumContainers() const
return the number of passengers
void drawOnPos(const GUIVisualizationSettings &s, const Position &pos, const double angle) const
Draws the object on the specified position with the specified angle.
GUIGLObjectPopupMenu * myPopup
current popup (to clean up in destructor). GUIBaseVehicle is not responsible for removal
virtual double getLastLaneChangeOffset() const =0
Returns the time since the last lane change in seconds.
void drawParkingInfo(const GUIVisualizationSettings &s) const
MSDevice_Vehroutes * myRoutes
virtual void drawAction_drawPersonsAndContainers(const GUIVisualizationSettings &s) const
bool hasActiveAddVisualisation(GUISUMOAbstractView *const parent, int which) const
Returns whether the named feature is enabled in the given view.
virtual void drawRouteHelper(const GUIVisualizationSettings &s, ConstMSRoutePtr r, bool future, bool noLoop, const RGBColor &col) const =0
Draws the route.
void removeActiveAddVisualisation(GUISUMOAbstractView *const parent, int which)
Adds the named visualisation feature to the given view.
void drawRoute(const GUIVisualizationSettings &s, int routeNo, double darken, bool future=false, bool noLoop=false) const
Chooses the route to draw and draws it, darkening it as given.
virtual Position getVisualPosition(bool s2, const double offset=0) const =0
Return current position taking into account secondary shape.
std::vector< Seat > Seats
MSBaseVehicle & myVehicle
The vehicle to which all calls should be delegated.
virtual void drawAction_drawVehicleBlinker(double) const
void removedPopupMenu()
notify object about popup menu removal
virtual GUIParameterTableWindow * getParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent)=0
Returns an own parameter window.
void addActiveAddVisualisation(GUISUMOAbstractView *const parent, int which)
Adds the named visualisation feature to the given view.
static void drawLinkItem(const Position &pos, SUMOTime arrivalTime, SUMOTime leaveTime, double exagerate)
double getScaleValue(const GUIVisualizationSettings &s, int activeScheme) const
gets the size multiplier value according to the current scheme index
virtual void drawBestLanes() const
Draws the vehicle's best lanes.
GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own popup-menu.
void drawChargingInfo(const GUIVisualizationSettings &s) const
virtual Boundary getCenteringBoundary() const
Returns the boundary to which the view shall be centered in order to show the object.
VisualisationFeatures
Additional visualisation feature ids.
@ VO_SHOW_LFLINKITEMS
LFLinkItems.
@ VO_SHOW_ALL_ROUTES
show all vehicle's routes
@ VO_TRACK
track the vehicle (only needed for cleaning up)
@ VO_SHOW_ROUTE_NOLOOP
show vehicle's routes without loops
@ VO_DRAW_OUTSIDE_NETWORK
draw vehicle outside the road network
@ VO_SHOW_FUTURE_ROUTE
show vehicle's current continued from the current position
@ VO_SHOW_ROUTE
show vehicle's current route
@ VO_SHOW_BEST_LANES
show vehicle's best lanes
virtual std::string getStopInfo() const =0
retrieve information about the current stop state
virtual void drawAction_drawCarriageClass(const GUIVisualizationSettings &s, bool asImage) const =0
draws the given guiShape with distinct carriages/modules
virtual void drawGLAdditional(GUISUMOAbstractView *const parent, const GUIVisualizationSettings &s) const
Draws additionally triggered visualisations.
virtual double getAngle() const =0
Returns the vehicle's direction in radians.
bool drawReversed(const GUIVisualizationSettings &s) const
whether to reverse trains in their reversed state
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
FXMutex myLock
The mutex used to avoid concurrent updates of the vehicle buffer.
double getNaviDegree() const
return the current angle in navigational degrees
virtual void drawAction_drawVehicleBrakeLight(double length, bool onlyOne=false) const
void computeSeats(const Position &front, const Position &back, double seatOffset, int maxSeats, double exaggeration, int &requiredSeats, Seats &into, double extraOffset=0) const
add seats to mySeatPositions and update requiredSeats
virtual double getColorValue(const GUIVisualizationSettings &s, int activeScheme) const =0
gets the color value according to the current scheme index
int getNumPassengers() const
return the number of passengers
bool drawAction_drawVehicleAsPolyWithCarriagges(const GUIVisualizationSettings &s, double scaledLength, bool asImage=false) const
draw vehicle body and return whether carriages are being drawn
virtual Position getPosition(const double offset=0) const =0
Return current position (x/y, cartesian)
~GUIBaseVehicle()
destructor
double getExaggeration(const GUIVisualizationSettings &s) const
return exaggeration associated with this GLObject
virtual void drawAction_drawVehicleBlueLight() const
std::map< GUISUMOAbstractView *, int > myAdditionalVisualizations
Enabled visualisations, per view.
virtual void selectBlockingFoes() const =0
adds the blocking foes to the current selection
void drawStopLabels(const GUIVisualizationSettings &s, bool noLoop, const RGBColor &col) const
Seats mySeatPositions
positions of seats in the vehicle (updated at every drawing step)
const MSBaseVehicle & getVehicle()
std::string getDeviceDescription()
lists equipped device (types) for the current vehicle
virtual double getVisualAngle(bool s2) const =0
Returns the vehicle's direction in radians taking into account secondary shape.
const MSVehicleType & getVType() const
A shortcut to myVehicle.myType.
The popup menu of a globject.
A window containing a gl-object's parameter.
Stores the information about how to visualize structures.
static double naviDegree(const double angle)
The base class for microscopic and mesoscopic vehicles.
const MSVehicleType & getVehicleType() const
Returns the vehicle's type definition.
A device which collects info on the vehicle trip (mainly on departure and arrival)
The car-following model and parameter.
A point in 2D or 3D with translation and scaling methods.
Definition Position.h:37
Seat(const Position &_pos, double _angle)