/****************************************************************************/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 GUIMEInductLoop.h14/// @author Daniel Krajzewicz15/// @date Thu, 21.07.200516///17// The gui-version of the MEInductLoop18/****************************************************************************/19#pragma once20#include <config.h>2122#include <mesosim/MEInductLoop.h>23#include <utils/geom/Position.h>24#include <guisim/GUIDetectorWrapper.h>252627// ===========================================================================28// class declarations29// ===========================================================================30class GUILane;31class MESegment;323334// ===========================================================================35// class definitions36// ===========================================================================37/**38* @class GUIMEInductLoop39* The gui-version of the MSInductLoop.40* Allows the building of a wrapper (also declared herein) which draws the41* detector on the gl-canvas.42*/43class GUIMEInductLoop : public MEInductLoop {44public:45/// Construtor46GUIMEInductLoop(const std::string& id, MESegment* s,47double position,48const std::string name, const std::string& vTypes,49const std::string& nextEdges,50int detectPersons, bool show);5152/// Destructor53~GUIMEInductLoop();5455/** @brief Returns this detector's visualisation-wrapper56* @return The wrapper representing the detector57*/58virtual GUIDetectorWrapper* buildDetectorGUIRepresentation();596061public:62/**63* @class GUIMEInductLoop::MyWrapper64* A MSInductLoop-visualiser65*/66class MyWrapper : public GUIDetectorWrapper {67public:68/// Constructor69MyWrapper(GUIMEInductLoop& detector,70double pos);7172/// Destructor73~MyWrapper();7475/// @name inherited from GUIGlObject76//@{7778/** @brief Returns an own parameter window79*80* @param[in] app The application needed to build the parameter window81* @param[in] parent The parent window needed to build the parameter window82* @return The built parameter window83* @see GUIGlObject::getParameterWindow84*/85GUIParameterTableWindow* getParameterWindow(86GUIMainWindow& app, GUISUMOAbstractView& parent);8788/** @brief Draws the object89*90* @param[in] s Current visualization settings91* @see GUIGlObject::drawGL92*/93void drawGL(const GUIVisualizationSettings& s) const;9495/// @brief return exaggeration associated with this GLObject96double getExaggeration(const GUIVisualizationSettings& s) const;9798/** @brief Returns the boundary to which the view shall be centered in order to show the object99*100* @return The boundary the object is within101* @see GUIGlObject::getCenteringBoundary102*/103Boundary getCenteringBoundary() const;104//@}105106/// Returns the detector itself107GUIMEInductLoop& getLoop();108109private:110/// The wrapped detector111GUIMEInductLoop& myDetector;112113/// The detector's boundary114Boundary myBoundary;115116/// The position in full-geometry mode117Position myFGPosition;118119/// The rotation in full-geometry mode120double myFGRotation;121122/// The position on the lane123double myPosition;124125private:126/// @brief Invalidated copy constructor.127MyWrapper(const MyWrapper&);128129/// @brief Invalidated assignment operator.130MyWrapper& operator=(const MyWrapper&);131132};133134};135136137