SnakeWorker.h 1.11 KB
Newer Older
Valentin Platzgummer's avatar
Valentin Platzgummer committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#pragma once

#include <QObject>
#include <QVariant>
#include <QThread>
#include <QVector>

#include "snake_geometry.h"
#include "snake.h"

using namespace snake;
using namespace snake_geometry;
using namespace std;


typedef QList<QVariant> QVariantList;

typedef struct Result{
    QVariantList            waypoints;
    QVector<unsigned long>  arrivalPathIdx;
    QVector<unsigned long>  returnPathIdx;
    bool                    success;
    QString                 errorMessage;
}WorkerResult_t;

class SnakeWorker : public QThread{
    Q_OBJECT

public:
    SnakeWorker(QObject *parent = nullptr);
31
    ~SnakeWorker() override;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
32 33

    void setScenario            (const Scenario  &scenario);
Valentin Platzgummer's avatar
Valentin Platzgummer committed
34
    void setProgress            (const QVector<int> &progress);
Valentin Platzgummer's avatar
Valentin Platzgummer committed
35 36 37
    void setLineDistance        (double lineDistance);
    void setMinTransectLength   (double minTransectLength);

38 39
    const WorkerResult_t &getResult() const;

Valentin Platzgummer's avatar
Valentin Platzgummer committed
40 41 42 43 44 45 46 47
protected:
    void run() override;

private:
    Scenario        _scenario;
    vector<int8_t>  _progress;
    double          _lineDistance;
    double          _minTransectLength;
48
    WorkerResult_t  _result;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
49 50
};