SDC C-Project CF Review 프로그램
LYW
2022-03-30 e147f44d605bdce9c395c1fd66a88f6cc8106350
ReviewHistory/ReveiwHistory/DitGlassRawStruct.h
@@ -8,6 +8,7 @@
#define RAWMESSENGER_MAXCAMNUM 30
#define RAWMESSENGER_MAXSCANNUM 20
#define RAWMESSENGER_MAXHLINUM 8
#define MAX_ZONE_NUM 16
@@ -47,34 +48,79 @@
      memset(this, 0, sizeof(_grmGlassData));
   }
   //Glass ����
   //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;
   //��������
   //설비정보
   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];               
   char m_strEPPID[32];            
@@ -84,74 +130,16 @@
   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;
   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];
   unsigned char m_nGrayLevelMin[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM];
   unsigned char m_nGrayLevelMax[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM];
   //����� ���� 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;
   //얼라인 정보 um[김태현 2018/12/10]
   char   m_strAlignFirst[64];
   char   m_strAlignSecond[64];
//    char   m_strAlignPath[256];
   //CSOT�� ���� ���� [������ 2018/12/5]
   //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
@@ -161,8 +149,7 @@
   char m_strPreRecipeID[32];         //13.PRE_RECIPE_ID
   char m_strGroupID[16];            //14.GROUP_ID
   char m_cAutoSampleFlag;            //15.AUTOSAMPLEFLAG
   // CPRJ�� ���� ����
   // CPRJ용 물류 정보
   char m_strProdType[3];
   char m_strBatchID[13];
   char m_strPairHPanelID[13];
@@ -174,33 +161,53 @@
   char m_strFlowHistory[2];
   char m_strCount1[2];
   char m_strCount2[2];
   //Mura Data 0412 nwh
   char m_strMaxAvgGray[12];
   char m_strMaxPortion[12];
     //1226NWH
   char m_strReadingFlag[2];
   BYTE m_nUniqueID[4];
   int m_nSlot_No;
   BYTE m_nGlassDataBitSignal[4];
   bool m_bJob_end;
   //201217 CJH - ���� Defect Review ����
   int m_nReviewNum;
   //201221 CJH - �Ľ��� Stack ���
   int m_nStackNum;
   BOOL m_bStackRead;
   //210203 CJH - CutOff ��� ���� ��
   int m_nCutOffDefectNum;
   //210323 CJH - Server/Frame Shrink ���� �߰�
   char m_strShrinked[6];
   //210326 CJH - RAW �Է� Defect ���� ���� ��뿩��
   BOOL m_bRawCutoff;
   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];
   //BOOL
   BOOL m_bJob_end;
   BOOL m_bStackRead;
   BOOL m_bRawMergeRead;
   BOOL m_bRawCutoff;
   BOOL m_bEdgeCrackUse;
   BOOL m_bRawMergeUse;
   //DUMY DATA
   BOOL Dumy_BOOL[9];
};
struct _grmBlockData
{
@@ -208,10 +215,12 @@
   {
      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
@@ -221,32 +230,27 @@
      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;            // �� ��° ���ΰ�?
   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
   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;
   //결함 갯수 관리 변수
   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;
@@ -254,49 +258,6 @@
   int         m_nDefectNumTypeMD;
   int         m_nDefectNumTypeCD;
   int         m_nDefectNumTypeMC;
   //Mura Data nwh 0404
   char      m_strProImage[32];
   char      m_strAvgGray_0[12];
   char      m_strPortion_0[12];
   //kyh Mura Data �߰� 0622
   char      m_strCorner_Gray_0[12];
   char      m_strAvgAmp_0[12];
   char      m_strFFTVar_0[12];
   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
   char      m_strCorner_Gray_1[12];
   char      m_strAvgAmp_1[12];
   char      m_strFFTVar_1[12];
   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
   char      m_strCorner_Gray_2[12];
   char      m_strAvgAmp_2[12];
   char      m_strFFTVar_2[12];
   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
   char      m_strCorner_Gray_3[12];
   char      m_strAvgAmp_3[12];
   char      m_strFFTVar_3[12];
   char      m_strFFTVah_3[12];
   char      m_strFFTVaq_3[12];
   char      m_strFFTPK_3[12];
   int         m_nDefectNumJudgeOKWhite;
   int         m_nDefectNumJudgeOKBlack;
   int         m_nDefectNumJudgeNG;
@@ -305,22 +266,90 @@
   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�� ��
   // Filtering된 Stack별 수
   int         m_nDefectTDCount;
   int         m_nDefectSDCount;
   int         m_nDefectPDCount;
   int         m_nDefectSPCount;
   // Gate/Data �� ����
   // Gate/Data 총 갯수
   int         m_nGateNum;
   int         m_nDataNum;
   // 210129 CJH - Cell Origin ����
   // 210129 CJH - Cell Origin 방향
   int         m_nCellXDir;
   int         m_nCellYDir;
   //KYH ND 판정 추가
   int         m_nDefectNumJudgeND;
   //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];
   char      m_strPortion_0[12];
   //kyh Mura Data 추가 0622
   char      m_strCorner_Gray_0[12];
   char      m_strAvgAmp_0[12];
   char      m_strFFTVar_0[12];
   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
   char      m_strCorner_Gray_1[12];
   char      m_strAvgAmp_1[12];
   char      m_strFFTVar_1[12];
   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
   char      m_strCorner_Gray_2[12];
   char      m_strAvgAmp_2[12];
   char      m_strFFTVar_2[12];
   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
   char      m_strCorner_Gray_3[12];
   char      m_strAvgAmp_3[12];
   char      m_strFFTVar_3[12];
   char      m_strFFTVah_3[12];
   char      m_strFFTVaq_3[12];
   char      m_strFFTPK_3[12];
   //DUMY DATA
   char      Dumy_char[256];
   //unsigned char
   //CTime
   //short
   short      m_nModelIdx;            // 몇 번째 모델인가?
   //DUMY DATA
   short      Dumy_short[10];
   //BYTE
   //DUMY DATA
   BYTE      Dumy_BYTE[10];
   //BOOL
   //DUMY DATA
   BOOL      Dumy_BOOL[10];
};
struct _grmDefectReviewData
@@ -330,46 +359,64 @@
      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_nShotIndex; //리뷰 찍은 순번 [김태현 2018/12/5]
   int         m_nModuleIndex;
   int         m_nMagnificIndex;
   float      m_fManification;
   float      m_fManificResoultion;
   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_nWsi_Type;                           // 함몰 / 돌기
   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_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];
};
struct _grmDefectData
@@ -379,140 +426,148 @@
      memset(this, 0, sizeof(_grmDefectData));
   }
   short         m_nDefectID;
   short         m_nCameraID;
   short         m_nScanIdx;
   //short         m_nDefectIdx;            // ī�޶󿡼��� ���� �ε���
   int            m_nDefectIdx;            // ī�޶󿡼��� ���� �ε��� 201207 CJH - �ڸ� �� ��ħ. int������ ����
   _grmDefectReviewData m_ReviewDefect;
   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
   short         m_nLevelSrcMax;            // ���� ��� Max   -----------------------------SX
   short         m_nLevelSrcAvg;            // ���� ��� Avg   -----------------------------SA
   short         m_nLevelRefMin;            // �񱳴�� ��� Min   -------------------------RN
   short         m_nLevelRefMax;            // �񱳴�� ��� Max   -------------------------RX
   short         m_nLevelRefAvg;            // �񱳴�� ��� Avg   -------------------------RA
   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����(����� ���� ��)
   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
   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
   BOOL         m_bRealStack;            // Stack ������ ���� TD(TRUE) ����, ���͸��� ���� TD(FALSE)������ �� �ִ�.
   short         m_nStackStepCount;         // Stack ��
   short         m_nStackColorIdx;         // Color�� �����ϴ� �ε���.
   //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_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]
   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_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];
   //���� ���� ���� [������ 2019/1/19]
   _grmDefectReviewData m_ReviewDefect;
   //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;            // 카메라에서의 결함 인덱스
   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
   short         m_nLevelSrcMax;            // 결함 밝기 Max   -----------------------------SX
   short         m_nLevelSrcAvg;            // 결함 밝기 Avg   -----------------------------SA
   short         m_nLevelRefMin;            // 비교대상 밝기 Min   -------------------------RN
   short         m_nLevelRefMax;            // 비교대상 밝기 Max   -------------------------RX
   short         m_nLevelRefAvg;            // 비교대상 밝기 Avg   -------------------------RA
   short         m_nLevelDiffMin;         // 비교차 Min   ---------------------------------DN
   short         m_nLevelDiffMax;         // 비교차 Max   ---------------------------------DX
   short         m_nLevelDiffAvg;         // 비교차 Avg   ---------------------------------DA
   short         m_sThreshold;            // 결함을 검출할 때의 Threshold
   short         m_sThresholdAvg;         // 결함을 검출할 때의 Threshold AVG
   short         m_sDefectPeak;            // 결함의 Peak.
   short         m_sDefectLevel;            // (DiffAvg - Th) BOE 8G 요청사항
   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
   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;         // 결함 판정.
   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등분 구분
   short         m_nMaskDefectIdx;         // 한 Glass에서 발견된 마스크결함 묶음의 인덱스.
   short         m_nShotIdx;               // 노광샷 번호
   short         m_nMatchShotCount;         // 동일한 마스크 결함의 수.
   short         m_nMatchMaxSize;         // 동일한 마스크 중 가장 큰 결함의 크기.
   short         m_nRepeatCount;            // 연속결함발견위한 동일좌표 반복수
   short         m_nMaskRepeatCount;
   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.
};
@@ -556,32 +611,37 @@
struct _grmDitMemInfo
{
   //���� �޸� ������ ���� ���� [������ 2018/11/12]
   //공유 메모리 생성할 공간 결정 [김태현 2018/11/12]
   size_t m_nGlassRawDataSize;
   //int
   int m_nGlassMaxDataNum;
   int m_nBlockMaxDataNum;
   int m_nCellMaxDataNum;
   int m_nDefectMaxDataNum;
   int m_nStackMaxDataNum;
   //Char ���� �ڷᰡ �ִ� ���� ��ġ [������ 2018/11/12]
   int m_nRawMergeMaxDataNum;
   //Char 기준 자료가 있는 시작 위치 [김태현 2018/11/12]
   int m_nGlassDataPoint;
   int m_nBlockDataPoint;
   int m_nCellDataPoint;
   int m_nDefectDataPoint;
   int m_nStackDataPoint;
   int m_nRawMergeDataPoint;
   int m_nSizeOfGlassData;
   int m_nSizeOfBlockData;
   int m_nSizeOfCellData;
   int m_nSizeOfDefectData;
   int m_nSizeOfStackData;
   int m_nSizeOfRawMergeData;
   //DUMY DATA
   int         Dumy_int[10];
};
struct _grmDitGlassRawInfo : public _grmDitMemInfo, public _grmDitCommand
{
   size_t m_nGlassLoadingCount;
   emAOIProcStep m_ClientProcStep; //AOI, Review�� ���� ���
   emAOIProcStep m_ServerProcStep; //GlassRaw Messenger(Server)�� ó�� �Ϸ� �� ���
   emAOIProcStep m_ClientProcStep; //AOI, Review가 보낸 명령
   emAOIProcStep m_ServerProcStep; //GlassRaw Messenger(Server)가 처리 완료 한 명령
};
class CgrmGlassRawData
@@ -668,7 +728,7 @@
   {
      if(pInfo == NULL || pData == NULL) return FALSE;
      if(1) //new type //�޸� �� ���� ũ�⿡ �������
      if(1) //new type //메모리 총 공간 크기에 상관없이
      {
         //if(pInfo->m_nGlassRawDataSize != m_MemInfo.m_nGlassRawDataSize) return FALSE;
@@ -722,24 +782,37 @@
   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;
};