// DlgCoordinate.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù.
|
//
|
|
#include "stdafx.h"
|
#include "ReviewRecipeEditor.h"
|
#include "DlgCoordinate.h"
|
#include "afxdialogex.h"
|
#include "ReviewRecipeEditorDlg.h"
|
#include "CHEdgeTriangle/RecipeManager.h"
|
#include "DlgCommon.h"
|
#include "CHReviewSetting/SystemInfo.h"
|
|
|
// CDlgCoordinate ´ëÈ »óÀÚÀÔ´Ï´Ù.
|
|
IMPLEMENT_DYNAMIC(CDlgCoordinate, CDialog)
|
|
CDlgCoordinate::CDlgCoordinate(CWnd* pParent /*=NULL*/)
|
: CDialog(CDlgCoordinate::IDD, pParent)
|
,m_nMeasureCount(0)
|
,m_nGlassWidth(2500)
|
,m_nGlassHeight(2200)
|
{
|
}
|
|
CDlgCoordinate::~CDlgCoordinate()
|
{
|
}
|
|
void CDlgCoordinate::DoDataExchange(CDataExchange* pDX)
|
{
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_COMBO_GLASS_DIR, m_ctrlGlassDir);
|
DDX_Control(pDX, IDC_COMBO_CORNERCUT_DIR, m_ctrlCornerDir);
|
DDX_Control(pDX, IDC_EDIT_RCP_MEASURE_DIR, m_sMeasureDir);
|
DDX_Text(pDX, IDC_EDIT_RCP_MEASURE_COUNT, m_nMeasureCount);
|
DDX_Control(pDX, IDC_GRID_RCP_COORDINATE_INFO, m_ctrlGridCoordinateInfo);
|
DDX_Text(pDX,IDC_EDIT_RCP_GLASS_WIDTH, m_nGlassWidth);
|
DDX_Text(pDX,IDC_EDIT_RCP_GLASS_HEIGHT,m_nGlassHeight);
|
}
|
|
|
BEGIN_MESSAGE_MAP(CDlgCoordinate, CDialog)
|
ON_BN_CLICKED(IDC_BUTTON_RCP_COORDINATE_RESET, &CDlgCoordinate::OnBnClickedButtonRcpCoordinateReset)
|
ON_BN_CLICKED(IDC_BUTTON_RCP_COORDINATE_APPLY, &CDlgCoordinate::OnBnClickedButtonRcpCoordinateApply)
|
ON_EN_CHANGE(IDC_EDIT_RCP_MEASURE_COUNT, &CDlgCoordinate::OnEnChangeEditMeasureCount)
|
END_MESSAGE_MAP()
|
|
|
// CDlgCoordinate ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù.
|
|
|
void CDlgCoordinate::UpdateDialogData()
|
{
|
Invalidate(FALSE);
|
}
|
|
BOOL CDlgCoordinate::OnInitDialog()
|
{
|
CDialog::OnInitDialog();
|
|
//init glass dir combo box
|
for (int i=0; i<GlassOriginDir_Count; i++)
|
{
|
switch(i)
|
{
|
case GlassOriginDir_LeftTop:
|
m_ctrlGlassDir.InsertString(i, _T("Left Top"));
|
break;
|
case GlassOriginDir_RightTop:
|
m_ctrlGlassDir.InsertString(i, _T("Right Top"));
|
break;
|
case GlassOriginDir_LeftBottom:
|
m_ctrlGlassDir.InsertString(i, _T("Left Bottom"));
|
break;
|
case GlassOriginDir_RightBottom:
|
m_ctrlGlassDir.InsertString(i, _T("Right Bottom"));
|
break;
|
}
|
}
|
m_ctrlGlassDir.SetCurSel(GlassOriginDir_RightBottom);
|
|
//init cornercut dir combo box
|
for (int i=0; i<GlassOriginDir_Count; i++)
|
{
|
switch(i)
|
{
|
case GlassOriginDir_LeftTop:
|
m_ctrlCornerDir.InsertString(i, _T("Left Top"));
|
break;
|
case GlassOriginDir_RightTop:
|
m_ctrlCornerDir.InsertString(i, _T("Right Top"));
|
break;
|
case GlassOriginDir_LeftBottom:
|
m_ctrlCornerDir.InsertString(i, _T("Left Bottom"));
|
break;
|
case GlassOriginDir_RightBottom:
|
m_ctrlCornerDir.InsertString(i, _T("Right Bottom"));
|
break;
|
}
|
}
|
m_ctrlCornerDir.SetCurSel(GlassOriginDir_RightBottom);
|
|
//init Measure Origin Direction
|
m_sMeasureDir.SetWindowText(_T("Center Coordinate"));
|
|
InitCoordinateGridControl();
|
|
return TRUE;
|
}
|
void CDlgCoordinate::InitCoordinateGridControl()
|
{
|
int nRowIdx, nColIdx, nRows, nCols, nFixRows, nFixCols, nMargin, nDataColumnWidth;
|
CString strTemp;
|
CRect rect;
|
|
nRows = m_nMeasureCount + 1;
|
nCols = 5;
|
nFixRows = 1;
|
nFixCols = 1;
|
nRowIdx = 0;
|
nColIdx = 0;
|
|
m_ctrlGridCoordinateInfo.GetWindowRect(&rect);
|
m_ctrlGridCoordinateInfo.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(0xFF, 0xFF, 0xE0));
|
m_ctrlGridCoordinateInfo.SetRowCount(nRows);
|
m_ctrlGridCoordinateInfo.SetColumnCount(nCols);
|
m_ctrlGridCoordinateInfo.SetFixedRowCount(nFixRows);
|
m_ctrlGridCoordinateInfo.SetFixedColumnCount(nFixCols);
|
|
GV_ITEM Item;
|
|
Item.mask = GVIF_TEXT;
|
Item.row = nRowIdx;
|
Item.col = nColIdx;
|
strTemp.Format(_T("Idx"));//_T("À妽º"));
|
Item.strText = strTemp;
|
m_ctrlGridCoordinateInfo.SetItem(&Item);
|
m_ctrlGridCoordinateInfo.SetColumnWidth(nColIdx++, 30);
|
|
nMargin = 5;
|
nDataColumnWidth = (rect.Width() - 30 - nMargin) / (5 - 1);
|
|
Item.col = nColIdx;
|
strTemp.Format(_T("Before X(mm)"));
|
Item.strText = strTemp;
|
m_ctrlGridCoordinateInfo.SetItem(&Item);
|
m_ctrlGridCoordinateInfo.SetColumnWidth(nColIdx++, nDataColumnWidth);
|
|
Item.col = nColIdx;
|
strTemp.Format(_T("Before Y(mm)"));
|
Item.strText = strTemp;
|
m_ctrlGridCoordinateInfo.SetItem(&Item);
|
m_ctrlGridCoordinateInfo.SetColumnWidth(nColIdx++, nDataColumnWidth);
|
|
Item.col = nColIdx;
|
strTemp.Format(_T("After X(mm)"));
|
Item.strText = strTemp;
|
m_ctrlGridCoordinateInfo.SetItem(&Item);
|
m_ctrlGridCoordinateInfo.SetColumnWidth(nColIdx++, nDataColumnWidth);
|
|
Item.col = nColIdx;
|
strTemp.Format(_T("After Y(mm)"));
|
Item.strText = strTemp;
|
m_ctrlGridCoordinateInfo.SetItem(&Item);
|
m_ctrlGridCoordinateInfo.SetColumnWidth(nColIdx++, nDataColumnWidth);
|
}
|
void CDlgCoordinate::OnEnChangeEditMeasureCount()
|
{
|
UpdateData(TRUE);
|
|
int nRowIdx, nColIdx;
|
CString strTemp;
|
CRect rect;
|
|
m_ctrlGridCoordinateInfo.GetWindowRect(&rect);
|
m_ctrlGridCoordinateInfo.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; nModuleIdx<m_nMeasureCount; nModuleIdx++)
|
{
|
//À妽º
|
nColIdx = 0;
|
Item.mask = GVIF_TEXT;
|
Item.row = nRowIdx;
|
Item.col = nColIdx;
|
strTemp.Format(_T("%02d"), nPointIdx++);
|
Item.strText = strTemp;
|
m_ctrlGridCoordinateInfo.SetItem(&Item);
|
|
nRowIdx++;
|
}
|
}
|
}
|
|
void CDlgCoordinate::OnBnClickedButtonRcpCoordinateReset()
|
{
|
// TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
m_nMeasureCount = 0;
|
|
UpdateData(FALSE);
|
|
OnEnChangeEditMeasureCount();
|
}
|
|
|
void CDlgCoordinate::OnBnClickedButtonRcpCoordinateApply()
|
{
|
// TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
UpdateData(TRUE);
|
|
CString strItemText;
|
int nRowIdx, nColIdx;
|
int nCornerXdir, nCornerYdir, nGlassXdir, nGlassYdir;
|
double nHalfGlassWidth, nHalfGlassHeight;
|
|
m_nGlassDir = m_ctrlGlassDir.GetCurSel();
|
m_nCornerDir = m_ctrlCornerDir.GetCurSel();
|
|
nHalfGlassHeight = m_nGlassHeight / 2.0;
|
nHalfGlassWidth = m_nGlassWidth / 2.0;
|
|
// x : right = plus direction
|
// y : up = plus direction
|
switch(m_nGlassDir)
|
{
|
case GlassOriginDir_LeftBottom:
|
nGlassXdir = 1;
|
nGlassYdir = 1;
|
break;
|
case GlassOriginDir_LeftTop:
|
nGlassXdir = 1;
|
nGlassYdir = -1;
|
break;
|
case GlassOriginDir_RightBottom:
|
nGlassXdir = -1;
|
nGlassYdir = 1;
|
break;
|
case GlassOriginDir_RightTop:
|
nGlassXdir = -1;
|
nGlassYdir = -1;
|
break;
|
}
|
|
// x : right = plus direction
|
// y : up = plus direction
|
switch(m_nCornerDir)
|
{
|
case GLASS_CORNERCUT_LEFT_BOTTOM:
|
nCornerXdir = -1;
|
nCornerYdir = 1;
|
break;
|
case GLASS_CORNERCUT_LEFT_TOP:
|
nCornerXdir = -1;
|
nCornerYdir = -1;
|
break;
|
case GLASS_CORNERCUT_RIGHT_BOTTOM:
|
nCornerXdir = 1;
|
nCornerYdir = 1;
|
break;
|
case GLASS_CORNERCUT_RIGHT_TOP:
|
nCornerXdir = 1;
|
nCornerYdir = -1;
|
break;
|
}
|
|
|
nRowIdx = 1;
|
for(int i=0;i < m_nMeasureCount;i++)
|
{
|
nColIdx = 1;
|
// Compare Glass dir & Corner dir
|
// if each direction is same, Plus HalfGlasssize and before X postion.
|
// else Minus HalfGlasssize and before X position.
|
if(nGlassXdir == nCornerXdir)
|
{
|
strItemText = m_ctrlGridCoordinateInfo.GetItemText(nRowIdx,nColIdx);
|
m_dBeforePosX = _tcstod(strItemText, NULL);
|
m_dAfterPosX = nHalfGlassWidth + m_dBeforePosX;
|
strItemText.Format(_T("%lf"),m_dAfterPosX);
|
nColIdx += 2;
|
m_ctrlGridCoordinateInfo.SetItemText(nRowIdx,nColIdx,strItemText);
|
}
|
else
|
{
|
strItemText = m_ctrlGridCoordinateInfo.GetItemText(nRowIdx,nColIdx);
|
m_dBeforePosX = _tcstod(strItemText, NULL);
|
m_dAfterPosX = nHalfGlassWidth - m_dBeforePosX;
|
strItemText.Format(_T("%lf"),m_dAfterPosX);
|
nColIdx += 2;
|
m_ctrlGridCoordinateInfo.SetItemText(nRowIdx,nColIdx,strItemText);
|
}
|
|
nColIdx = 2;
|
if(nGlassYdir == nCornerYdir)
|
{
|
strItemText = m_ctrlGridCoordinateInfo.GetItemText(nRowIdx,nColIdx);
|
m_dBeforePosY = _tcstod(strItemText, NULL);
|
m_dAfterPosY = nHalfGlassHeight + m_dBeforePosY;
|
strItemText.Format(_T("%lf"),m_dAfterPosY);
|
nColIdx += 2;
|
m_ctrlGridCoordinateInfo.SetItemText(nRowIdx,nColIdx,strItemText);
|
}
|
else
|
{
|
strItemText = m_ctrlGridCoordinateInfo.GetItemText(nRowIdx,nColIdx);
|
m_dBeforePosY = _tcstod(strItemText, NULL);
|
m_dAfterPosY = nHalfGlassHeight - m_dBeforePosY;
|
strItemText.Format(_T("%lf"),m_dAfterPosY);
|
nColIdx += 2;
|
m_ctrlGridCoordinateInfo.SetItemText(nRowIdx,nColIdx,strItemText);
|
}
|
nRowIdx++;
|
}
|
m_ctrlGridCoordinateInfo.Invalidate(FALSE);
|
}
|