#pragma once #include #include #include #include #include "QNemoProgress.h" #include "SnakeTiles.h" #include "SnakeTilesLocal.h" #include using namespace boost::units; using Length = quantity; using Area = quantity; class SnakeThread : public QThread { Q_OBJECT class Impl; using PImpl = std::unique_ptr; public: SnakeThread(QObject *parent = nullptr); ~SnakeThread() override; void setMeasurementArea(const QList &measurementArea); void setServiceArea(const QList &serviceArea); void setCorridor(const QList &corridor); void setProgress(const QVector &progress); SnakeTiles tiles() const; SnakeTilesLocal tilesENU() const; QGeoCoordinate ENUOrigin() const; QVariantList tileCenterPoints() const; QVector progress() const; bool calcInProgress() const; QString errorMessage() const; bool success() const; bool tilesUpdated(); bool waypointsUpdated(); bool progressUpdated(); QVector waypoints() const; QVector arrivalPath() const; QVector returnPath() const; Length lineDistance() const; void setLineDistance(Length lineDistance); Length minTransectLength() const; void setMinTransectLength(Length minTransectLength); Area minTileArea() const; void setMinTileArea(Area minTileArea); Length tileHeight() const; void setTileHeight(Length tileHeight); Length tileWidth() const; void setTileWidth(Length tileWidth); signals: void calcInProgressChanged(bool inProgress); protected: void run() override; private: PImpl pImpl; };