/** * @RDE_HEADER@ * GraphicalObjectCube * $Id$ * $HeadURL$ * $Author$ */ // Own #include "graphical_object_cube.h" #include // operator<< // ESRI #include #include #include #include #include #include #include // Qt namespace SituationMap { GraphicalObjectCube::GraphicalObjectCube(const Esri::ArcGISRuntime::GeoView *geoView , Esri::ArcGISRuntime::GraphicsOverlay *graphicsLayer , const QString &debugInfo , const UniqueMapId &uniqueMapId) : BaseClass(geoView, graphicsLayer, debugInfo, uniqueMapId) , m_logger(getLogger("GraphicalObjectCube")) { TRACE_LOG(m_logger) << LOGFUNCTION << " START, debugInfo='" << m_debugInfo << "'"; TRACE_LOG(m_logger) << LOGFUNCTION << " END, debugInfo='" << m_debugInfo << "'"; } GraphicalObjectCube::~GraphicalObjectCube() { TRACE_LOG(m_logger) << LOGFUNCTION << " START, debugInfo='" << m_debugInfo << "'"; TRACE_LOG(m_logger) << LOGFUNCTION << " END, debugInfo='" << m_debugInfo << "'"; } bool GraphicalObjectCube::create() { TRACE_LOG(m_logger) << LOGFUNCTION << " START, debugInfo='" << m_debugInfo << "'"; bool success = BaseClass::create(); if (!success) { ERROR_LOG(m_logger) << LOGFUNCTION << " debugInfo='" << m_debugInfo << "'" << " create failed"; } // real work: // empty TRACE_LOG(m_logger) << LOGFUNCTION << " END, debugInfo='" << m_debugInfo << "'" // << " drawOrder = " << m_graphic->drawOrder() << " success = " << success; return success; } bool GraphicalObjectCube::updateViewImpl() { TRACE_LOG(m_logger) << LOGFUNCTION << " START, debugInfo='" << m_debugInfo << "'"; // some checks: if (!this->isArea()) { ERROR_LOG(m_logger) << LOGFUNCTION << " incorrect number of positions" << " (" << this->positions().count() << ")"; return false; } if (!create()) { ERROR_LOG(m_logger) << LOGFUNCTION << " debugInfo='" << m_debugInfo << "'" << " create failed"; return false; } if (!BaseClass::updateViewImpl()) { ERROR_LOG(m_logger) << LOGFUNCTION << " debugInfo='" << m_debugInfo << "'" << " updateView failed"; return false; } // real work: DEBUG_LOG(m_logger) << LOGFUNCTION << " debugInfo='" << m_debugInfo << "'"; // Attribute 'height': QVariantMap attMap = m_graphic->attributes()->attributesMap(); attMap[QStringLiteral("height")] = QVariant(m_height.value()); // // Attribute 'PartyName' is replaced by Attribute 'Extrusion_Color' to be more flexible // // Attribute 'Extrusion_Color': if (m_extrusionColorName.value().isEmpty()) { DEBUG_LOG(m_logger) << LOGFUNCTION << " debugInfo='" << m_debugInfo << "'" << " m_extrusionColorName is empty"; // -> time for the defaultSymbol of the Renderer attMap[QStringLiteral("Extrusion_Color")] = QStringLiteral("DOES_NOT_EXIST"); } else attMap[QStringLiteral("Extrusion_Color")] = QVariant(m_extrusionColorName.value()); m_graphic->attributes()->setAttributesMap(attMap); DEBUG_LOG(m_logger) << LOGFUNCTION << " debugInfo='" << m_debugInfo << "'" << " attributesMap[height] ='" << attMap[QStringLiteral("height")].toDouble() << "'"; DEBUG_LOG(m_logger) << LOGFUNCTION << " debugInfo='" << m_debugInfo << "'" << " attributesMap[Extrusion_Color] ='" << attMap[QStringLiteral("Extrusion_Color")].toString() << "'"; // geometry: Esri::ArcGISRuntime::PolygonBuilder builder(spatialReference()); const PositionCont &posCont = m_positions.value(); for (const Point3D &pos : posCont) { builder.addPoint(pos.x(), pos.y()); } if (! builder.isSketchValid()) { ERROR_LOG(m_logger) << LOGFUNCTION << " debugInfo='" << m_debugInfo << "'" << " builder -> sketch invalid"; return false; } m_graphic->setGeometry(builder.toGeometry()); // add bool successGraphic = addUpdateGraphic(); TRACE_LOG(m_logger) << LOGFUNCTION << " END, debugInfo='" << m_debugInfo << "'" << " drawOrder = " << m_graphic->zIndex(); return successGraphic; } //----------------------------------------------------------------------------- // output operator: //----------------------------------------------------------------------------- std::ostream &operator<<(std::ostream &stream, const GraphicalObjectCube &value) { stream << value.toString(); return stream; } } // namespace SituationMap