/** * @RDE_HEADER@ * Interface-Implementation of FunctionalArea * $Id$ * $HeadURL$ * $Author$ */ // Own #include "functional_area_impl.h" #include #include #include #include // 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(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