/** * @RDE_HEADER@ * TerrainProfileProcessor * $Id$ * $HeadURL$ * $Author$ */ #pragma once // Own #include "map_impl.h" #include "location_to_elevation_bulk.h" #include #include "MapObjects/polyline.h" #include "MapObjects/geo_image.h" #include // ESRI #include #include #include // Qt #include #include #include // forward: namespace Esri { namespace ArcGISRuntime { class Map; class Graphic; class GraphicsOverlay; class Polyline; } } //---------------------------------------------------------------------------- namespace SituationMap { class MapImpl; class TerrainProfileProcessor : public QObject { Q_OBJECT public: explicit TerrainProfileProcessor(QObject *parent = nullptr); virtual ~TerrainProfileProcessor(); long id() const { return m_id; } bool init(SituationMap::MapImpl *mapImpl, long id); bool start(const TerrainProfileParameter &terrainProfileParameter); bool isRunning() const { return m_inProgress; } QVector< QPair< QPointF, double > > results() const; void setTerrainProfileDialog(QPointer &terrainProfileDialog); signals: void locationsToElevationsCompleted(long id); protected slots: void onLocationsToElevationsCompleted(); void onDialogMousePositionChanged(const QPointF &curPos); protected: Esri::ArcGISRuntime::Polyline densifiy(TerrainProfileParameter &terrainProfileParameter); void displayUserInput(); void removeUserInput(); void displayInputLine(); void removeInputLine(); void displayInputVertices(); void removeInputVertices(); void displayCurrentMarker(const Point3D &pointGeo); void removeCurrentMarker(); private: SituationMap::MapImpl *m_mapImpl = nullptr; Esri::ArcGISRuntime::SpatialReference m_srMap; Esri::ArcGISRuntime::Surface *m_surface = nullptr; long m_id = -1; TerrainProfileParameter m_terrainProfileParameter; // Calc LocationToElevationBulk m_locationToElevationBulk; bool m_initialized = false; bool m_inProgress = false; // Out // TerrainProfileDialog (Displaying the results) QPointer m_terrainProfileDialog; QString m_toolsLayername; QColor m_color = Qt::magenta; RefPointer m_polyline; QVector> m_markerCont; RefPointer m_currentMarker; LOGGER_T m_logger; }; // class TerrainProfileProcessor } // namespace SituationMap