Subversion Repositories seema-scanner

Rev

Rev 225 | Rev 244 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#ifndef SMSCANNER_H
#define SMSCANNER_H

#include <QMainWindow>
#include <QSettings>
#include <QThread>
#include <QCloseEvent>
#include <QModelIndex>
#include <QListWidgetItem>

#include "SMPreferenceDialog.h"
#include "SMLogDialog.h"
#include "SMCaptureWorker.h"
#include "SMCalibrationWorker.h"
#include "SMReconstructionWorker.h"
//#include "SMMeshingWorker.h"

#include <opencv2/opencv.hpp>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>


namespace Ui {
    class SMScanner;
}

class SMScanner : public QMainWindow{
    Q_OBJECT

    public:
        explicit SMScanner(QWidget *parent = 0);
        void closeEvent(QCloseEvent *event);
        ~SMScanner();

    private slots:
        void on_actionPreferences_triggered();
        void onPreferencesChanged();

        void onReceiveFrame(unsigned int camId, cv::Mat frame);
        void onReceiveCalibrationSet(SMCalibrationSet calibrationSet);
        void onReceiveFrameSequence(SMFrameSequence frameSequence);
        void onReceiveRotatedTo(float angle);

        void onReceiveCheckerboardResult(int idx, SMCalibrationSet set);

        void on_singleCalibrationButton_clicked();

        void on_calibrateCamerasButton_clicked();

        void onReceiveCalibrationDone();
        void on_calibrationListWidget_itemSelectionChanged();

        void on_singleCaptureButton_clicked();

        void on_calibrationRotationDial_sliderReleased();

        void on_captureRotationDial_sliderReleased();

        void on_captureTreeWidget_itemSelectionChanged();

        void on_batchCalibrationButton_clicked();

        void on_batchCaptureButton_clicked();

        void on_actionExport_Sets_triggered();

        void on_actionExport_Sequences_triggered();

        void onReceivePointCloud(SMPointCloud pc);

        void on_actionExport_Point_Clouds_triggered();

        void on_pointCloudsListWidget_itemChanged(QListWidgetItem *item);

        void on_actionExport_Parameters_triggered();

        void on_actionClear_Sequences_triggered();

        void on_actionExport_White_Frames_triggered();

        void on_actionImport_Parameters_triggered();

        void on_actionImport_Sets_triggered();

        void on_actionImport_Sequences_triggered();

        void on_actionClear_Point_Clouds_triggered();

        void on_calibrationRotationSpinBox_editingFinished();

        void on_captureRotationSpinBox_editingFinished();

        void on_actionProject_Focusing_Pattern_triggered();

        void on_calibrateRotationStageButton_clicked();

        void on_actionView_Log_Messages_triggered();

        void on_tabWidget_currentChanged(int index);

private:
        Ui::SMScanner *ui;

        QSettings settings;

        SMPreferenceDialog preferenceDialog;
        SMLogDialog logDialog;

        SMCaptureWorker *captureWorker;
        QThread *captureWorkerThread;

        SMCalibrationWorker *calibrationWorker;
        QThread *calibrationWorkerThread;

        SMReconstructionWorker *reconstructionWorker;
        QThread *reconstructionWorkerThread;

        std::vector< SMCalibrationSet > calibrationData;

        std::vector< SMFrameSequence > captureData;
        std::vector< SMPointCloud > pointCloudData;

        bool calibrationReviewMode;
        bool captureReviewMode;
        int lastCaptureId;

};

#endif // SMSCANNER_H