LCOV - code coverage report
Current view: top level - src/utils/gui/settings - GUISettingsHandler.h (source / functions) Coverage Total Hit
Test: lcov.info Lines: 100.0 % 1 1
Test Date: 2024-11-21 15:56:26 Functions: - 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    GUISettingsHandler.h
      15              : /// @author  Michael Behrisch
      16              : /// @author  Daniel Krajzewicz
      17              : /// @author  Jakob Erdmann
      18              : /// @date    Fri, 24. Apr 2009
      19              : ///
      20              : // The handler for parsing gui settings from xml.
      21              : /****************************************************************************/
      22              : #pragma once
      23              : #include <config.h>
      24              : 
      25              : #include <utils/xml/SUMOSAXHandler.h>
      26              : #include <utils/distribution/RandomDistributor.h>
      27              : 
      28              : 
      29              : // ===========================================================================
      30              : // class declarations
      31              : // ===========================================================================
      32              : class GUISUMOAbstractView;
      33              : class Position;
      34              : 
      35              : 
      36              : // ===========================================================================
      37              : // class definitions
      38              : // ===========================================================================
      39              : /** @class GUISettingsHandler
      40              :  * @brief An XML-handler for visualisation schemes
      41              :  */
      42              : class GUISettingsHandler : public SUMOSAXHandler {
      43              : public:
      44              :     /** @brief Constructor
      45              :      * @param[in] file the file to parse
      46              :      */
      47              :     GUISettingsHandler(const std::string& content, bool isFile = true, bool netedit = false);
      48              : 
      49              : 
      50              :     /// @brief Destructor
      51              :     ~GUISettingsHandler();
      52              : 
      53              : 
      54              : 
      55              :     /// @name inherited from GenericSAXHandler
      56              :     //@{
      57              : 
      58              :     /** @brief Called on the opening of a tag
      59              :      * @param[in] element ID of the currently opened element
      60              :      * @param[in] attrs Attributes within the currently opened element
      61              :      * @exception ProcessError If something fails
      62              :      * @see GenericSAXHandler::myStartElement
      63              :      */
      64              :     void myStartElement(int element, const SUMOSAXAttributes& attrs);
      65              : 
      66              :     /** @brief Called when a closing tag occurs
      67              :      *
      68              :      * @param[in] element ID of the currently opened element
      69              :      * @exception ProcessError If something fails
      70              :      * @see GenericSAXHandler::myEndElement
      71              :      */
      72              :     void myEndElement(int element);
      73              :     //@}
      74              : 
      75              : 
      76              : 
      77              :     /** @brief Adds the parsed settings to the global list of settings
      78              :      * @return the names of the parsed settings
      79              :      */
      80              :     const std::vector<std::string>& addSettings(GUISUMOAbstractView* view = 0) const;
      81              : 
      82              : 
      83              :     /** @brief Sets the viewport which has been parsed
      84              :      * @param[in] parent the view for which the viewport has to be set
      85              :      */
      86              :     void applyViewport(GUISUMOAbstractView* view) const;
      87              : 
      88              : 
      89              :     /** @brief Makes a snapshot if it has been parsed
      90              :      * @param[in] parent the view which needs to be shot
      91              :      * @todo Please describe why the snapshots are only set if no other existed before (see code)
      92              :      */
      93              :     void setSnapshots(GUISUMOAbstractView* view) const;
      94              : 
      95              : 
      96              :     /** @brief Returns whether any decals have been parsed
      97              :      * @return whether decals have been parsed
      98              :      */
      99              :     bool hasDecals() const;
     100              : 
     101              : 
     102              :     /** @brief Returns the parsed decals
     103              :      * @return the parsed decals
     104              :      */
     105              :     const std::vector<GUISUMOAbstractView::Decal>& getDecals() const;
     106              : 
     107              : 
     108              :     /** @brief Returns the parsed delay
     109              :      * @return the parsed delay
     110              :      */
     111              :     double getDelay() const;
     112              : 
     113              : 
     114              :     /** @brief Returns the parsed breakpoints
     115              :      * @return the parsed breakpoints
     116              :      */
     117              :     const std::vector<SUMOTime>& getBreakpoints() const {
     118              :         return myBreakpoints;
     119              :     }
     120              : 
     121              : 
     122              :     /// @brief loads breakpoints from the specified file
     123              :     static std::vector<SUMOTime> loadBreakpoints(const std::string& file);
     124              : 
     125              : 
     126              :     /** @brief Returns the parsed view type
     127              :      * @return the parsed view type
     128              :      */
     129              :     const std::string& getViewType() const {
     130              :         return myViewType;
     131              :     }
     132              : 
     133              :     RandomDistributor<std::string> getEventDistribution(const std::string& id);
     134              :     double getJamSoundTime() {
     135           35 :         return myJamSoundTime;
     136              :     }
     137              : 
     138              :     const std::string& getSettingName() const {
     139              :         return mySettings.name;
     140              :     }
     141              : 
     142              : private:
     143              :     /// @brief The settings to fill
     144              :     GUIVisualizationSettings mySettings;
     145              : 
     146              :     /// @brief names of all loaded settings
     147              :     std::vector<std::string> myLoadedSettingNames;
     148              : 
     149              :     /// @brief The view type (osg, opengl, default) loaded
     150              :     std::string myViewType;
     151              : 
     152              :     /// @brief The delay loaded
     153              :     double myDelay;
     154              : 
     155              :     /// @brief The viewport loaded, zoom is stored in z coordinate
     156              :     Position myLookFrom;
     157              : 
     158              :     /// @brief The point to look at, only needed for osg view
     159              :     Position myLookAt;
     160              : 
     161              :     /// @brief Whether the Z coordinate is set in 3D view
     162              :     bool myZCoordSet;
     163              : 
     164              :     /// @brief View rotation
     165              :     double myRotation;
     166              : 
     167              :     /// @brief Zoom level
     168              :     double myZoom;
     169              : 
     170              :     /// @brief mappig of time steps to filenames for potential snapshots
     171              :     std::map<SUMOTime, std::vector<std::string> > mySnapshots;
     172              : 
     173              :     /// @brief The decals list to fill
     174              :     std::vector<GUISUMOAbstractView::Decal> myDecals;
     175              : 
     176              :     /// @brief The last color scheme category (edges or vehicles)
     177              :     int myCurrentColorer;
     178              : 
     179              :     /// @brief The current color scheme
     180              :     GUIColorScheme* myCurrentScheme;
     181              : 
     182              :     /// @brief The current scaling scheme
     183              :     GUIScaleScheme* myCurrentScaleScheme;
     184              : 
     185              :     /// @brief The parsed breakpoints
     186              :     std::vector<SUMOTime> myBreakpoints;
     187              : 
     188              :     /// @brief The parsed event distributions
     189              :     std::map<std::string, RandomDistributor<std::string> > myEventDistributions;
     190              :     double myJamSoundTime;
     191              : 
     192              : private:
     193              :     /// @brief parse color attribute
     194              :     RGBColor parseColor(const SUMOSAXAttributes& attrs, const std::string attribute, const RGBColor& defaultValue) const;
     195              : 
     196              :     /// @brief parse attributes for textSettings
     197              :     GUIVisualizationTextSettings parseTextSettings(
     198              :         const std::string& prefix, const SUMOSAXAttributes& attrs,
     199              :         GUIVisualizationTextSettings defaults);
     200              : 
     201              :     /// @brief parse attributes for sizeSettings
     202              :     GUIVisualizationSizeSettings parseSizeSettings(
     203              :         const std::string& prefix, const SUMOSAXAttributes& attrs,
     204              :         GUIVisualizationSizeSettings defaults);
     205              : 
     206              :     /// @brief parse attributes for rainbowSettings
     207              :     GUIVisualizationRainbowSettings parseRainbowSettings(
     208              :         const std::string& prefix, const SUMOSAXAttributes& attrs,
     209              :         GUIVisualizationRainbowSettings defaults);
     210              : };
        

Generated by: LCOV version 2.0-1