From 9020bfb6f86ff853d5d5b3cee882132a244232da Mon Sep 17 00:00:00 2001
From: KEJ <kimeungju@diteam.co.kr>
Date: 금, 24 11월 2023 15:33:29 +0900
Subject: [PATCH] Merge branch 'feature/#4528_CF_AOI_Review_Motor_Offset_기능_추가' into develop

---
 ReviewSystem/ReviewSystem/DlgMotorOffSetTool.h |  151 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 151 insertions(+), 0 deletions(-)

diff --git a/ReviewSystem/ReviewSystem/DlgMotorOffSetTool.h b/ReviewSystem/ReviewSystem/DlgMotorOffSetTool.h
new file mode 100644
index 0000000..1fa3c1e
--- /dev/null
+++ b/ReviewSystem/ReviewSystem/DlgMotorOffSetTool.h
@@ -0,0 +1,151 @@
+癤�#pragma once
+#include <vector>
+#include <map>
+
+#define OFFSET_LIST_GRID_ROW_COUNT  1
+#define OFFSET_LIST_GRID_COL_COUNT  3 
+
+#define  FIXCELLCOLOR RGB(255, 102, 178)
+#define  NOFIXCELLCOLOR RGB(240, 240, 240)
+#define  MINCELLCOLOR RGB(204, 204, 255)
+#define  MAXCELLCOLOR RGB(204, 255, 204)
+#define	MOTOR_OFFSET_CONFIGFILE_DEFAULT_NAME _T("MotorOffset")
+#define	MOTOR_OFFSET_BACKUP_FORDER_NAME _T("OffsetBackup")
+#define	MOTOR_OFFSET_BACKUP_FORDER_PATH _T("D:\\DIT_Review\\ReviewServerConfig\\ReviewOffset\\OffsetBackup\\")
+#define GRID_ROW_START_POINT 2
+#define GRID_COL_START_POINT 2
+
+interface IDialogMotorOffSet2Parent 
+{
+	virtual BOOL IDMO2P_GetMotorPos(int nModule, double &dXpos, double &dYpos) = 0;
+};
+struct MotorOffSetInfo
+{	
+	double dXoffSetValue;
+	double dYoffSetValue;
+	MotorOffSetInfo() {
+		dXoffSetValue = 0;
+		dYoffSetValue = 0;
+	}
+	bool operator==(const MotorOffSetInfo& input) const
+	{
+		return 0 == memcmp(&input, this, sizeof(MotorOffSetInfo));
+	}
+};
+typedef std::vector<MotorOffSetInfo> VecMotorOffSetData;
+
+class CMotorOffsetData
+{
+public:
+	CMotorOffsetData() { ; }
+
+	~CMotorOffsetData() { ; }
+
+	// Defect Review
+	BOOL			CalcOffset(_Inout_ double& GlassPosX, _Inout_ double& GlassPos);
+
+	// Setting Dlg
+	void			SetRangeCountX(_In_ unsigned int nCount);
+	void			SetRangeCountY(_In_ unsigned int nCount);
+	BOOL			SetRangeX(_In_ unsigned int nIdx, _In_ double fX);
+	BOOL			SetRangeY(_In_ unsigned int nIdx, _In_ double fY);
+
+	int				GetRangeCountX();
+	int				GetRangeCountY();
+	double			GetRangeX(_In_ unsigned int nIdx);
+	double			GetRangeY(_In_ unsigned int nIdx);
+
+	BOOL			SetOffsetValue(_In_ unsigned int nXIndex, _In_ unsigned int nYIndex, _In_ MotorOffSetInfo pOffsetInfo);
+
+	MotorOffSetInfo		GetOffsetValue(_In_ int nXIndex, _In_ int nYIndex);
+
+	// File Access
+	BOOL			WriteConfigFile(int nIdx);
+	BOOL			ReadConfigFile(int nIdx);
+
+	//Read Func
+	BOOL LoadInfo(CString strFilePath, int nIdx);
+
+	bool operator==(const CMotorOffsetData& input) const
+	{
+		if (this->m_vtXRange == input.m_vtXRange)
+		{
+			if (this->m_vtYRange == input.m_vtYRange)
+			{
+				if (this->m_mapOffsetInfo == input.m_mapOffsetInfo)
+				{
+
+					return TRUE;
+				}
+			}
+		}
+		else FALSE;
+	}
+
+protected:
+
+	std::vector<double>		m_vtXRange;
+	std::vector<double>		m_vtYRange;
+	std::map<int, std::map<int, MotorOffSetInfo>>	m_mapOffsetInfo;  // <YRange , <XRange , OffsetInfo> >
+private:
+
+
+};
+typedef std::map<int, CMotorOffsetData>					MapMotorOffSetInfo;
+
+
+class CDlgMotorOffSetTool : public CDialogEx
+{
+	DECLARE_DYNAMIC(CDlgMotorOffSetTool)
+
+public:
+	CDlgMotorOffSetTool(CWnd* pParent = nullptr);   // �몴以� �깮�꽦�옄�엯�땲�떎.
+	virtual ~CDlgMotorOffSetTool();
+
+	// ���솕 �긽�옄 �뜲�씠�꽣�엯�땲�떎.
+#ifdef AFX_DESIGN_TIME
+	enum { IDD = IDD_DLG_MOTOR_OFFSET_TOOL };
+#endif
+
+
+protected:
+	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 吏��썝�엯�땲�떎.
+
+	DECLARE_MESSAGE_MAP()
+
+public:
+	virtual BOOL OnInitDialog();
+	afx_msg void OnBnClickedOK();
+	afx_msg void OnBnClickedCancel();
+	afx_msg void OnXCountKillFocus();
+	afx_msg void OnYCountKillFocus();
+
+	void InitOffSetInfoGridControl();
+	void SetColorType();
+	void InitProcess();
+	void UpdateGridcontrol();
+	void SetDMO2P(IDialogMotorOffSet2Parent* pDMO2P) { m_pDMO2P = pDMO2P; }
+
+	BOOL CalOffsetInfo(int nModuleIdx, double &XPos, double &YPos);
+	////////////==============================
+	void ApplyOffSetInfo(); //Grid -> Map
+	//////////================================
+
+protected:
+	CRITICAL_SECTION			m_csMapSafer;
+
+	COLORTYPE Color[10];
+
+	int m_nEditXposCount;
+	int m_nEditYposCount;
+	// �꽕鍮꾨퀎 Offset 
+	int m_nCurOffsetModuleIdx;
+public:
+	CGridCtrl m_ctrlGridMotorOffSetInfo;
+	IDialogMotorOffSet2Parent* m_pDMO2P;
+
+	MapMotorOffSetInfo			m_mapMotorOffsetInfo;
+	MapMotorOffSetInfo			m_mapMotorOffsetInfo_OLD;
+	CComboBox m_ctrlCmbModuleIdx;
+	afx_msg void OnSelchangeComboMotorOffsetModuleidx();
+};

--
Gitblit v1.9.3