From ea996431950e6ecff451bd40d1228f51d077475c Mon Sep 17 00:00:00 2001
From: LYW <leeyeanwoo@diteam.co.kr>
Date: 목, 28 4월 2022 09:22:18 +0900
Subject: [PATCH] Ongoing100 #4086 CF AOI Review FDC SW Version 추가 요청

---
 ReviewHistory/ReveiwHistory/DitGlassRawStruct.h |  594 +++++++++++++++++++++++++++-------------------------------
 1 files changed, 278 insertions(+), 316 deletions(-)

diff --git a/ReviewHistory/ReveiwHistory/DitGlassRawStruct.h b/ReviewHistory/ReveiwHistory/DitGlassRawStruct.h
index a269abd..5a336e2 100644
--- a/ReviewHistory/ReveiwHistory/DitGlassRawStruct.h
+++ b/ReviewHistory/ReveiwHistory/DitGlassRawStruct.h
@@ -48,78 +48,38 @@
 		memset(this, 0, sizeof(_grmGlassData));
 	}
 
-	//int
-	int			m_nCellNum;
-	int			m_nDefectNum;
-	int			m_nOriginDirection;				//{ GD_LeftTop = 0, GD_RightTop = 1, GD_LeftBottom = 10, GD_RightBottom = 11 };
-	int			m_nConerCutDirection;
-	int			m_nScanCoordinateY;				//여기가 0이면 일반, 1이면 Scan방향이 y축(즉 scan방향이 단축, offline 설비 같은)
-	int			m_nGlassSizeWidth;
-	int			m_nGlassSizeHeight;
-	int			m_nVcrResultCode;
-	//결함 갯수 관리 변수
-	int			m_nDefectNumSizeSmall;
-	int			m_nDefectNumSizeMid;
-	int			m_nDefectNumSizeLarge;
-	int			m_nDefectNumSizeHuge;
-	int			m_nDefectNumSizeUltra;
-	int			m_nDefectNumLocActive;
-	int			m_nDefectNumLocPad;
-	int			m_nDefectNumLocCrack;
-	int			m_nDefectNumLocBM;
-	int			m_nDefectNumTypeTB;
-	int			m_nDefectNumTypeTW;
-	int			m_nDefectNumTypeRB;
-	int			m_nDefectNumTypeRW;
-	int			m_nDefectNumTypeMD;
-	int			m_nDefectNumTypeCD;
-	int			m_nDefectNumTypeMC;
-	int			m_nDefectNumJudgeOKWhite;
-	int			m_nDefectNumJudgeOKBlack;
-	int			m_nDefectNumJudgeNG;
-	int			m_nDefectNumJudgeRW;
-	int			m_nDefectNumJudgeRP;
-	int			m_nDefectNumJudgeRV;
-	int			m_nDefectNumJudgeTR;
-	int			m_nDefectNumJudgePR;
-	int			m_nDefectNumJudgeLine;
-	int			m_nDefectNumStackTD;
-	int			m_nDefectNumStackSD;
-	int			m_nDefectNumStackPD;
-	int			m_nDefectNumStackSP;
-	int			m_nSlot_No; 
-	int			m_nReviewNum;
-	int			m_nStackNum;
-	int			m_nCutOffDefectNum;
-	int			m_nRawMergeNum;
-	//KYH ND 판정 추가
-	int			m_nDefectNumJudgeND;
-	//DUMY DATA
-	int			Dumy_int[9];
-
-	//double
-	double		m_nAlignCcdTheta;
-	double		m_nAlignCcdShitftX;
-	double		m_nAlignCcdShitftY;
-	double		m_nAlignPreTheta;
-	double		m_nAlignPreShitftX;
-	double		m_nAlignPreShitftY;
-	double		m_nAlignBasicTheta;
-	double		m_nAlignBasicShitftX;
-	double		m_nAlignBasicShitftY;
-	//DUMY DATA
-	double		Dumy_double[10];
-
-	//char
 	//Glass 정보
 	char m_strFileName[64];
 	char m_strPath[256];
+
+	int m_nCellNum;
+	int m_nDefectNum;
+
+	int m_nOriginDirection;				//{ GD_LeftTop = 0, GD_RightTop = 1, GD_LeftBottom = 10, GD_RightBottom = 11 };
+	int m_nConerCutDirection;
+	int	m_nScanCoordinateY;				//여기가 0이면 일반, 1이면 Scan방향이 y축(즉 scan방향이 단축, offline 설비 같은)
+
+	int m_nGlassSizeWidth;
+	int m_nGlassSizeHeight;
+    /* <KYH 211129 : #3796 ADD Start> */
+	int			m_nDefectNumJudgeND;
+	/* <KYH 211129 : #3796 ADD End> */
+	//DUMY DATA
+	int			Dumy_int[9];
+
 	//설비정보
 	char m_strLine[32];
 	char m_strEquipType[32];			
 	char m_strEquipID[32];				
 	char m_strStepID[32];			
 	char m_strOperID[32];				
+
+	CTime	m_tmGlassLoading;			//3. START_TIME
+	CTime	m_tmInspectionStart;			//3. START_TIME
+	CTime	m_tmInspectionEND;			//4. END_TIME
+	CTime	m_tmReviewLoading;
+	CTime	m_tmReviewEnd;
+
 	//기본 물류정보
 	char m_strGlassID[32];				//Glass ID
 	char m_strPPID[32];					
@@ -130,16 +90,76 @@
 	char m_strGlassJudge[32];			//GLASS_JUDGE
 	char m_strGlassCode[32];			//Grade or Code
 	char m_strProductID[16];			//4. PRODUCT_ID
+
+	//VCR
+	int m_nVcrResultCode;
 	char m_strVCRResult[32];
 	char m_strVCRGlassID[32];
+
+
+	//결함 갯수 관리 변수
+	int			m_nDefectNumSizeSmall;
+	int			m_nDefectNumSizeMid;
+	int			m_nDefectNumSizeLarge;
+	int			m_nDefectNumSizeHuge;
+	int			m_nDefectNumSizeUltra;
+
+	int			m_nDefectNumLocActive;
+	int			m_nDefectNumLocPad;
+	int			m_nDefectNumLocCrack;
+	int			m_nDefectNumLocBM;
+
+	int			m_nDefectNumTypeTB;
+	int			m_nDefectNumTypeTW;
+	int			m_nDefectNumTypeRB;
+	int			m_nDefectNumTypeRW;
+	int			m_nDefectNumTypeMD;
+	int			m_nDefectNumTypeCD;
+	int			m_nDefectNumTypeMC;
+
+	int			m_nDefectNumJudgeOKWhite;
+	int			m_nDefectNumJudgeOKBlack;
+	int			m_nDefectNumJudgeNG;
+	int			m_nDefectNumJudgeRW;
+	int			m_nDefectNumJudgeRP;
+	int			m_nDefectNumJudgeRV;
+	int			m_nDefectNumJudgeTR;
+	int			m_nDefectNumJudgePR;
+	/*< LHS 20211029 - #3783 MOD Start >*/
+	int			m_nDefectNumJudgeLine;
+	/*< LHS 20211029 - #3783 MOD End >*/
+	int			m_nDefectNumStackTD;
+	int			m_nDefectNumStackSD;
+	int			m_nDefectNumStackPD;
+	int			m_nDefectNumStackSP;
+
+
+	//카메라/스캔 정보 [김태현 2018/12/5]
+	short		m_nCameraNum;
+	short		m_nScanNum;
+	unsigned char m_nGrayLevelAvg[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM];		
+	unsigned char m_nGrayLevelMin[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM];
+	unsigned char m_nGrayLevelMax[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM];
+
 	//얼라인 정보 um[김태현 2018/12/10]
+	double	m_nAlignCcdTheta;
+	double	m_nAlignCcdShitftX;
+	double	m_nAlignCcdShitftY;
+	double	m_nAlignPreTheta;
+	double	m_nAlignPreShitftX;
+	double	m_nAlignPreShitftY;
+	double	m_nAlignBasicTheta;
+	double	m_nAlignBasicShitftX;
+	double	m_nAlignBasicShitftY;
 	char	m_strAlignFirst[64];
 	char	m_strAlignSecond[64];
 // 	char	m_strAlignPath[256];
+
 	//CSOT용 물류 정보 [김태현 2018/12/5]
 	char m_strCassetteSequenceNo[16];
 	char m_strOwnerCode[16];			//2. OWNER_CODE
 	char m_strOwnerType[16];			//3. OWNER_TYPE
+
 	char m_strProcessID[21];			//5. PROCESS_ID
 	char m_strProductGroup[16];			//6. PRODUCT_GROUP
 	char m_strCSTID[16];				//8. CST_ID
@@ -149,6 +169,7 @@
 	char m_strPreRecipeID[32];			//13.PRE_RECIPE_ID
 	char m_strGroupID[16];				//14.GROUP_ID
 	char m_cAutoSampleFlag;				//15.AUTOSAMPLEFLAG
+
 	// CPRJ용 물류 정보
 	char m_strProdType[3];
 	char m_strBatchID[13];
@@ -161,53 +182,42 @@
 	char m_strFlowHistory[2];
 	char m_strCount1[2];
 	char m_strCount2[2];
+	char m_StrMergeList[10][12];
 	//Mura Data 0412 nwh
 	char m_strMaxAvgGray[12];
 	char m_strMaxPortion[12];
-	char m_strShrinked[6];
+
+
+     //1226NWH
 	char m_strReadingFlag[2]; 
-	char m_StrMergeList[10][12];
-	//DUMY DATA
-	char m_strRawMergeStepID[32];
-	char Dumy_char[104]; 
-
-	//unsigned char
-	unsigned char m_nGrayLevelAvg[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM];		
-	unsigned char m_nGrayLevelMin[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM];
-	unsigned char m_nGrayLevelMax[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM];
-	//DUMY DATA
-	unsigned char Dumy_unsigned_char[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM];
-
-	//CTime
-	CTime	m_tmGlassLoading;			//3. START_TIME
-	CTime	m_tmInspectionStart;			//3. START_TIME
-	CTime	m_tmInspectionEND;			//4. END_TIME
-	CTime	m_tmReviewLoading;
-	CTime	m_tmReviewEnd;
-	//DUMY DATA
-	CTime	Dumy_CTime[10];
-
-	//short
-	short		m_nCameraNum;
-	short		m_nScanNum;
-	//DUMY DATA
-	short		Dumy_short[10];
-
-	//BYTE
 	BYTE m_nUniqueID[4];
-	BYTE m_nGlassDataBitSignal[4];
-	//DUMY DATA
-	BYTE Dumy_BYTE[10];
+	int m_nSlot_No; 
 
-	//BOOL
-	BOOL m_bJob_end;
+	BYTE m_nGlassDataBitSignal[4];
+	bool m_bJob_end;  
+
+	//201217 CJH - 찍은 Defect Review 개수
+	int m_nReviewNum;
+	//201221 CJH - 파싱한 Stack 결과
+	int m_nStackNum;
 	BOOL m_bStackRead;
+
+	/*< KJG 20211024 - #3487 ADD Start >*/
+	int m_nRawMergeNum;
 	BOOL m_bRawMergeRead;
+	/*< KJG 20211024 - #3487 ADD End >*/
+	//210203 CJH - CutOff 대상 결함 수
+	int m_nCutOffDefectNum;
+	//210323 CJH - Server/Frame Shrink 정보 추가
+	char m_strShrinked[6];
+	//210326 CJH - RAW 입력 Defect 수량 상한 사용여부
 	BOOL m_bRawCutoff;
+	//210907 KJG - EdgeCrack 검사 사용 유무
 	BOOL m_bEdgeCrackUse;
 	BOOL m_bRawMergeUse;
-	//DUMY DATA
-	BOOL Dumy_BOOL[9];
+	/* < KJG 20220225 - #3850 ADD Start >*/ 
+	char m_strRawMergeStepID[32];
+	/* < KJG 20220225 - #3850 ADD End >*/
 };
 struct _grmBlockData
 {
@@ -215,12 +225,10 @@
 	{
 		memset(this, 0, sizeof(_grmBlockData));
 	}
-	//char
 	char m_strBlockID[16];				//1. BLOCK_ID
 	char m_cBlockJudgeAOI;				//2. BLOCK_JUDGE_AOI
 	char m_cBlockJudgeATS;				//4. BLOCK_JUDGE_ATS
 	char m_cBlockJudgeTEG;				//5. BLOCK_JUDGE_TEG
-	//int
 	int m_nGlassIdDCR;					//22. GLASS_ID_DCR
 };
 struct _grmCellData
@@ -230,27 +238,32 @@
 		memset(this, 0, sizeof(_grmCellData));
 	}
 	int getTotalDefectNum(){return m_nDefectNumTypeTB+m_nDefectNumTypeTW+m_nDefectNumTypeRB+m_nDefectNumTypeRW; };
+	int						m_nCellID;							//1. PANEL_ID
+	short					m_nModelIdx;				// 몇 번째 모델인가?
 
-	//int
-	int			m_nCellID;							//1. PANEL_ID
-	int			m_rectCellLeft;
-	int			m_rectCellTop;
-	int			m_rectCellRight;
-	int			m_rectCellBottom;
-	/*Judgement*/
-	int			m_nJudgement;
-	int			m_nJudgeFlag;
-	int			m_nJudgeGlade;
+	char					m_strCellName[32];
+	int						m_rectCellLeft;
+	int						m_rectCellTop;
+	int						m_rectCellRight;
+	int						m_rectCellBottom;
+
+	int/*Judgement*/		m_nJudgement;
+	int						m_nJudgeFlag;
+	int						m_nJudgeGlade;
+
+
 	//결함 갯수 관리 변수
 	int			m_nDefectNumSizeSmall;
 	int			m_nDefectNumSizeMid;
 	int			m_nDefectNumSizeLarge;
 	int			m_nDefectNumSizeHuge;
 	int			m_nDefectNumSizeUltra;
+
 	int			m_nDefectNumLocActive;
 	int			m_nDefectNumLocPad;
 	int			m_nDefectNumLocCrack;
 	int			m_nDefectNumLocBM;
+
 	int			m_nDefectNumTypeTB;
 	int			m_nDefectNumTypeTW;
 	int			m_nDefectNumTypeRB;
@@ -258,38 +271,12 @@
 	int			m_nDefectNumTypeMD;
 	int			m_nDefectNumTypeCD;
 	int			m_nDefectNumTypeMC;
-	int			m_nDefectNumJudgeOKWhite;
-	int			m_nDefectNumJudgeOKBlack;
-	int			m_nDefectNumJudgeNG;
-	int			m_nDefectNumJudgeRW;
-	int			m_nDefectNumJudgeRP;
-	int			m_nDefectNumJudgeRV;
-	int			m_nDefectNumJudgeTR;
-	int			m_nDefectNumJudgePR;
-	int			m_nDefectNumJudgeLine;
-	int			m_nReflowResult[8];			// 0: Reflow X 1: Reflow OK 2: Reflow NG
-	// Filtering된 Stack별 수
-	int			m_nDefectTDCount;
-	int			m_nDefectSDCount;
-	int			m_nDefectPDCount;
-	int			m_nDefectSPCount;
-	// Gate/Data 총 갯수
-	int			m_nGateNum;
-	int			m_nDataNum;
-	// 210129 CJH - Cell Origin 방향
-	int			m_nCellXDir;
-	int			m_nCellYDir;
-	//KYH ND 판정 추가
+	/* <KYH 211129 : #3796 ADD Start> */
 	int			m_nDefectNumJudgeND;
+	/* <KYH 211129 : #3796 ADD End> */
 	//DUMY DATA
 	int			Dumy_int[9];
 
-	//double
-	//DUMY DATA
-	double			Dumy_double[10];
-
-	//char
-	char		m_strCellName[32];
 	//Mura Data nwh 0404 
 	char		m_strProImage[32];
 	char		m_strAvgGray_0[12];
@@ -301,6 +288,7 @@
 	char		m_strFFTVah_0[12];
 	char		m_strFFTVaq_0[12];
 	char		m_strFFTPK_0[12];
+
 	char		m_strAvgGray_1[12];
 	char		m_strPortion_1[12];
 	//kyh Mura Data 추가 0622
@@ -310,6 +298,7 @@
 	char		m_strFFTVah_1[12];
 	char		m_strFFTVaq_1[12];
 	char		m_strFFTPK_1[12];
+
 	char		m_strAvgGray_2[12];
 	char		m_strPortion_2[12];
 	//kyh Mura Data 추가 0622
@@ -319,6 +308,7 @@
 	char		m_strFFTVah_2[12];
 	char		m_strFFTVaq_2[12];
 	char		m_strFFTPK_2[12];
+
 	char		m_strAvgGray_3[12];
 	char		m_strPortion_3[12];
 	//kyh Mura Data 추가 0622
@@ -328,28 +318,33 @@
 	char		m_strFFTVah_3[12];
 	char		m_strFFTVaq_3[12];
 	char		m_strFFTPK_3[12];
-	//DUMY DATA
-	char		Dumy_char[256];
 
-	//unsigned char
+	int			m_nDefectNumJudgeOKWhite;
+	int			m_nDefectNumJudgeOKBlack;
+	int			m_nDefectNumJudgeNG;
+	int			m_nDefectNumJudgeRW;
+	int			m_nDefectNumJudgeRP;
+	int			m_nDefectNumJudgeRV;
+	int			m_nDefectNumJudgeTR;
+	int			m_nDefectNumJudgePR;
+	/*< LHS 20211029 - #3783 MOD Start >*/
+	int			m_nDefectNumJudgeLine;
+	/*< LHS 20211029 - #3783 MOD End >*/
+	int			m_nReflowResult[8];			// 0: Reflow X 1: Reflow OK 2: Reflow NG
 
-	//CTime
+	// Filtering된 Stack별 수
+	int			m_nDefectTDCount;
+	int			m_nDefectSDCount;
+	int			m_nDefectPDCount;
+	int			m_nDefectSPCount;
 
-	//short
-	short		m_nModelIdx;				// 몇 번째 모델인가?
-	//DUMY DATA
-	short		Dumy_short[10];
+	// Gate/Data 총 갯수
+	int			m_nGateNum;
+	int			m_nDataNum;
 
-	//BYTE
-	//DUMY DATA
-	BYTE		Dumy_BYTE[10];
-
-	//BOOL
-	//DUMY DATA
-	BOOL		Dumy_BOOL[10];
-
-
-
+	// 210129 CJH - Cell Origin 방향
+	int			m_nCellXDir;
+	int			m_nCellYDir;
 };
 
 struct _grmDefectReviewData
@@ -359,64 +354,46 @@
 		memset(this, 0, sizeof(_grmDefectReviewData));
 	}
 
+	//////////////////////////////////////////////////////////////////////////
+	//여기서 부터 리뷰 영역 [김태현 2019/1/19]
 	ditRaw::ReviewPlanType			m_nPlanType	;	
-	//int
 	int			m_nResultCode;  //0:None, 1:Success
 	int			m_nShotIndex; //리뷰 찍은 순번 [김태현 2018/12/5]
 	int			m_nModuleIndex;
 	int			m_nMagnificIndex;
-	int			m_nMeasure_Index;
-	int			m_nMeasure_ResultCode; //0:None, 1:Success
-	int			m_nWsi_ResultCode; //0:None, 1:Success
-	int			m_nWsi_Type;									// 함몰 / 돌기
-	int			m_nWsiReflowPositionIndex;					// WsiReflowPositionIndex
-	int			m_nWsi_pReflowResultData[8];
-	int			m_nReflow_Index;
-	int			m_nReflow_ResultCode; //0:None, // 검출한 Line의 개수. 3 미만 : DAM2 Reflow 판정, 4~5 : DAM1 Reflow 판정, 6 : no Reflow 판정 / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side
-	int			m_nReflow_Side;
-	int			m_nReflow_InspectionMode;
-	//DUMY DATA
-	int			Dumy_int[10];
-
-	//double
-	double		m_dWsi_DamDistance;
-	double		m_dWsiMmMotorX;								// WSI 모터 좌표 20180223 HJH
-	double		m_dWsiMmMotorY;
-	//DUMY DATA
-	double		Dumy_double[10];
-
-	//char
-	char		m_strRevImageName[256];
-	char		m_strRevImagePath[256];
-	char		m_strWsi_2DImageFilename[256];
-	char		m_strWsi_3DImageFilename[256]; 
-	//DUMY DATA
-	char		Dumy_char[256];
-
-	//unsigned char
-
-	//CTime
-
-	//short
-
-	//BYTE
-	//DUMY DATA
-	BYTE Dumy_BYTE[10];
-
-	//BOOL
-	//DUMY DATA
-	BOOL Dumy_BOOL[10];
-
-	//float
 	float		m_fManification;
 	float		m_fManificResoultion;
-	float		m_fMesure_ResultData[8];	// 0:Type, 1:ShiftX, 2:ShiftY
-	float		m_fWsi_ResultData[8];			// 0:Type, 1:Height(um), 2:Width
-	float		m_fWsiManification;							// WSI 배율
-	float		m_fReflow_LinePosData[8];	
-	//DUMY DATA
-	float		Dumy_float[10];
+	char		m_strRevImageName[256];
+	char		m_strRevImagePath[256];
 
+	//////////////////////////////////////////////////////////////////////////
+	// Measure 영역
+	int			m_nMeasure_Index;
+	int			m_nMeasure_ResultCode; //0:None, 1:Success
+	float		m_fMesure_ResultData[8];	// 0:Type, 1:ShiftX, 2:ShiftY
+
+	//////////////////////////////////////////////////////////////////////////
+	// WSI영역
+	int			m_nWsi_ResultCode; //0:None, 1:Success
+	int			m_nWsi_Type;									// 함몰 / 돌기
+	float		m_fWsi_ResultData[8];			// 0:Type, 1:Height(um), 2:Width
+	char		m_strWsi_2DImageFilename[256];
+	char		m_strWsi_3DImageFilename[256]; 
+	int			m_nWsiReflowPositionIndex;					// WsiReflowPositionIndex
+	int			m_nWsi_pReflowResultData[8];
+	double		m_dWsi_DamDistance;
+
+	double		m_dWsiMmMotorX;								// WSI 모터 좌표 20180223 HJH
+	double		m_dWsiMmMotorY;
+	float		m_fWsiManification;							// WSI 배율
+
+	//////////////////////////////////////////////////////////////////////////
+	// Reflow 영역	
+	int			m_nReflow_Index;
+	int			m_nReflow_ResultCode; //0:None, // 검출한 Line의 개수. 3 미만 : DAM2 Reflow 판정, 4~5 : DAM1 Reflow 판정, 6 : no Reflow 판정 / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side
+	float		m_fReflow_LinePosData[8];	
+	int			m_nReflow_Side;
+	int			m_nReflow_InspectionMode;
 };
 
 struct _grmDefectData
@@ -426,81 +403,20 @@
 		memset(this, 0, sizeof(_grmDefectData));
 	}
 
-	_grmDefectReviewData m_ReviewDefect;
-
-	//int
-	int				m_nDefectIdx;				// 카메라에서의 결함 인덱스 201207 CJH - 자릿 수 넘침. int형으로 변경
-	int				m_nPixelConv;				// pixel 단위 좌표
-	int				m_nPixelScan;				// pixel 단위 좌표
-	int				m_nDefectRScale;			// 픽셀단위 결함 높이	-------------------------RS
-	int				m_nPixelGlassStart;			// Glass 시작 픽셀
-	int				m_nUMOriginX;				// um단위 x좌표 (원점기준)
-	int				m_nUMOriginY;				// um단위 y조표 (원점기준)
-	int				m_nUMCenterAlignX;			// um단위 X좌표 (Glass Center 기준, 얼라인보정 후)
-	int				m_nUMCenterAlignY;			// um단위 Y좌표 (Glass Center 기준, 얼라인보정 후)
-	int				m_nUMCenterX;				// um단위 X좌표 (Glass Center 기준, 얼라인보정 전)
-	int				m_nUMCenterY;				// um단위 Y좌표 (Glass Center 기준, 얼라인보정 전)
-	int				m_nUMSizeX;					// um단위 X 크기	-----------------------------UX
-	int				m_nUMSizeY;					// um단위 Y 크기	-----------------------------UY
-	int				m_nUMSize;					// um단위 크기.
-	int				m_nPadRegionIdx;			// PAD 영역 인덱스
-	int				m_nUMCellX;					// 셀 원점 기준 x 좌표
-	int				m_nUMCellY;					// 셀 원점 기준 y 좌표
-	int				m_nUMShotX;					// 샷 기준 X좌표
-	int				m_nUMShotY;					// 샷 기준 Y좌표
-	int				m_StackInfo;				// Stack Flag
-	int				m_ClassificationType;				// enum ClassificationType			{ ClassType_None= 0, ClassType_PI_Over= 1, ClassType_PI_Under= 2, ClassType_TFE_Circle= 3, ClassType_Bubble, ClassType_Scratch, ClassType_Particle}; Classification Type, PI나 TFE등 추가 분류  알고리즘 적용 결과.
-	int				m_nAtomWidth;				// TFE 핵 너비
-	int				m_nAtomHeight;				// TFE 핵 높이
-	int				m_nDefectMerge;		// 현재 디펙의 머지 여부
-	int				m_nPixelSizeOrigin;
-	int				m_nScratchRatio;
-	int				m_nDensity;			// 원형 결함 구분을 위한 밀도 [2017.8.2 bhs]
-	int				m_nAngle;					// 각도
-	int				m_nMajor;					// 장축 길이(Long)
-	int				m_nMinor;					// 단축 길이(Short)
-	int				m_nCompact;					// Blob 장축을 지름으로 하는 원의 넓이와 Blob 넓이의 비율
-	int				m_nThickness;				// Blob 넓이와 장축의 비율 (Area / Major)
-	int				m_nHliLayers;				// 해당결함에 포함된 레이어 bit처리
-	int				m_nAlignRectLeft;
-	int				m_nAlignRectTop;
-	int				m_nAlignRectBottom;
-	int				m_nAlignRectRight;
-	//DUMY DATA
-	int				Dumy_int[10];
-
-	//double
-	double			m_dScanResolution;
-	double			m_dConvResolution;
-	//DUMY DATA
-	double			Dumy_double[10];
-
-	//char
-	char			m_strStackFirst[60];			// Stack Step. //201221 CJH - 최대 사이즈 60bytes
-	char			m_strUnitID[16];				// 유닛아이디
-	char			m_strDefectCode[32];			// Defect Code
-	char			m_strAoiImageName[256];			// Defect Image Name(CCD Image)
-	char			m_strDefectName[16];
-	char			m_strDefectType[16];
-	char			m_strAoiImagePath[255];
-	char			m_strReviewImagePath[255];
-	char			m_strLNDefectCode[12];
-	//DUMY DATA
-	char			 Dumy_char[256];
-
-	//unsigned char
-
-	//CTime
-
-	//short
 	short			m_nDefectID;
 	short			m_nCameraID;
 	short			m_nScanIdx;
 	//short			m_nDefectIdx;				// 카메라에서의 결함 인덱스
+	int				m_nDefectIdx;				// 카메라에서의 결함 인덱스 201207 CJH - 자릿 수 넘침. int형으로 변경
+
+	int				m_nPixelConv;				// pixel 단위 좌표
+	int				m_nPixelScan;				// pixel 단위 좌표
+
 	short							m_nPixelSize;				// 결함크기		---------------------------------PS
 	short/*SERVER_DefectType*/		m_DefectType;				// 결함 타입	---------------------------------DT
 	short/*SERVER_DefectSubType*/	m_DefectSubType;			// 결함의 판정상태.
 	short/*SERVER_DefectBDType*/	m_DefectBDType;				// 결함 타입 - Bright, Dark, Both
+
 	short			m_sPixelWidth;				// 픽셀단위 결함 너비
 	short			m_sPixelHeight;				// 픽셀단위 결함 높이
 	short			m_nLevelSrcMin;				// 결함 밝기 Min	-----------------------------SN
@@ -512,62 +428,117 @@
 	short			m_nLevelDiffMin;			// 비교차 Min	---------------------------------DN
 	short			m_nLevelDiffMax;			// 비교차 Max	---------------------------------DX
 	short			m_nLevelDiffAvg;			// 비교차 Avg	---------------------------------DA
+
+	int				m_nDefectRScale;			// 픽셀단위 결함 높이	-------------------------RS
 	short			m_sThreshold;				// 결함을 검출할 때의 Threshold
 	short			m_sThresholdAvg;			// 결함을 검출할 때의 Threshold AVG
 	short			m_sDefectPeak;				// 결함의 Peak.
 	short			m_sDefectLevel;				// (DiffAvg - Th) BOE 8G 요청사항
+
+	int				m_nPixelGlassStart;			// Glass 시작 픽셀
 	short			m_sDefectLoc;
+
 	short			m_sZoneClassPixelCount[16];
 	short			m_sZonePixelCount[16];	// Zone별 결함 Pixel 수
 	short			m_sZoneValueMin[16];	// Zone별 결함 Min
 	short			m_sZoneValueMax[16];	// Zone별 결함 Max
 	short			m_sZoneValueAvg[16];	// Zone별 결함 Avg
 	short			m_sZonePixelPercent[16];	// --------------------------------------Z0~ZF
+
 	//210127 CJH - Zone별 Source Gray 입력
 	short			m_sZoneValueSrcMin[16];	// Zone별 Source Min
 	short			m_sZoneValueSrcMax[16];	// Zone별 Source Max
 	short			m_sZoneValueSrcAvg[16]; // Zone별 Source Avg
+
+	int				m_nUMOriginX;				// um단위 x좌표 (원점기준)
+	int				m_nUMOriginY;				// um단위 y조표 (원점기준)
+	int				m_nUMCenterAlignX;			// um단위 X좌표 (Glass Center 기준, 얼라인보정 후)
+	int				m_nUMCenterAlignY;			// um단위 Y좌표 (Glass Center 기준, 얼라인보정 후)
+	int				m_nUMCenterX;				// um단위 X좌표 (Glass Center 기준, 얼라인보정 전)
+	int				m_nUMCenterY;				// um단위 Y좌표 (Glass Center 기준, 얼라인보정 전)
+	int				m_nUMSizeX;					// um단위 X 크기	-----------------------------UX
+	int				m_nUMSizeY;					// um단위 Y 크기	-----------------------------UY
+	int				m_nUMSize;					// um단위 크기.
+	CRect			m_RectUM;					// 디펙 센터 기준 사각형.
+
 	short/*SERVER_DefectSizeType*/	m_DefectSizeType;			// 결함 크기 종류enum SERVER_DefectSizeType		{ SizeType_Unknown = 0, SizeType_Small, SizeType_Mid, SizeType_Large, SizeType_Huge, SizeType_Ultra };
 	short/*SERVER_DefectPeakType*/	m_DefectPeakType;			// Peak의 종류.
 	short/*Judgement*/				m_DefectJudgement;			// 결함 판정.
+	BOOL					m_bDefectCutoff;			// 컷 오프 디펙(TRUE= Cutoff, FALSE)
+	short/*MAP16_DefectClass*/		m_DefectClass;				// BOE Defect Class 16등분 구분
+	int				m_nPadRegionIdx;			// PAD 영역 인덱스
+
+	int				m_nUMCellX;					// 셀 원점 기준 x 좌표
+	int				m_nUMCellY;					// 셀 원점 기준 y 좌표
 	short			m_nModelIdx;				// 몇 번째 모델인가?
 	short			m_nCellIdx;					// 몇번째 셀인가?
 	short			m_nCellGate;				// 셀별 Gate라인(얼라인 보정 전)
 	short			m_nCellData;				// 셀별 Data라인(얼라인 보정 전)
 	short			m_nCellGateAlign;			// 셀별 Gate라인(얼라인 보정 후)
 	short			m_nCellDataAlign;			// 셀별 Data라인(얼라인 보정 후)
-	short/*MAP16_DefectClass*/		m_DefectClass;				// BOE Defect Class 16등분 구분
+
+	int				m_nUMShotX;					// 샷 기준 X좌표
+	int				m_nUMShotY;					// 샷 기준 Y좌표
 	short			m_nMaskDefectIdx;			// 한 Glass에서 발견된 마스크결함 묶음의 인덱스.
 	short			m_nShotIdx;					// 노광샷 번호
 	short			m_nMatchShotCount;			// 동일한 마스크 결함의 수.
 	short			m_nMatchMaxSize;			// 동일한 마스크 중 가장 큰 결함의 크기.
+
 	short			m_nRepeatCount;				// 연속결함발견위한 동일좌표 반복수
 	short			m_nMaskRepeatCount;
+	int				m_StackInfo;				// Stack Flag
+	BOOL			m_bRealStack;				// Stack 머지에 의한 TD(TRUE) 인지, 필터링에 의한 TD(FALSE)구분할 수 있다.
 	short			m_nStackStepCount;			// Stack 수
 	short			m_nStackColorIdx;			// Color를 선택하는 인덱스.
-	short/*ReKind*/			m_DefectKind;				// 결함 종류
-	short			m_nHliLevelIdx;				// 몇 번째 레벨(채널)인가?
-	short/*LineDefectType*/ m_LineDefectType;
-	//DUMY DATA
-	short			Dumy_short[100];
-
-	//BYTE
-	//DUMY DATA
-	BYTE Dumy_BYTE[10];
-
-	//BOOL
-	BOOL			m_bDefectCutoff;			// 컷 오프 디펙(TRUE= Cutoff, FALSE)
-	BOOL			m_bRealStack;				// Stack 머지에 의한 TD(TRUE) 인지, 필터링에 의한 TD(FALSE)구분할 수 있다.
-	BOOL			m_bMergeState;				// Merge Status
-	BOOL			m_bShrinked;				//210323 CJH - Frame Shrink 정보 추가
-	//DUMY DATA
-	BOOL Dumy_BOOL[10];
-
-	//float
-
-	//CRect
-	CRect			m_RectUM;					// 디펙 센터 기준 사각형.
 	//CString			m_strStackStep[CFDEFECT_STACKCOUNT];			// Stack Step.
+	char			m_strStackFirst[60];			// Stack Step. //201221 CJH - 최대 사이즈 60bytes
+	char			m_strUnitID[16];				// 유닛아이디
+
+	int				m_ClassificationType;				// enum ClassificationType			{ ClassType_None= 0, ClassType_PI_Over= 1, ClassType_PI_Under= 2, ClassType_TFE_Circle= 3, ClassType_Bubble, ClassType_Scratch, ClassType_Particle}; Classification Type, PI나 TFE등 추가 분류  알고리즘 적용 결과.
+	int				m_nAtomWidth;				// TFE 핵 너비
+	int				m_nAtomHeight;				// TFE 핵 높이
+	short/*ReKind*/			m_DefectKind;				// 결함 종류
+
+	char			m_strDefectCode[32];			// Defect Code
+	BOOL			m_bMergeState;				// Merge Status
+	char			m_strAoiImageName[256];			// Defect Image Name(CCD Image)
+	int				m_nDefectMerge;		// 현재 디펙의 머지 여부
+
+
+	int				m_nPixelSizeOrigin;
+	int				m_nScratchRatio;
+	int				m_nDensity;			// 원형 결함 구분을 위한 밀도 [2017.8.2 bhs]
+
+	char			m_strDefectName[16];
+	char			m_strDefectType[16];
+
+	double			m_dScanResolution;
+	double			m_dConvResolution;
+
+	int				m_nAngle;					// 각도
+	int				m_nMajor;					// 장축 길이(Long)
+	int				m_nMinor;					// 단축 길이(Short)
+	int				m_nCompact;					// Blob 장축을 지름으로 하는 원의 넓이와 Blob 넓이의 비율
+	int				m_nThickness;				// Blob 넓이와 장축의 비율 (Area / Major)
+	
+	short			m_nHliLevelIdx;				// 몇 번째 레벨(채널)인가?
+	int				m_nHliLayers;				// 해당결함에 포함된 레이어 bit처리
+
+	BOOL			m_bShrinked;				//210323 CJH - Frame Shrink 정보 추가
+
+	char			m_strAoiImagePath[255];
+	char			m_strReviewImagePath[255];
+
+	int				m_nAlignRectLeft;
+	int				m_nAlignRectTop;
+	int				m_nAlignRectBottom;
+	int				m_nAlignRectRight;
+	/*< LHS 20211029 - #3783 MOD Start >*/
+	char			m_strLNDefectCode[12];
+	short/*LineDefectType*/ m_LineDefectType;
+	/*< LHS 20211029 - #3783 MOD End >*/
+
+	_grmDefectReviewData m_ReviewDefect;
 };
 
 
@@ -613,29 +584,33 @@
 {
 	//공유 메모리 생성할 공간 결정 [김태현 2018/11/12]
 	size_t m_nGlassRawDataSize;
-
-	//int 
 	int m_nGlassMaxDataNum;
 	int m_nBlockMaxDataNum;
 	int m_nCellMaxDataNum;
 	int m_nDefectMaxDataNum;
 	int m_nStackMaxDataNum;
+	/*< KJG 20211024 - #3487 ADD Start >*/
 	int m_nRawMergeMaxDataNum;
+	/*< KJG 20211024 - #3487 ADD End >*/
+
 	//Char 기준 자료가 있는 시작 위치 [김태현 2018/11/12]
 	int m_nGlassDataPoint;
 	int m_nBlockDataPoint;
 	int m_nCellDataPoint;
 	int m_nDefectDataPoint;
 	int m_nStackDataPoint;
+	/*< KJG 20211024 - #3487 ADD Start >*/
 	int m_nRawMergeDataPoint;
+	/*< KJG 20211024 - #3487 ADD End >*/
+
 	int m_nSizeOfGlassData;
 	int m_nSizeOfBlockData;
 	int m_nSizeOfCellData;
 	int m_nSizeOfDefectData;
 	int m_nSizeOfStackData;
+	/*< KJG 20211024 - #3487 ADD Start >*/
 	int m_nSizeOfRawMergeData;
-	//DUMY DATA
-	int			Dumy_int[10];
+	/*< KJG 20211024 - #3487 ADD End >*/
 };
 struct _grmDitGlassRawInfo : public _grmDitMemInfo, public _grmDitCommand
 {
@@ -782,37 +757,24 @@
 
 	size_t m_nGlassRawDataSize;
 
-	//int
 	int m_nGlassMaxDataNum;
 	int m_nBlockMaxDataNum;
 	int m_nCellMaxDataNum;
 	int m_nDefectMaxDataNum;
 	int m_nStackMaxDataNum;
+
 	int m_nGlassDataPoint;
 	int m_nBlockDataPoint;
 	int m_nCellDataPoint;
 	int m_nDefectDataPoint;
 	int m_nStackDataPoint;
+
 	int m_nSizeOfGlassData;
 	int m_nSizeOfBlockData;
 	int m_nSizeOfCellData;
 	int m_nSizeOfDefectData;
 	int m_nSizeOfStackData;
 
-	//DUMY DATA
-	int			Dumy_int[10];
-	//DUMY DATA
-	double		Dumy_double[10];
-	//DUMY DATA
-	char		Dumy_char[256];
-	//DUMY DATA
-	short		Dumy_short[10];
-	//DUMY DATA
-	BYTE		Dumy_BYTE[10];
-	//DUMY DATA
-	BOOL		Dumy_BOOL[10];
-
 private:
-	//bool
 	bool m_bRefAlloc;
 };
\ No newline at end of file

--
Gitblit v1.9.3