// DlgCoordinateConvert.cpp: 实现文件
|
//
|
|
#include "stdafx.h"
|
#include "ENRIT.h"
|
#include "afxdialogex.h"
|
#include "DlgCoordinateConvert.h"
|
|
// CDlgCoordinateConvert 对话框
|
|
const int CAM_COLUMN_COUNT = 5;
|
const TCHAR* CAM_COLUMN_NAMES[CAM_COLUMN_COUNT] = {
|
_T("Dimension"),
|
_T("0 Hand Resolution(H)"),
|
_T("0 Hand Resolution(V)"),
|
_T("1 Hand Resolution(H)"),
|
_T("1 Hand Resolution(V)")
|
};
|
|
const int CAM_COLUMN_WIDTHS[CAM_COLUMN_COUNT] = {
|
80, 120, 120, 120, 120
|
};
|
|
#define GRID_FIX_COLOR RGB(144,200,246)
|
#define GRID_COLOR RGB(242,242,242)
|
#define GRID_TEXT_COLOR RGB(255,255,255)
|
#define GRID_LINE_COLOR GRID_FIX_COLOR
|
|
IMPLEMENT_DYNAMIC(CDlgCoordinateConvert, CDialogEx)
|
|
CDlgCoordinateConvert::CDlgCoordinateConvert(CWnd* pParent /*=nullptr*/)
|
: CDialogEx(IDD_DLG_COORD_CONVERT, pParent)
|
, m_nCameraCount(0)
|
, m_nScanCount(0)
|
, m_pDlgRecipe(nullptr)
|
{
|
|
}
|
|
CDlgCoordinateConvert::~CDlgCoordinateConvert()
|
{
|
}
|
|
void CDlgCoordinateConvert::SetRecipe(CGlassRecipe* pRecipe)
|
{
|
m_pDlgRecipe = pRecipe;
|
}
|
|
void CDlgCoordinateConvert::InitCameraGrid()
|
{
|
if (m_gridCameraList.GetSafeHwnd() == NULL) {
|
return;
|
}
|
|
m_gridCameraList.GetDefaultCell(TRUE, FALSE)->SetBackClr(GRID_FIX_COLOR);
|
m_gridCameraList.GetDefaultCell(FALSE, TRUE)->SetBackClr(GRID_FIX_COLOR);
|
m_gridCameraList.GetDefaultCell(FALSE, FALSE)->SetBackClr(GRID_COLOR);
|
m_gridCameraList.SetFixedBkColor(GRID_FIX_COLOR);
|
m_gridCameraList.SetGridLines(GVL_BOTH);
|
|
m_gridCameraList.SetColumnCount(CAM_COLUMN_COUNT);
|
m_gridCameraList.SetRowCount(10);
|
m_gridCameraList.SetFixedRowCount(1);
|
m_gridCameraList.SetFixedColumnCount(0);
|
m_gridCameraList.ExpandColumnsToFit();
|
|
CFont* pFont = m_gridCameraList.GetFont();
|
if (!pFont) {
|
return;
|
}
|
|
LOGFONT lf;
|
pFont->GetLogFont(&lf);
|
lf.lfItalic = 0;
|
lf.lfHeight = 14;
|
lf.lfWeight = FW_BOLD;
|
_tcscpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial"));
|
|
m_gridCameraList.GetDefaultCell(TRUE, FALSE)->SetFont(&lf);
|
m_gridCameraList.GetDefaultCell(FALSE, TRUE)->SetFont(&lf);
|
m_gridCameraList.GetDefaultCell(TRUE, TRUE)->SetFont(&lf);
|
m_gridCameraList.SetEditable(TRUE);
|
m_gridCameraList.EnableSelection(TRUE);
|
|
InitCameraGridHeader();
|
}
|
|
void CDlgCoordinateConvert::InitCameraGridHeader()
|
{
|
CString str;
|
GV_ITEM Item;
|
int nCol = 0;
|
int iLoop;
|
|
Item.mask = GVIF_TEXT;
|
Item.row = 0;
|
for (iLoop = 0; iLoop < CAM_COLUMN_COUNT; iLoop++) {
|
Item.col = nCol++;
|
Item.strText = CAM_COLUMN_NAMES[iLoop];
|
m_gridCameraList.SetItem(&Item);
|
m_gridCameraList.SetColumnWidth(Item.col, CAM_COLUMN_WIDTHS[iLoop]);
|
}
|
|
m_gridCameraList.Invalidate();
|
}
|
|
void CDlgCoordinateConvert::FillCameraGrid()
|
{
|
m_gridCameraList.SetRowCount(MAX_DIMENSION_COUNT + 1);
|
|
CProfileInspect_Prm profile;
|
if (m_pDlgRecipe != nullptr) {
|
profile = m_pDlgRecipe->m_ProfilePrm;
|
}
|
else {
|
for (int i = 0; i < MAX_DIMENSION_COUNT; i++) {
|
profile.m_dConvResolution[i][0] = 0.01;
|
profile.m_dConvResolution[i][1] = 0.01;
|
profile.m_dScanResolution[i][0] = 0.01;
|
profile.m_dScanResolution[i][1] = 0.01;
|
}
|
}
|
|
CString str;
|
const TCHAR* SET_INS_DIMENSION[] = { _T("A Top"),_T("B Top"),_T("C Top"),_T("D Top"),_T("A Bot"),_T("B Bot"),_T("C Bot"),_T("D Bot") };
|
for (int i = 0; i < MAX_DIMENSION_COUNT; ++i) {
|
int iRow = i + 1;
|
|
m_gridCameraList.SetItemText(iRow, 0, SET_INS_DIMENSION[i]);
|
m_gridCameraList.SetItemState(iRow, 0, GVIS_READONLY);
|
|
str.Format(_T("%.10f"), profile.m_dConvResolution[i][0]);
|
m_gridCameraList.SetItemText(iRow, 1, str);
|
|
str.Format(_T("%.10f"), profile.m_dScanResolution[i][0]);
|
m_gridCameraList.SetItemText(iRow, 2, str);
|
|
str.Format(_T("%.10f"), profile.m_dConvResolution[i][1]);
|
m_gridCameraList.SetItemText(iRow, 3, str);
|
|
str.Format(_T("%.10f"), profile.m_dScanResolution[i][1]);
|
m_gridCameraList.SetItemText(iRow, 4, str);
|
}
|
|
m_gridCameraList.Invalidate();
|
}
|
|
void CDlgCoordinateConvert::DoDataExchange(CDataExchange* pDX)
|
{
|
CDialogEx::DoDataExchange(pDX);
|
DDX_Control(pDX, IDC_CAMERA_LIST, m_gridCameraList);
|
DDX_Text(pDX, IDC_EDIT_CAMERA_COUNT, m_nCameraCount);
|
DDX_Text(pDX, IDC_EDIT_SCAN_COUNT, m_nScanCount);
|
}
|
|
BEGIN_MESSAGE_MAP(CDlgCoordinateConvert, CDialogEx)
|
END_MESSAGE_MAP()
|
|
BEGIN_EVENTSINK_MAP(CDlgCoordinateConvert, CDialogEx)
|
ON_EVENT(CDlgCoordinateConvert, IDC_BTN_CONVERT_APPLY, DISPID_CLICK, CDlgCoordinateConvert::OnClickBtnConvertApply, VTS_NONE)
|
ON_EVENT(CDlgCoordinateConvert, IDC_BTN_CONVERT_CLOSE, DISPID_CLICK, CDlgCoordinateConvert::OnClickBtnConvertClose, VTS_NONE)
|
END_EVENTSINK_MAP()
|
|
// CDlgCoordinateConvert 消息处理程序
|
|
BOOL CDlgCoordinateConvert::OnInitDialog()
|
{
|
CDialogEx::OnInitDialog();
|
|
// TODO: 在此添加额外的初始化
|
m_nCameraCount = g_pBase->m_nCameraCount;
|
m_nScanCount = g_pBase->m_nScanCount;
|
|
InitCameraGrid();
|
FillCameraGrid();
|
|
UpdateData(FALSE);
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
// 异常: OCX 属性页应返回 FALSE
|
}
|
|
void CDlgCoordinateConvert::OnClickBtnConvertApply()
|
{
|
if (m_pDlgRecipe != nullptr) {
|
for (int i = 0; i < MAX_DIMENSION_COUNT; ++i) {
|
int iRow = i + 1;
|
|
CString strVal;
|
strVal = m_gridCameraList.GetItemText(iRow, 1);
|
m_pDlgRecipe->m_ProfilePrm.m_dConvResolution[i][0] = _tstof(strVal);
|
|
strVal = m_gridCameraList.GetItemText(iRow, 2);
|
m_pDlgRecipe->m_ProfilePrm.m_dScanResolution[i][0] = _tstof(strVal);
|
|
strVal = m_gridCameraList.GetItemText(iRow, 3);
|
m_pDlgRecipe->m_ProfilePrm.m_dConvResolution[i][1] = _tstof(strVal);
|
|
strVal = m_gridCameraList.GetItemText(iRow, 4);
|
m_pDlgRecipe->m_ProfilePrm.m_dScanResolution[i][1] = _tstof(strVal);
|
}
|
}
|
|
this->EndDialog(IDOK);
|
}
|
|
void CDlgCoordinateConvert::OnClickBtnConvertClose()
|
{
|
this->EndDialog(IDCANCEL);
|
}
|