WimaControllerDetail.h 1.12 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 31 32
#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);

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

37 38
    const WorkerResult_t &getResult() const;

Valentin Platzgummer's avatar
Valentin Platzgummer committed
39
signals:
40
    void resultReady();
Valentin Platzgummer's avatar
Valentin Platzgummer committed
41 42 43 44 45 46 47 48 49

protected:
    void run() override;

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