SDC C-Project CF Review 프로그램
LYW
2022-04-28 ea996431950e6ecff451bd40d1228f51d077475c
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
   int         m_nCellID;                     //1. PANEL_ID
   short               m_nModelIdx;            // 몇 번째 모델인가?
   char               m_strCellName[32];
   int         m_rectCellLeft;
   int         m_rectCellTop;
   int         m_rectCellRight;
   int         m_rectCellBottom;
   /*Judgement*/
   int         m_nJudgement;
   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;
};