180 lines
5.1 KiB
C++
Executable File
180 lines
5.1 KiB
C++
Executable File
/**
|
|
* @RDE_HEADER@
|
|
* Interface-Implementation of FunctionalArea
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
*/
|
|
|
|
// Own
|
|
#include "functional_area_impl.h"
|
|
#include <MapImpl/map_impl.h>
|
|
#include <GraphicalObjects/graphical_object_path.h>
|
|
#include <GraphicalObjects/graphical_object_text.h>
|
|
#include <MapObjectsImpl/participant_impl.h>
|
|
|
|
|
|
// ESRI
|
|
|
|
|
|
// Qt
|
|
|
|
|
|
|
|
namespace SituationMap
|
|
{
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// class FunctionalAreaImpl
|
|
//-----------------------------------------------------------------------------
|
|
FunctionalAreaImpl::FunctionalAreaImpl(const QString &debugInfo)
|
|
: FunctionalArea() // Interface
|
|
, BaseClass(debugInfo) // Implementation
|
|
, m_logger(getLogger("FunctionalAreaImpl"))
|
|
{
|
|
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
|
m_pointSymbolData.origin.setMapObjectImpl(this);
|
|
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
|
|
}
|
|
|
|
FunctionalAreaImpl::~FunctionalAreaImpl()
|
|
{
|
|
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
|
delete m_pointSymbol;
|
|
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
|
|
}
|
|
|
|
void FunctionalAreaImpl::reRenderSymbol()
|
|
{
|
|
BaseClass::reRenderSymbol();
|
|
if (m_pointSymbol)
|
|
m_pointSymbol->reRenderSymbol();
|
|
}
|
|
|
|
Point3D FunctionalAreaImpl::pointSymbolOrigin() const
|
|
{
|
|
return m_pointSymbolData.origin.origin();
|
|
}
|
|
void FunctionalAreaImpl::setPointSymbolOrigin(const Point3D &pointSymbolOrigin)
|
|
{
|
|
m_pointSymbolData.origin.setOrigin(pointSymbolOrigin);
|
|
}
|
|
|
|
const QString &FunctionalAreaImpl::pointSymbolSidc() const
|
|
{
|
|
return m_pointSymbolData.symbolData.sidc;
|
|
}
|
|
void FunctionalAreaImpl::setPointSymbolSidc(const QString &pointSymbolOriginSidc)
|
|
{
|
|
m_pointSymbolData.symbolData.sidc = pointSymbolOriginSidc;
|
|
}
|
|
|
|
|
|
bool FunctionalAreaImpl::updateViewImpl()
|
|
{
|
|
TRACE_LOG(m_logger) << LOGFUNCTION << " START"
|
|
<< " symbol=" << m_symbol.value().sidc
|
|
<< " visibility=" << m_visibility
|
|
<< " visiTechn=" << m_visibilityTechnical
|
|
<< " visiTact=" << m_visibilityTactical;
|
|
|
|
bool success = BaseClass::updateViewImpl();
|
|
|
|
if (!success)
|
|
ERROR_LOG(m_logger) << LOGFUNCTION << " updateViewImpl failed";
|
|
|
|
|
|
if (!updateViewImplPointSymbolData())
|
|
ERROR_LOG(m_logger) << LOGFUNCTION << " updateViewImplPointSymbolData failed";
|
|
|
|
TRACE_LOG(m_logger) << LOGFUNCTION << " END, success=" << success;
|
|
return success;
|
|
}
|
|
|
|
bool FunctionalAreaImpl::updateViewImplPointSymbolData()
|
|
{
|
|
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
|
|
|
// sidc empty?
|
|
if (m_pointSymbolData.symbolData.sidc.isEmpty())
|
|
{
|
|
delete m_pointSymbol;
|
|
m_pointSymbol = nullptr;
|
|
return true;
|
|
}
|
|
|
|
// ok, sidc available:
|
|
if (!m_pointSymbol)
|
|
{
|
|
m_pointSymbol = new ParticipantImpl(m_debugInfo + QStringLiteral("#PntSymblTactApp"));
|
|
m_pointSymbol->init(m_mapImpl, m_logicalLayerName); // use same layer as mainGraphicalObj/TECHN. Appearance
|
|
m_pointSymbol->setUniqueId(m_uniqueMapId);
|
|
}
|
|
|
|
if (m_party.partyId.changed())
|
|
m_pointSymbol->setPartyIdChanged(m_party.partyId.value());
|
|
|
|
|
|
// The drawOrder should be above the m_mainGraphicalObject (==Path)
|
|
m_pointSymbol->setDrawOrder(this->drawOrder() + 1); // since m_pointSymbol is a participant, use drawOrder instead of m_internalDrawOrder
|
|
|
|
AbstractMapObjectImpl *amoImp = static_cast<AbstractMapObjectImpl*>(m_pointSymbol);
|
|
amoImp->setVisibility((m_mainGraphicalObject) ? m_mainGraphicalObject->visibility() : false);
|
|
|
|
m_pointSymbol->setOrigin(m_pointSymbolData.origin.origin());
|
|
|
|
m_pointSymbol->setPartyId(this->partyId());
|
|
|
|
// m_pointSymbolData.symbolData.color = this->partyColor();
|
|
|
|
// return m_mapImpl->partyIdToColorFunctor().partyIdToRole(m_party.partyId.value(), identityAssumed);
|
|
|
|
// AdvancedSymbology::Role role = this->partyRole();
|
|
// SymbolData symbolData = m_pointSymbolData.symbolData;
|
|
// symbolData = m_pointSymbolData.symbolData;
|
|
|
|
m_pointSymbol->setSymbol(m_pointSymbolData.symbolData);
|
|
|
|
m_pointSymbol->setScale(this->scale());
|
|
|
|
// add m_userSymbolOpacity???
|
|
|
|
bool success = m_pointSymbol->updateView();
|
|
if (!success)
|
|
ERROR_LOG(m_logger) << LOGFUNCTION << " updateViewImpl failed, m_debugInfo =" << m_debugInfo;
|
|
|
|
TRACE_LOG(m_logger) << LOGFUNCTION << " END, success=" << success;
|
|
return success;
|
|
}
|
|
|
|
bool FunctionalAreaImpl::init(MapImpl *mapImpl, const QString &logicalLayerName)
|
|
{
|
|
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
|
|
|
// if (mapImpl)
|
|
// {
|
|
// switch (mapImpl->symbologyType()) {
|
|
// case AdvancedSymbology::SymbologyType::MIL2525C:
|
|
// m_symbol.refValue().sidc = QLatin1String("GUMPNC----"); // Image WITH Area // small icon and big border
|
|
// break;
|
|
// case AdvancedSymbology::SymbologyType::APP6B:
|
|
// m_symbol.refValue().sidc = QLatin1String("GUCPMGASM-"); // APP6B: 3556: GUCPMGASM- -> Polygon
|
|
// break;
|
|
// } // switch
|
|
// } // if (mapImpl)
|
|
|
|
|
|
bool success = BaseClass::init(mapImpl, logicalLayerName, GraphicalObjectPathType::Polygon);
|
|
|
|
setLineStyle(LineStyle(Qt::black, 2));
|
|
|
|
if (!success)
|
|
ERROR_LOG(m_logger) << LOGFUNCTION << " init failed";
|
|
|
|
TRACE_LOG(m_logger) << LOGFUNCTION << " END, success=" << success;
|
|
return success;
|
|
}
|
|
|
|
|
|
} // namespace SituationMap
|