#pragma once #include #include #include #include #include "QNemoProgress.h" #include "QNemoHeartbeat.h" #include > using namespace boost::units; using Length = quantity; using Area = quantity; class SnakeImpl; class SnakeDataManager : public QThread{ Q_OBJECT public: using SnakeImplPtr = std::unique_ptr; SnakeDataManager(QObject *parent = nullptr); ~SnakeDataManager() override; void setMeasurementArea (const QList &measurementArea); void setServiceArea (const QList &serviceArea); void setCorridor (const QList &corridor); QNemoProgress progress(); QNemoHeartbeat heartbeat(); bool calcInProgress(); 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); protected: void run() override; private: bool precondition() const; SnakeImplPtr _pImpl; };