#pragma once
#include <Windows.h>
#include <tchar.h>
#include "myOpenCV.h"
class ECTrainerGUI;
class SceneCamera;
class Stimulus;
class Marker;
class ImageProc;
class EyeTrack;
class ECTrainer
{
private:
ECTrainerGUI* _pGui;
SceneCamera* _pSceneCam;
Stimulus* _pStimulus;
Marker* _pMarker;
ImageProc* _pImageProc;
EyeTrack* _pEyeTrack;
bool _Running;
bool _HomographyOK;
// スレッド開始点
static DWORD SceneCamThreadEntry(LPVOID lpParameter);
static DWORD StimulusThreadEntry(LPVOID lpParameter);
static DWORD ImageProcThreadEntry(LPVOID lpParameter);
static DWORD EyeTrackThreadEntry(LPVOID lpParameter);
public:
ECTrainer();
~ECTrainer();
bool Process();
void Calib();
void Start();
void Next();
void SetSceneBuffer(cv::Mat& img);
void SetDispBuffer(cv::Mat& img);
void SetGazeV(cv::Point gazeV);
cv::Point GetGazeV();
cv::Point2f GetGazeI();
cv::Point2f GetEyeR();
cv::Point2f GetEyeL();
// インライン関数
bool IsRunning() { return _Running; }
void Stop() { _Running = false; }
void SetHomographyStatus(bool ok) { _HomographyOK = ok; }
bool GetHomographyStatus() { return _HomographyOK; }
};