// DlgMeasure.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "ReviewRecipeEditor.h" #include "DlgMeasure.h" #include "ReviewRecipeEditorDlg.h" #include "CHEdgeTriangle/RecipeManager.h" #include "DlgCommon.h" // CDlgMeasure ´ëÈ­ »óÀÚÀÔ´Ï´Ù. IMPLEMENT_DYNAMIC(CDlgMeasure, CDialog) CDlgMeasure::CDlgMeasure(CWnd* pParent /*=NULL*/) : CDialog(CDlgMeasure::IDD, pParent) , m_nMeasureCount(0) , m_nResultCount(0) , m_nModuleCount(0) , m_nSelectResultIdx(-1) , m_nUserGlassCount(0) , m_strStdCameraGlassPosX(_T("0.000")) , m_strStdCameraGlassPosY(_T("0.000")) { } CDlgMeasure::~CDlgMeasure() { } void CDlgMeasure::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT_RCP_MEASURE_COUNT, m_nMeasureCount); DDX_Text(pDX, IDC_EDIT_RCP_RESULT_COUNT, m_nResultCount); DDX_Text(pDX, IDC_EDIT_RCP_MODULE_COUNT, m_nModuleCount); DDX_Text(pDX, IDC_EDIT_STD_CAMERA_GLASS_X, m_strStdCameraGlassPosX); DDX_Text(pDX, IDC_EDIT_STD_CAMERA_GLASS_Y, m_strStdCameraGlassPosY); DDX_Control(pDX, IDC_GRID_RCP_MEASURE_INFO, m_ctrlGridMeasureInfo); DDX_Control(pDX, IDC_COMBO_GLASS_ORIGIN_DIR, m_ctrlGlassOriginDir); DDX_Text(pDX, IDC_EDIT_RCP_GlASS_COUNT, m_nUserGlassCount); } BEGIN_MESSAGE_MAP(CDlgMeasure, CDialog) ON_BN_CLICKED(IDC_BUTTON_RCP_MEASURE_RESET, &CDlgMeasure::OnBnClickedButtonRcpMeasureReset) ON_BN_CLICKED(IDC_BUTTON_RCP_MEASURE_APPLY, &CDlgMeasure::OnBnClickedButtonRcpMeasureApply) ON_EN_CHANGE(IDC_EDIT_RCP_MEASURE_COUNT, &CDlgMeasure::OnEnChangeEditRcpMeasureCount) ON_EN_CHANGE(IDC_EDIT_RCP_RESULT_COUNT, &CDlgMeasure::OnEnChangeEditRcpResultCount) ON_EN_CHANGE(IDC_EDIT_RCP_MODULE_COUNT, &CDlgMeasure::OnEnChangeEditRcpModuleCount) ON_BN_CLICKED(IDC_BUTTON_GLASS_POS_SET, &CDlgMeasure::OnBnClickedButtonGlassPosSet) ON_NOTIFY(NM_CLICK, IDC_GRID_RCP_MEASURE_INFO, &CDlgMeasure::OnGridClick) ON_WM_TIMER() ON_BN_CLICKED(IDC_BUTTON_SET_ALL_MODEL, &CDlgMeasure::OnBnClickedButtonSetAllModel) ON_BN_CLICKED(IDC_BUTTON_SET_ALL_MAGNIFIC, &CDlgMeasure::OnBnClickedButtonSetAllMagnific) ON_BN_CLICKED(IDC_BUTTON_SET_ALL_LIGHT, &CDlgMeasure::OnBnClickedButtonSetAllLight) END_MESSAGE_MAP() // CDlgMeasure ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù. BOOL CDlgMeasure::OnInitDialog() { CDialog::OnInitDialog(); for (int i=0; imessage == WM_KEYDOWN ) { if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE ) { ::TranslateMessage(pMsg); ::DispatchMessage(pMsg); return TRUE; } } return CDialog::PreTranslateMessage(pMsg); } void CDlgMeasure::UpdateDialogData() { FillMeasureInfo(); Invalidate(FALSE); } void CDlgMeasure::OnBnClickedButtonRcpMeasureReset() { // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. m_nModuleCount = 0; m_nResultCount = 0; m_nMeasureCount = 0; m_nUserGlassCount = 0; UpdateData(FALSE); OnEnChangeEditRcpMeasureCount(); } void CDlgMeasure::OnBnClickedButtonRcpMeasureApply() { // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. UpdateData(TRUE); int i, j, nRowIdx, nColIdx, nArrayCount; CString strTemp, strItemText; CRcp_RsMeasureManager* pRcpRsMeasureManager = NULL; CGridCellCombo* pCellCombo = NULL; CStringArray strArrayOption; CReviewRecipeEditorDlg* pDlg = (CReviewRecipeEditorDlg*)AfxGetMainWnd(); if(pDlg == NULL) return; pRcpRsMeasureManager = pDlg->GetRsMeasureManager(); if(pRcpRsMeasureManager == NULL) return; nRowIdx = 1; int nOriginDir = m_ctrlGlassOriginDir.GetCurSel(); pRcpRsMeasureManager->GetRsRcpMeasureInfo()->SetGlassOriginDir(nOriginDir); pRcpRsMeasureManager->GetRsRcpMeasureInfo()->SetModuleCount(m_nModuleCount); pRcpRsMeasureManager->GetRsRcpMeasureInfo()->SetResultCount(m_nResultCount); pRcpRsMeasureManager->GetRsRcpMeasureInfo()->SetRcpMeasureInfoCount(m_nMeasureCount); //m_rsRcpMeasureInfo.m_vecRcpMeasureInfo.clear(); pRcpRsMeasureManager->GetRsRcpMeasureInfo()->SetUserGlassCount(m_nUserGlassCount); for(i = 0; i < m_nMeasureCount; i++) { nColIdx = 1; CRcpMeasureInfo* pRcpMeasureInfo = pRcpRsMeasureManager->GetRsRcpMeasureInfo()->GetRcpMeasureInfo(i); if (pRcpMeasureInfo==NULL) continue; //X Pos strItemText = m_ctrlGridMeasureInfo.GetItemText(nRowIdx, nColIdx++); pRcpMeasureInfo->m_nModuleIdx = _ttoi(strItemText); //Y Pos strItemText = m_ctrlGridMeasureInfo.GetItemText(nRowIdx, nColIdx++); pRcpMeasureInfo->m_nResultIdx = _ttoi(strItemText); //X Pos strItemText = m_ctrlGridMeasureInfo.GetItemText(nRowIdx, nColIdx++); pRcpMeasureInfo->m_dPosX = _tcstod(strItemText, NULL); //Y Pos strItemText = m_ctrlGridMeasureInfo.GetItemText(nRowIdx, nColIdx++); pRcpMeasureInfo->m_dPosY = _tcstod(strItemText, NULL); //Measure Model Idx pCellCombo = (CGridCellCombo*)m_ctrlGridMeasureInfo.GetCell(nRowIdx, nColIdx++); if(pCellCombo) { strArrayOption.RemoveAll(); strItemText = pCellCombo->GetText(); pCellCombo->GetOptions(strArrayOption); nArrayCount = (int)strArrayOption.GetCount(); for(j = 0; j < nArrayCount; j++) { strTemp = strArrayOption.GetAt(j); if(strTemp.Compare(strItemText) == 0) { pRcpMeasureInfo->m_nMeasureModelIdx = j; break; } } } //Magnification Idx pCellCombo = (CGridCellCombo*)m_ctrlGridMeasureInfo.GetCell(nRowIdx, nColIdx++); if(pCellCombo) { strArrayOption.RemoveAll(); strItemText = pCellCombo->GetText(); pCellCombo->GetOptions(strArrayOption); nArrayCount = (int)strArrayOption.GetCount(); for(j = 0; j < nArrayCount; j++) { strTemp = strArrayOption.GetAt(j); if(strTemp.Compare(strItemText) == 0) { pRcpMeasureInfo->m_nMagnificationIdx = j; break; } } } //Light Level strItemText = m_ctrlGridMeasureInfo.GetItemText(nRowIdx, nColIdx++); pRcpMeasureInfo->m_nLightLevel = _ttoi(strItemText); nRowIdx++; } } void CDlgMeasure::OnEnChangeEditRcpModuleCount() { OnEnChangeEditRcpResultCount(); } void CDlgMeasure::OnEnChangeEditRcpResultCount() { UpdateData(TRUE); m_nMeasureCount = m_nModuleCount * m_nResultCount; UpdateData(FALSE); OnEnChangeEditRcpMeasureCount(); } void CDlgMeasure::OnEnChangeEditRcpMeasureCount() { UpdateData(TRUE); int j, nRowIdx, nColIdx, nTriangleRecipeCount; CString strTemp, strTriangleRecipePath; CRect rect; CRecipeInfo* pTriangleRecipeInfo = NULL; CRecipeManager triangleRecipeManager; strTriangleRecipePath = TRIANGLE_RECIPE_PATH; strTriangleRecipePath += TRIANGLE_RECIPE_INFO; triangleRecipeManager.ReadRecipeInfo(strTriangleRecipePath); nTriangleRecipeCount = (int)triangleRecipeManager.GetRecipeInfoCount(); m_ctrlGridMeasureInfo.GetWindowRect(&rect); m_ctrlGridMeasureInfo.SetRowCount(m_nMeasureCount + 1); if(m_nMeasureCount > 0) { GV_ITEM Item; CStringArray strArrayOption; CGridCellCombo* pCellCombo = NULL; nRowIdx = 1; nColIdx = 1; int nPointIdx = 0; for (int nModuleIdx=0; nModuleIdxSetOptions(strArrayOption); pCellCombo->SetStyle(CBS_DROPDOWN); strTemp.Format(_T("%d"), nModuleIdx); pCellCombo->SetText(strTemp); // Result Idx nColIdx = 2; strArrayOption.RemoveAll(); for(j = 0; j < m_nResultCount; j++) { strTemp.Format(_T("%d"), j); strArrayOption.Add(strTemp); } m_ctrlGridMeasureInfo.SetCellType(nRowIdx, nColIdx, RUNTIME_CLASS(CGridCellCombo)); pCellCombo = (CGridCellCombo*)m_ctrlGridMeasureInfo.GetCell(nRowIdx, nColIdx); pCellCombo->SetOptions(strArrayOption); pCellCombo->SetStyle(CBS_DROPDOWN); strTemp.Format(_T("%d"), nResultIdx); pCellCombo->SetText(strTemp); // Model nColIdx = 5; strArrayOption.RemoveAll(); for(j = 0; j < nTriangleRecipeCount; j++) { pTriangleRecipeInfo = triangleRecipeManager.GetRecipeInfo(j); if(pTriangleRecipeInfo) { strArrayOption.Add(pTriangleRecipeInfo->strRecipeName); } } m_ctrlGridMeasureInfo.SetCellType(nRowIdx, nColIdx, RUNTIME_CLASS(CGridCellCombo)); pCellCombo = (CGridCellCombo*)m_ctrlGridMeasureInfo.GetCell(nRowIdx, nColIdx); pCellCombo->SetOptions(strArrayOption); pCellCombo->SetStyle(CBS_DROPDOWN); // Magnific nColIdx = 6; strArrayOption.RemoveAll(); for(j = 0; j < RECIPE_MAGNIFICATION_COUNT; j++) { switch(j) { case RECIPE_MAGNIFICATION_X2: strTemp.Format(_T("X2")); break; case RECIPE_MAGNIFICATION_X5: strTemp.Format(_T("X5")); break; case RECIPE_MAGNIFICATION_X10: strTemp.Format(_T("X10")); break; case RECIPE_MAGNIFICATION_X20: strTemp.Format(_T("X20")); break; case RECIPE_MAGNIFICATION_X50: strTemp.Format(_T("X50")); break; default: strTemp.Format(_T("")); break; } strArrayOption.Add(strTemp); } m_ctrlGridMeasureInfo.SetCellType(nRowIdx, nColIdx, RUNTIME_CLASS(CGridCellCombo)); pCellCombo = (CGridCellCombo*)m_ctrlGridMeasureInfo.GetCell(nRowIdx, nColIdx); pCellCombo->SetOptions(strArrayOption); pCellCombo->SetStyle(CBS_DROPDOWN); nRowIdx++; } } } } void CDlgMeasure::InitMeasureInfoGridControl() { int nRowIdx, nColIdx, nRows, nCols, nFixRows, nFixCols, nMargin, nDataColumnWidth; CString strTemp; CRect rect; nRows = m_nMeasureCount + 1; nCols = MEASURE_INFO_GRID_COL_COUNT; nFixRows = 1; nFixCols = 1; nRowIdx = 0; nColIdx = 0; m_ctrlGridMeasureInfo.GetWindowRect(&rect); m_ctrlGridMeasureInfo.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(0xFF, 0xFF, 0xE0)); m_ctrlGridMeasureInfo.SetRowCount(nRows); m_ctrlGridMeasureInfo.SetColumnCount(nCols); m_ctrlGridMeasureInfo.SetFixedRowCount(nFixRows); m_ctrlGridMeasureInfo.SetFixedColumnCount(nFixCols); GV_ITEM Item; Item.mask = GVIF_TEXT; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("Idx"));//_T("À妽º")); Item.strText = strTemp; m_ctrlGridMeasureInfo.SetItem(&Item); m_ctrlGridMeasureInfo.SetColumnWidth(nColIdx++, 30); nMargin = 5; nDataColumnWidth = (rect.Width() - 30 - nMargin) / (MEASURE_INFO_GRID_COL_COUNT - 1); Item.col = nColIdx; strTemp.Format(_T("Module")); Item.strText = strTemp; m_ctrlGridMeasureInfo.SetItem(&Item); m_ctrlGridMeasureInfo.SetColumnWidth(nColIdx++, 50); Item.col = nColIdx; strTemp.Format(_T("Result")); Item.strText = strTemp; m_ctrlGridMeasureInfo.SetItem(&Item); m_ctrlGridMeasureInfo.SetColumnWidth(nColIdx++, 50); Item.col = nColIdx; strTemp.Format(_T("X(mm)")); Item.strText = strTemp; m_ctrlGridMeasureInfo.SetItem(&Item); m_ctrlGridMeasureInfo.SetColumnWidth(nColIdx++, 70); Item.col = nColIdx; strTemp.Format(_T("Y(mm)")); Item.strText = strTemp; m_ctrlGridMeasureInfo.SetItem(&Item); m_ctrlGridMeasureInfo.SetColumnWidth(nColIdx++, 70); Item.col = nColIdx; strTemp.Format(_T("Model")); Item.strText = strTemp; m_ctrlGridMeasureInfo.SetItem(&Item); m_ctrlGridMeasureInfo.SetColumnWidth(nColIdx++, 80); Item.col = nColIdx; strTemp.Format(_T("Magnific")); Item.strText = strTemp; m_ctrlGridMeasureInfo.SetItem(&Item); m_ctrlGridMeasureInfo.SetColumnWidth(nColIdx++, 60); Item.col = nColIdx; strTemp.Format(_T("Light")); Item.strText = strTemp; m_ctrlGridMeasureInfo.SetItem(&Item); m_ctrlGridMeasureInfo.SetColumnWidth(nColIdx++, 50); } void CDlgMeasure::FillMeasureInfo() { int i, nRowIdx, nColIdx; CString strItemText; CRcp_RsMeasureManager* pRcpRsMeasureManager = NULL; CReviewRecipeEditorDlg* pDlg = (CReviewRecipeEditorDlg*)AfxGetMainWnd(); if(pDlg == NULL) return; pRcpRsMeasureManager = pDlg->GetRsMeasureManager(); if(pRcpRsMeasureManager == NULL) return; int nOriginDir = pRcpRsMeasureManager->GetRsRcpMeasureInfo()->GetGlassOriginDir(); m_ctrlGlassOriginDir.SetCurSel(nOriginDir); int nMeasureCount = pRcpRsMeasureManager->GetRsRcpMeasureInfo()->GetRcpMeasureInfoCount(); int nModuleCount = pRcpRsMeasureManager->GetRsRcpMeasureInfo()->GetModuleCount(); int nResultCount = pRcpRsMeasureManager->GetRsRcpMeasureInfo()->GetResultCount(); int nGlassCount = pRcpRsMeasureManager->GetRsRcpMeasureInfo()->GetUserGlassCount(); if(nMeasureCount > 0) { CGridCellCombo* pCellCombo = NULL; CStringArray strArrayOption; nRowIdx = 1; m_nMeasureCount = nMeasureCount; m_nModuleCount = nModuleCount; m_nResultCount = nResultCount; m_nUserGlassCount = nGlassCount; UpdateData(FALSE); OnEnChangeEditRcpMeasureCount(); for(i = 0; i < nMeasureCount; i++) { nColIdx = 1; CRcpMeasureInfo* pRcpMeasureInfo = pRcpRsMeasureManager->GetRsRcpMeasureInfo()->GetRcpMeasureInfo(i); if(pRcpMeasureInfo == NULL) continue; //X À§Ä¡ strItemText.Format(_T("%d"), pRcpMeasureInfo->m_nModuleIdx); m_ctrlGridMeasureInfo.SetItemText(nRowIdx, nColIdx++, strItemText); //Y À§Ä¡ strItemText.Format(_T("%d"), pRcpMeasureInfo->m_nResultIdx); m_ctrlGridMeasureInfo.SetItemText(nRowIdx, nColIdx++, strItemText); //X À§Ä¡ strItemText.Format(_T("%.03lf"), pRcpMeasureInfo->m_dPosX); m_ctrlGridMeasureInfo.SetItemText(nRowIdx, nColIdx++, strItemText); //Y À§Ä¡ strItemText.Format(_T("%.03lf"), pRcpMeasureInfo->m_dPosY); m_ctrlGridMeasureInfo.SetItemText(nRowIdx, nColIdx++, strItemText); //ÃøÁ¤ ¸ðµ¨ pCellCombo = (CGridCellCombo*)m_ctrlGridMeasureInfo.GetCell(nRowIdx, nColIdx); if(pCellCombo) { strArrayOption.RemoveAll(); pCellCombo->GetOptions(strArrayOption); if(strArrayOption.GetSize() > 0 && pRcpMeasureInfo->m_nMeasureModelIdx < strArrayOption.GetSize() && pRcpMeasureInfo->m_nMeasureModelIdx != -1) { strItemText = strArrayOption.GetAt(pRcpMeasureInfo->m_nMeasureModelIdx); m_ctrlGridMeasureInfo.SetItemText(nRowIdx, nColIdx, strItemText); } } //ÃøÁ¤ ¹èÀ² nColIdx++; pCellCombo = (CGridCellCombo*)m_ctrlGridMeasureInfo.GetCell(nRowIdx, nColIdx); if(pCellCombo) { strArrayOption.RemoveAll(); pCellCombo->GetOptions(strArrayOption); if(strArrayOption.GetSize() > 0 && pRcpMeasureInfo->m_nMagnificationIdx > -1) { strItemText = strArrayOption.GetAt(pRcpMeasureInfo->m_nMagnificationIdx); m_ctrlGridMeasureInfo.SetItemText(nRowIdx, nColIdx, strItemText); } } //±¤·®°ª nColIdx++; strItemText.Format(_T("%d"), pRcpMeasureInfo->m_nLightLevel); m_ctrlGridMeasureInfo.SetItemText(nRowIdx, nColIdx++, strItemText); nRowIdx++; } } else { } m_ctrlGridMeasureInfo.Invalidate(FALSE); } void CDlgMeasure::OnBnClickedButtonGlassPosSet() { if (m_nSelectResultIdx<0) return; if (m_nSelectResultIdx>=m_ctrlGridMeasureInfo.GetRowCount()) { return; } int nRowIdx = m_nSelectResultIdx + 1; int nColIdx = 3; //X À§Ä¡ m_ctrlGridMeasureInfo.SetItemText(nRowIdx, nColIdx++, m_strStdCameraGlassPosX); //Y À§Ä¡ m_ctrlGridMeasureInfo.SetItemText(nRowIdx, nColIdx++, m_strStdCameraGlassPosY); m_ctrlGridMeasureInfo.Invalidate(FALSE); } void CDlgMeasure::OnGridClick(NMHDR *pNotifyStruct, LRESULT* pResult) { int nIdx; CString strItemText; NM_GRIDVIEW* pItem = (NM_GRIDVIEW*) pNotifyStruct; nIdx = pItem->iRow - 1; if(nIdx >= 0) { m_nSelectResultIdx = nIdx; } } void CDlgMeasure::OnTimer(UINT_PTR nIDEvent) { // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù. if (nIDEvent == 100) { static int i = 0; if ( (i+1) % 2 == 0 ) { CReviewRecipeEditorDlg* pDlg = (CReviewRecipeEditorDlg*)AfxGetMainWnd(); if(pDlg) { COPYDATA_RECIPE2REV copyData; copyData.Message = MsgRecipe2Rev_StandardCameraGlassPos; pDlg->SendData2ReviewSystem(©Data); } } else { CReviewRecipeEditorDlg* pDlg = (CReviewRecipeEditorDlg*)AfxGetMainWnd(); if(pDlg) { COPYDATA_RECIPE2REV* pCopyData = pDlg->GetRecipe2ReviewData(); m_strStdCameraGlassPosX.Format(_T("%.03lf"), pCopyData->dStandardCameraGlassPosX); m_strStdCameraGlassPosY.Format(_T("%.03lf"), pCopyData->dStandardCameraGlassPosY); SetDlgItemText(IDC_EDIT_STD_CAMERA_GLASS_X, m_strStdCameraGlassPosX); SetDlgItemText(IDC_EDIT_STD_CAMERA_GLASS_Y, m_strStdCameraGlassPosY); } } i++; } CDialog::OnTimer(nIDEvent); } void CDlgMeasure::OnBnClickedButtonSetAllModel() { int nRowIdx = 1; int nColIdx = 5; CString strValue = m_ctrlGridMeasureInfo.GetItemText(nRowIdx, nColIdx); for (int i=nRowIdx+1; i