LCOV - code coverage report
Current view: top level - src/guinetload - GUITriggerBuilder.cpp (source / functions) Coverage Total Hit
Test: lcov.info Lines: 85.7 % 56 48
Test Date: 2024-11-22 15:46:21 Functions: 91.7 % 12 11

            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    GUITriggerBuilder.cpp
      15              : /// @author  Daniel Krajzewicz
      16              : /// @author  Jakob Erdmann
      17              : /// @author  Michael Behrisch
      18              : /// @author  Johannes Rummel
      19              : /// @date    Mon, 26.04.2004
      20              : ///
      21              : // Builds trigger objects for guisim
      22              : /****************************************************************************/
      23              : #include <config.h>
      24              : 
      25              : #include <string>
      26              : #include <fstream>
      27              : #include <utils/common/RGBColor.h>
      28              : #include <guisim/GUILaneSpeedTrigger.h>
      29              : #include <guisim/GUINet.h>
      30              : #include <guisim/GUITriggeredRerouter.h>
      31              : #include <guisim/GUIBusStop.h>
      32              : #include <guisim/GUIParkingArea.h>
      33              : #include <guisim/GUICalibrator.h>
      34              : #include <guisim/GUIChargingStation.h>
      35              : #include <guisim/GUIOverheadWire.h>
      36              : #include "GUITriggerBuilder.h"
      37              : 
      38              : 
      39              : 
      40              : // ===========================================================================
      41              : // method definitions
      42              : // ===========================================================================
      43         7523 : GUITriggerBuilder::GUITriggerBuilder() {}
      44              : 
      45              : 
      46         7523 : GUITriggerBuilder::~GUITriggerBuilder() {}
      47              : 
      48              : 
      49              : MSLaneSpeedTrigger*
      50          100 : GUITriggerBuilder::buildLaneSpeedTrigger(MSNet& net,
      51              :         const std::string& id, const std::vector<MSLane*>& destLanes,
      52              :         const std::string& file) {
      53          100 :     GUILaneSpeedTrigger* lst = new GUILaneSpeedTrigger(id, destLanes, file);
      54          100 :     static_cast<GUINet&>(net).registerRenderedObject(lst);
      55          100 :     return lst;
      56              : }
      57              : 
      58              : 
      59              : MSTriggeredRerouter*
      60          662 : GUITriggerBuilder::buildRerouter(MSNet& net, const std::string& id,
      61              :                                  MSEdgeVector& edges, double prob, bool off, bool optional,
      62              :                                  SUMOTime timeThreshold, const std::string& vTypes, const Position& pos) {
      63              :     GUITriggeredRerouter* rr = new GUITriggeredRerouter(id, edges, prob, off, optional, timeThreshold, vTypes, pos,
      64          662 :             dynamic_cast<GUINet&>(net).getVisualisationSpeedUp());
      65          662 :     return rr;
      66              : }
      67              : 
      68              : 
      69              : void
      70         1694 : GUITriggerBuilder::buildStoppingPlace(MSNet& net, std::string id, std::vector<std::string> lines, MSLane* lane,
      71              :                                       double frompos, double topos, const SumoXMLTag element, std::string name,
      72              :                                       int personCapacity, double parkingLength, RGBColor& color) {
      73         3388 :     myCurrentStop = new GUIBusStop(id, element, lines, *lane, frompos, topos, name, personCapacity, parkingLength, color);
      74         1694 :     if (!net.addStoppingPlace(element, myCurrentStop)) {
      75            3 :         delete myCurrentStop;
      76            3 :         myCurrentStop = nullptr;
      77            6 :         throw InvalidArgument("Could not build " + toString(element) + " '" + id + "'; probably declared twice.");
      78              :     }
      79         1691 : }
      80              : 
      81              : 
      82              : void
      83          706 : GUITriggerBuilder::beginParkingArea(MSNet& net, const std::string& id,
      84              :                                     const std::vector<std::string>& lines,
      85              :                                     const std::vector<std::string>& badges,
      86              :                                     MSLane* lane,
      87              :                                     double frompos, double topos,
      88              :                                     unsigned int capacity,
      89              :                                     double width, double length, double angle, const std::string& name,
      90              :                                     bool onRoad,
      91              :                                     const std::string& departPos,
      92              :                                     bool lefthand) {
      93              :     assert(myParkingArea == 0);
      94          706 :     GUIParkingArea* stop = new GUIParkingArea(id, lines, badges, *lane, frompos, topos, capacity, width, length, angle, name, onRoad, departPos, lefthand);
      95          706 :     if (!net.addStoppingPlace(SUMO_TAG_PARKING_AREA, stop)) {
      96            0 :         delete stop;
      97            0 :         throw InvalidArgument("Could not build parking area '" + id + "'; probably declared twice.");
      98              :     } else {
      99          706 :         myParkingArea = stop;
     100              :     }
     101          706 : }
     102              : 
     103              : 
     104              : void
     105          248 : GUITriggerBuilder::buildChargingStation(MSNet& net, const std::string& id, MSLane* lane, double frompos, double topos,
     106              :                                         const std::string& name, double chargingPower, double efficiency, bool chargeInTransit,
     107              :                                         SUMOTime chargeDelay, std::string chargeType, SUMOTime waitingTime, MSParkingArea* parkingArea) {
     108          248 :     GUIChargingStation* chargingStation = (parkingArea == nullptr) ? new GUIChargingStation(id, *lane, frompos, topos, name, chargingPower, efficiency,
     109          248 :                                           chargeInTransit, chargeDelay, chargeType, waitingTime) : new GUIChargingStation(id, parkingArea, name, chargingPower, efficiency,
     110            0 :                                                   chargeInTransit, chargeDelay, chargeType, waitingTime);
     111          248 :     if (!net.addStoppingPlace(SUMO_TAG_CHARGING_STATION, chargingStation)) {
     112            0 :         delete chargingStation;
     113            0 :         throw InvalidArgument("Could not build charging station '" + id + "'; probably declared twice.");
     114              :     }
     115          248 :     myCurrentStop = chargingStation;
     116          248 :     static_cast<GUINet&>(net).registerRenderedObject(chargingStation);
     117          248 : }
     118              : 
     119              : 
     120              : void
     121           12 : GUITriggerBuilder::buildOverheadWireSegment(MSNet& net, const std::string& id, MSLane* lane, double frompos, double topos,
     122              :         bool voltageSource) {
     123           12 :     GUIOverheadWire* overheadWire = new GUIOverheadWire(id, *lane, frompos, topos, voltageSource);
     124           12 :     if (!net.addStoppingPlace(SUMO_TAG_OVERHEAD_WIRE_SEGMENT, overheadWire)) {
     125            0 :         delete overheadWire;
     126            0 :         throw InvalidArgument("Could not build overheadWireSegment '" + id + "'; probably declared twice.");
     127              :     }
     128           12 :     static_cast<GUINet&>(net).registerRenderedObject(overheadWire);
     129           12 : }
     130              : 
     131              : void
     132            1 : GUITriggerBuilder::buildOverheadWireClamp(MSNet& net, const std::string& id, MSLane* lane_start, MSLane* lane_end) {
     133            1 :     GUIOverheadWireClamp* overheadWireClamp = new GUIOverheadWireClamp(id, *lane_start, *lane_end);
     134            1 :     static_cast<GUINet&>(net).registerRenderedObject(overheadWireClamp);
     135            1 : }
     136              : 
     137              : 
     138              : void
     139          706 : GUITriggerBuilder::endParkingArea() {
     140          706 :     if (myParkingArea != nullptr) {
     141          706 :         static_cast<GUINet*>(MSNet::getInstance())->registerRenderedObject(static_cast<GUIParkingArea*>(myParkingArea));
     142          706 :         myParkingArea = nullptr;
     143              :     } else {
     144            0 :         throw InvalidArgument("Could not end a parking area that is not opened.");
     145              :     }
     146          706 : }
     147              : 
     148              : 
     149              : void
     150         1942 : GUITriggerBuilder::endStoppingPlace() {
     151         1942 :     if (myCurrentStop != nullptr) {
     152         1939 :         static_cast<GUINet*>(MSNet::getInstance())->registerRenderedObject(dynamic_cast<GUIGlObject*>(myCurrentStop));
     153         1939 :         myCurrentStop = nullptr;
     154              :     } else {
     155            6 :         throw InvalidArgument("Could not end a stopping place that is not opened.");
     156              :     }
     157         1939 : }
     158              : 
     159              : 
     160              : /****************************************************************************/
        

Generated by: LCOV version 2.0-1