LCOV - code coverage report
Current view: top level - src/guisim - GUIE2Collector.h (source / functions) Coverage Total Hit
Test: lcov.info Lines: 0.0 % 3 0
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    GUIE2Collector.h
      15              : /// @author  Daniel Krajzewicz
      16              : /// @author  Jakob Erdmann
      17              : /// @author  Michael Behrisch
      18              : /// @date    Okt 2003
      19              : ///
      20              : // The gui-version of the MS_E2_ZS_Collector
      21              : /****************************************************************************/
      22              : #pragma once
      23              : #include <config.h>
      24              : 
      25              : #include <microsim/output/MSE2Collector.h>
      26              : #include "GUIDetectorWrapper.h"
      27              : 
      28              : 
      29              : // ===========================================================================
      30              : // class definitions
      31              : // ===========================================================================
      32              : /**
      33              :  * @class GUIE2Collector
      34              :  * @brief The gui-version of the MSE2Collector
      35              :  *
      36              :  * Allows the building of a wrapper (also declared herein) which draws the
      37              :  *  detector on the gl-canvas. Beside this, the method "amVisible" is
      38              :  *  overridden to signalise that this detector is not used for simulation-
      39              :  *  -internal reasons, but is placed over the simulation by the user.
      40              :  */
      41              : class GUIE2Collector : public MSE2Collector {
      42              : public:
      43              :     /** @brief Constructor with given end position and detector length
      44              :     *
      45              :     * @param[in] id The detector's unique id.
      46              :     * @param[in] usage Information how the detector is used
      47              :     * @param[in] lane The lane the detector ends
      48              :     * @param[in] startPos The start position on the lane the detector is placed at
      49              :     * @param[in] endPos The end position on the lane the detector is placed at
      50              :     * @param[in] length The length the detector has (heuristic lane selection is done if the continuation is not unique)
      51              :     * @param[in] haltingTimeThreshold The time a vehicle's speed must be below haltingSpeedThreshold to be assigned as jammed
      52              :     * @param[in] haltingSpeedThreshold The speed a vehicle's speed must be below to be assigned as jammed
      53              :     * @param[in] jamDistThreshold The distance between two vehicles in order to not count them to one jam
      54              :     * @param[in] vTypes Vehicle types, that the detector takes into account
      55              :     * @param[in] friendlyPositioning Whether positions should be corrected to "snap" on lane beginnings or ends if closer than POS_EPSILON
      56              :     * @param[in] showDetector Whether the detector should be visible in the GUI
      57              :     *
      58              :     * @note Exactly one of the arguments startPos, endPos and length should be invalid (i.e. equal to std::numeric_limits<double>::max()).
      59              :     *        If length is invalid, it is required that 0 <= startPos < endPos <= lane->length
      60              :     *        If endPos is invalid, the detector may span over several lanes downstream of the lane
      61              :     *        If pos is invalid, the detector may span over several lanes upstream of the lane
      62              :     */
      63              :     GUIE2Collector(const std::string& id, DetectorUsage usage,
      64              :                    MSLane* lane, double startPos, double endPos, double detLength,
      65              :                    SUMOTime haltingTimeThreshold, double haltingSpeedThreshold, double jamDistThreshold,
      66              :                    const std::string name, const std::string& vTypes,
      67              :                    const std::string& nextEdges,
      68              :                    int detectPersons, bool showDetector);
      69              : 
      70              : 
      71              :     /** @brief Constructor with a sequence of lanes and given start and end position on the first and last lanes
      72              :     *
      73              :     * @param[in] id The detector's unique id.
      74              :     * @param[in] usage Information how the detector is used
      75              :     * @param[in] lanes A sequence of lanes the detector covers (must form a continuous piece)
      76              :     * @param[in] startPos The position of the detector start on the first lane the detector is placed at
      77              :     * @param[in] endPos The position of the detector end on the last lane the detector is placed at
      78              :     * @param[in] haltingTimeThreshold The time a vehicle's speed must be below haltingSpeedThreshold to be assigned as jammed
      79              :     * @param[in] haltingSpeedThreshold The speed a vehicle's speed must be below to be assigned as jammed
      80              :     * @param[in] jamDistThreshold The distance between two vehicles in order to not count them to one jam
      81              :     * @param[in] vTypes Vehicle types, that the detector takes into account
      82              :     * @param[in] friendlyPositioning Whether positions should be corrected to "snap" on lane beginnings or ends if closer than POS_EPSILON
      83              :     * @param[in] showDetector Whether the detector should be visible in the GUI
      84              :     */
      85              :     GUIE2Collector(const std::string& id, DetectorUsage usage,
      86              :                    std::vector<MSLane*> lanes, double startPos, double endPos,
      87              :                    SUMOTime haltingTimeThreshold, double haltingSpeedThreshold, double jamDistThreshold,
      88              :                    const std::string name, const std::string& vTypes,
      89              :                    const std::string& nextEdges,
      90              :                    int detectPersons, bool showDetector);
      91              : 
      92              : 
      93              :     /// @brief Destructor
      94              :     ~GUIE2Collector();
      95              : 
      96              : 
      97              :     /** @brief Returns the wrapper for this detector
      98              :      * @return The wrapper representing the detector
      99              :      * @see MyWrapper
     100              :      */
     101              :     virtual GUIDetectorWrapper* buildDetectorGUIRepresentation();
     102              : 
     103              :     /// @brief whether the induction loop shall be visible
     104              :     bool isVisible() const {
     105              :         return myShow;
     106              :     }
     107              : 
     108              :     /// @brief toggle visibility
     109            0 :     void setVisible(bool show) {
     110            0 :         myShow = show;
     111            0 :     }
     112              : 
     113              : 
     114              : private:
     115              :     /// @brief Whether the detector shall be drawn in the gui
     116              :     bool myShow;
     117              : 
     118              : public:
     119              :     /**
     120              :      * @class GUIE2Collector::MyWrapper
     121              :      * A GUIE2Collector-visualiser
     122              :      */
     123              :     class MyWrapper : public GUIDetectorWrapper {
     124              :     public:
     125              :         /// @brief Constructor
     126              :         MyWrapper(GUIE2Collector& detector);
     127              : 
     128              :         /// @brief Destrutor
     129              :         ~MyWrapper();
     130              : 
     131              :         /// @name inherited from GUIGlObject
     132              :         //@{
     133              : 
     134              :         /** @brief Returns an own parameter window
     135              :          *
     136              :          * @param[in] app The application needed to build the parameter window
     137              :          * @param[in] parent The parent window needed to build the parameter window
     138              :          * @return The built parameter window
     139              :          * @see GUIGlObject::getParameterWindow
     140              :          */
     141              :         GUIParameterTableWindow* getParameterWindow(GUIMainWindow& app, GUISUMOAbstractView& parent) override;
     142              : 
     143              :         /// @brief return exaggeration associated with this GLObject
     144              :         double getExaggeration(const GUIVisualizationSettings& s) const override;
     145              : 
     146              :         /** @brief Returns the boundary to which the view shall be centered in order to show the object
     147              :          *
     148              :          * @return The boundary the object is within
     149              :          * @see GUIGlObject::getCenteringBoundary
     150              :          */
     151              :         Boundary getCenteringBoundary() const override;
     152              : 
     153              :         /** @brief Draws the object
     154              :          * @param[in] s The settings for the current view (may influence drawing)
     155              :          * @see GUIGlObject::drawGL
     156              :          */
     157              :         void drawGL(const GUIVisualizationSettings& s) const override;
     158              :         //@}
     159              : 
     160              : 
     161              :         /// @brief Returns the detector itself
     162              :         GUIE2Collector& getDetector();
     163              : 
     164              :     protected:
     165              :         /// @brief whether this detector has an active virtual detector call
     166              :         bool haveOverride() const override;
     167              : 
     168              :         /// @brief toggle virtual detector call
     169              :         void toggleOverride() const override;
     170              : 
     171              :     private:
     172              :         /// @brief The wrapped detector
     173              :         GUIE2Collector& myDetector;
     174              : 
     175              :         /// @brief The detector's boundary
     176              :         Boundary myBoundary;
     177              : 
     178              :         /// @brief A sequence of positions in full-geometry mode
     179              :         PositionVector myFullGeometry;
     180              : 
     181              :         /// @brief A sequence of lengths in full-geometry mode
     182              :         std::vector<double> myShapeLengths;
     183              : 
     184              :         /// @brief A sequence of rotations in full-geometry mode
     185              :         std::vector<double> myShapeRotations;
     186              : 
     187              :     private:
     188              :         /// @brief Invalidated copy constructor.
     189              :         MyWrapper(const MyWrapper&);
     190              : 
     191              :         /// @brief Invalidated assignment operator.
     192              :         MyWrapper& operator=(const MyWrapper&);
     193              : 
     194              :     };
     195              : 
     196              : };
        

Generated by: LCOV version 2.0-1