#pragma once
#include "OneDimMatrix.h"

#define FIRST_TIP_MATRIX_INDEX 1
namespace ns_mat
{
	struct NozzleParam 
	{
		XY_DOUBLE_STRUCT position{ 0,0 };
		NozzleCalibParam calibParam;
	};


	class TipMatrix
	{
	public:
		static TipMatrix* GetInstance();

		LONG LoadMatrixParam();

		LONG GetNozzlePosition(int index, XY_DOUBLE_STRUCT& position);

		LONG GetBHRCalibTempID(int nozzleIndex, int& tempID);
		LONG SetBHRCalibTempID(int nozzleIndex, int tempID);

		LONG GetWHCTDNozzleTempID(int nozzleIndex, int& tempID);
		LONG SetWHCTDNozzleTempID(int nozzleIndex, int tempID);

		LONG GetBHRotCenter(int index, XY_DOUBLE_STRUCT& center);
		LONG SetNozzleRotCenter(int index, XY_DOUBLE_STRUCT center);

		LONG GetBHHighCameraToNozzle(int index, XY_DOUBLE_STRUCT& dis);
		LONG SetBHHighCameraToNozzle(int index, XY_DOUBLE_STRUCT CameraToNozzle);

		LONG GetBHLowCameraToNozzle(int index, XY_DOUBLE_STRUCT& dis);
		LONG SetBHLowCameraToNozzle(int index, XY_DOUBLE_STRUCT CameraToNozzle);

		LONG GetBHLowNozzleToCamera(int index, XY_DOUBLE_STRUCT& dis);
		LONG SetBHLowNozzleToCamera(int index, XY_DOUBLE_STRUCT CameraToNozzle);

		LONG GetWHCameraToNozzle(int index, XY_DOUBLE_STRUCT& cameraToNozzle);
		LONG SetWHCameraToNozzle(int index, XY_DOUBLE_STRUCT cameraToNozzle);



	private:
		TipMatrix();
		~TipMatrix();

		void DataChangNotice(string strDbName, string strTableName);
		void SetParam();
	private:
		OneDimMatrix* m_pPosMatrix = nullptr;
		//key �������
		std::map<int, NozzleParam> m_mapNozzleParam;

		CMachineCalibration* m_pCalibrationDB = nullptr;

		CProduct* m_pProduct = nullptr;

		CManageDB* m_pCManageDB = nullptr;

		int m_nMatrixID = 1;

		std::string m_sName = "TipMatrix";

	};
}