/** * @RDE_HEADER@ * Interface of VirtualMine * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include "abstract_multi_point_map_object.h" #include //---------------------------------------------------------------------------- namespace SituationMap { /** * @brief The ChemicalAgent class supports different agent types. */ class VirtualMine : public virtual AbstractMultiPointMapObject, public virtual AbstractEffectSimulation { public: /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Don't use "= default" because of bug in VS2015 JT 2016/11/7 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ VirtualMine() : AbstractMultiPointMapObject(), AbstractEffectSimulation() {;} ///< Contructor virtual ~VirtualMine() = default; ///< Destructor /*! \name Subsidiary polyline/polygons */ //@{ /** * @brief Get subsidiary line with key. * @param key to be retrieved. * @return subsidiary line at index */ virtual PositionCont subsidiaryLine(int key) const = 0; /** * @brief Set subsidiary line with key. * @param key to be set. * @param positions subsidiary line to be set. */ struct OptionalData { // ctor OptionalData() {} // member bool closed{false}; QSharedPointer lineStyle; // default is 'empty', do not honor QSharedPointer fillStyle; // default is 'empty', do not honor }; // virtual void setSubsidiaryLine(int key, const PositionCont &positions, bool clo = false) = 0; virtual void setSubsidiaryLine(int key, const PositionCont &positions, const OptionalData &optData = OptionalData()) = 0; /** * @brief Get a list of keys in use. * @return List of keys in use. */ virtual QList subsidiaryKeysInUse() = 0; /** * @brief Remove one subsidiary line. * @param key to be removed. */ virtual void removeSubsidiaryLine(int key) = 0; /** * @brief Remove all subsidiaryPositions. */ virtual void removeSubsidiaryLines() = 0; //@} /*! \name 3D marker / SimpleMarkerSceneSymbol (via renderer) */ //@{ virtual bool has3DMarkerRenderer() const = 0; virtual void set3DMarkerRenderer(const Point3D &markerOrigin, const QVariantMap &attribMap) = 0; //@} /*! \name 3D marker / SimpleMarkerSceneSymbol (explicit symbol) */ //@{ struct SceneSymbolData { // ctor SceneSymbolData() {} // member Point3D markerOrigin; QColor color{Qt::gray}; double radius{1.0}; bool cone{false}; // cone - sphere double heading{0.0}; double pitch{0.0}; double roll{0.0}; }; virtual bool has3DMarkerSceneSymbol() const = 0; virtual void set3DMarkerSceneSymbol(const Point3D &markerOrigin, const SceneSymbolData &sceneSymbolData) = 0; //@} }; } // namespace SituationMap