Newer
Older
PrismSoftware / ECTrainer2 / Stimulus.h
#pragma once

#include "myOpenCV.h"
#include "BaseProcess.h"
#include <vector>
#include <string>

class Marker;

struct StimImage {
	cv::String filename;
	cv::Point2f eyes[2];
};

class Stimulus : public BaseProcess
{
public:
	enum STIM {OPENING, CALIB, CALIB_COMPLETE, CALIB_FAILED, START, NEXT};
private:
	const cv::String OPENING_FILE = "../images/ECT_toppage.png";
	const cv::String CALIB_FILE = "../images/calib.png";
	const cv::String CALIB_COMPLETE_FILE = "../images/CalibComplete.png";
	const cv::String CALIB_FAILED_FILE = "../images/CalibFailed.png";
	const std::string DATA_FILE = "StimData.txt";
	Marker* _pMarker;
	cv::Mat _DispBuffer;
	std::vector<StimImage> _StimImages;
	int _StimNo;

	void StimWithMarker();
public:
	Stimulus(ECTrainer* pEct, Marker* pMarker);
	bool Init();
	bool MainLoop();
	void SetStimulus(STIM st);
	cv::Point2f GetEyeR() { return _StimImages[_StimNo].eyes[0]; }
	cv::Point2f GetEyeL() { return _StimImages[_StimNo].eyes[1]; }
};