SDC C-Project CF Review 프로그램
Ongoing50 #3428 CF AOI Review Recipe Editor 리뷰 우선순위 조건 타입 변경기능 적용 및 검증
- 우선 순위 조건 Defect Type -> Defecct Code 변경
11개 파일 변경됨
665 ■■■■■ 파일 변경됨
ReviewSystem/CHReviewPrioritySorter/PrioritySorter_CPJT.cpp 45 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/CHReviewRecipe/RcpPriorityInfo.cpp 8 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/CHReviewRecipe/Rcp_RsReviewManager.cpp 32 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/CHReviewResult/DefectResult.cpp 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/CHReviewResultParser/ParsingGlassResult_CPJT.cpp 78 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewRecipeEditor/DlgReview.cpp 111 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DlgDefectList.cpp 67 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DlgDeffectHistroy.cpp 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/include/CHReviewRecipe/RcpPriorityInfo.h 16 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/include/CHReviewResult/DefectResult.h 69 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/include/CHReviewResultParser/ParsingGlassResult_CPJT.h 233 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/CHReviewPrioritySorter/PrioritySorter_CPJT.cpp
@@ -125,11 +125,11 @@
        for(constMapDefectResultIt it=pMapDefectResult->begin();it!=pMapDefectResult->end();it++)
        {
            //pDefectResult는 MapDefectResult<int,CDefectResult>에서 2번째 값
            //pDefectResult�� MapDefectResult<int,CDefectResult>���� 2��° ��
            pDefectResult = static_cast<CDefectResult*>(it->second);
            if(pDefectResult == NULL || pDefectResult->bReviewAdded==TRUE) continue;
            if(pDefectResult->nDefectCode ==2) continue; //고객사 요청사항 190609 chm Crack 안찍기
            if(pDefectResult->nDefectCode ==2) continue; //����� ��û���� 190609 chm Crack �����
            if(pPriorityInfo->GetPriorityDefectSizeOption())
            {
@@ -186,13 +186,13 @@
        m_vecDefectResultPtrTemp.clear();
    }
    // 결함 우선순위 정렬결과 출력
    // ���� �켱���� ���İ�� ���
    CString strFilename = _T("");
    //strFilename.Format(_T("C:\\Users\\dit-344\\Desktop\\testfile\\Sorting_Review.csv"));
    strFilename.Format(_T("D:\\Sorting_Review.csv"));
    SaveDefectPoint(m_vecDefectResultPtr, strFilename);
    // 결과 만들기
    // ��� �����
    return AddReviewDefectResult();
}
@@ -225,11 +225,11 @@
        for(constMapDefectResultIt it=pMapDefectResult->begin();it!=pMapDefectResult->end();it++)
        {
            //pDefectResult는 MapDefectResult<int,CDefectResult>에서 2번째 값
            //pDefectResult�� MapDefectResult<int,CDefectResult>���� 2��° ��
            pDefectResult = static_cast<CDefectResult*>(it->second);
            if(pDefectResult == NULL) continue;
             
            if(pDefectResult->nDefectCode == 2)continue; //고객사 요청사항 190609 chm Crack 안찍기
            if(pDefectResult->nDefectCode == 2)continue; //����� ��û���� 190609 chm Crack �����
            
            //if(pDefectResult->nLocation == DefectLoc_ASG || pDefectResult->nLocation == DefectLoc_PAD || pDefectResult->nLocation == DefectLoc_C2C)    continue;
@@ -286,7 +286,7 @@
        m_vecDefectResultPtrTemp.clear();
    }
    // 결함 우선순위 정렬결과 출력
    // ���� �켱���� ���İ�� ���
    CString strFilename = _T("");
    //    strFilename.Format(_T("D:\\Sorting_Wsi_temp1.csv"));
    //    SaveDefectPoint(vecDefectResultPtrTemp1, strFilename);
@@ -297,7 +297,7 @@
    //    strFilename.Format(_T("D:\\Sorting_Wsi.csv"));
    //    SaveDefectPoint(m_vecDefectResultPtr, strFilename);
    // 결과 만들기..
    // ��� �����..
    return AddWsiDefectResult();
}
@@ -361,7 +361,7 @@
    {
        const CRcpUserDefectInfo *pDefectInfo = m_pRsRcpReviewInfo->GetRcpUserDefectInfo(nPointIdx);
        if (pDefectInfo==NULL) continue;
        if (pDefectInfo->m_nInspectionMode != 0) continue; // _T("WSI") 일 경우 continue 20181218 smok
        if (pDefectInfo->m_nInspectionMode != 0) continue; // _T("WSI") �� ��� continue 20181218 smok
        sResult.Reset();
@@ -446,7 +446,7 @@
    {
        const CRcpUserDefectInfo *pInfo = m_pRsRcpReviewInfo->GetRcpUserDefectInfo(nPointIdx);
        if (pInfo==NULL) continue;
        if (pInfo->m_nInspectionMode != 1) continue; // _T("REVIEW") 일 경우 continue 20181218 smok
        if (pInfo->m_nInspectionMode != 1) continue; // _T("REVIEW") �� ��� continue 20181218 smok
        sResult.Reset();
@@ -620,9 +620,16 @@
    if (pPriorityInfo==NULL || pDefectResult==NULL) return FALSE;
    // check Type
    if (pPriorityInfo->GetPriorityOpticData() != RCP_PRIORITY_ORDER_OPTIC_ALL)
    //if (pPriorityInfo->GetPriorityOpticData() != RCP_PRIORITY_ORDER_OPTIC_ALL)
    //{
    //
    //    //if (pDefectResult->nDefectCode != pPriorityInfo->GetPriorityOpticData()) return FALSE;
    //}
    //210608 Defect Code �� ä�¼� ���� ��û
    if (pPriorityInfo->GetPriorityDefectCode() != RCP_PRIORITY_DEFECT_CODE_ALL)
    {
        if (pDefectResult->nDefectCode != pPriorityInfo->GetPriorityOpticData()) return FALSE;
        if (pDefectResult->nDefectJudgeCode != pPriorityInfo->GetPriorityDefectCode()) return FALSE;
    }
    if (pPriorityInfo->GetPriorityGradeData() != RCP_PRIORITY_Judge_ALL)
@@ -715,7 +722,7 @@
        if (pPriorityInfo->GetPriorityModelData() < 0)return FALSE;
        //레시피 인덱스 Model0 -> 1 그래서 -1
        //������ �ε��� Model0 -> 1 �׷��� -1
        if (pDefectResult->nMultiModel != pPriorityInfo->GetPriorityModelData() - 1)return FALSE;
    }
@@ -824,7 +831,7 @@
        if (pPriorityInfo->GetPriorityModelData() < 0)return FALSE;
        //레시피 인덱스 Model0 -> 1 그래서 -1
        //������ �ε��� Model0 -> 1 �׷��� -1
        if (pDefectResult->nMultiModel != pPriorityInfo->GetPriorityModelData()-1)return FALSE;
    }
@@ -848,7 +855,7 @@
        return nTotalPointCount;
    }
    CDefectResult* pDefectResult = NULL;
    const CRcpSortingInfo* pSortingInfo = m_pRsRcpReviewInfo->GetRcpWSISortInfo(); //WSI 가져다 쓰기
    const CRcpSortingInfo* pSortingInfo = m_pRsRcpReviewInfo->GetRcpWSISortInfo(); //WSI ������ ����
    if (pSortingInfo == NULL) return FALSE;
    int nCount = m_pRsRcpReviewInfo->GetRcpWsiPriorityInfoCount();
@@ -863,11 +870,11 @@
        for (constMapDefectResultIt it = pMapDefectResult->begin(); it != pMapDefectResult->end(); it++)
        {
            //pDefectResult는 MapDefectResult<int,CDefectResult>에서 2번째 값
            //pDefectResult�� MapDefectResult<int,CDefectResult>���� 2��° ��
            pDefectResult = static_cast<CDefectResult*>(it->second);
            if (pDefectResult == NULL) continue;
            if (pDefectResult->nDefectCode == 2)continue; //고객사 요청사항 190609 chm Crack 안찍기
            if (pDefectResult->nDefectCode == 2)continue; //����� ��û���� 190609 chm Crack �����
            //if (pDefectResult->nLocation == DefectLoc_ASG || pDefectResult->nLocation == DefectLoc_PAD || pDefectResult->nLocation == DefectLoc_C2C)    continue;
@@ -924,7 +931,7 @@
        m_vecDefectResultPtrTemp.clear();
    }
    // 결함 우선순위 정렬결과 출력
    // ���� �켱���� ���İ�� ���
    CString strFilename = _T("");
    //    strFilename.Format(_T("D:\\Sorting_Wsi_temp1.csv"));
    //    SaveDefectPoint(vecDefectResultPtrTemp1, strFilename);
@@ -935,7 +942,7 @@
    //    strFilename.Format(_T("D:\\Sorting_Wsi.csv"));
    //    SaveDefectPoint(m_vecDefectResultPtr, strFilename);
    // 결과 만들기..
    // ��� �����..
    return AddWsiMultishotDefectResult();
}
ReviewSystem/CHReviewRecipe/RcpPriorityInfo.cpp
@@ -13,9 +13,9 @@
void CRcpPriorityInfo::Reset()
{    
    m_nPriorityOpticData            = RCP_PRIORITY_ORDER_OPTIC_ALL;                // 우선순위 optic 데이터
    m_nPriorityGrayData                = RCP_PRIORITY_ORDER_GRAY_ALL;                // 우선순위 gray 데이터
    m_nPriorityStackData            = RCP_PRIORITY_ORDER_STACK_ALL;                // 우선순위 stack 데이터
    m_nPriorityOpticData            = RCP_PRIORITY_ORDER_OPTIC_ALL;                // �켱���� optic ������
    m_nPriorityGrayData                = RCP_PRIORITY_ORDER_GRAY_ALL;                // �켱���� gray ������
    m_nPriorityStackData            = RCP_PRIORITY_ORDER_STACK_ALL;                // �켱���� stack ������
    m_nPriorityDefectType            = RCP_PRIORITY_ORDER_PARTICLE;
    m_nPriorityModelData            = RCP_PRIORITY_MODEL_TYPE_ALL;
    m_nDefectGradeData              = RCP_PRIORITY_Judge_ALL;
@@ -24,7 +24,7 @@
    m_bUseSizeOption                = FALSE;
    m_nDefectumMinSize                = 0;
    m_nDefectumMaxSize                = 99999;
    m_nPriorityDefectCode            = RCP_PRIORITY_DEFECT_CODE_ALL; //20210608
}
void CRcpPriorityInfo::SetInfo(const CRcpPriorityInfo& rhs)
ReviewSystem/CHReviewRecipe/Rcp_RsReviewManager.cpp
@@ -9,7 +9,7 @@
{
}
void CRcp_RsReviewManager::SetFlanFile(CMacroFile& macroFile)//0117 공유메모리 플랜
void CRcp_RsReviewManager::SetFlanFile(CMacroFile& macroFile)//0117 �����޸� �÷�
{
    int nPlanIdx, nSlotIdx, nLightIdx, nAFMRecipeIdx, nUserDefectIdx, nReflowParameterIdx, nLightIdxWsi, nAFMRecipeIdxWsi;
    int nPlanCount, nLightCount, nAFMRecipeCount, nUserDefectCount, nLightCountWsi, nAFMRecipeCountWsi;
@@ -120,8 +120,11 @@
        const CRcpPriorityInfo *pRcpPriorityInfo = m_rsRcpReviewInfo.GetRcpPriorityInfo(nPriorityIdx);
        if (pRcpPriorityInfo==NULL) continue;
        strItem.Format(_T("RCP_REVIEW_PRIORITY_OPTIC_DATA_%02d"), nPriorityIdx);
        macroFile.SetItem(strItem, pRcpPriorityInfo->GetPriorityOpticData());
        /*    strItem.Format(_T("RCP_REVIEW_PRIORITY_OPTIC_DATA_%02d"), nPriorityIdx);
            macroFile.SetItem(strItem, pRcpPriorityInfo->GetPriorityOpticData());*/
        strItem.Format(_T("RCP_REVIEW_PRIORITY_DEFECTCODE_DATA_%02d"), nPriorityIdx);
        macroFile.SetItem(strItem, pRcpPriorityInfo->GetPriorityDefectCode());
        strItem.Format(_T("RCP_REVIEW_PRIORITY_USE_SIZEOPTION_%02d"), nPriorityIdx);
        macroFile.SetItem(strItem, pRcpPriorityInfo->GetPriorityDefectSizeOption());
@@ -187,7 +190,7 @@
    strItem.Format(_T("RCP_REVIEW_DEFOCUS_VALUE"));
    macroFile.SetItem(strItem, m_rsRcpReviewInfo.GetDefocusValue());
    // wsi 우선순위
    // wsi �켱����
    // Priority
    int nWsiPriorityCount = m_rsRcpReviewInfo.GetRcpWsiPriorityInfoCount();
    strItem.Format(_T("RCP_WSI_PRIORITY_COUNT"));
@@ -198,8 +201,11 @@
        const CRcpPriorityInfo *pRcpPriorityInfo = m_rsRcpReviewInfo.GetRcpWsiPriorityInfo(nPriorityIdx);
        if (pRcpPriorityInfo==NULL) continue;
        strItem.Format(_T("RCP_WSI_PRIORITY_DEFECT_TYPE_%02d"), nPriorityIdx);
        macroFile.SetItem(strItem, pRcpPriorityInfo->GetPriorityOpticData());
        //strItem.Format(_T("RCP_WSI_PRIORITY_DEFECT_TYPE_%02d"), nPriorityIdx);
        //macroFile.SetItem(strItem, pRcpPriorityInfo->GetPriorityOpticData());
        strItem.Format(_T("RCP_WSI_PRIORITY_DEFECTCODE_DATA_%02d"), nPriorityIdx);//20210608
        macroFile.SetItem(strItem, pRcpPriorityInfo->GetPriorityDefectCode());
        strItem.Format(_T("RCP_WSI_PRIORITY_USE_SIZEOPTION_%02d"), nPriorityIdx);
        macroFile.SetItem(strItem, pRcpPriorityInfo->GetPriorityDefectSizeOption());
@@ -765,9 +771,12 @@
        if(pRcpPriorityInfo == NULL) continue;
        int nData = 0;
        strItem.Format(_T("RCP_REVIEW_PRIORITY_OPTIC_DATA_%02d"), nPriorityIdx);
        /*strItem.Format(_T("RCP_REVIEW_PRIORITY_OPTIC_DATA_%02d"), nPriorityIdx); //210608
        macroFile.GetItem(strItem, nData);
        pRcpPriorityInfo->SetPriorityOpticData(nData);
        pRcpPriorityInfo->SetPriorityOpticData(nData);*/
        strItem.Format(_T("RCP_REVIEW_PRIORITY_DEFECTCODE_DATA_%02d"), nPriorityIdx); //210608
        macroFile.GetItem(strItem, nData);
        pRcpPriorityInfo->SetPriorityDefectCode(nData);
        strItem.Format(_T("RCP_REVIEW_PRIORITY_USE_SIZEOPTION_%02d"), nPriorityIdx);
        macroFile.GetItem(strItem, nData);
@@ -860,9 +869,12 @@
        if(pRcpPriorityInfo == NULL) continue;
        int nData = 0;
        strItem.Format(_T("RCP_WSI_PRIORITY_DEFECT_TYPE_%02d"), nPriorityIdx);
        /*strItem.Format(_T("RCP_WSI_PRIORITY_DEFECT_TYPE_%02d"), nPriorityIdx);
        macroFile.GetItem(strItem, nData);
        pRcpPriorityInfo->SetPriorityOpticData(nData);
        pRcpPriorityInfo->SetPriorityOpticData(nData);*/
        strItem.Format(_T("RCP_WSI_PRIORITY_DEFECTCODE_DATA_%02d"), nPriorityIdx);    //210608
        macroFile.GetItem(strItem, nData);
        pRcpPriorityInfo->SetPriorityDefectCode(nData);
        strItem.Format(_T("RCP_WSI_PRIORITY_USE_SIZEOPTION_%02d"), nPriorityIdx);
        macroFile.GetItem(strItem, nData);
ReviewSystem/CHReviewResult/DefectResult.cpp
@@ -145,4 +145,6 @@
    m_bClusterCore        = FALSE;
    nDefectWBType        = 0;
    nDefectJudgeCode = 0;
    strDefectJudgeCode = _T("");
}
ReviewSystem/CHReviewResultParser/ParsingGlassResult_CPJT.cpp
@@ -11,7 +11,7 @@
{
}
// [2017:5:12]-[WEZASW] : DFS Result File Format 변경
// [2017:5:12]-[WEZASW] : DFS Result File Format ����
void CParsingGlassResult_CPJT::ParsingFileToGlassResult(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr)//Cmark
{
    if(pGlassResult==NULL || pResultFileMgr==NULL)
@@ -61,7 +61,7 @@
        //=========================
        #pragma region 옛날 코드
        #pragma region ���� �ڵ�
        //cellResult.strCellID        = pResultFileMgr->GetRawData(eCSOTRaw_PanelInfoData, nCellIdx, eCSOTRaw_Panel_CellNum);                    // No.1 Cell Number
                                                // No.1 Cell Number
        //cellResult.nDefectCount        = atoi(pResultFileMgr->GetRawData(eCSOTRaw_PanelInfoData, nCellIdx, eCSOTRaw_Panel_RearCPDefectNum));        // No.2 Defect Count
@@ -84,9 +84,9 @@
        //=========================
        
        pGlassResult->AddCellResult(cellResult);        // 추가
        pGlassResult->AddCellResult(cellResult);        // �߰�
        // 예외처리 : PNL Total 수량과 실제 불량 개수 확인
        // ����ó�� : PNL Total ������ ���� �ҷ� ���� Ȯ��
        if (nTotalDefectIdx+cellResult.nDefectCount > nDefectRawDataCount)    {    continue;    }
                
@@ -103,7 +103,7 @@
        //    pDefectResult->nDefectidx1     = atoi( pResultFileMgr->GetDefectData(nDefIdx,1));
        //    pDefectResult->nDefectidx2   = atoi(pResultFileMgr->GetDefectData(nDefIdx,2));
            //pDefectResult->strDefectCode        = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_Code);                    // No.1 결함코드1
            //pDefectResult->strDefectCode        = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_Code);                    // No.1 �����ڵ�1
            pDefectResult->strDefectCode.TrimRight();
            pDefectResult->nDefectCode            = GetDefectCodeType( pGlassResult->m_strRecipeID, pDefectResult->strDefectCode );
@@ -125,7 +125,7 @@
        
            //pDefectResult->strDefectType        = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_AOI_DEFECT_TYPE);             // No.7 결함 Type    // A - N: Normal, C: Common, M: Mask
            //pDefectResult->strDefectType        = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_AOI_DEFECT_TYPE);             // No.7 ���� Type    // A - N: Normal, C: Common, M: Mask
            pDefectResult->nDefectType            = GetCSOTDefectType(pDefectResult->strDefectType);
            
            pDefectResult->nAOIArea                = atof(pResultFileMgr->GetDefectData(nTotalDefectIdx, 20));            // No.5 Defect Size
@@ -133,8 +133,8 @@
            pDefectResult->nSizeType            = GetSizeType(pDefectResult->strSizeType);
            pDefectResult->nAOISizeW            = atof(pResultFileMgr->GetDefectData(nTotalDefectIdx, eCPJTRaw_Defect_AOI_DEFECT_WID))*1000;        // No.10 Defect’s X axis size (um)
            pDefectResult->nAOISizeH            = atof(pResultFileMgr->GetDefectData(nTotalDefectIdx, eCPJTRaw_Defect_AOI_DEFECT_HGT))*1000;        // No.11 Defect’s Y axis size (um)
            pDefectResult->nAOISizeW            = atof(pResultFileMgr->GetDefectData(nTotalDefectIdx, eCPJTRaw_Defect_AOI_DEFECT_WID))*1000;        // No.10 Defect��s X axis size (um)
            pDefectResult->nAOISizeH            = atof(pResultFileMgr->GetDefectData(nTotalDefectIdx, eCPJTRaw_Defect_AOI_DEFECT_HGT))*1000;        // No.11 Defect��s Y axis size (um)
            pDefectResult->nAOISize                = atof(pResultFileMgr->GetDefectData(nTotalDefectIdx, 26));
            
            //pDefectResult->nAOISizeLength        = pDefectResult->nAOISizeW;
@@ -157,18 +157,18 @@
            
            //=======================
            #pragma region 옛날 코드
            #pragma region ���� �ڵ�
            /*
            //atoi(pResultFileMgr->GetCellData(idx,nCellIdx));
            ////pDefectResult->strCellID     
            //
            pDefectResult->strDefectCode        = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_Code);                    // No.1 결함코드1
            pDefectResult->strDefectCode        = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_Code);                    // No.1 �����ڵ�1
                        pDefectResult->strDefectCode.TrimRight();
                        pDefectResult->nDefectCode            = GetDefectCodeType( pGlassResult->m_strRecipeID, pDefectResult->strDefectCode );
                                    
                        pDefectResult->nUMCenterOriginX        = atof(pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_CenterOriX));        // No.3 Glass Center 기준 좌표 X(mm)
                        pDefectResult->nUMCenterOriginY        = atof(pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_CenterOriY));        // No.4 Glass Center 기준 좌표 Y(mm)
                        pDefectResult->nUMCenterOriginX        = atof(pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_CenterOriX));        // No.3 Glass Center ���� ��ǥ X(mm)
                        pDefectResult->nUMCenterOriginY        = atof(pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_CenterOriY));        // No.4 Glass Center ���� ��ǥ Y(mm)
                        pDefectResult->nUMOriginX            = (pGlassResult->GetGlassSizeX()/2) + pDefectResult->nUMCenterOriginX*1000;
                        pDefectResult->nUMOriginY            = (pGlassResult->GetGlassSizeY()/2) + pDefectResult->nUMCenterOriginY*1000;
                        //pDefectResult->nUMOriginX            = pDefectResult->nUMCenterOriginX*1000;
@@ -180,11 +180,11 @@
                        pDefectResult->strSizeType            = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_DefectSizeType);                // No.6 Defect SizeType    // S/M/L/O
                        pDefectResult->nSizeType            = GetSizeType(pDefectResult->strSizeType);
            
                        pDefectResult->strDefectType        = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_DefectType);             // No.7 결함 Type    // A - N: Normal, C: Common, M: Mask
                        pDefectResult->strDefectType        = pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_DefectType);             // No.7 ���� Type    // A - N: Normal, C: Common, M: Mask
                        pDefectResult->nDefectType            = GetCSOTDefectType(pDefectResult->strDefectType);
            
                        pDefectResult->nAOISizeW            = atof(pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_SizeDX))*1000;        // No.10 Defect’s X axis size (um)
                        pDefectResult->nAOISizeH            = atof(pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_SizeDY))*1000;        // No.11 Defect’s Y axis size (um)
                        pDefectResult->nAOISizeW            = atof(pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_SizeDX))*1000;        // No.10 Defect��s X axis size (um)
                        pDefectResult->nAOISizeH            = atof(pResultFileMgr->GetRawData(eCSOTRaw_DefectInfoData, nTotalDefectIdx, eCSOTRaw_Defect_SizeDY))*1000;        // No.11 Defect��s Y axis size (um)
                        pDefectResult->nAOISize                = int(pDefectResult->nAOISizeW*pDefectResult->nAOISizeH);
                        pDefectResult->nAOISizeLength        = pDefectResult->nAOISizeW;
            
@@ -222,7 +222,7 @@
    }
}
// [2017:5:12]-[WEZASW] : DFS Result File Format 변경 cmark
// [2017:5:12]-[WEZASW] : DFS Result File Format ���� cmark
int CParsingGlassResult_CPJT::ParsingReviewResultDataToFile(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr) 
{
    if (pResultFileMgr==NULL || pGlassResult==NULL)
@@ -304,7 +304,7 @@
#endif
            if (pResult->nDefectIdx != -1)
            {
                // 고정리뷰일때만
                // ���������϶���
                / *
                if( pGlassResult->GetUserResultCount() > 0 )
                {
@@ -407,7 +407,7 @@
    return nWriteCount;
}
// [2017:1:3]-[WEZASW] : WSI 측정 결과 쓰기 (사양 미정으로 기본 설정) (ING)
// [2017:1:3]-[WEZASW] : WSI ���� ��� ���� (��� �������� �⺻ ����) (ING)
int CParsingGlassResult_CPJT::ParsingWsiResultDataToFile(CGlassResult* pGlassResult, CResultFileManager* pResultFileMgr)
{
@@ -433,8 +433,8 @@
            if (pResultFileMgr && pResult->nDefectIdx != -1)
            {
                // [2017:5:13]-[WEZASW] : 7개 추가 항목이었으나 고객사 제출시(최종) 삭제(미스)되어 제공되어 고객사 회신으로 추가 항목(13, 25, 26)만 적용 하기로 기술팀(김D) 협의됨.
                // [2017:5:24]-[WEZASW] : AOI DFS(DFT) 항목 추가(Index 변경)
                // [2017:5:13]-[WEZASW] : 7�� �߰� �׸��̾����� ����� �����(����) ����(�̽�)�Ǿ� �����Ǿ� ����� ȸ������ �߰� �׸�(13, 25, 26)�� ���� �ϱ�� �����(��D) ���ǵ�.
                // [2017:5:24]-[WEZASW] : AOI DFS(DFT) �׸� �߰�(Index ����)
                ///pResultFileMgr->SetRawData(eB7Raw_DefectInfoData, pResult->nTotalDefectCount, 15, int(pResult->pWsi_ResultData[Wsi_X_Height]*1000));            // No.13 Defect Height (um)
                ///pResultFileMgr->SetRawData(eB7Raw_DefectInfoData, pResult->nTotalDefectCount, 27, pResult->nWsi_ResultCode);                                    // No.25 Measurement Code (Success:1 / fail:0)
                ///pResultFileMgr->SetRawData(eB7Raw_DefectInfoData, pResult->nTotalDefectCount, 28, int(pResult->pWsi_ResultData[Wsi_X_A_Ratio]*1000));        // No.26 Defect X axis Ration (um)
@@ -703,7 +703,7 @@
            // review image file name
            strImageFileName = pResult->strUploadImgFileName;
            
            // [2018/02/13 22:22:06 by jylee] related RTMS 매칭, 복사 처리
            // [2018/02/13 22:22:06 by jylee] related RTMS ��Ī, ���� ó��
            if (pResult->nDefectIdx != -1)
            {
                CheckResultFileAndCopy( pGlassResult, pResultFileMgr, pResult, strImageFileName );
@@ -1088,7 +1088,7 @@
int CParsingGlassResult_CPJT::GetCSOTDefectCode(CString strDfectType){
    //COST_CRACK=0,CSOT_PARTICLE,CSOT_MURA,CSOT_PROTRUDE,CSOT_DENT,CSOT_TFE_ABNORMAL,CSOT_BUBBLE,CSOT_SCRATCH
    //Compare 대상이면 0 대상보다크면  1 작으면 -1
    //Compare ����̸� 0 ��󺸴�ũ��  1 ������ -1
    if(strDfectType.Compare(_T("CRACK"))==0)
    {
@@ -1157,7 +1157,7 @@
            break;
        case Judge_Rework:        sStr.Format("RW");
            break;
        case Judge_Unknown:        sStr.Format("OK");//sStr.Format("Unknown");    //Unknown도 일단 OK
        case Judge_Unknown:        sStr.Format("OK");//sStr.Format("Unknown");    //Unknown�� �ϴ� OK
            break;
        default:                sStr.Format("OK");//sStr.Format("Ets");        
            break;
@@ -1197,9 +1197,14 @@
        {
            return DOWS;
        }
        else
        {
            return CODE_DEFAULT;
        }
        return 0;
}
// [2018/03/14 09:47:51 by jylee] related Deep Learning
int CParsingGlassResult_CPJT::GetDefectCodeType( const CString& strRecipeID, const CString& strValue )  
@@ -1344,7 +1349,7 @@
void CParsingGlassResult_CPJT::MemoryParsingFileToGlassResult( CGlassResult* pGlassResult, CDitGlassRawClient* pDitRawClient )
{
    //찐코드//
    //���ڵ�//
    if(pGlassResult==NULL || pDitRawClient==NULL)    return;
    CString strItem = _T("");
@@ -1376,7 +1381,7 @@
        cellResult.nDefectCount = pDitRawClient->GetCellData(nCellIdx)->getTotalDefectNum(); 
        cellResult.strCellJudge.Format(_T("%d"),pDitRawClient->GetCellData(nCellIdx)->m_nJudgement);
        
        //20201126 CELL 좌표계를 센터좌표로 바꿈으로 내부 좌표계에서 + 글라스 사이즈/2 해야됨
        //20201126 CELL ��ǥ�踦 ������ǥ�� �ٲ����� ���� ��ǥ�迡�� + �۶� ������/2 �ؾߵ�
        cellResult.nUMOriginX = pDitRawClient->GetCellData(nCellIdx)->m_rectCellLeft + pDitRawClient->GetGlassData()->m_nGlassSizeWidth/2;
        cellResult.nUMOriginY = pDitRawClient->GetCellData(nCellIdx)->m_rectCellTop + pDitRawClient->GetGlassData()->m_nGlassSizeHeight / 2;
        cellResult.nUMOriginWidth = pDitRawClient->GetCellData(nCellIdx)->m_rectCellRight - cellResult.nUMOriginX + pDitRawClient->GetGlassData()->m_nGlassSizeWidth / 2;
@@ -1386,7 +1391,7 @@
        CString strCellID(pDitRawClient->GetCellData(nCellIdx)->m_strCellName);
        cellResult.strCellID = strCellID;
        
        pGlassResult->AddCellResult(cellResult);        // 추가
        pGlassResult->AddCellResult(cellResult);        // �߰�
        
    }
    pGlassResult->m_strGlassID = pDitRawClient->GetGlassData()->m_strGlassID;
@@ -1414,7 +1419,7 @@
        if(pDefectResult->nDefectWBType == 1 || pDefectResult->nDefectWBType == 3 || pDefectResult->nDefectWBType ==5)    pDefectResult->nDefectWBType =2;
        else    pDefectResult->nDefectWBType = 1;
        //이거슨 컷오프 대상 Review 제외 210205
        //�̰Ž� �ƿ��� ��� Review ���� 210205
        if (pSharedDefect->m_bDefectCutoff == 1)
        {
            continue;
@@ -1431,7 +1436,10 @@
        pDefectResult->nUMOriginX            = pSharedDefect->m_nUMOriginX;// 
        pDefectResult->nUMOriginY            = pSharedDefect->m_nUMOriginY;// 
        
        //pDefectResult->nDefectCode =  GetCodeType(pDefectResult->strDefectCode);
        //20210608 �ڵ�� �켱����
        pDefectResult->nDefectJudgeCode = GetCodeType(pSharedDefect->m_strDefectCode);
        pDefectResult->strDefectJudgeCode = pSharedDefect->m_strDefectCode;
        pDefectResult->nJudgeType = pSharedDefect->m_DefectJudgement;
        pDefectResult->strJudgeType = GetGradeType(pDefectResult->nJudgeType);
@@ -1442,7 +1450,7 @@
        
        pDefectResult->nLocation            = pSharedDefect->m_sDefectLoc;
        //멀티 모델별 Review/WSI 필터링을 위한 인자
        //��Ƽ �𵨺� Review/WSI ���͸��� ���� ����
        pDefectResult->nMultiModel          = pSharedDefect->m_nModelIdx;
        if (pSharedDefect->m_DefectBDType == 1)
@@ -1471,17 +1479,17 @@
        ////20190311CHM 
        //if(pSharedDefect->m_StackInfo == 1) //스택 인데 리뷰 안함
        //if(pSharedDefect->m_StackInfo == 1) //���� �ε� ���� ����
        //{
        //    pDefectResult->nStackType     = 1; //3이 SD
        //    pDefectResult->nStackType     = 1; //3�� SD
        //}
        //else if(pSharedDefect->m_StackInfo == 2) // 스택인데 리뷰 함
        //else if(pSharedDefect->m_StackInfo == 2) // �����ε� ���� ��
        //{
        //    pDefectResult->nStackType     = 2;
        //}
        //else 
        //{
        //    pDefectResult->nStackType     = 0; //0이 ALL
        //    pDefectResult->nStackType     = 0; //0�� ALL
        //}
        pDefectResult->nStackType = pSharedDefect->m_StackInfo;
@@ -1809,8 +1817,8 @@
//#endif
//                if (pResult->nResultIdx != -1)
//                {
//                    // 20170831 smok 항목 추가 DEFECT_ZONE(AA/PAD/CRACK) 31 -> 32
//                    // [2017:5:24]-[WEZASW] : AOI DFS(DFT) 항목 추가(Index 변경)
//                    // 20170831 smok �׸� �߰� DEFECT_ZONE(AA/PAD/CRACK) 31 -> 32
//                    // [2017:5:24]-[WEZASW] : AOI DFS(DFT) �׸� �߰�(Index ����)
//                    pResultFileMgr->SetRawData(eB7Raw_DefectInfoData, nDefectCount + pResult->nResultIdx, 33, strTemp);        // No.31 Image File Name
//
//                    pResultFileMgr->SetRawData(eB7Raw_DefectInfoData, nDefectCount + pResult->nResultIdx, 34, "***");
ReviewSystem/ReviewRecipeEditor/DlgReview.cpp
@@ -1,4 +1,4 @@
// DlgReview_FIC.cpp : 구현 파일입니다.
// DlgReview_FIC.cpp : ���� �����Դϴ�.
//
#include "stdafx.h"
@@ -8,7 +8,7 @@
#include "ReviewRecipeEditorDlg.h"
#include "DlgFilterSizeOption.h"
// CDlgReview 대화 상자입니다.
// CDlgReview ��ȭ �����Դϴ�.
IMPLEMENT_DYNAMIC(CDlgReview, CDialog)
@@ -65,12 +65,12 @@
END_MESSAGE_MAP()
// CDlgReview 메시지 처리기입니다.
// CDlgReview �޽��� ó�����Դϴ�.
BOOL CDlgReview::OnInitDialog()
{
    CDialog::OnInitDialog();
    // TODO:  여기에 추가 초기화 작업을 추가합니다.
    // TODO:  ���⿡ �߰� �ʱ�ȭ �۾��� �߰��մϴ�.
    InitFilterGridControl();
    InitLightInfoGridControl();
    InitAFMRecipeGridControl();
@@ -82,9 +82,9 @@
void CDlgReview::OnBnClickedButtonReviewReset()
{
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�.
    //CDialog::OnOK();
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�.
    //CDialog::OnOK();
    UpdateData(FALSE);
}
@@ -92,7 +92,7 @@
void CDlgReview::OnBnClickedButtonReviewApply()
{
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�.
    //CDialog::OnCancel();
    SetFilterInfo(m_nType);
@@ -159,7 +159,7 @@
    nDataColumnWidth = (rect.Width() - 35 - nMargin) / (PRIORITY_INFO_GRID_COL_COUNT-1);
    Item.col = nColIdx;
    strTemp.Format(_T("Defect Type"));
    strTemp.Format(_T("Defect Code"));
    Item.strText = strTemp;
    m_ctrlGridFilterinfo.SetItem(&Item);
    m_ctrlGridFilterinfo.SetColumnWidth(nColIdx++, nDataColumnWidth+30);
@@ -244,7 +244,8 @@
                if(strArrayOption.GetSize() > 0)
                {
                    strItemText = strArrayOption.GetAt(pRcpPriorityInfo->GetPriorityOpticData());
                    //strItemText = strArrayOption.GetAt(pRcpPriorityInfo->GetPriorityOpticData());
                    strItemText = strArrayOption.GetAt(pRcpPriorityInfo->GetPriorityDefectCode()); //WSI ������ //20210608
                    m_ctrlGridFilterinfo.SetItemText(nRowIdx, nColIdx++, strItemText);
                }
            }
@@ -364,7 +365,8 @@
                if(strArrayOption.GetSize() > 0)
                {
                    strItemText = strArrayOption.GetAt(pRcpPriorityInfo->GetPriorityOpticData());
                    //strItemText = strArrayOption.GetAt(pRcpPriorityInfo->GetPriorityOpticData());
                    strItemText = strArrayOption.GetAt(pRcpPriorityInfo->GetPriorityDefectCode());//20210608 TRDF ������
                    m_ctrlGridFilterinfo.SetItemText(nRowIdx, nColIdx++, strItemText);
                }
            }
@@ -477,11 +479,11 @@
{
    UpdateData(TRUE);
    //리뷰 dlg 가져오기
    //���� dlg ��������
    CReviewRecipeEditorDlg* pDlg = (CReviewRecipeEditorDlg*)AfxGetMainWnd();
    if(pDlg == NULL) return;
    //리뷰 매니져
    //���� �Ŵ���
    CRcp_RsReviewManager* pRcpRsReviewManager = NULL;
    pRcpRsReviewManager = pDlg->GetRsReviewManager();
    if(pRcpRsReviewManager == NULL) return;
@@ -490,11 +492,11 @@
    CString strTemp, strItemText;    
    CStringArray strArrayOption;
    // [2016:11:2]-[WEZASW] : WSI(1)/Review(0) Type 분리
    // [2016:11:2]-[WEZASW] : WSI(1)/Review(0) Type �и�
    if(nType)
    {
        //WSI
        //조명
        //����
        nColIdx = 1;
        pRcpRsReviewManager->GetRsRcpReviewInfo()->SetRcpWsiLightInfoCount(m_nLightCount); 
        pRcpRsReviewManager->GetRsRcpReviewInfo()->m_bAutoLightWsi = m_ctrlAutoLight.GetCheck();
@@ -520,7 +522,7 @@
            nColIdx++;                
        }
        //AFM 레시피
        //AFM ������
        nRowIdx = 1;
        nColIdx = 1;
        pRcpRsReviewManager->GetRsRcpReviewInfo()->SetRcpWsiAFMRecipeInfoCount(m_nAFMCount); 
@@ -564,7 +566,7 @@
    else
    {
        //Review
        //조명
        //����
        nColIdx = 1;
        pRcpRsReviewManager->GetRsRcpReviewInfo()->SetRcpLightInfoCount(m_nLightCount); 
        pRcpRsReviewManager->GetRsRcpReviewInfo()->m_bAutoLight = m_ctrlAutoLight.GetCheck();
@@ -590,7 +592,7 @@
            nColIdx++;                
        }
        //AFM 레시피
        //AFM ������
        nRowIdx = 1;
        nColIdx = 1;
        pRcpRsReviewManager->GetRsRcpReviewInfo()->SetRcpAFMRecipeInfoCount(m_nAFMCount); 
@@ -635,11 +637,11 @@
{
    UpdateData(TRUE);
    //리뷰 dlg 가져오기
    //���� dlg ��������
    CReviewRecipeEditorDlg* pDlg = (CReviewRecipeEditorDlg*)AfxGetMainWnd();
    if(pDlg == NULL) return;
    //리뷰 매니져
    //���� �Ŵ���
    CRcp_RsReviewManager* pRcpRsReviewManager = NULL;
    pRcpRsReviewManager = pDlg->GetRsReviewManager();
    if(pRcpRsReviewManager == NULL) return;
@@ -683,7 +685,8 @@
                    strTemp = strArrayOption.GetAt(j);
                    if(strTemp.Compare(strItemText) == 0)
                    {
                        pRcpPriorityInfo->SetPriorityOpticData(j);
                        //pRcpPriorityInfo->SetPriorityOpticData(j);//20210608
                        pRcpPriorityInfo->SetPriorityDefectCode(j);
                        break;
                    }
                }
@@ -796,7 +799,8 @@
                    strTemp = strArrayOption.GetAt(j);
                    if(strTemp.Compare(strItemText) == 0)
                    {
                        pRcpPriorityInfo->SetPriorityOpticData(j);
                        //pRcpPriorityInfo->SetPriorityOpticData(j); //20210608
                        pRcpPriorityInfo->SetPriorityDefectCode(j);
                        break;
                    }
                }
@@ -930,7 +934,7 @@
    const CSystemInfo *pSystemInfo = pDlg->GetSys_SystemInfo();
    if (pSystemInfo==NULL) return;
    int nLightCount = 0; // 헤더 갯수가 조명 설정 갯수임
    int nLightCount = 0; // ��� ������ ���� ���� ������
    int nGantryCount = pSystemInfo->GetGantryInfoCount();
    for(int nGantryIdx=0; nGantryIdx<nGantryCount; nGantryIdx++)
    {
@@ -961,7 +965,7 @@
    Item.mask = GVIF_TEXT;
    Item.row = nRowIdx;
    Item.col = nColIdx;
    strTemp.Format(_T("Index"));//_T("인덱스"));
    strTemp.Format(_T("Index"));//_T("�ε���"));
    Item.strText = strTemp;
    m_ctrlGridLightInfo.SetItem(&Item);
    m_ctrlGridLightInfo.SetColumnWidth(nColIdx, 100);
@@ -969,28 +973,28 @@
    nRowIdx++;
    Item.row = nRowIdx;
    Item.col = nColIdx;
    strTemp.Format(_T("Light Level (gLv)"));//_T("광량 값"));
    strTemp.Format(_T("Light Level (gLv)"));//_T("���� ��"));
    Item.strText = strTemp;
    m_ctrlGridLightInfo.SetItem(&Item);
    nRowIdx++;
    Item.row = nRowIdx;
    Item.col = nColIdx;
    strTemp.Format(_T("Min Level (gLv)"));//_T("최소 광량 값"));
    strTemp.Format(_T("Min Level (gLv)"));//_T("�ּ� ���� ��"));
    Item.strText = strTemp;
    m_ctrlGridLightInfo.SetItem(&Item);
    nRowIdx++;
    Item.row = nRowIdx;
    Item.col = nColIdx;
    strTemp.Format(_T("Max Level (gLv)"));//_T("최대 광량 값"));
    strTemp.Format(_T("Max Level (gLv)"));//_T("�ִ� ���� ��"));
    Item.strText = strTemp;
    m_ctrlGridLightInfo.SetItem(&Item);
    nRowIdx++;
    Item.row = nRowIdx;
    Item.col = nColIdx;
    strTemp.Format(_T("Auto Light (gLv)"));//_T("자동 변경 값"));
    strTemp.Format(_T("Auto Light (gLv)"));//_T("�ڵ� ���� ��"));
    Item.strText = strTemp;
    m_ctrlGridLightInfo.SetItem(&Item);
@@ -1026,7 +1030,7 @@
    if(pRcpRsReviewManager == NULL) return;
    // [2016:11:2]-[WEZASW] : WSI(1)/Review(0) Type 분리
    // [2016:11:2]-[WEZASW] : WSI(1)/Review(0) Type �и�
    if(nType)
    {
        m_ctrlAutoLight.SetCheck(pRcpRsReviewManager->GetRsRcpReviewInfo()->GetWsiAutoLight());
@@ -1114,7 +1118,7 @@
            if (pHeaderInfo==NULL) continue;
            nAFMCount += pHeaderInfo->GetAFMInfoCount();
            //[2017:6:2]-[WEZASW] : SystemSetting의 배율정보 기준으로 적용(셋팅된 렌즈 배율만 선택)
            //[2017:6:2]-[WEZASW] : SystemSetting�� �������� �������� ����(���õ� ���� ������ ����)
            nLensCount = pHeaderInfo->GetMagnificInfoCount();
            for (int nLensIdx=0; nLensIdx<nLensCount; nLensIdx++)
@@ -1122,7 +1126,7 @@
                const CMagnificInfo* pMagnificInfo = pHeaderInfo->GetMagnificInfo(nLensIdx);
                if (pMagnificInfo==NULL) continue;
                // 2017.12.21 smok. 두 개 이상의 gantry / header 시 AFM 배율 표시 이상.
                // 2017.12.21 smok. �� �� �̻��� gantry / header �� AFM ���� ǥ�� �̻�.
                //                strArrayOption[nHeaderIdx].Add(pMagnificInfo->m_strMagnificName);
                strArrayOption[nGantryIdx].Add(pMagnificInfo->m_strMagnificName);
            }
@@ -1153,7 +1157,7 @@
        Item.mask = GVIF_TEXT;
        Item.row = nRowIdx;
        Item.col = nColIdx;
        strTemp.Format(_T("Index"));//_T("인덱스"));
        strTemp.Format(_T("Index"));//_T("�ε���"));
        Item.strText = strTemp;
        m_ctrlGridAFMRecipeInfo.SetItem(&Item);
        m_ctrlGridAFMRecipeInfo.SetColumnWidth(nColIdx, 100);
@@ -1161,14 +1165,14 @@
        nRowIdx++;
        Item.row = nRowIdx;
        Item.col = nColIdx;
        strTemp.Format(_T("Recipe Index"));//_T("레시피 인덱스"));
        strTemp.Format(_T("Recipe Index"));//_T("������ �ε���"));
        Item.strText = strTemp;
        m_ctrlGridAFMRecipeInfo.SetItem(&Item);
        nRowIdx++;
        Item.row = nRowIdx;
        Item.col = nColIdx;
        strTemp.Format(_T("Magnific Index"));//_T("배율 인덱스"));
        strTemp.Format(_T("Magnific Index"));//_T("���� �ε���"));
        Item.strText = strTemp;
        m_ctrlGridAFMRecipeInfo.SetItem(&Item);
@@ -1240,7 +1244,7 @@
    pRcpRsReviewManager = pDlg->GetRsReviewManager();
    if(pRcpRsReviewManager == NULL) return;
    // [2016:11:2]-[WEZASW] : WSI(1)/Review(0) Type 분리
    // [2016:11:2]-[WEZASW] : WSI(1)/Review(0) Type �и�
    if(nType)
    {
        nAFMCount = pRcpRsReviewManager->GetRsRcpReviewInfo()->GetRcpWsiAFMRecipeInfoCount();
@@ -1356,7 +1360,7 @@
        for (int nResultIdx=0; nResultIdx<m_nFilterCount; nResultIdx++)
        {
            //인덱스
            //�ε���
            nColIdx = 0;
            Item.mask = GVIF_TEXT;
            Item.row = nRowIdx;
@@ -1368,7 +1372,7 @@
            // optic
            nColIdx++;
            strArrayOption.RemoveAll();
            for(j = 0; j < RCP_PRIORITY_ORDER_COUNT; j++)
            /*for(j = 0; j < RCP_PRIORITY_ORDER_COUNT; j++)
            {
                switch(j)
                {
@@ -1398,6 +1402,37 @@
                    break;
                case RCP_PRIORITY_ORDER_SCR:
                    strTemp.Format(_T("SCRATCH"));
                    break;
                }
                strArrayOption.Add(strTemp);
            }*/
            for (j = 0; j < RCP_PRIORITY_DEFECTCODE_COUNT; j++)//20210608
            {
                switch (j)
                {
                case RCP_PRIORITY_DEFECT_CODE_ALL:
                    strTemp.Format(_T("ALL"));
                    break;
                case RCP_PRIORITY_DEFECT_CODE_TRDF:
                    strTemp.Format(_T("TRDF"));
                    break;
                case RCP_PRIORITY_DEFECT_CODE_BATR:
                    strTemp.Format(_T("BATR"));
                    break;
                case RCP_PRIORITY_DEFECT_CODE_DOBB:
                    strTemp.Format(_T("DOBB"));
                    break;
                case RCP_PRIORITY_DEFECT_CODE_DOBS:
                    strTemp.Format(_T("DOBS"));
                    break;
                case RCP_PRIORITY_DEFECT_CODE_DOWW:
                    strTemp.Format(_T("DOWW"));
                    break;
                case RCP_PRIORITY_DEFECT_CODE_DOWB:
                    strTemp.Format(_T("DOWB"));
                    break;
                case RCP_PRIORITY_DEFECT_CODE_DOWS:
                    strTemp.Format(_T("DOWS"));
                    break;
                }
                strArrayOption.Add(strTemp);
@@ -1587,11 +1622,11 @@
void CDlgReview::SizeOptionSetting(int nIndex)
{
    //리뷰 dlg 가져오기
    //���� dlg ��������
    CReviewRecipeEditorDlg* pDlg = (CReviewRecipeEditorDlg*)AfxGetMainWnd();
    if(pDlg == NULL) return;
    //리뷰 매니져
    //���� �Ŵ���
    CRcp_RsReviewManager* pRcpRsReviewManager = pDlg->GetRsReviewManager();
    if(pRcpRsReviewManager == NULL) return;
ReviewSystem/ReviewSystem/DlgDefectList.cpp
@@ -15,9 +15,9 @@
int        Defect_width[DEFECTLISTCNT]        = {          50,              80,             80, 50,         50,        40,         40,         45,          45,         50,        50,               80,             80         };
// [2017:6:7]-[WEZASW] : BOE향
#define B7_DEFECTLISTCNT        13
TCHAR*    B7_Defect_Titlelist[B7_DEFECTLISTCNT]    = { _T("No"), _T("RV_X(mm)"), _T("RV_Y(mm)"), _T("DType"), _T("MType"),  _T("SType"), _T("DLength"), _T("Area"), _T("Peak"), _T("Cam"), _T("DType1"), _T("AOI_X(mm)"), _T("AOI_Y(mm)")};
int        B7_Defect_width[B7_DEFECTLISTCNT]        = {        40,              75,                 75,        75,            75,                50,            60,                45,            45,            40,            60,                80,                80     };
#define B7_DEFECTLISTCNT        14
TCHAR*    B7_Defect_Titlelist[B7_DEFECTLISTCNT]    = { _T("No"), _T("RV_X(mm)"), _T("RV_Y(mm)"), _T("DType"), _T("MType"),  _T("SType"),_T("DCode"), _T("DLength"), _T("Area"), _T("Peak"), _T("Cam"), _T("DType1"), _T("AOI_X(mm)"), _T("AOI_Y(mm)")};
int        B7_Defect_width[B7_DEFECTLISTCNT]        = {        40,              75,                 75,        75,            50,                50,          55,          60,           45,            45,            40,            60,                80,                80     };
@@ -148,7 +148,7 @@
    m_bAsending = !m_bAsending;
    if(nCol==3 || nCol==4 || nCol==5 || nCol==10)
    if(nCol==3 || nCol==4 || nCol==5 || nCol==6)//210608
    {
        vector< pair<CString,CDefectResult*> > vec;
@@ -162,14 +162,17 @@
                vec.push_back(make_pair(pDefectResult->strDefectType, pDefectResult));                
                break;
            case 4:
                vec.push_back(make_pair(pDefectResult->strMarkType, pDefectResult));
                vec.push_back(make_pair(pDefectResult->strJudgeType, pDefectResult));
                break;
            case 5:
                vec.push_back(make_pair(pDefectResult->strSizeType, pDefectResult));
                vec.push_back(make_pair(pDefectResult->strSizeType, pDefectResult));
                break;
            case 10:
                vec.push_back(make_pair(pDefectResult->strDefectType1, pDefectResult));
            case 6:
                vec.push_back(make_pair(pDefectResult->strDefectJudgeCode, pDefectResult));
                break;
                /*case 11:
                    vec.push_back(make_pair(pDefectResult->strDefectType1, pDefectResult));
                    break;*/
            default:
                continue;
            }
@@ -207,13 +210,13 @@
            case 0: nValue = pDefectResult->nDefectIdx; break;            // _T("No")
            case 1: nValue = pDefectResult->nUMOriginX; break;            // _T("RV_X(mm)")
            case 2: nValue = pDefectResult->nUMOriginY; break;            // _T("RV_Y(mm)")
            case 6: nValue = pDefectResult->nAOISizeLength; break;        // _T("DLength")
            case 7: nValue = pDefectResult->nAOIArea; break;                // _T("Area")
            case 8: nValue = pDefectResult->nAOIPeak; break;                // _T("Peak")
            case 9: nValue = pDefectResult->nAOICameraIdx; break;        // _T("Cam")
            case 10: nValue = pDefectResult->nAOIScanIdx; break;        // _T("Cam")
            case 11: nValue = pDefectResult->dUMCenterOriginX; break;    // _T("AOI_X(mm)")
            case 12: nValue = pDefectResult->dUMCenterOriginY; break;    // _T("AOI_Y(mm)")
            case 7: nValue = pDefectResult->nAOISizeLength; break;        // _T("DLength")
            case 8: nValue = pDefectResult->nAOIArea; break;                // _T("Area")
            case 9: nValue = pDefectResult->nAOIPeak; break;                // _T("Peak")
            case 10: nValue = pDefectResult->nAOICameraIdx; break;        // _T("Cam")
            case 11: nValue = pDefectResult->nAOIScanIdx; break;        // _T("Cam")
            case 12: nValue = pDefectResult->dUMCenterOriginX; break;    // _T("AOI_X(mm)")
            case 13: nValue = pDefectResult->dUMCenterOriginY; break;    // _T("AOI_Y(mm)")
            default: continue;
            }
@@ -260,13 +263,14 @@
    case 3: strItem = _T("DType"); break;
    case 4: strItem = _T("Judge"); break;
    case 5: strItem = _T("SType"); break;
    case 6: strItem = _T("DLength"); break;
    case 7: strItem = _T("Area"); break;
    case 8: strItem = _T("Peak"); break;
    case 9: strItem = _T("Cam"); break;
    case 10: strItem = _T("ScanN"); break;
    case 11: strItem = _T("AOI_X(mm)"); break;
    case 12: strItem = _T("AOI_Y(mm)"); break;
    case 6: strItem = _T("DCODE"); break;
    case 7: strItem = _T("DLength"); break;
    case 8: strItem = _T("Area"); break;
    case 9: strItem = _T("Peak"); break;
    case 10: strItem = _T("Cam"); break;
    case 11: strItem = _T("ScanN"); break;
    case 12: strItem = _T("AOI_X(mm)"); break;
    case 13: strItem = _T("AOI_Y(mm)"); break;
    default: break;
    }
}
@@ -346,39 +350,44 @@
            strItem.Format(_T("%s"), pDefectResult->strSizeType);
        }
        break;
    case 6:        //S_Type
    {
        strItem.Format(_T("%s"), pDefectResult->strDefectJudgeCode);//210608
    }
    break;
    case 6:        //DLength
    case 7:        //DLength
        {
            strItem.Format(_T("%d"), (int)pDefectResult->nAOISizeLength);
        }
        break;
    case 7:        //Area
    case 8:        //Area
        {
            strItem.Format(_T("%d"), (int)pDefectResult->nAOIArea);
        }
        break;
    case 8:        //Peak
    case 9:        //Peak
        {
            strItem.Format(_T("%d"), pDefectResult->nAOIPeak);
        }
        break;
    case 9:        //Cam
    case 10:        //Cam
        {
            strItem.Format(_T("%d"), pDefectResult->nAOICameraIdx);
        }
        break;
    case 10:    //D_Type1
    case 11:    //D_Type1
        {
        //    strItem.Format(_T("%s"), pDefectResult->strDefectType1);
        strItem.Format(_T("%d"), pDefectResult->nAOIScanIdx);
        }
        break;
    case 11:    //AOI_X(mm)
    case 12:    //AOI_X(mm)
        {
            strItem.Format(_T("%.03lf"), pDefectResult->dUMCenterOriginX / 1000.);
        }
        break;
    case 12:    //AOI_Y(mm)
    case 13:    //AOI_Y(mm)
        {
            strItem.Format(_T("%.03lf"), pDefectResult->dUMCenterOriginY / 1000.);
        }
ReviewSystem/ReviewSystem/DlgDeffectHistroy.cpp
@@ -13,12 +13,12 @@
using namespace CHReviewResult;
// SDC 향
#define DEFECTLISTCNT        13
#define DEFECTLISTCNT        14
TCHAR*    Defect_HistoryTitlelist[DEFECTLISTCNT] = { _T("No"), _T("Mask_X(mm)"), _T("Mask_Y(mm)"), _T("Size"), _T("Peak"), _T("Cam"), _T("Scan"), _T("Type"), _T("Stack"), _T("Zone"), _T("Type"), _T("AOI_X(mm)"), _T("AOI_Y(mm)") };
int        Defect_Historywidth[DEFECTLISTCNT] = { 50,              80,             80, 50,         50,        40,         40,         45,          45,         50,        50,               80,             80 };
// [2017:6:7]-[WEZASW] : BOE향
#define B7_DEFECTLISTCNT        13
#define B7_DEFECTLISTCNT        14
TCHAR*    B7_Defect_HistoryTitlelist[B7_DEFECTLISTCNT] = { _T("No"), _T("RV_X(mm)"), _T("RV_Y(mm)"), _T("DType"), _T("MType"),  _T("SType"), _T("DLength"), _T("Area"), _T("Peak"), _T("Cam"), _T("DType1"), _T("AOI_X(mm)"), _T("AOI_Y(mm)") };
int        B7_Defect_Historywidth[B7_DEFECTLISTCNT] = { 40,              75,                 75,        75,            75,                50,            60,                45,            45,            40,            60,                80,                80 };
ReviewSystem/include/CHReviewRecipe/RcpPriorityInfo.h
@@ -24,6 +24,10 @@
    RCP_PRIORITY_Judge_ALL = 0, RCP_PRIORITY_Judge_OK, RCP_PRIORITY_Judge_RP, RCP_PRIORITY_Judge_NG, RCP_PRIORITY_Judge_TR, RCP_PRIORITY_Judge_PR, RCP_PRIORITY_Judge_PT, RCP_PRIORITY_Judge_Review, RCP_PRIORITY_Judge_RC, RCP_PRIORITY_Judge_Size, RCP_PRIORITY_Judge_VI, RCP_PRIORITY_Judge_Rework, RCP_PRIORITY_Judge_Unknown, RCP_PRIORITY_GRADE_COUNT
};
enum RECIPE_PRIORITY_CPJT_DEFECTCODE_TYPE {
    RCP_PRIORITY_DEFECT_CODE_ALL = 0, RCP_PRIORITY_DEFECT_CODE_TRDF, RCP_PRIORITY_DEFECT_CODE_BATR, RCP_PRIORITY_DEFECT_CODE_DOBB, RCP_PRIORITY_DEFECT_CODE_DOBS, RCP_PRIORITY_DEFECT_CODE_DOWW, RCP_PRIORITY_DEFECT_CODE_DOWB, RCP_PRIORITY_DEFECT_CODE_DOWS, RCP_PRIORITY_DEFECTCODE_COUNT
};
class AFX_EXT_CLASS CRcpPriorityInfo
{
@@ -46,6 +50,7 @@
    int            GetPriorityDefectMaxSize() const        { return m_nDefectumMaxSize; }
    BOOL        GetPriorityDefectSizeOption() const        { return m_bUseSizeOption; }
    int            GetPriorityGradeData() const            { return m_nDefectGradeData; }
    int            GetPriorityDefectCode() const            { return m_nPriorityDefectCode; }//20210608 TRDF ������
    // setter
    void        SetInfo(const CRcpPriorityInfo& rhs);
@@ -59,15 +64,16 @@
    void        SetPriorityDefectMaxSize(int nSize)        { m_nDefectumMaxSize = nSize; }
    void        SetPriorityDefectSizeOption(bool bUse)    { m_bUseSizeOption = bUse; }
    void        SetPriorityGradeData(int nData) {m_nDefectGradeData = nData; }
    void        SetPriorityDefectCode(int nData) {m_nPriorityDefectCode = nData;} //20210608
protected:
    int        m_nPriorityOpticData;                    // 우선순위 optic 데이터
    int        m_nPriorityGrayData;                    // 우선순위 gray 데이터
    int        m_nPriorityStackData;                    // 우선순위 stack 데이터
    int        m_nPriorityModelData;                    // 우선순위 Midek 데이터
    int        m_nPriorityOpticData;                    // �켱���� optic ������
    int        m_nPriorityGrayData;                    // �켱���� gray ������
    int        m_nPriorityStackData;                    // �켱���� stack ������
    int        m_nPriorityModelData;                    // �켱���� Midek ������
    int        m_nPriorityDefectType;
    int        m_nPriorityDefectTypeNum;
    int        m_nDefectGradeData;
    int        m_nPriorityDefectCode;                   // �켱���� �˻� DefectCode ������//20210608
    BOOL    m_bUseSizeOption;
    int        m_nDefectumMinSize;
ReviewSystem/include/CHReviewResult/DefectResult.h
@@ -3,7 +3,7 @@
namespace CHReviewResult
{
    enum ResultFileType            { RESULT_FILE_TD = 0, RESULT_FILE_CD, RESULT_FILE_SD, RESULT_FILE_TYPE_COUNT };
    enum DefectType                { DEFECT_TYPE_NONE = 0, DEFECT_TYPE_D, DEFECT_TYPE_B, DEFECT_TYPE_BD, DEFECT_TYPE_PD, DEFECT_TYPE_PB, DEFECT_TYPE_PBD, DEFECT_TYPE_MNT, DEFECT_TYPE_EC, DEFECT_TYPE_MURA, DEFECT_TYPE_VLINE, DEFECT_TYPE_HLINE, DEFECT_TYPE_SPOT, DEFECT_TYPE_DENT, DEFECT_TYPE_PROTRUDE };// 20171003 smok. MURA 세부 결과
    enum DefectType                { DEFECT_TYPE_NONE = 0, DEFECT_TYPE_D, DEFECT_TYPE_B, DEFECT_TYPE_BD, DEFECT_TYPE_PD, DEFECT_TYPE_PB, DEFECT_TYPE_PBD, DEFECT_TYPE_MNT, DEFECT_TYPE_EC, DEFECT_TYPE_MURA, DEFECT_TYPE_VLINE, DEFECT_TYPE_HLINE, DEFECT_TYPE_SPOT, DEFECT_TYPE_DENT, DEFECT_TYPE_PROTRUDE };// 20171003 smok. MURA ���� ���
    // [2018/01/29 15:16:23 by jylee] related PANDA
    enum PANDADefectType        { DEFECT_TYPE_NORMAL = 0, DEFECT_TYPE_COMMON, DEFECT_TYPE_MASK };
    enum DefectGrayType            { DEFECT_GRAY_NONE = 0, DEFECT_GRAY_BLACK, DEFECT_GRAY_WHITE };
@@ -24,9 +24,9 @@
    enum DefectPositionType        { DEFECT_POSITION_NONE = -1, DEFECT_POSITION_FRONT, DEFECT_POSITION_BACK };
    enum DefectZoneType            { DEFECT_ZONE_NONE = 0, DEFECT_ZONE_DA, DEFECT_ZONE_GA, DEFECT_ZONE_GH, DEFECT_ZONE_AA };
    enum SERVER_DefectType        { DefectType_TBlack = 0, DefectType_TWhite, DefectType_RBlack, DefectType_RWhite, DefectType_Unknown }; //검사기
    enum SERVER_DefectLocation    { DefectLoc_Pattern = 0, DefectLoc_Crack, DefectLoc_BM, DefectLoc_ASG, DefectLoc_PAD, DefectLoc_C2C, DefectLoc_Align }; //검사기
    enum SERVER_DefectSubType    { DefectSubType_Normal = 0, DefectSubType_Edge, DefectSubType_MC, DefectSubType_Mask, DefectSubType_Common, DefectSubType_NoDefect, DefectSubType_Align }; //검사기
    enum SERVER_DefectType        { DefectType_TBlack = 0, DefectType_TWhite, DefectType_RBlack, DefectType_RWhite, DefectType_Unknown }; //�˻��
    enum SERVER_DefectLocation    { DefectLoc_Pattern = 0, DefectLoc_Crack, DefectLoc_BM, DefectLoc_ASG, DefectLoc_PAD, DefectLoc_C2C, DefectLoc_Align }; //�˻��
    enum SERVER_DefectSubType    { DefectSubType_Normal = 0, DefectSubType_Edge, DefectSubType_MC, DefectSubType_Mask, DefectSubType_Common, DefectSubType_NoDefect, DefectSubType_Align }; //�˻��
    enum SERVER_DefectPosition    { DefectPos_Front = 0, DefectPos_Back };
@@ -158,15 +158,15 @@
    void Reset();
public:
    //02.14 CHM RTMS용도
    //02.14 CHM RTMS�뵵
    CString        strLotID;
    CString     strGlassID;
    CString     strOperID; //
    CString     ProcessID; // operID 동일
    CString     ProcessID; // operID ����
    int            nPanelID;       // test
    int         nDefectidx1; //검사 디펙 인덱스
    int         nDefectidx2; //Raw 메신저 인덱스
    int         nDefectidx1; //�˻� ���� �ε���
    int         nDefectidx2; //Raw �޽��� �ε���
    int         nUpdateTime;
    
    
@@ -179,37 +179,38 @@
    BOOL        bRework;
    BOOL        bReworkSelected;
    // [2017:5:12]-[WEZASW] : DFS Result File Format 변경
    // [2017:5:12]-[WEZASW] : DFS Result File Format ����
    // defect raw data
    int            nTotalDefectCount;                // Mura Defect Filter용 Total Defect(Vector) Index
    int            nTotalDefectCount;                // Mura Defect Filter�� Total Defect(Vector) Index
    int            nDefectIdx;                        // Defect No. 
    CString        strDefectCode;                    // Defect Code
    int            nDefectCode;                    // Defect Code Number
    CString        strDefectCode2;
    int            nDefectJudgeCode;                // TRDF ���� �˻� Defect Code CPJT �� ��...�򰥸��� DefectJudge�� �ٸ� Defect Code ���ٸ� tlqkf
    CString        strDefectJudgeCode;                // TRDF ���� �˻� Defect Code CPJT �� //20210608
    CString        strDefectName;                    // Defect Name
    CString        strCPResult;
    CString        strDefectType;                    // PARTICLE/CRACK/DENT / PROTRUSION/TFE_ABNORMAL
    int            nDefectType;                    
    int            nUMOriginX;                        // LTPS글라스 센터 기준 좌표 X
    int            nUMOriginY;                        // LTPS글라스 센터 기준 좌표 Y
    int            nUMOriginX;                        // LTPS�۶� ���� ���� ��ǥ X
    int            nUMOriginY;                        // LTPS�۶� ���� ���� ��ǥ Y
    double        nUMTransX;                        // Stage 상의 글라스 Left Bottom 컷팅면 기준 상대좌표 X
    double        nUMTransY;                        // Stage 상의 글라스 Left Bottom 컷팅면 기준 상대좌표 Y
    double        nUMTransX;                        // Stage ���� �۶� Left Bottom ���ø� ���� �����ǥ X
    double        nUMTransY;                        // Stage ���� �۶� Left Bottom ���ø� ���� �����ǥ Y
    int        nUMCellX;//셀 중심 x좌표
    int        nUMCellY;//셀 중심 Y좌표
    int        nUMCellX;//�� �߽� x��ǥ
    int        nUMCellY;//�� �߽� Y��ǥ
    CString        strMarkType;                    // POINT/LINE/RECT/CIRCLE/TRIANGLE/ARC
    int            nMarkType;                    
    double        dUMCenterOriginX;                // Glass Center 기준 좌표 X
    double        dUMCenterOriginY;                // Glass Center 기준 좌표 X
    double        dUMCenterOriginX;                // Glass Center ���� ��ǥ X
    double        dUMCenterOriginY;                // Glass Center ���� ��ǥ X
    int            nSrcMax;//Gray max
    int            nRefMax;//비교대상 Gray max
    int            nRefMax;//�񱳴�� Gray max
    CString        strCellID;                        // Defected Panel ID
    CString        strEquipID;
@@ -217,32 +218,32 @@
    CString        strSizeType;                    // S/M/L/EX_L/UL_L
    int            nSizeType;
    double        nAOISizeW;                        // Defect’s X axis size (um)
    double        nAOISizeH;                        // Defect’s Y axis size (um)
    double        nAOISizeLength;                    // Defect’s Diagonal Length (um)
    double        nAOISizeW;                        // Defect��s X axis size (um)
    double        nAOISizeH;                        // Defect��s Y axis size (um)
    double        nAOISizeLength;                    // Defect��s Diagonal Length (um)
    double        nAOIArea;                        // 
    CString        strAOIArea;
    int            nAOIPeak;                        // 
    int            nDefectWBType;                    // 백결함 흑결함 분류 (1,3,5가 백결함)
    int            nDefectWBType;                    // ����� ����� �з� (1,3,5�� �����)
    CString        strDefectType1;                    
    int            nDefectType1;    
    CString        strDefectType2;                    // Back(B) / TOP(T)????  => Lami AOI 상/하 Camera에 대한 분류 목적
    CString        strDefectType2;                    // Back(B) / TOP(T)????  => Lami AOI ��/�� Camera�� ���� �з� ����
    int            nDefectType2;    
    CString        strUploadImgFileName;            // Review Image File Name
    CString        strUploadImgFileName2;            // image name 2
    int            nDefectGroup;                    // [2018/06/04 11:13:54 by jylee] related Group Defect 분류
    int            nDefectGroup;                    // [2018/06/04 11:13:54 by jylee] related Group Defect �з�
    int            nMultiModel;
    int            nReview_Processing;
    // [2017:4:10]-[WEZASW] : 고객사 요청에 의한 bmp 파일 추가 저장. (임시사용)
    // [2017:4:10]-[WEZASW] : ����� ��û�� ���� bmp ���� �߰� ����. (�ӽû��)
    CString        strOrignalImgFileName;
    // [2017/08/03 14:10:50 by jylee] related Sharp
@@ -308,15 +309,15 @@
    int            nSortSection;
    // not used FIC
    int            nZonePercent;            // (13) ZONE_Percent       //사용안함.                   or MNT Data 0
    int            nBF_Width;                // (14) bf_width_um        //디펙 width  (세로) BF Size  or MNT Data 1
    int            nBF_Length;                // (15) bf_length_um       //디펙 Length (가로) BF Size  or MNT Data 2
    int            nBF_Min;                // (16) bf_min             //BF_DEFECT의 GRAY MIN        or MNT Data 3
    int            nBF_Avg;                // (17) bf_avg             //BF_DEFECT의 GRAY AVG        or MNT Data 0
    int            nZonePercent;            // (13) ZONE_Percent       //������.                   or MNT Data 0
    int            nBF_Width;                // (14) bf_width_um        //���� width  (����) BF Size  or MNT Data 1
    int            nBF_Length;                // (15) bf_length_um       //���� Length (����) BF Size  or MNT Data 2
    int            nBF_Min;                // (16) bf_min             //BF_DEFECT�� GRAY MIN        or MNT Data 3
    int            nBF_Avg;                // (17) bf_avg             //BF_DEFECT�� GRAY AVG        or MNT Data 0
    int            nBF_AvgDiff;            // (18) bf_avg_diff
    int            nDF_Width;                // (19) df_width_um        //디펙 width  (세로) DF Size
    int            nDF_Length;                // (20) df_lengt_um        //디펙 Length (가로) DF Size
    int            nDF_Width;                // (19) df_width_um        //���� width  (����) DF Size
    int            nDF_Length;                // (20) df_lengt_um        //���� Length (����) DF Size
    int            nBefore_SizeWidth;        
    int            nBefore_SizeHeight;        
ReviewSystem/include/CHReviewResultParser/ParsingGlassResult_CPJT.h
@@ -7,7 +7,7 @@
enum GlassOriginDir     { GlassOrigin_LeftTop=0, GlassOrigin_RightTop, GlassOrigin_LeftBottom, GlassOrigin_RightBottom, GlassOrigin_Count };
enum CSOTDfectCode      {CSOT_PARTICLE=1,COST_CRACK,CSOT_MURA,CSOT_PROTRUDE,CSOT_DENT,CSOT_TFE_ABNORMAL,CSOT_BUBBLE,CSOT_SCRATCH};
enum Judgement { Judge_OK = 0, Judge_RP, Judge_NG, Judge_TR, Judge_PR, Judge_PT, Judge_Review, Judge_RC, Judge_Size, Judge_VI, Judge_Rework, Judge_Unknown };
enum JudgeCode { TRDF = 0, BATR, DOBB, DOBS, DOWW, DOWB, DOWS };
enum JudgeCode { CODE_DEFAULT= 0,TRDF , BATR, DOBB, DOBS, DOWW, DOWB, DOWS };
#define LAYER_GT_50            _T("0114")
#define LAYER_GT_58            _T("0214")
@@ -37,171 +37,171 @@
//
//enum eCSOTRawGlassIndex{        // 30
//    eCSOTRaw_Glass_Name = 0,            // 계층번호                        // AA - 30 고정
//    eCSOTRaw_Glass_PanelNum,            // 검사 Panel 수량                // 9999 - 매
//    eCSOTRaw_Glass_Name = 0,            // ������ȣ                        // AA - 30 ����
//    eCSOTRaw_Glass_PanelNum,            // �˻� Panel ����                // 9999 - ��
//    eCSOTRaw_Glass_RecipeID,            // Recipe ID                    // AAAA
//    eCSOTRaw_Glass_ProcessTime,        // Processing Time                // 9999 - 초 : 반입시작 ~ 반출완료 시간
//    eCSOTRaw_Glass_GlassID,            // 기판ID (VCR)                    // AAAAAAAAAAAA
//    eCSOTRaw_Glass_ProcessTime,        // Processing Time                // 9999 - �� : ���Խ��� ~ ����Ϸ� �ð�
//    eCSOTRaw_Glass_GlassID,            // ����ID (VCR)                    // AAAAAAAAAAAA
//
//    eCSOTRaw_Glass_ReadResult,            // VCR 읽기 결과                // A
//    eCSOTRaw_Glass_ReadResult,            // VCR �б� ���                // A
//    eCSOTRaw_Glass_CPFlag,                // CP Instruction Flag            // A - 0 : QMS Don't CP Processing, 1 : QMS IN the CP Processing
//    eCSOTRaw_Glass_ElectroNum,            // 정전기 Monitor 측정 수량        // 9 - 회
//    eCSOTRaw_Glass_CCDNum,                // CCD Monitor 수량                // 99 - 회
//    eCSOTRaw_Glass_ReviewNum,            // Review 수량                    // 999 - 회
//    eCSOTRaw_Glass_ElectroNum,            // ������ Monitor ���� ����        // 9 - ȸ
//    eCSOTRaw_Glass_CCDNum,                // CCD Monitor ����                // 99 - ȸ
//    eCSOTRaw_Glass_ReviewNum,            // Review ����                    // 999 - ȸ
//
//    eCSOTRaw_Glass_Alignment,            // Alignment 유무                // 9 - 실시 : 1, 미실시 : 0
//    // [2018/07/05 08:38:46 by jylee] related Format 변경
//    eCSOTRaw_Glass_Spare1,                // 스페어 1
//    eCSOTRaw_Glass_Spare2                // 스페어 2
//    eCSOTRaw_Glass_Alignment,            // Alignment ����                // 9 - �ǽ� : 1, �̽ǽ� : 0
//    // [2018/07/05 08:38:46 by jylee] related Format ����
//    eCSOTRaw_Glass_Spare1,                // ����� 1
//    eCSOTRaw_Glass_Spare2                // ����� 2
//
//
//};
/*
enum eCSOTRawGlassIndex{        // 30
    eCSOTRaw_Glass_Name = 0,            // 1. 계층번호                        // AA - 30 고정
    eCSOTRaw_Glass_PanelNum,            // 2. 검사 Panel 수량                // 9999 - 매
    eCSOTRaw_Glass_Name = 0,            // 1. ������ȣ                        // AA - 30 ����
    eCSOTRaw_Glass_PanelNum,            // 2. �˻� Panel ����                // 9999 - ��
    eCSOTRaw_Glass_RecipeID,            // 3. Recipe ID                        // AAAA
    eCSOTRaw_Glass_ProcessTime,        // 4. Processing Time                // 9999 - 초 : 반입시작 ~ 반출완료 시간
    eCSOTRaw_Glass_GlassID,            // 5. 기판ID (VCR)                    // AAAAAAAAAAAA
    eCSOTRaw_Glass_ProcessTime,        // 4. Processing Time                // 9999 - �� : ���Խ��� ~ ����Ϸ� �ð�
    eCSOTRaw_Glass_GlassID,            // 5. ����ID (VCR)                    // AAAAAAAAAAAA
    eCSOTRaw_Glass_ReadResult,            // 6. VCR 읽기 결과                    // A
    eCSOTRaw_Glass_ReadResult,            // 6. VCR �б� ���                    // A
    eCSOTRaw_Glass_CPFlag,                // 7. CP Instruction Flag            // A - 0 : QMS Don't CP Processing, 1 : QMS IN the CP Processing
    eCSOTRaw_Glass_ElectroNum,            // 8. 정전기 Monitor 측정 수량        // 9 - 회
    eCSOTRaw_Glass_CCDNum,                // 9. CCD Monitor 수량                // 99 - 회
    eCSOTRaw_Glass_ReviewNum,            // 10. Review 수량                    // 999 - 회
    eCSOTRaw_Glass_ElectroNum,            // 8. ������ Monitor ���� ����        // 9 - ȸ
    eCSOTRaw_Glass_CCDNum,                // 9. CCD Monitor ����                // 99 - ȸ
    eCSOTRaw_Glass_ReviewNum,            // 10. Review ����                    // 999 - ȸ
    eCSOTRaw_Glass_Alignment,            // 11. Alignment 유무                // 9 - 실시 : 1, 미실시 : 0
    eCSOTRaw_Glass_TotalDefect,        // 12. 결함총수                        // 99999
    eCSOTRaw_Glass_REVDefect,            // 13. 리뷰 결함수                    // 99999
    eCSOTRaw_Glass_FIXDefect,            // 14. 고정 리뷰 결함수                // 99999
    eCSOTRaw_Glass_MaskDefect,            // 15. MASK 결함수                    // 99999
    eCSOTRaw_Glass_Alignment,            // 11. Alignment ����                // 9 - �ǽ� : 1, �̽ǽ� : 0
    eCSOTRaw_Glass_TotalDefect,        // 12. �����Ѽ�                        // 99999
    eCSOTRaw_Glass_REVDefect,            // 13. ���� ���Լ�                    // 99999
    eCSOTRaw_Glass_FIXDefect,            // 14. ���� ���� ���Լ�                // 99999
    eCSOTRaw_Glass_MaskDefect,            // 15. MASK ���Լ�                    // 99999
    eCSOTRaw_Glass_CommonDefect,        // 16. 공통 결함수                    // 99999
    eCSOTRaw_Glass_Spare1,                // 17. 스페어 1
    eCSOTRaw_Glass_Spare2                // 18. 스페어 2
    eCSOTRaw_Glass_CommonDefect,        // 16. ���� ���Լ�                    // 99999
    eCSOTRaw_Glass_Spare1,                // 17. ����� 1
    eCSOTRaw_Glass_Spare2                // 18. ����� 2
};
*/
//enum eCSOTRawPanelIndex{        // 41
//    eCSOTRaw_Panel_Name = 0,            // 1. 계층번호                // AA - 41 고정
//    eCSOTRaw_Panel_CellNum,            // 2. Cell 번호            // AAAA
//    eCSOTRaw_Panel_Judge,                // 3. Panel 판정 결과        // A
//    eCSOTRaw_Panel_Reason,                // 4. 판정이유                // AAAAA
//    eCSOTRaw_Panel_CPFlag,                // 5. CP Flag                // AAA    - 0 : 요구 무, 1: 실시, 8: 미실시, 9:Data무
//    eCSOTRaw_Panel_Name = 0,            // 1. ������ȣ                // AA - 41 ����
//    eCSOTRaw_Panel_CellNum,            // 2. Cell ��ȣ            // AAAA
//    eCSOTRaw_Panel_Judge,                // 3. Panel ���� ���        // A
//    eCSOTRaw_Panel_Reason,                // 4. ��������                // AAAAA
//    eCSOTRaw_Panel_CPFlag,                // 5. CP Flag                // AAA    - 0 : �䱸 ��, 1: �ǽ�, 8: �̽ǽ�, 9:Data��
//
//    eCSOTRaw_Panel_FrontCPDefectNum,    // 6. CP 전 총결함수        // 9999 - 개
//    eCSOTRaw_Panel_RearCPDefectNum,    // 7. CP 후 총결함수        // 9999 - 개
//    eCSOTRaw_Panel_Spare1,                // 8. 스페어 1
//    eCSOTRaw_Panel_Spare2                // 9. 스페어 2
//    eCSOTRaw_Panel_FrontCPDefectNum,    // 6. CP �� �Ѱ��Լ�        // 9999 - ��
//    eCSOTRaw_Panel_RearCPDefectNum,    // 7. CP �� �Ѱ��Լ�        // 9999 - ��
//    eCSOTRaw_Panel_Spare1,                // 8. ����� 1
//    eCSOTRaw_Panel_Spare2                // 9. ����� 2
//};
//enum eCSOTRawDefectIndex{        // 50
//    eCSOTRaw_Defect_Name = 0,            // 계층번호                // 50 고정
//    eCSOTRaw_Defect_Code,                // 결함코드                // AAAAA
//    eCSOTRaw_Defect_CenterOriX,        // 결함좌표X 1            // +-9999.999 mm 기판 센터 기점으로 좌표
//    eCSOTRaw_Defect_CenterOriY,        // 결함좌표Y 1            // +-9999.999 mm
//    eCSOTRaw_Defect_Area,                // 결함 Size(면적)        // 999.99 um - 추출 결함면적
//    eCSOTRaw_Defect_Name = 0,            // ������ȣ                // 50 ����
//    eCSOTRaw_Defect_Code,                // �����ڵ�                // AAAAA
//    eCSOTRaw_Defect_CenterOriX,        // ������ǥX 1            // +-9999.999 mm ���� ���� �������� ��ǥ
//    eCSOTRaw_Defect_CenterOriY,        // ������ǥY 1            // +-9999.999 mm
//    eCSOTRaw_Defect_Area,                // ���� Size(����)        // 999.99 um - ���� ���Ը���
//
//    eCSOTRaw_Defect_SizeType,            // 결함 Size 종류        // A - S/M/L/O
//    eCSOTRaw_Defect_DefectType,        // 결함 Type            // A - N: Normal, C: Common, M: Mask
//    eCSOTRaw_Defect_Zone,                // 결함 위치            // A - Zone
//    eCSOTRaw_Defect_Size,                // 결함 Size (CCD수)    // 99999 um2 - Camera Pixel Size
//    eCSOTRaw_Defect_SizeX,                // 결함Size DX            // 999.99 um - 추출 결함 X축 길이
//    eCSOTRaw_Defect_SizeType,            // ���� Size ����        // A - S/M/L/O
//    eCSOTRaw_Defect_DefectType,        // ���� Type            // A - N: Normal, C: Common, M: Mask
//    eCSOTRaw_Defect_Zone,                // ���� ��ġ            // A - Zone
//    eCSOTRaw_Defect_Size,                // ���� Size (CCD��)    // 99999 um2 - Camera Pixel Size
//    eCSOTRaw_Defect_SizeX,                // ����Size DX            // 999.99 um - ���� ���� X�� ����
//
//    eCSOTRaw_Defect_SizeY,                // 결함Size DY            // 999.99 um - 추출 결함 Y축 길이
//    eCSOTRaw_Defect_X,                    // 결함좌표 X 2            // 9999.999 mm - QMS Calculation
//    eCSOTRaw_Defect_Y,                    // 결함좌표 Y 2            // 9999.999 mm
//    eCSOTRaw_Defect_PixelX,            // 결함 Pixel 좌표 X    // 99999
//    eCSOTRaw_Defect_PixelY,            // 결함 Pixel 좌표 Y    // 99999
//    eCSOTRaw_Defect_SizeY,                // ����Size DY            // 999.99 um - ���� ���� Y�� ����
//    eCSOTRaw_Defect_X,                    // ������ǥ X 2            // 9999.999 mm - QMS Calculation
//    eCSOTRaw_Defect_Y,                    // ������ǥ Y 2            // 9999.999 mm
//    eCSOTRaw_Defect_PixelX,            // ���� Pixel ��ǥ X    // 99999
//    eCSOTRaw_Defect_PixelY,            // ���� Pixel ��ǥ Y    // 99999
//
//    eCSOTRaw_Defect_CPResult,            // CP 결과                // AAA - 0: CP 일치 무, 1: CP일치, 8: 미실시
//    eCSOTRaw_Defect_Flag,                // 수정대상 Flag        // AAAAA - 0 : 수정대상 외, 1: 수정후보
//    eCSOTRaw_Defect_ImageName,            // 이미지 번호            // AAAAA.A999.AAA -  Rule : " 설비ID " + " . " + " B " ( Before ) + " 連番 " + ?張子 " .AAA "
//    eCSOTRaw_Defect_ImageSizeX,        // 이미지 Size X        // 9999.99 um
//    eCSOTRaw_Defect_ImageSizeY,        // 이미지 Size Y        // 9999.99 um
//    eCSOTRaw_Defect_CPResult,            // CP ���                // AAA - 0: CP ��ġ ��, 1: CP��ġ, 8: �̽ǽ�
//    eCSOTRaw_Defect_Flag,                // ������� Flag        // AAAAA - 0 : ������� ��, 1: �����ĺ�
//    eCSOTRaw_Defect_ImageName,            // �̹��� ��ȣ            // AAAAA.A999.AAA -  Rule : " ����ID " + " . " + " B " ( Before ) + " ֧�� " + ?��� " .AAA "
//    eCSOTRaw_Defect_ImageSizeX,        // �̹��� Size X        // 9999.99 um
//    eCSOTRaw_Defect_ImageSizeY,        // �̹��� Size Y        // 9999.99 um
//
//    // [2018/07/05 08:42:57 by jylee] related Format 변경
//    eCSOTRaw_Defect_Spare1                // 스페어 1
//    // [2018/07/05 08:42:57 by jylee] related Format ����
//    eCSOTRaw_Defect_Spare1                // ����� 1
//};
/*
enum eCSOTRawDefectIndex{        // 50
    eCSOTRaw_Defect_Name = 0,            // 1. 계층번호                // 50 고정
    eCSOTRaw_Defect_Code,                // 2. 결함코드                // AAAAA
    eCSOTRaw_Defect_CenterOriX,        // 3. 결함좌표X 1            // +-9999.999 mm 기판 센터 기점으로 좌표
    eCSOTRaw_Defect_CenterOriY,        // 4. 결함좌표Y 1            // +-9999.999 mm
    eCSOTRaw_Defect_Area,                // 5. 결함 Size(면적)        // 999.99 um - 추출 결함면적
    eCSOTRaw_Defect_Name = 0,            // 1. ������ȣ                // 50 ����
    eCSOTRaw_Defect_Code,                // 2. �����ڵ�                // AAAAA
    eCSOTRaw_Defect_CenterOriX,        // 3. ������ǥX 1            // +-9999.999 mm ���� ���� �������� ��ǥ
    eCSOTRaw_Defect_CenterOriY,        // 4. ������ǥY 1            // +-9999.999 mm
    eCSOTRaw_Defect_Area,                // 5. ���� Size(����)        // 999.99 um - ���� ���Ը���
    eCSOTRaw_Defect_SizeType,            // 6. 결함 Size 종류        // A - S/M/L/O
    eCSOTRaw_Defect_DefectType,        // 7. 결함 Type            // A - N: Normal, C: Common, M: Mask
    eCSOTRaw_Defect_Zone,                // 8. 결함 위치            // A - Zone
    eCSOTRaw_Defect_Size,                // 9. 결함 Size (CCD수)    // 99999 um2 - Camera Pixel Size
    eCSOTRaw_Defect_SizeX,                // 10. 결함Size DX            // 999.99 um - 추출 결함 X축 길이
    eCSOTRaw_Defect_SizeType,            // 6. ���� Size ����        // A - S/M/L/O
    eCSOTRaw_Defect_DefectType,        // 7. ���� Type            // A - N: Normal, C: Common, M: Mask
    eCSOTRaw_Defect_Zone,                // 8. ���� ��ġ            // A - Zone
    eCSOTRaw_Defect_Size,                // 9. ���� Size (CCD��)    // 99999 um2 - Camera Pixel Size
    eCSOTRaw_Defect_SizeX,                // 10. ����Size DX            // 999.99 um - ���� ���� X�� ����
    eCSOTRaw_Defect_SizeY,                // 11. 결함Size DY            // 999.99 um - 추출 결함 Y축 길이
    eCSOTRaw_Defect_X,                    // 12. 결함좌표 X 2            // 9999.999 mm - QMS Calculation
    eCSOTRaw_Defect_Y,                    // 13. 결함좌표 Y 2            // 9999.999 mm
    eCSOTRaw_Defect_PixelX,            // 14. 결함 Pixel 좌표 X    // 99999
    eCSOTRaw_Defect_PixelY,            // 15. 결함 Pixel 좌표 Y    // 99999
    eCSOTRaw_Defect_SizeY,                // 11. ����Size DY            // 999.99 um - ���� ���� Y�� ����
    eCSOTRaw_Defect_X,                    // 12. ������ǥ X 2            // 9999.999 mm - QMS Calculation
    eCSOTRaw_Defect_Y,                    // 13. ������ǥ Y 2            // 9999.999 mm
    eCSOTRaw_Defect_PixelX,            // 14. ���� Pixel ��ǥ X    // 99999
    eCSOTRaw_Defect_PixelY,            // 15. ���� Pixel ��ǥ Y    // 99999
    eCSOTRaw_Defect_CPResult,            // 16. CP 결과                // AAA - 0: CP 일치 무, 1: CP일치, 8: 미실시
    eCSOTRaw_Defect_Flag,                // 17. 수정대상 Flag        // AAAAA - 0 : 수정대상 외, 1: 수정후보
    eCSOTRaw_Defect_ImageName,            // 18. 이미지 번호            // AAAAA.A999.AAA -  Rule : " 설비ID " + " . " + " B " ( Before ) + " 連番 " + ?張子 " .AAA "
    eCSOTRaw_Defect_ImageSizeX,        // 19. 이미지 Size X        // 9999.99 um
    eCSOTRaw_Defect_ImageSizeY,        // 20. 이미지 Size Y        // 9999.99 um
    eCSOTRaw_Defect_CPResult,            // 16. CP ���                // AAA - 0: CP ��ġ ��, 1: CP��ġ, 8: �̽ǽ�
    eCSOTRaw_Defect_Flag,                // 17. ������� Flag        // AAAAA - 0 : ������� ��, 1: �����ĺ�
    eCSOTRaw_Defect_ImageName,            // 18. �̹��� ��ȣ            // AAAAA.A999.AAA -  Rule : " ����ID " + " . " + " B " ( Before ) + " ֧�� " + ?��� " .AAA "
    eCSOTRaw_Defect_ImageSizeX,        // 19. �̹��� Size X        // 9999.99 um
    eCSOTRaw_Defect_ImageSizeY,        // 20. �̹��� Size Y        // 9999.99 um
    // [2018/07/05 08:42:57 by jylee] related Format 변경
    eCSOTRaw_Defect_CCDValue,            // 21. CCD 수치                // 99999
    eCSOTRaw_Defect_CCDNum,            // 22. 결함검출 카메라 번호 // 99
    eCSOTRaw_Defect_SliceNum,            // 23. 결함 몇번째 스캔 검출// 99
    eCSOTRaw_Defect_REVNum,            // 24. 결함 리뷰한 카메라    // 99
    eCSOTRaw_Defect_DefectPosGray,        // 25. 결함위치 휘도차        // 999
    // [2018/07/05 08:42:57 by jylee] related Format ����
    eCSOTRaw_Defect_CCDValue,            // 21. CCD ��ġ                // 99999
    eCSOTRaw_Defect_CCDNum,            // 22. ���԰��� ī�޶� ��ȣ // 99
    eCSOTRaw_Defect_SliceNum,            // 23. ���� ���° ��ĵ ����// 99
    eCSOTRaw_Defect_REVNum,            // 24. ���� ������ ī�޶�    // 99
    eCSOTRaw_Defect_DefectPosGray,        // 25. ������ġ �ֵ���        // 999
    eCSOTRaw_Defect_NormalPosGray,        // 26. 정상위치 휘도차        // 999
    eCSOTRaw_Defect_Spare1,            // 27. 스페어 1
    eCSOTRaw_Defect_Spare2                // 28. 스페어 2
    eCSOTRaw_Defect_NormalPosGray,        // 26. ������ġ �ֵ���        // 999
    eCSOTRaw_Defect_Spare1,            // 27. ����� 1
    eCSOTRaw_Defect_Spare2                // 28. ����� 2
};
*/
//enum eCSOTRawElectroIndex{        // 51
//    eCSOTRaw_Electro_Name = 0,            // 계층번호                // 51 고정
//    eCSOTRaw_Electro_Value,            // 측정치                // +-9999.99
//    eCSOTRaw_Electro_Spare1            // 스페어1
//    eCSOTRaw_Electro_Name = 0,            // ������ȣ                // 51 ����
//    eCSOTRaw_Electro_Value,            // ����ġ                // +-9999.99
//    eCSOTRaw_Electro_Spare1            // �����1
//};
//enum eCSOTRawCCDIndex{            // 52
//    eCSOTRaw_CCD_Name = 0,                // 계층번호                // 52 고정
//    eCSOTRaw_CCD_CamNum,                // CCD Camera 번호        // AA
//    eCSOTRaw_CCD_AvgGrayScale,            // 평균 Gray-Scale        // 999
//    eCSOTRaw_CCD_Spare1                // 스페어1
//    eCSOTRaw_CCD_Name = 0,                // ������ȣ                // 52 ����
//    eCSOTRaw_CCD_CamNum,                // CCD Camera ��ȣ        // AA
//    eCSOTRaw_CCD_AvgGrayScale,            // ��� Gray-Scale        // 999
//    eCSOTRaw_CCD_Spare1                // �����1
//};
enum eCSOTRawReviewIndex{        // 53
    eCSOTRaw_Review_Name = 0,            // 계층번호                // 53 고정
    eCSOTRaw_Review_PosX,                // 결함위치 X            // +-9999.999 mm - 기판 중심
    eCSOTRaw_Review_PosY,                // 결함위치 Y            // +-9999.999 mm
    eCSOTRaw_Review_ImageName,            // 이미지명                // AAAAA.A999.AAA
    eCSOTRaw_Review_SizeX,                // 이미지 Size X        // 9999.99 um
    eCSOTRaw_Review_SizeY,                // 이미지 Size Y        // 9999.99 um
    eCSOTRaw_Review_Spare1                // 스페어1
    eCSOTRaw_Review_Name = 0,            // ������ȣ                // 53 ����
    eCSOTRaw_Review_PosX,                // ������ġ X            // +-9999.999 mm - ���� �߽�
    eCSOTRaw_Review_PosY,                // ������ġ Y            // +-9999.999 mm
    eCSOTRaw_Review_ImageName,            // �̹�����                // AAAAA.A999.AAA
    eCSOTRaw_Review_SizeX,                // �̹��� Size X        // 9999.99 um
    eCSOTRaw_Review_SizeY,                // �̹��� Size Y        // 9999.99 um
    eCSOTRaw_Review_Spare1                // �����1
};
//enum eCSOTRawAlignmentIndex{    // 55
//    eCSOTRaw_Alignment_Name = 0,        // 계층번호                // 55 고정
//    eCSOTRaw_Alignment_Result,            // Alignment 결과        // 99999 - G: OK, N: NG, S:미판정
//    eCSOTRaw_Alignment_Rotation,        // Alignment Rotation    // +-9.999999 - 기판 회전 각도
//    eCSOTRaw_Alignment_A1ShiftX,        // A1 Shift수치 X        // +-9.999999
//    eCSOTRaw_Alignment_A1ShiftY,        // A1 Shift수치 Y        // +-9.999999
//    eCSOTRaw_Alignment_Name = 0,        // ������ȣ                // 55 ����
//    eCSOTRaw_Alignment_Result,            // Alignment ���        // 99999 - G: OK, N: NG, S:������
//    eCSOTRaw_Alignment_Rotation,        // Alignment Rotation    // +-9.999999 - ���� ȸ�� ����
//    eCSOTRaw_Alignment_A1ShiftX,        // A1 Shift��ġ X        // +-9.999999
//    eCSOTRaw_Alignment_A1ShiftY,        // A1 Shift��ġ Y        // +-9.999999
//
//    eCSOTRaw_Alignment_A2ShiftX,        // A2 Shift수치 X        // +-9.999999
//    eCSOTRaw_Alignment_A2ShiftY,        // A2 Shift수치 Y        // +-9.999999
//    eCSOTRaw_Alignment_A3ShiftX,        // A3 Shift수치 X        // +-9.999999
//    eCSOTRaw_Alignment_A3ShiftY,        // A3 Shift수치 Y        // +-9.999999
//    eCSOTRaw_Alignment_A4ShiftX,        // A4 Shift수치 X        // +-9.999999
//    eCSOTRaw_Alignment_A2ShiftX,        // A2 Shift��ġ X        // +-9.999999
//    eCSOTRaw_Alignment_A2ShiftY,        // A2 Shift��ġ Y        // +-9.999999
//    eCSOTRaw_Alignment_A3ShiftX,        // A3 Shift��ġ X        // +-9.999999
//    eCSOTRaw_Alignment_A3ShiftY,        // A3 Shift��ġ Y        // +-9.999999
//    eCSOTRaw_Alignment_A4ShiftX,        // A4 Shift��ġ X        // +-9.999999
//
//    eCSOTRaw_Alignment_A4ShiftY,        // A4 Shift수치 Y        // +-9.999999
//    eCSOTRaw_Alignment_Spare1            // 스페어1
//    eCSOTRaw_Alignment_A4ShiftY,        // A4 Shift��ġ Y        // +-9.999999
//    eCSOTRaw_Alignment_Spare1            // �����1
//};
enum eCSOTRTMSRawData{    
@@ -220,7 +220,7 @@
    // 공유메모리 사용시 쓸함수 CMARK=================================================================================
    // �����޸� ���� ���Լ� CMARK=================================================================================
    // Memory -> GlassResult
    virtual void MemoryParsingFileToGlassResult(CGlassResult* pGlassResult, CDitGlassRawClient* pDitRawClient);
    virtual int MemoryParsingReviewResultDataToFile(CGlassResult* pGlassResult,  CDitGlassRawClient* pRawMemoryMgr) ;
@@ -273,5 +273,6 @@
    int GetCSOTDefectCode(CString strDfectType);
    CString GetGradeType(int nJudgementType);//DefectJudgement
    int GetCodeType(CString strValue);
};