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

106 lines
2.3 KiB
C++
Executable File

/**
* @RDE_HEADER@
* GraphicalObjectPath
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
// Own
#include "graphical_object_path.h"
// Esri
// Qt
#include <QMap>
//----------------------------------------------------------------------------
namespace SituationMap
{
class SITUATIONMAP_EXPORT GraphicalObjectMultiPath : public AbstractGraphicalObject
{
using BaseClass = AbstractGraphicalObject;
public:
GraphicalObjectMultiPath(const GraphicalObjectPathType type
, const Esri::ArcGISRuntime::GeoView *geoView
, Esri::ArcGISRuntime::GraphicsOverlay *graphicsLayer
, const QString &debugInfo
, UniqueMapId uniqueMapId);
~GraphicalObjectMultiPath();
GraphicalObjectPathType pathType() const
{
return m_pathType;
}
virtual PositionCont path(int pathIndex) const;
virtual void setPath(int pathIndex, const PositionCont &positions);
/*! \name Subsidiary polyline/polygons */
//@{
virtual void clearPath(int pathIndex);
virtual void clearAllPaths();
virtual QList<int> pathIndexInUse();
virtual void reduceTo(const QList<int> &remainingPathIndexes);
//@}
protected:
// Internal/Admin
bool updatePositions();
bool changed() override
{
bool baseClassChanged = BaseClass::changed();
if (baseClassChanged)
return true;
for (const SimpleValue<PositionCont> &posData : qAsConst(m_positionsCont))
{
if (posData.changed())
return true;
}
return false;
}
void resetChanged() override
{
BaseClass::resetChanged();
for (SimpleValue<PositionCont> &posData : m_positionsCont)
posData.reset();
}
bool create() override;
bool updateViewImpl() override;
// logical
const GraphicalObjectPathType m_pathType;
//bool updatePositions();
private:
// Attention: will contain 'positions' of idx == 1 and higher :
bool hasPosCont(int idx) const;
SimpleValue<PositionCont> &getPosCont(int idx);
const SimpleValue<PositionCont> getPosCont(int idx) const;
QMap<int, SimpleValue<PositionCont> > m_positionsCont;
// : Attention: will contain 'positions' of idx == 1 and higher
LOGGER_T m_logger; ///< Interface of the Logging-Facility
};
} // namespace SituationMap