Files
qt5-legatus-legacy/Lts/Viewer/SituationMap/MapObjectsImpl/area_fire_impl.h
T
2026-08-13 18:33:10 +02:00

109 lines
3.1 KiB
C++
Executable File

/**
* @RDE_HEADER@
* Interface-Implementation of AreaFire
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
// Own
#include "abstract_multi_point_map_object_impl.h"
#include "basic_path_object_impl.h"
#include <MapObjects/area_fire.h> // Interface
// Qt
#include <QString>
//----------------------------------------------------------------------------
namespace SituationMap
{
// GUEZE_2933
// // #define AREA_FIRE_DRAPED_RENDERER
/**
* @brief The AreaFireImpl class displays a area of impacts.
*
* A class instance consists of the following logical elements:
* - mainGraphicalObject (GraphicalObjectPath displaying the main techn. Appearance)
* - mainGraphicalObjectText (displaying the text/name)
* - tacticalAppearance (displaying the tact. Appearance)
* - an infinite number indication objects for displaying impacts (inherented from BasicPathObjectImpl)
*/
// inherent 'public', to get that implementation
// inherent 'public virtual' to get that interface
class SITUATIONMAPOBJECTS_EXPORT AreaFireImpl : public BasicPathObjectImpl, public virtual AreaFire
{
using BaseClass = BasicPathObjectImpl;
public:
explicit AreaFireImpl(const QString &debugInfo = QString());
virtual ~AreaFireImpl();
AreaFireImpl(const AreaFireImpl &other) = delete;
AreaFireImpl &operator=(AreaFireImpl &other) = delete;
void setUniqueId(const UniqueMapId &uniqueId) override;
PositionCont scheduledImpacts() const override;
void setScheduledImpacts(const PositionCont &posCont, const QColor &explicitColor = QColor()) override;
PositionCont impacts() const override;
void setImpacts(const PositionCont &posCont) override;
PositionCont impactsAbsoluteHeight() const override;
void setImpactsAbsoluteHeight(const PositionCont &posCont) override;
PositionCont detonationsAbsolute() const override;
bool setDetonationsAbsolute(const PositionCont &detonationsPositions, int detonationRadius) override;
PositionCont detonationsDraped() const override;
bool setDetonationsDraped(const PositionCont &detonationsPositions, int detonationRadius) override;
void setGunToTargetLineSurface(const Point3D &start, const Point3D &end) override;
void setGunToTargetTrajectory3D(const PositionCont &gunToTargetPath) override;
void setNonLethalArea(const PositionCont &nonLethalArea) override;
PositionCont trajectory(int index) const override;
bool setTrajectory(int index, const PositionCont &trajectoryPath) override;
protected:
virtual bool updateViewImpl() override;
#ifdef AREA_FIRE_DRAPED_RENDERER
virtual bool updateViewImplDetonation3dDraped_RendererApproach();
#else
virtual bool updateViewImplDetonation3dDraped_SceneMarkerApproach();
#endif // AREA_FIRE_DRAPED_RENDERER
friend class MapImpl;
bool init(MapImpl *mapImpl, const QString &logicalLayerName) override;
bool onMapExtentChanged() override;
// internal/admin
// logical
class Private;
/**
* The private d->pointer to not break BC when changing internals of this class
*/
Private *d = nullptr;
private:
LOGGER_T m_logger; ///< Interface of the Logging-Facility
};
} // namespace SituationMap