/****************************************************************************/1// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo2// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.3// This program and the accompanying materials are made available under the4// terms of the Eclipse Public License 2.0 which is available at5// https://www.eclipse.org/legal/epl-2.0/6// This Source Code may also be made available under the following Secondary7// Licenses when the conditions for such availability set forth in the Eclipse8// Public License 2.0 are satisfied: GNU General Public License, version 29// or later which is available at10// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html11// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later12/****************************************************************************/13/// @file GUIEdgeControlBuilder.h14/// @author Daniel Krajzewicz15/// @author Jakob Erdmann16/// @author Sascha Krieg17/// @author Michael Behrisch18/// @date Sept 200219///20// Derivation of NLEdgeControlBuilder which builds gui-edges21/****************************************************************************/22#pragma once23#include <config.h>2425#include <string>26#include <vector>27#include <netload/NLEdgeControlBuilder.h>28#include <utils/geom/PositionVector.h>29#include <guisim/GUIEdge.h>303132// ===========================================================================33// class declarations34// ===========================================================================35class MSJunction;363738// ===========================================================================39// class definitions40// ===========================================================================41/**42* @class GUIEdgeControlBuilder43* @brief Derivation of NLEdgeControlBuilder which builds gui-edges44*45* Instead of building pure microsim-objects (MSEdge and MSLane), this class46* builds GUIEdges and GUILanes.47* @see NLEdgeControlBuilder48*/49class GUIEdgeControlBuilder : public NLEdgeControlBuilder {50public:51/** @brief Constructor52*53* @param[in] glObjectIDStorage Storage of gl-ids used to assign new ids to built edges54*/55GUIEdgeControlBuilder();565758/// @brief Destructor59~GUIEdgeControlBuilder();606162/** @brief Builds and adds a lane63* @param[in] id The lane's id64* @param[in] maxSpeed The speed allowed on this lane65* @param[in] length The lane's length66* @param[in] shape The shape of the lane67* @param[in] width The width of the lane68* @param[in] permissions Encoding of vehicle classes that may drive on this lane69* @param[in] index The index of this lane within its parent edge70* @see SUMOVehicleClass71* @see MSLane72*/73MSLane* addLane(const std::string& id,74double maxSpeed, double friction, double length,75const PositionVector& shape, double width,76SVCPermissions permissions,77SVCPermissions changeLeft, SVCPermissions changeRight,78int index, bool isRampAccel,79const std::string& type,80const PositionVector& outlineShape) override;81828384/** @brief Builds an edge instance (GUIEdge in this case)85*86* Builds an GUIEdge-instance using the given name and the current index87* "myCurrentNumericalEdgeID"88* Post-increments the index, returns the built edge.89*90* @param[in] id The id of the edge to build91*/92MSEdge* buildEdge(const std::string& id, const SumoXMLEdgeFunc function,93const std::string& streetName, const std::string& edgeType, const int priority, const double distance) override;949596private:97/// @brief invalidated copy constructor98GUIEdgeControlBuilder(const GUIEdgeControlBuilder& s);99100/// @brief invalidated assignment operator101GUIEdgeControlBuilder& operator=(const GUIEdgeControlBuilder& s);102103};104105106