|
Shinya Kitaoka |
810553 |
#pragma once
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#ifndef TRACKERPOPUP_H
|
|
Toshihiro Shimizu |
890ddd |
#define TRACKERPOPUP_H
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include <qwidget></qwidget>
|
|
Toshihiro Shimizu |
890ddd |
#include <qthread></qthread>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "tlevel.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/dvdialog.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshsimplelevel.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// per il tracker
|
|
Toshihiro Shimizu |
890ddd |
#include "dummyprocessor.h"
|
|
Toshihiro Shimizu |
890ddd |
// tracker.lib
|
|
Toshihiro Shimizu |
890ddd |
#include "ObjectTracker.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// forward declaration
|
|
Toshihiro Shimizu |
890ddd |
class Tracker;
|
|
Toshihiro Shimizu |
890ddd |
class MyThread;
|
|
Toshihiro Shimizu |
890ddd |
class QComboBox;
|
|
Toshihiro Shimizu |
890ddd |
class QPushButton;
|
|
Toshihiro Shimizu |
890ddd |
class QLabel;
|
|
Toshihiro Shimizu |
890ddd |
class QSlider;
|
|
Toshihiro Shimizu |
890ddd |
class TXshSimpleLevel;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// forward declaration
|
|
Shinya Kitaoka |
120a6e |
namespace DVGui {
|
|
Toshihiro Shimizu |
890ddd |
class DoubleField;
|
|
Toshihiro Shimizu |
890ddd |
class IntField;
|
|
Shinya Kitaoka |
120a6e |
// class LineEdit;
|
|
Toshihiro Shimizu |
890ddd |
class CheckBox;
|
|
shun-iwasawa |
443318 |
} // namespace DVGui
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
// TrackerPopup
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
//! La classe si occupa di visualizzare il popup "convert-To-Vector Settings".
|
|
Toshihiro Shimizu |
890ddd |
/*!Consente di cambiare modalita' di vettorizzazione e quindi in funzione
|
|
Toshihiro Shimizu |
890ddd |
di questa di cambiare i parametri da settare.*/
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class TrackerPopup final : public DVGui::Dialog {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
DVGui::DoubleField *m_threshold;
|
|
Campbell Barton |
f49389 |
DVGui::DoubleField *m_sensitivity;
|
|
Shinya Kitaoka |
120a6e |
DVGui::CheckBox *m_activeBackground;
|
|
Shinya Kitaoka |
120a6e |
DVGui::CheckBox *m_variationWindow;
|
|
Shinya Kitaoka |
120a6e |
/*DVGui::LineEdit* m_frameStart;
|
|
Shinya Kitaoka |
120a6e |
DVGui::LineEdit* m_frameEnd;*/
|
|
Shinya Kitaoka |
120a6e |
QPushButton *m_trackBtn;
|
|
Shinya Kitaoka |
120a6e |
DVGui::IntField *m_from;
|
|
Shinya Kitaoka |
120a6e |
DVGui::IntField *m_to;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
TrackerPopup(QWidget *parent = 0, Qt::WindowFlags flags = Qt::Tool);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
bool apply();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Shinya Kitaoka |
120a6e |
DVGui::ProgressDialog *m_progress;
|
|
Shinya Kitaoka |
120a6e |
MyThread *m_myThread;
|
|
Shinya Kitaoka |
120a6e |
Tracker *m_tracker;
|
|
Shinya Kitaoka |
120a6e |
int m_progressBarIndex;
|
|
Shinya Kitaoka |
120a6e |
bool m_stoppedProcess;
|
|
Toshihiro Shimizu |
890ddd |
public slots:
|
|
Shinya Kitaoka |
120a6e |
//! Se la vettorializzazione e' andata a buon fine chiude il popup.
|
|
Shinya Kitaoka |
120a6e |
void onTrack();
|
|
Shinya Kitaoka |
120a6e |
//! Inizia il tracking in un nuovo thread
|
|
Shinya Kitaoka |
120a6e |
void startNewThread();
|
|
Shinya Kitaoka |
120a6e |
//! Ferma il processo di tracking dopo il frame corrente
|
|
Shinya Kitaoka |
120a6e |
void stopProcessing();
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
// Tracker
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
class Tracker {
|
|
Shinya Kitaoka |
120a6e |
float m_threshold;
|
|
Campbell Barton |
f49389 |
float m_sensitivity;
|
|
Shinya Kitaoka |
120a6e |
int m_activeBackground;
|
|
Shinya Kitaoka |
120a6e |
int m_manageOcclusion;
|
|
Shinya Kitaoka |
120a6e |
int m_variationWindow;
|
|
Shinya Kitaoka |
120a6e |
int m_indexFrameStart;
|
|
Shinya Kitaoka |
120a6e |
int m_framesNumber;
|
|
Shinya Kitaoka |
120a6e |
short m_trackerCount;
|
|
Shinya Kitaoka |
120a6e |
int *m_numstart;
|
|
Shinya Kitaoka |
120a6e |
// TLevel::Iterator m_currentFrameIt;
|
|
Shinya Kitaoka |
120a6e |
int m_currentFrame;
|
|
Shinya Kitaoka |
120a6e |
int m_num;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
short m_oldObjectId;
|
|
Shinya Kitaoka |
120a6e |
short m_numobjactive;
|
|
Shinya Kitaoka |
120a6e |
int m_trackerRegionIndex;
|
|
Shinya Kitaoka |
120a6e |
TPointD m_rasterOrigin;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
CObjectTracker *m_pObjectTracker[30];
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TRaster32P m_raster_prev;
|
|
Shinya Kitaoka |
120a6e |
TRaster32P m_raster;
|
|
Shinya Kitaoka |
120a6e |
TRaster32P *m_raster_template;
|
|
Shinya Kitaoka |
120a6e |
TrackerObjectsSet *m_trackerObjectsSet;
|
|
Shinya Kitaoka |
120a6e |
DummyProcessor *m_processor;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TLevelP m_level;
|
|
Shinya Kitaoka |
120a6e |
TAffine m_affine;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Campbell Barton |
f49389 |
Tracker(double threshold, double sensitivity, int activeBackground,
|
|
Shinya Kitaoka |
120a6e |
int manageOcclusion, int variationWindow, int frameStart,
|
|
Shinya Kitaoka |
120a6e |
int framesNumber);
|
|
Shinya Kitaoka |
120a6e |
~Tracker();
|
|
Shinya Kitaoka |
120a6e |
// ritorna true se è tutto ok
|
|
Shinya Kitaoka |
120a6e |
bool trackCurrentFrame();
|
|
Shinya Kitaoka |
120a6e |
int getFramesNumber() { return m_framesNumber; }
|
|
Shinya Kitaoka |
120a6e |
int getStartFrameIndex() { return m_indexFrameStart; }
|
|
Shinya Kitaoka |
120a6e |
QString getLastError() { return getErrorMessage(m_lastErrorCode); }
|
|
Shinya Kitaoka |
120a6e |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Shinya Kitaoka |
120a6e |
// Inizializzazione Variabili
|
|
Shinya Kitaoka |
120a6e |
// ritorna true se è tutto ok
|
|
Shinya Kitaoka |
120a6e |
bool setup();
|
|
Shinya Kitaoka |
120a6e |
int m_lastErrorCode;
|
|
Shinya Kitaoka |
120a6e |
// Restituisce il messaggio di errore dal codice di errore che viene dato dal
|
|
Shinya Kitaoka |
120a6e |
// metodo apply()
|
|
Shinya Kitaoka |
120a6e |
QString getErrorMessage(int errorCode);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class MyThread final : public QThread {
|
|
Shinya Kitaoka |
120a6e |
Tracker *m_tracker;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
MyThread(Tracker *tracker);
|
|
Shinya Kitaoka |
473e70 |
void run() override;
|
|
Shinya Kitaoka |
120a6e |
// Ritorna 0 se non c'è stato alcun errore nell'esecuzione del thread
|
|
Shinya Kitaoka |
120a6e |
// altrimenti ritorna il codice di errore del tracker
|
|
Shinya Kitaoka |
120a6e |
int getLastError() { return m_trackerError; };
|
|
Shinya Kitaoka |
120a6e |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Shinya Kitaoka |
120a6e |
int m_trackerError;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
#endif // TRACKERPOPUP_H
|