/** * @RDE_HEADER@ * TacticalAppearance * $Id$ * $HeadURL$ * $Author$ */ #pragma once // Own #include "abstract_graphical_object.h" // Esri // Qt // forward: //---------------------------------------------------------------------------- namespace SituationMap { // forward: class MapImpl; class GraphicalObjectPictureMarker; /** * @brief The TacticalAppearance class displays sidcs. * To do so, the number of coordinate lead to use * - the GraphicalObjectPictureMarker (exactly one coordinate) * or * - the Message (more than one coordinate) * * Use cases: * - Participant: sidc with #coords == 1, TacticalAppearance should get exactly one coordinate. * (GraphicalObjectPictureMarker on ESRI::GraphicsLayer is used) * - Tactical display of a Building: sidc #coords >= 2, TacticalAppearance should get list of positions. * (Message on ESRI::MessageGroupLayer is used) * - (Tactical) PreviewIcon of a Building: sidc #coords == 1, TacticalAppearance should get exactly one coordinate. * (GraphicalObjectPictureMarker on ESRI::GraphicsLayer is used) * - Tactical symbols of plan editor * * In case of GraphicalObjectPictureMarker the image creation is done by AdvancedSymbology::SymbolDictionary::symbolImageBySidcExtended(). */ class SITUATIONMAP_EXPORT TacticalAppearance : public AbstractGraphicalObject { using BaseClass = AbstractGraphicalObject; public: /** * @brief TacticalAppearance * @param mapImpl map to be used. * @param logicalLayerName logical layer name to be used. * @param debugInfo debugInfo to be used * @param uniqueMapId uniqueMapId to be used. (Optional to fulfill rubberband requirements) */ TacticalAppearance(MapImpl *mapImpl, const QString &logicalLayerName, const QString &debugInfo, const UniqueMapId &uniqueMapId = INVALID_MAP_ID); TacticalAppearance(const TacticalAppearance &other) = delete; TacticalAppearance &operator=(TacticalAppearance &other) = delete; virtual ~TacticalAppearance(); SymbolData symbol() const; void setSymbol(const SymbolData &symbol); QString uniqueDesignation() const; void setUniqueDesignation(const QString &uniqueDesignation); SymbolImage symbolImage() const; Esri::ArcGISRuntime::Geometry getGraphicGeometry() const override; protected: // Internal/Admin virtual bool create() override; virtual void createPictureMarker(); virtual void removePictureMarker(); void removeGraphicFromGraphicOverlayTactical(); bool changed() override; void resetChanged() override; bool updateViewImpl() override; bool useDictionaryRenderMode(const AdvancedSymbology::GeometryType &geomType) const; // logical private: LOGGER_T m_logger; ///< Interface of the Logging-Facility class Private; /** * The private d-pointer to not break BC when changing internals of this class */ Private *d = nullptr; }; } // namespace SituationMap