/** * @RDE_HEADER@ * Interface-Implementation of NuclearAgent * $Id$ * $HeadURL$ * $Author$ */ #pragma once // Own #include "abstract_multi_point_map_object_impl.h" #include "basic_path_object_impl.h" #include // Interface // Qt #include //---------------------------------------------------------------------------- namespace SituationMap { /** * @brief The NuclearAgentImpl class displays a nuclear area. The outline is displayed as well a subsidiary lines. * * A class instance consists of the following logical elements: * - mainGraphicalObject (GraphicalObjectPath displaying the main techn. Appearance / outline) * - mainGraphicalObjectText (displaying the text/name) * - tacticalAppearance (displaying the tact. Appearance) * - Container of BasicPathObjectImpl's to display the subsidiary lines. */ // inherent 'public', to get that implementation // inherent 'public virtual' to get that interface class SITUATIONMAPOBJECTS_EXPORT NuclearAgentImpl : public BasicPathObjectImpl, public virtual NuclearAgent { using BaseClass = BasicPathObjectImpl; template friend class GenericObjectFactory; protected: explicit NuclearAgentImpl(const QString &debugInfo = QString()); virtual ~NuclearAgentImpl(); public: NuclearAgentImpl(const NuclearAgentImpl &other) = delete; NuclearAgentImpl &operator=(NuclearAgentImpl &other) = delete; void setUniqueId(const UniqueMapId &uniqueId) override; /*! \name Subsidiary polylines, identified by an arbitrary choose key.*/ //@{ PositionCont subsidiaryLine(int key) const override; void setSubsidiaryLine(int key, const PositionCont &positions, const OptionalData &optData = OptionalData()) override; QList subsidiaryKeysInUse() override; void removeSubsidiaryLine(int key) override; void removeSubsidiaryLines() override; //@} /*! \name Impact*/ //@{ Point3D impactOrigin() const override; void setImpactOrigin(const Point3D &impactOrigin) override; //@} /*! \name Single Detonation */ //@{ void setDetonation(const Point3D &origin, double radius) override; bool hasDetonation() const override; void resetDetonation() override; //@} protected: bool updateViewImpl() override; friend class MapImpl; bool init(MapImpl *mapImpl, const QString &logicalLayerName) override; bool onMapExtentChanged() override; // internal/admin // logical private: class Private; /** * The private d->pointer to not break BC when changing internals of this class */ Private *d = nullptr; LOGGER_T m_logger; ///< Interface of the Logging-Facility }; } // namespace SituationMap