LCOV - code coverage report
Current view: top level - src/guisim - GUIVehicle.h (source / functions) Hit Total Coverage
Test: lcov.info Lines: 4 8 50.0 %
Date: 2024-04-27 15:34:54 Functions: 2 4 50.0 %

          Line data    Source code
       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             : /****************************************************************************/
      14             : /// @file    GUIVehicle.h
      15             : /// @author  Daniel Krajzewicz
      16             : /// @author  Jakob Erdmann
      17             : /// @author  Sascha Krieg
      18             : /// @author  Michael Behrisch
      19             : /// @date    Sept 2002
      20             : ///
      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 <string>
      28             : #include <utils/geom/PositionVector.h>
      29             : #include <microsim/MSVehicle.h>
      30             : #include "GUIBaseVehicle.h"
      31             : 
      32             : 
      33             : // ===========================================================================
      34             : // class declarations
      35             : // ===========================================================================
      36             : class GUISUMOAbstractView;
      37             : 
      38             : 
      39             : // ===========================================================================
      40             : // class definitions
      41             : // ===========================================================================
      42             : /**
      43             :  * @class GUIVehicle
      44             :  * @brief A MSVehicle extended by some values for usage within the gui
      45             :  *
      46             :  * A visualisable MSVehicle. Extended by the possibility to retrieve names
      47             :  * of all available vehicles (static) and the possibility to retrieve the
      48             :  * color of the vehicle which is available in different forms allowing an
      49             :  * easier recognition of done actions such as lane changing.
      50             :  */
      51             : class GUIVehicle : public MSVehicle, public GUIBaseVehicle {
      52             : public:
      53             :     /** @brief Constructor
      54             :      * @param[in] pars The vehicle description
      55             :      * @param[in] route The vehicle's route
      56             :      * @param[in] type The vehicle's type
      57             :      * @param[in] speedFactor The factor for driven lane's speed limits
      58             :      * @exception ProcessError If a value is wrong
      59             :      */
      60             :     GUIVehicle(SUMOVehicleParameter* pars, ConstMSRoutePtr route,
      61             :                MSVehicleType* type, const double speedFactor);
      62             : 
      63             : 
      64             :     /// @brief destructor
      65             :     ~GUIVehicle();
      66             : 
      67             :     /** @brief Return current position (x/y, cartesian)
      68             :      *
      69             :      * @note implementation of abstract method does not work otherwise
      70             :      */
      71   120248388 :     Position getPosition(const double offset = 0) const {
      72   120248388 :         return MSVehicle::getPosition(offset);
      73             :     }
      74             : 
      75             :     Position getVisualPosition(bool s2, const double offset = 0) const;
      76             : 
      77             :     /** @brief Return current angle
      78             :      *
      79             :      * @note implementation of abstract method does not work otherwise
      80             :      */
      81    12007925 :     double getAngle() const {
      82    12007925 :         return MSVehicle::getAngle();
      83             :     }
      84             : 
      85             :     /** @brief Returns the vehicle's direction in radians taking into account
      86             :      * secondary shape
      87             :      * @return The vehicle's current angle
      88             :      */
      89             :     double getVisualAngle(bool s2) const;
      90             : 
      91             :     /** @brief Draws the route
      92             :      * @param[in] r The route to draw
      93             :      */
      94             :     void drawRouteHelper(const GUIVisualizationSettings& s, ConstMSRoutePtr r, bool future, bool noLoop, const RGBColor& col) const;
      95             : 
      96             :     void drawAction_drawVehicleBlinker(double length) const;
      97             :     void drawAction_drawVehicleBrakeLight(double length, bool onlyOne = false) const;
      98             :     void drawAction_drawLinkItems(const GUIVisualizationSettings& s) const;
      99             :     void drawAction_drawVehicleBlueLight() const;
     100             : 
     101             :     /** @brief Returns the time since the last lane change in seconds
     102             :      * @see MSVehicle::myLastLaneChangeOffset
     103             :      * @return The time since the last lane change in seconds
     104             :      */
     105             :     double getLastLaneChangeOffset() const;
     106             : 
     107             : 
     108             :     /** @brief Draws the vehicle's best lanes
     109             :      */
     110             :     void drawBestLanes() const;
     111             :     /// @}
     112             : 
     113             :     /// @brief adds the blocking foes to the current selection
     114             :     void selectBlockingFoes() const;
     115             : 
     116             :     /// @brief gets the color value according to the current scheme index
     117             :     double getColorValue(const GUIVisualizationSettings& s, int activeScheme) const;
     118             : 
     119             :     /** @brief Returns an own parameter window
     120             :      *
     121             :      * @param[in] app The application needed to build the parameter window
     122             :      * @param[in] parent The parent window needed to build the parameter window
     123             :      * @return The built parameter window
     124             :      * @see GUIGlObject::getParameterWindow
     125             :      */
     126             :     GUIParameterTableWindow* getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView& parent);
     127             : 
     128             :     /** @brief Returns an own type parameter window
     129             :      *
     130             :      * @param[in] app The application needed to build the parameter window
     131             :      * @param[in] parent The parent window needed to build the parameter window
     132             :      * @return The built parameter window
     133             :      */
     134             :     GUIParameterTableWindow* getTypeParameterWindow(GUIMainWindow& app, GUISUMOAbstractView& parent);
     135             : 
     136             :     /// @brief whether this vehicle is selected in the GUI
     137             :     bool isSelected() const;
     138             : 
     139             :     /// @brief return right vehicle side on current edge (without argument)
     140           0 :     double getRightSideOnEdge2() const {
     141           0 :         return getRightSideOnEdge();
     142             :     }
     143             :     /// @brief return left vehicle side on current edge
     144           0 :     double getLeftSideOnEdge() const {
     145           0 :         return getRightSideOnEdge() + getVehicleType().getWidth();
     146             :     }
     147             : 
     148             :     /// @brief return the righmost sublane on the edge occupied by the vehicle
     149             :     int getRightSublaneOnEdge() const;
     150             :     int getLeftSublaneOnEdge() const;
     151             : 
     152             :     /// @brief return the lanechange state
     153             :     std::string getLCStateRight() const;
     154             :     std::string getLCStateLeft() const;
     155             :     std::string getLCStateCenter() const;
     156             : 
     157             :     /// @brief return vehicle lane id
     158             :     std::string getLaneID() const;
     159             :     std::string getBackLaneIDs() const;
     160             :     std::string getShadowLaneID() const;
     161             :     std::string getTargetLaneID() const;
     162             : 
     163             :     /// @brief return the lane-change maneuver distance
     164             :     double getManeuverDist() const;
     165             :     /// @brief return the speed mode as bit string
     166             :     std::string getSpeedMode() const;
     167             :     /// @brief return the lane change mode as bit string
     168             :     std::string getLaneChangeMode() const;
     169             : 
     170             :     /// @brief return the current lateral alignment as string
     171             :     std::string getDynamicAlignment() const;
     172             : 
     173             :     /// @brief handle route to accomodate to given stop
     174             :     void rerouteDRTStop(MSStoppingPlace* busStop);
     175             : 
     176             : protected:
     177             :     /// @brief register vehicle for drawing while outside the network
     178             :     void drawOutsideNetwork(bool add);
     179             : 
     180             : private:
     181             : 
     182             :     /* @brief draw train with individual carriages. The number of carriages is
     183             :      * determined from defaultLength of carriages and vehicle length
     184             :      * passengerSeats are computed beginning at firstPassengerCarriage */
     185             :     void drawAction_drawCarriageClass(const GUIVisualizationSettings& s, bool asImage) const;
     186             : 
     187             :     /// @brief retrieve information about the current stop state
     188             :     std::string getStopInfo() const;
     189             : 
     190             : };

Generated by: LCOV version 1.14