/** * @RDE_HEADER@ * Interface-Implementation of Grid * $Id$ * $HeadURL$ * $Author$ */ // Own #include "grid_impl.h" #include "map_impl.h" // ESRI #include // This file is created by RME, not ESRI #include #include #include #include #include #include #include #include // Qt namespace SituationMap { class GridImpl::Private { public: Private() = default; ~Private() = default; // ESRI data: Esri::ArcGISRuntime::Grid *m_esriGrid = nullptr; // Own data: SituationMap::MapImpl *m_mapImpl = nullptr; }; // class GridImpl::Private //----------------------------------------------------------------------------- GridImpl::GridImpl(SituationMap::MapImpl *mapImpl) : m_logger(getLogger("GridImpl")) , d(new Private) { TRACE_LOG(m_logger) << LOGFUNCTION << " START"; d->m_mapImpl = mapImpl; if (d->m_mapImpl && d->m_mapImpl->getEsriMapGraphicsView()) d->m_esriGrid = d->m_mapImpl->getEsriMapGraphicsView()->grid(); TRACE_LOG(m_logger) << LOGFUNCTION << " END"; } GridImpl::~GridImpl() { TRACE_LOG(m_logger) << LOGFUNCTION << " START"; delete d; TRACE_LOG(m_logger) << LOGFUNCTION << " END"; } GridType GridImpl::gridType() { GridType curType = GridType::NoType; if (d->m_esriGrid) { Esri::ArcGISRuntime::GridType esriGridType = d->m_esriGrid->gridType(); switch (esriGridType) { case Esri::ArcGISRuntime::GridType::Unknown: curType = GridType::NoType; break; case Esri::ArcGISRuntime::GridType::LatitudeLongitudeGrid: curType = GridType::LatLon; break; case Esri::ArcGISRuntime::GridType::MGRSGrid: curType = GridType::MGRS; break; case Esri::ArcGISRuntime::GridType::UTMGrid: curType = GridType::UTM; break; case Esri::ArcGISRuntime::GridType::USNGGrid: curType = GridType::USGN; break; } // switch } else DEBUG_LOG(m_logger) << LOGFUNCTION << " no object"; return curType; } void GridImpl::setGridType(GridType gridType) { // change? if (this->gridType() == gridType) return; if (d->m_esriGrid) d->m_esriGrid->deleteLater(); if (! d->m_mapImpl->getEsriMapGraphicsView()) return; QObject *parent = d->m_mapImpl->getEsriMapGraphicsView(); switch (gridType) { case GridType::NoType: d->m_esriGrid = nullptr; break; case GridType::LatLon: d->m_esriGrid = new Esri::ArcGISRuntime::LatitudeLongitudeGrid(parent); break; case GridType::MGRS: d->m_esriGrid = new Esri::ArcGISRuntime::MGRSGrid(parent); break; case GridType::UTM: d->m_esriGrid = new Esri::ArcGISRuntime::UTMGrid(parent); break; case GridType::USGN: d->m_esriGrid = new Esri::ArcGISRuntime::USNGGrid(parent); break; } // switch if (d->m_esriGrid) { d->m_esriGrid->setLabelPosition(Esri::ArcGISRuntime::GridLabelPosition::AllSides); int levelCount = d->m_esriGrid->levelCount(); for (int i = 0; i < levelCount; ++i) { Esri::ArcGISRuntime::TextSymbol *gridLabel = static_cast(d->m_esriGrid->textSymbol(i)); if (gridLabel) { gridLabel->setSize(10); gridLabel->setHaloWidth(1.0); } const QColor col(0, 0, 0, 200); Esri::ArcGISRuntime::SimpleLineSymbol sls(Esri::ArcGISRuntime::SimpleLineSymbolStyle::Solid, col, 1); d->m_esriGrid->setLineSymbol(i, &sls); } // for } // call setGrid even if d->m_esriGrid is nullptr !!! d->m_mapImpl->getEsriMapGraphicsView()->setGrid(d->m_esriGrid); d->m_mapImpl->emitVisualComponentChanged(VisualComponent::Grid); } void GridImpl::setVisible(bool visible) { if (d->m_esriGrid) { if (d->m_esriGrid->isVisible() != visible) { d->m_esriGrid->setVisible(visible); d->m_mapImpl->emitVisualComponentChanged(VisualComponent::Grid); } } else ERROR_LOG(m_logger) << LOGFUNCTION << " no object"; } bool GridImpl::isVisible() { if (d->m_esriGrid) return d->m_esriGrid->isVisible(); else DEBUG_LOG(m_logger) << LOGFUNCTION << " no object"; return false; } int GridImpl::levelCount() { if (d->m_esriGrid) return d->m_esriGrid->levelCount(); else ERROR_LOG(m_logger) << LOGFUNCTION << " no object"; return -1; } bool GridImpl::isLabelVisible() { if (d->m_esriGrid) return d->m_esriGrid->isLabelsVisible(); else ERROR_LOG(m_logger) << LOGFUNCTION << " no object"; return false; } void GridImpl::setLabelVisible(bool visible) { if (d->m_esriGrid) { if (d->m_esriGrid->isLabelsVisible() != visible) { d->m_esriGrid->setLabelsVisible(visible); d->m_mapImpl->emitVisualComponentChanged(VisualComponent::Grid); } } else ERROR_LOG(m_logger) << LOGFUNCTION << " no object"; } } // namespace SituationMap