LCOV - code coverage report
Current view: top level - src/guisim - GUIContainer.h (source / functions) Coverage Total Hit
Test: lcov.info Lines: 33.3 % 3 1
Test Date: 2024-11-22 15:46:21 Functions: 0.0 % 1 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         5850 :         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 2.0-1