LCOV - code coverage report
Current view: top level - src/guisim - GUIContainer.h (source / functions) Hit Total Coverage
Test: lcov.info Lines: 1 3 33.3 %
Date: 2024-04-27 15:34:54 Functions: 0 1 0.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    GUIContainer.h
      15             : /// @author  Melanie Weber
      16             : /// @author  Andreas Kendziorra
      17             : /// @date    Wed, 01.08.2014
      18             : ///
      19             : // A MSVehicle extended by some values for usage within the gui
      20             : /****************************************************************************/
      21             : #pragma once
      22             : #include <config.h>
      23             : 
      24             : #include <vector>
      25             : #include <set>
      26             : #include <string>
      27             : #include <utils/foxtools/fxheader.h>
      28             : #include <utils/gui/globjects/GUIGlObject.h>
      29             : #include <utils/common/RGBColor.h>
      30             : #include <microsim/transportables/MSTransportable.h>
      31             : #include <utils/gui/globjects/GUIGLObjectPopupMenu.h>
      32             : #include <utils/gui/settings/GUIPropertySchemeStorage.h>
      33             : #include "GUIBaseVehicle.h"
      34             : 
      35             : 
      36             : // ===========================================================================
      37             : // class declarations
      38             : // ===========================================================================
      39             : class GUISUMOAbstractView;
      40             : class GUIGLObjectPopupMenu;
      41             : class MSDevice_Vehroutes;
      42             : 
      43             : 
      44             : // ===========================================================================
      45             : // class definitions
      46             : // ===========================================================================
      47             : /**
      48             :  * @class GUIContainer
      49             :  */
      50             : class GUIContainer : public MSTransportable, public GUIGlObject {
      51             : public:
      52             :     /** @brief Constructor
      53             :      */
      54             :     GUIContainer(const SUMOVehicleParameter* pars, MSVehicleType* vtype, MSTransportable::MSTransportablePlan* plan);
      55             : 
      56             :     /// @brief destructor
      57             :     ~GUIContainer();
      58             : 
      59             :     /// @name inherited from GUIGlObject
      60             :     //@{
      61             : 
      62             :     /** @brief Returns an own popup-menu
      63             :      *
      64             :      * @param[in] app The application needed to build the popup-menu
      65             :      * @param[in] parent The parent window needed to build the popup-menu
      66             :      * @return The built popup-menu
      67             :      * @see GUIGlObject::getPopUpMenu
      68             :      */
      69             :     GUIGLObjectPopupMenu* getPopUpMenu(GUIMainWindow& app, GUISUMOAbstractView& parent) override;
      70             : 
      71             :     /** @brief Returns an own parameter window
      72             :      *
      73             :      * @param[in] app The application needed to build the parameter window
      74             :      * @param[in] parent The parent window needed to build the parameter window
      75             :      * @return The built parameter window
      76             :      * @see GUIGlObject::getParameterWindow
      77             :      */
      78             :     GUIParameterTableWindow* getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView& parent) override;
      79             : 
      80             :     /** @brief Returns an own type parameter window
      81             :      *
      82             :      * @param[in] app The application needed to build the parameter window
      83             :      * @param[in] parent The parent window needed to build the parameter window
      84             :      * @return The built parameter window
      85             :      */
      86             :     GUIParameterTableWindow* getTypeParameterWindow(GUIMainWindow& app, GUISUMOAbstractView& parent) override;
      87             : 
      88             :     /// @brief return exaggeration associated with this GLObject
      89             :     double getExaggeration(const GUIVisualizationSettings& s) const override;
      90             : 
      91             :     /** @brief Returns the boundary to which the view shall be centered in order to show the object
      92             :      *
      93             :      * @return The boundary the object is within
      94             :      * @see GUIGlObject::getCenteringBoundary
      95             :      */
      96             :     Boundary getCenteringBoundary() const override;
      97             : 
      98             :     /** @brief Draws the object
      99             :      * @param[in] s The settings for the current view (may influence drawing)
     100             :      * @see GUIGlObject::drawGL
     101             :      */
     102             :     void drawGL(const GUIVisualizationSettings& s) const override;
     103             : 
     104             :     /** @brief Draws additionally triggered visualisations
     105             :      * @param[in] parent The view
     106             :      * @param[in] s The settings for the current view (may influence drawing)
     107             :      */
     108             :     virtual void drawGLAdditional(GUISUMOAbstractView* const parent, const GUIVisualizationSettings& s) const override;
     109             :     //@}
     110             : 
     111             :     /* @brief set the position of a container while being transported by a vehicle
     112             :      * @note This must be called by the vehicle before the call to drawGl */
     113             :     void setPositionInVehicle(const GUIBaseVehicle::Seat& pos) {
     114        5826 :         myPositionInVehicle = pos;
     115             :     }
     116             : 
     117             :     /// @name inherited from MSContainer with added locking
     118             :     //@{
     119             : 
     120             :     /// @brief return the offset from the start of the current edge
     121             :     double getEdgePos() const override;
     122             : 
     123             :     /// @brief Return the movement directon on the edge
     124             :     int getDirection() const override;
     125             : 
     126             :     /// @brief return the Network coordinate of the container
     127             :     // @note overrides the base method and returns myPositionInVehicle while in driving stage
     128             :     Position getPosition() const override;
     129             : 
     130             :     /// @brief return the current angle of the container
     131             :     double getAngle() const override;
     132             : 
     133             :     /// @brief the time this container spent waiting in seconds
     134             :     double getWaitingSeconds() const override;
     135             : 
     136             :     /// @brief the current speed of the container
     137             :     double getSpeed() const override;
     138             : 
     139             :     //@}
     140             : 
     141             :     /// @brief whether this container is selected in the GUI
     142             :     bool isSelected() const override;
     143             : 
     144             :     /**
     145             :      * @class GUIContainerPopupMenu
     146             :      *
     147             :      * A popup-menu for vehicles. In comparison to the normal popup-menu, this one
     148             :      *  also allows to trigger further visualisations and to track the vehicle.
     149             :      */
     150             :     class GUIContainerPopupMenu : public GUIGLObjectPopupMenu {
     151           0 :         FXDECLARE(GUIContainerPopupMenu)
     152             :     public:
     153             :         /** @brief Constructor
     154             :          * @param[in] app The main window for instantiation of other windows
     155             :          * @param[in] parent The parent view for changing it
     156             :          * @param[in] o The object of interest
     157             :          */
     158             :         GUIContainerPopupMenu(GUIMainWindow& app, GUISUMOAbstractView& parent, GUIGlObject& o);
     159             : 
     160             :         /// @brief Destructor
     161             :         ~GUIContainerPopupMenu();
     162             : 
     163             :         /// @brief Called if the plan shall be shown
     164             :         long onCmdShowPlan(FXObject*, FXSelector, void*);
     165             :         /// @brief Called if the person shall be tracked
     166             :         long onCmdStartTrack(FXObject*, FXSelector, void*);
     167             :         /// @brief Called if the person shall not be tracked any longer
     168             :         long onCmdStopTrack(FXObject*, FXSelector, void*);
     169             : 
     170             :     protected:
     171             :         /// @brief default constructor needed by FOX
     172           0 :         FOX_CONSTRUCTOR(GUIContainerPopupMenu)
     173             : 
     174             :     };
     175             : 
     176             : 
     177             : 
     178             :     /// @brief Enabled visualisations, per view
     179             :     std::map<GUISUMOAbstractView*, int> myAdditionalVisualizations;
     180             : 
     181             : 
     182             : 
     183             : 
     184             : private:
     185             :     /// The mutex used to avoid concurrent updates of the vehicle buffer
     186             :     mutable FXMutex myLock;
     187             : 
     188             :     /// The position of a container while riding a vehicle
     189             :     GUIBaseVehicle::Seat myPositionInVehicle;
     190             : 
     191             :     /// @brief sets the color according to the currente settings
     192             :     void setColor(const GUIVisualizationSettings& s) const;
     193             : 
     194             :     /// @brief gets the color value according to the current scheme index
     195             :     double getColorValue(const GUIVisualizationSettings& s, int activeScheme) const override;
     196             : 
     197             :     /// @brief sets the color according to the current scheme index and some vehicle function
     198             :     bool setFunctionalColor(int activeScheme) const;
     199             : 
     200             :     /// @name drawing helper methods
     201             :     /// @{
     202             :     void drawAction_drawAsPoly(const GUIVisualizationSettings& s) const;
     203             :     void drawAction_drawAsImage(const GUIVisualizationSettings& s) const;
     204             :     /// @}
     205             : };

Generated by: LCOV version 1.14