// ViewScanImage.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù.
|
//
|
|
#include "stdafx.h"
|
#include "ENRIT.h"
|
#include "ViewScanImage.h"
|
#include "afxdialogex.h"
|
#include "Global_Define.h"
|
#include "Glass_Data.h"
|
|
enum TYPE_MANUAL_CMD
|
{
|
M_CMD_PROC_SHORT_START,
|
M_CMD_PROC_LONG_START,
|
M_CMD_PROC_ALL_START,
|
M_CMD_IMG_LOAD_ALL,
|
M_CMD_IMG_SAVE_ALL,
|
M_CMD_IMG_LOAD_SIDE,
|
M_CMD_IMG_SAVE_SIDE,
|
|
};
|
|
// CViewScanImage ´ëÈ »óÀÚÀÔ´Ï´Ù.
|
|
IMPLEMENT_DYNAMIC(CViewScanImage, CDialogEx)
|
|
CViewScanImage::CViewScanImage(CWnd* pParent /*=NULL*/)
|
: CDialogEx(CViewScanImage::IDD, pParent)
|
{
|
m_nShowSelect =0;
|
m_dZoom = 1;
|
m_pManualProcess = NULL;
|
m_nIndex = 0;
|
m_nThreadCmd = 0;
|
m_IV2M = NULL;
|
m_pHardware = NULL;
|
m_pGlassData = NULL;
|
|
m_nCurrentFolderIndex = 0;
|
m_bIsBatchProcessing = FALSE;
|
}
|
|
CViewScanImage::~CViewScanImage()
|
{
|
}
|
|
void CViewScanImage::DoDataExchange(CDataExchange* pDX)
|
{
|
DDX_Control(pDX, IDC_SCROLLBAR_V_1 , m_ctrlScrollV[0]);
|
DDX_Control(pDX, IDC_SCROLLBAR_V_2 , m_ctrlScrollV[1]);
|
DDX_Control(pDX, IDC_SCROLLBAR_V_3 , m_ctrlScrollV[2]);
|
DDX_Control(pDX, IDC_SCROLLBAR_V_4 , m_ctrlScrollV[3]);
|
DDX_Control(pDX, IDC_SCROLLBAR_V_5 , m_ctrlScrollV[4]);
|
DDX_Control(pDX, IDC_SCROLLBAR_V_6 , m_ctrlScrollV[5]);
|
DDX_Control(pDX, IDC_SCROLLBAR_V_7 , m_ctrlScrollV[6]);
|
DDX_Control(pDX, IDC_SCROLLBAR_V_8 , m_ctrlScrollV[7]);
|
|
DDX_Control(pDX, IDC_SCROLLBAR_H_1 , m_ctrlScrollH[0]);
|
DDX_Control(pDX, IDC_SCROLLBAR_H_2 , m_ctrlScrollH[1]);
|
DDX_Control(pDX, IDC_SCROLLBAR_H_3 , m_ctrlScrollH[2]);
|
DDX_Control(pDX, IDC_SCROLLBAR_H_4 , m_ctrlScrollH[3]);
|
DDX_Control(pDX, IDC_SCROLLBAR_H_5 , m_ctrlScrollH[4]);
|
DDX_Control(pDX, IDC_SCROLLBAR_H_6 , m_ctrlScrollH[5]);
|
DDX_Control(pDX, IDC_SCROLLBAR_H_7 , m_ctrlScrollH[6]);
|
DDX_Control(pDX, IDC_SCROLLBAR_H_8 , m_ctrlScrollH[7]);
|
|
|
DDX_Control(pDX, IDC_BTN_LOAD1 , m_btnLoad[0]);
|
DDX_Control(pDX, IDC_BTN_LOAD2 , m_btnLoad[1]);
|
DDX_Control(pDX, IDC_BTN_LOAD3 , m_btnLoad[2]);
|
DDX_Control(pDX, IDC_BTN_LOAD4 , m_btnLoad[3]);
|
|
DDX_Control(pDX, IDC_BTN_LOAD5 , m_btnLoad[4]);
|
DDX_Control(pDX, IDC_BTN_LOAD6 , m_btnLoad[5]);
|
DDX_Control(pDX, IDC_BTN_LOAD7 , m_btnLoad[6]);
|
DDX_Control(pDX, IDC_BTN_LOAD8 , m_btnLoad[7]);
|
|
|
|
DDX_Control(pDX, IDC_BTN_SAVE1 , m_btnSave[0]);
|
DDX_Control(pDX, IDC_BTN_SAVE2 , m_btnSave[1]);
|
DDX_Control(pDX, IDC_BTN_SAVE3 , m_btnSave[2]);
|
DDX_Control(pDX, IDC_BTN_SAVE4 , m_btnSave[3]);
|
|
DDX_Control(pDX, IDC_BTN_SAVE5 , m_btnSave[4]);
|
DDX_Control(pDX, IDC_BTN_SAVE6 , m_btnSave[5]);
|
DDX_Control(pDX, IDC_BTN_SAVE7 , m_btnSave[6]);
|
DDX_Control(pDX, IDC_BTN_SAVE8 , m_btnSave[7]);
|
|
|
|
DDX_Control(pDX, IDC_UPDN_WIDTH1 , m_chkWithScorll[0]);
|
DDX_Control(pDX, IDC_UPDN_WIDTH2 , m_chkWithScorll[1]);
|
DDX_Control(pDX, IDC_UPDN_WIDTH3 , m_chkWithScorll[2]);
|
DDX_Control(pDX, IDC_UPDN_WIDTH4 , m_chkWithScorll[3]);
|
|
DDX_Control(pDX, IDC_UPDN_WIDTH5 , m_chkWithScorll[4]);
|
DDX_Control(pDX, IDC_UPDN_WIDTH6 , m_chkWithScorll[5]);
|
DDX_Control(pDX, IDC_UPDN_WIDTH7 , m_chkWithScorll[6]);
|
DDX_Control(pDX, IDC_UPDN_WIDTH8 , m_chkWithScorll[7]);
|
|
|
DDX_Control(pDX, IDC_STATIC_CAM_INFO1 , m_staticCamInfo[0]);
|
DDX_Control(pDX, IDC_STATIC_CAM_INFO2 , m_staticCamInfo[1]);
|
DDX_Control(pDX, IDC_STATIC_CAM_INFO3 , m_staticCamInfo[2]);
|
DDX_Control(pDX, IDC_STATIC_CAM_INFO4 , m_staticCamInfo[3]);
|
|
DDX_Control(pDX, IDC_STATIC_CAM_INFO5 , m_staticCamInfo[4]);
|
DDX_Control(pDX, IDC_STATIC_CAM_INFO6 , m_staticCamInfo[5]);
|
DDX_Control(pDX, IDC_STATIC_CAM_INFO7 , m_staticCamInfo[6]);
|
DDX_Control(pDX, IDC_STATIC_CAM_INFO8 , m_staticCamInfo[7]);
|
|
DDX_Control(pDX, IDC_SLIDER_ZOOM, m_sliderZoom);
|
|
CDialogEx::DoDataExchange(pDX);
|
}
|
|
|
BEGIN_MESSAGE_MAP(CViewScanImage, CDialogEx)
|
ON_WM_VSCROLL()
|
ON_WM_HSCROLL()
|
ON_WM_SHOWWINDOW()
|
ON_WM_TIMER()
|
ON_WM_PAINT()
|
ON_WM_MOUSEWHEEL()
|
ON_BN_CLICKED(IDC_BTN_LOAD1, &CViewScanImage::OnBnClickedBtnLoad1)
|
ON_BN_CLICKED(IDC_BTN_SAVE1, &CViewScanImage::OnBnClickedBtnSave1)
|
ON_BN_CLICKED(IDC_BTN_LOAD2, &CViewScanImage::OnBnClickedBtnLoad2)
|
ON_BN_CLICKED(IDC_BTN_SAVE2, &CViewScanImage::OnBnClickedBtnSave2)
|
ON_BN_CLICKED(IDC_BTN_LOAD3, &CViewScanImage::OnBnClickedBtnLoad3)
|
ON_BN_CLICKED(IDC_BTN_SAVE3, &CViewScanImage::OnBnClickedBtnSave3)
|
ON_BN_CLICKED(IDC_BTN_LOAD4, &CViewScanImage::OnBnClickedBtnLoad4)
|
ON_BN_CLICKED(IDC_BTN_SAVE4, &CViewScanImage::OnBnClickedBtnSave4)
|
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_ZOOM, &CViewScanImage::OnNMCustomdrawSliderZoom)
|
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_ZOOM, &CViewScanImage::OnNMReleasedcaptureSliderZoom)
|
ON_BN_CLICKED(IDC_UPDN_WIDTH1, &CViewScanImage::OnBnClickedUpdnWidth1)
|
ON_BN_CLICKED(IDC_UPDN_WIDTH2, &CViewScanImage::OnBnClickedUpdnWidth2)
|
ON_BN_CLICKED(IDC_UPDN_WIDTH3, &CViewScanImage::OnBnClickedUpdnWidth3)
|
ON_BN_CLICKED(IDC_UPDN_WIDTH4, &CViewScanImage::OnBnClickedUpdnWidth4)
|
ON_BN_CLICKED(IDC_UPDN_WIDTH6, &CViewScanImage::OnBnClickedUpdnWidth6)
|
ON_BN_CLICKED(IDC_UPDN_WIDTH5, &CViewScanImage::OnBnClickedUpdnWidth5)
|
ON_BN_CLICKED(IDC_UPDN_WIDTH7, &CViewScanImage::OnBnClickedUpdnWidth7)
|
ON_BN_CLICKED(IDC_UPDN_WIDTH8, &CViewScanImage::OnBnClickedUpdnWidth8)
|
ON_BN_CLICKED(IDC_BTN_LOAD5, &CViewScanImage::OnBnClickedBtnLoad5)
|
ON_BN_CLICKED(IDC_BTN_SAVE5, &CViewScanImage::OnBnClickedBtnSave5)
|
ON_BN_CLICKED(IDC_BTN_LOAD6, &CViewScanImage::OnBnClickedBtnLoad6)
|
ON_BN_CLICKED(IDC_BTN_SAVE6, &CViewScanImage::OnBnClickedBtnSave6)
|
ON_BN_CLICKED(IDC_BTN_LOAD7, &CViewScanImage::OnBnClickedBtnLoad7)
|
ON_BN_CLICKED(IDC_BTN_SAVE7, &CViewScanImage::OnBnClickedBtnSave7)
|
ON_BN_CLICKED(IDC_BTN_LOAD8, &CViewScanImage::OnBnClickedBtnLoad8)
|
ON_BN_CLICKED(IDC_BTN_SAVE8, &CViewScanImage::OnBnClickedBtnSave8)
|
ON_BN_CLICKED(IDC_CHECK_AUTO_SIZE, &CViewScanImage::OnBnClickedCheckAutoSize)
|
ON_MESSAGE(WM_POCESS_STATUS , &CViewScanImage::OnProcessStatus)
|
ON_MESSAGE(WM_BATCH_PROCESS_NEXT, &CViewScanImage::OnBatchProcessNext)
|
END_MESSAGE_MAP()
|
|
BEGIN_EVENTSINK_MAP(CViewScanImage, CDialogEx)
|
ON_EVENT(CViewScanImage, IDC_BTN_IMG_SHORT, DISPID_CLICK, CViewScanImage::OnBnClickedBtnImgShort, VTS_NONE)
|
ON_EVENT(CViewScanImage, IDC_BTN_IMG_LONG, DISPID_CLICK, CViewScanImage::OnBnClickedBtnImgLong, VTS_NONE)
|
ON_EVENT(CViewScanImage, IDC_BTN_IMG_BOTH, DISPID_CLICK, CViewScanImage::OnBnClickedBtnImgBoth, VTS_NONE)
|
ON_EVENT(CViewScanImage, IDC_BTN_INIT_DISPLAY, DISPID_CLICK, CViewScanImage::OnBnClickedBtnInitDisplay, VTS_NONE)
|
ON_EVENT(CViewScanImage, IDC_BTN_PROC, DISPID_CLICK, CViewScanImage::OnBnClickedBtnProc, VTS_NONE)
|
ON_EVENT(CViewScanImage, IDC_BTN_LOAD_ALL, DISPID_CLICK, CViewScanImage::OnBnClickedLoadAll, VTS_NONE)
|
ON_EVENT(CViewScanImage, IDC_SAVE_ALL, DISPID_CLICK, CViewScanImage::OnBnClickedSaveAll, VTS_NONE)
|
ON_EVENT(CViewScanImage, IDC_BTN_START_BATCH, DISPID_CLICK, CViewScanImage::OnBtnStartBatch, VTS_NONE)
|
ON_EVENT(CViewScanImage, IDC_BTN_STOP_BATCH, DISPID_CLICK, CViewScanImage::OnBtnStopBatch, VTS_NONE)
|
ON_EVENT(CViewScanImage, IDC_BTN_NEXT_PROCESS, DISPID_CLICK, CViewScanImage::OnClickBtnNextProcess, VTS_NONE)
|
END_EVENTSINK_MAP()
|
|
|
// CViewScanImage ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù.
|
BOOL CViewScanImage::OnInitDialog()
|
{
|
UpdateData(FALSE);
|
|
m_sliderZoom.SetRange(0,8);
|
m_sliderZoom.SetPos(0);
|
|
int i;
|
for( i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE;i++)
|
{
|
m_btnLoad[i].m_bTransparent = TRUE;
|
m_btnSave[i].m_bTransparent = TRUE;
|
|
|
m_btnLoad[i].SetImage(IDB_BTN_LOAD, IDB_BTN_LOAD_PUSH);
|
m_btnSave[i].SetImage(IDB_BTN_SAVE, IDB_BTN_SAVE_PUSH);
|
m_chkWithScorll[i].SetImage(IDB_LED_OFF);
|
m_chkWithScorll[i].SetCheckedImage(IDB_LED_ON);
|
m_bWithScroll[i] = 1;
|
}
|
|
int nSide;
|
CRect rc2(0,0,10,10);
|
for(i = 0 ; i < MAX_PANEL_SIDE * UPDN_TYPE; i++)
|
{
|
nSide = GetSideIdx(i);
|
//C,CB A, AB, D,DB , B,BB
|
|
m_frameImg[i].SetSide(nSide);
|
m_frameImg[i].InitBitMap();
|
m_frameImg[i].SetGlassData(m_pGlassData);
|
m_frameImg[i].Create(NULL,NULL,WS_VISIBLE | WS_CHILD,rc2,this,0);
|
m_frameImg[i].SetImage(GetBufferPoint(i,0));
|
}
|
|
m_bInitDlg = TRUE;
|
|
ChangeCtrPos(3);
|
|
SetZoom(0.2);
|
|
m_nShowSelect = 0;
|
|
return TRUE;
|
}
|
|
BOOL CViewScanImage::PreTranslateMessage(MSG* pMsg)
|
{
|
if( pMsg->message == WM_KEYDOWN )
|
{
|
if(pMsg->wParam == VK_RETURN
|
|| pMsg->wParam == VK_ESCAPE )
|
{
|
::TranslateMessage(pMsg);
|
::DispatchMessage(pMsg);
|
return TRUE; // DO NOT process further
|
}
|
}
|
|
return CDialog::PreTranslateMessage(pMsg);
|
}
|
|
void CViewScanImage::OnShowWindow(BOOL bShow, UINT nStatus)
|
{
|
if(bShow == TRUE)
|
{
|
int nSide;
|
CString strTitle;
|
for(int i = 0 ; i < MAX_PANEL_SIDE * UPDN_TYPE; i++)
|
{
|
nSide = GetSideIdx(i);
|
m_frameImg[i].SetSide(nSide);
|
m_frameImg[i].SetGlassData(m_pGlassData);
|
m_frameImg[i].SetImage(GetBufferPoint(i,0));
|
m_frameImg[i].ViewUpdate();
|
|
if(m_pHardware != NULL)
|
{
|
CCameraSettings *pCamera = NULL;
|
if(i < MAX_PANEL_SIDE) // Long side
|
{
|
pCamera = m_pHardware->GetCameraSettings(i,0);
|
}
|
else
|
{
|
pCamera = m_pHardware->GetCameraSettings(i%MAX_PANEL_SIDE,1);
|
}
|
|
pCamera->m_iCamera;
|
pCamera->m_iScan;
|
strTitle.Format(_T("BORD[%d] CHANNEL[%d]"),pCamera->m_iCamera,pCamera->m_iScan);
|
m_staticCamInfo[i].SetWindowText(strTitle);
|
}
|
}
|
|
m_bInitDlg = TRUE;
|
|
ChangeCtrPos(m_nShowSelect);
|
|
SetZoom(0.2);
|
}
|
}
|
|
void CViewScanImage::OnPaint()
|
{
|
CPaintDC dc(this); // device context for painting
|
|
|
}
|
|
void CViewScanImage::SetZoom(double dZoom)
|
{
|
m_dZoom = dZoom;
|
UpdateZoom();
|
}
|
|
void CViewScanImage::SetGlassData(CGlass_Data* pGlass)
|
{
|
m_pGlassData = pGlass;
|
}
|
|
BYTE* CViewScanImage::GetBufferPoint(int nViewIndex,int nPos /*= 0*/)
|
{
|
BYTE *add = NULL;
|
int nIdx_Side = GetSideIdx(nViewIndex);
|
|
LPBYTE plpBuf = NULL;
|
if(m_IV2M != NULL)
|
plpBuf = m_IV2M->IV2M_GetGrabBufferByDimension((DimensionDir)nIdx_Side,nPos);
|
|
return plpBuf;
|
}
|
|
LRESULT CViewScanImage::OnProcessStatus(WPARAM wParam, LPARAM lParam)
|
{
|
PROG_MSG MsgJob = *((PROG_MSG*)wParam);
|
|
int nIndex = GetViewIndex(MsgJob.nSide);
|
if(MsgJob.nState == 2)
|
{
|
InitScrollInfo(MsgJob.nSide,1);
|
|
m_ctrlScrollV[nIndex].EnableWindow(TRUE);
|
|
double dZoom = m_frameImg[nIndex].GetZoomData();
|
|
m_frameImg[nIndex].m_ptOrg.y = MsgJob.nDispLine;
|
|
if(m_pGlassData != NULL)
|
{
|
INS_EDGE_RESULT_INFO *pEdgeInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)MsgJob.nSide);
|
if(pEdgeInfo != NULL)
|
m_frameImg[nIndex].m_ptOrg.y = CHKMAX(0,pEdgeInfo->nGlassStartLine - (int)((m_frameImg[nIndex].m_WndRect.Height()/2)/ dZoom));
|
}
|
|
m_frameImg[nIndex].SetImage( GetBufferPoint(nIndex,m_frameImg[nIndex].m_ptOrg.y));
|
m_frameImg[nIndex].SetGlassData(m_pGlassData);
|
m_frameImg[nIndex].ViewUpdate();
|
}
|
else
|
{
|
if(fabs(m_dZoom - 1.) > 0.01)
|
{
|
m_dZoom = 0.2;
|
m_sliderZoom.SetPos(0);
|
|
CString strTmp;
|
strTmp.Format(_T("X %.2f"),m_dZoom);
|
GetDlgItem(IDC_ST_ZOOM)->SetWindowText(strTmp);
|
|
UpdateZoom();
|
}
|
|
//g_pLog->DisplayMessage(_T("Frame Display %d"),nIndex);
|
|
m_frameImg[nIndex].m_ptOrg.y = MsgJob.nDispLine;
|
m_frameImg[nIndex].SetImage(GetBufferPoint(nIndex,m_frameImg[nIndex].m_ptOrg.y));
|
m_frameImg[nIndex].SetGlassData(m_pGlassData);
|
m_frameImg[nIndex].ViewUpdate();
|
}
|
return 1;
|
}
|
|
LRESULT CViewScanImage::OnBatchProcessNext(WPARAM wParam, LPARAM lParam)
|
{
|
if (!m_bIsBatchProcessing) {
|
return 0;
|
}
|
|
m_nCurrentFolderIndex++;
|
ProcessNextFolder();
|
|
return 0;
|
}
|
|
void CViewScanImage::SetRecipe(CHardwareSettings *pHW)
|
{
|
m_pHardware = pHW;
|
}
|
|
void CViewScanImage::ResetView()
|
{
|
for(int i = 0; i <8 ; i++)
|
{
|
m_ctrlScrollV[i].EnableWindow(FALSE);
|
}
|
}
|
|
void CViewScanImage::ViewRefresh(PROG_MSG ProcMsg)
|
{
|
SendMessage(WM_POCESS_STATUS,(WPARAM)&ProcMsg, ProcMsg.nSide);
|
}
|
|
int CViewScanImage::GetSideIdx(int nViewIndex)
|
{
|
int nID = 0;
|
|
switch(nViewIndex)
|
{
|
case 0: nID = DIMENSION_C; break;
|
case 1: nID = DIMENSION_C + MAX_PANEL_SIDE; break;
|
case 2: nID = DIMENSION_A; break;
|
case 3: nID = DIMENSION_A + MAX_PANEL_SIDE; break;
|
case 4: nID = DIMENSION_D; break;
|
case 5: nID = DIMENSION_D + MAX_PANEL_SIDE; break;
|
case 6: nID = DIMENSION_B; break;
|
case 7: nID = DIMENSION_B + MAX_PANEL_SIDE; break;
|
default:
|
AfxMessageBox(_T("CViewImage::GetPanelID(int nViewIndex) call Error"));
|
break;
|
}
|
|
return nID;
|
}
|
|
void CViewScanImage::ChangeCtrPos(int nMode)
|
{
|
m_nShowSelect = nMode;
|
|
int nInfo = 20;
|
int nHScroll = 20;
|
int nImgWidth = 450;
|
int nImgHeight = 400;
|
|
int i = 0;
|
CPoint OrgPt(10,5),pt;
|
pt = OrgPt;
|
|
|
SetRedraw(FALSE);
|
for(i = 0; i < 8 ; i ++)
|
{
|
m_btnLoad[i].SetRedraw(FALSE);
|
m_btnSave[i].SetRedraw(FALSE);
|
m_staticCamInfo[i].SetRedraw(FALSE);
|
m_ctrlScrollV[i].SetRedraw(FALSE);
|
m_ctrlScrollH[i].SetRedraw(FALSE);
|
m_chkWithScorll[i].SetRedraw(FALSE);
|
m_frameImg[i].SetRedraw(FALSE);
|
}
|
|
switch(nMode)
|
{
|
case 0:
|
|
// Long
|
pt.x = OrgPt.x;
|
pt.y = OrgPt.y;
|
|
|
for(i = 0; i < 4; i++)
|
{
|
m_btnLoad[i].MoveWindow(pt.x,pt.y,nInfo,nInfo,FALSE);
|
m_btnSave[i].MoveWindow(pt.x + nImgWidth - nInfo ,pt.y,nInfo,nInfo,FALSE);
|
m_staticCamInfo[i].MoveWindow(pt.x + nInfo ,pt.y,nImgWidth - nInfo *2 ,nInfo,FALSE);
|
m_frameImg[i].MoveWindow(pt.x,pt.y + nInfo,nImgWidth,nImgHeight,FALSE);
|
m_frameImg[i].ChangeRect();
|
|
m_chkWithScorll[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo + nImgHeight,nHScroll,nInfo,FALSE);
|
m_ctrlScrollV[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo,nHScroll,nImgHeight,FALSE);
|
m_ctrlScrollH[i].MoveWindow(pt.x,pt.y + nInfo + nImgHeight,nImgWidth,nInfo,FALSE);
|
pt.x += nImgWidth + nHScroll;
|
}
|
|
// Short
|
pt.x = OrgPt.x;
|
pt.y = OrgPt.y + nImgHeight + nInfo + nHScroll + 10;
|
for(i = 4; i < 8; i++)
|
{
|
m_btnLoad[i].MoveWindow(pt.x,pt.y,nInfo,nInfo,FALSE);
|
m_btnSave[i].MoveWindow(pt.x + nImgWidth - nInfo ,pt.y,nInfo,nInfo,FALSE);
|
m_staticCamInfo[i].MoveWindow(pt.x + nInfo ,pt.y,nImgWidth - nInfo *2 ,nInfo,FALSE);
|
m_frameImg[i].MoveWindow(pt.x,pt.y + nInfo,nImgWidth,nImgHeight,FALSE);
|
m_frameImg[i].ChangeRect();
|
|
m_chkWithScorll[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo + nImgHeight,nHScroll,nInfo,FALSE);
|
m_ctrlScrollV[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo,nHScroll,nImgHeight,FALSE);
|
m_ctrlScrollH[i].MoveWindow(pt.x,pt.y + nInfo + nImgHeight,nImgWidth,nInfo,FALSE);
|
pt.x += nImgWidth + nHScroll;
|
}
|
break;
|
|
case 1: // long
|
pt.x = OrgPt.x;
|
pt.y = OrgPt.y;
|
|
nImgHeight = 850;
|
for(i = 0; i < 4; i++)
|
{
|
m_btnLoad[i].MoveWindow(pt.x,pt.y,nInfo,nInfo,FALSE);
|
m_btnSave[i].MoveWindow(pt.x + nImgWidth - nInfo ,pt.y,nInfo,nInfo,FALSE);
|
m_staticCamInfo[i].MoveWindow(pt.x + nInfo ,pt.y,nImgWidth - nInfo *2 ,nInfo,FALSE);
|
m_frameImg[i].MoveWindow(pt.x,pt.y + nInfo,nImgWidth,nImgHeight);
|
m_frameImg[i].ChangeRect();
|
m_chkWithScorll[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo + nImgHeight,nHScroll,nInfo,FALSE);
|
m_ctrlScrollV[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo,nHScroll,nImgHeight,FALSE);
|
m_ctrlScrollH[i].MoveWindow(pt.x,pt.y + nInfo + nImgHeight,nImgWidth,nInfo,FALSE);
|
pt.x += nImgWidth + nHScroll;
|
}
|
break;
|
|
|
case 2:// Short
|
pt.x = OrgPt.x;
|
pt.y = OrgPt.y;
|
nImgHeight = 850;
|
for(i = 4; i < 8; i++)
|
{
|
m_btnLoad[i].MoveWindow(pt.x,pt.y,nInfo,nInfo,FALSE);
|
m_btnSave[i].MoveWindow(pt.x + nImgWidth - nInfo ,pt.y,nInfo,nInfo,FALSE);
|
m_staticCamInfo[i].MoveWindow(pt.x + nInfo ,pt.y,nImgWidth - nInfo *2 ,nInfo,FALSE);
|
m_frameImg[i].MoveWindow(pt.x,pt.y + nInfo,nImgWidth,nImgHeight,FALSE);
|
m_frameImg[i].ChangeRect();
|
m_chkWithScorll[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo + nImgHeight,nHScroll,nInfo,FALSE);
|
m_ctrlScrollV[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo,nHScroll,nImgHeight,FALSE);
|
m_ctrlScrollH[i].MoveWindow(pt.x,pt.y + nInfo + nImgHeight,nImgWidth,nInfo,FALSE);
|
pt.x += nImgWidth + nHScroll;
|
}
|
break;
|
case 3:
|
|
// Long
|
pt.x = OrgPt.x;
|
pt.y = OrgPt.y;
|
|
|
for(i = 0; i < 4; i++)
|
{
|
m_btnLoad[i].MoveWindow(pt.x,pt.y,nInfo,nInfo,FALSE);
|
m_btnSave[i].MoveWindow(pt.x + nImgWidth - nInfo ,pt.y,nInfo,nInfo,FALSE);
|
m_staticCamInfo[i].MoveWindow(pt.x + nInfo ,pt.y,nImgWidth - nInfo *2 ,nInfo,FALSE);
|
m_frameImg[i].MoveWindow(pt.x,pt.y + nInfo,nImgWidth,nImgHeight,FALSE);
|
m_frameImg[i].ChangeRect();
|
|
m_chkWithScorll[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo + nImgHeight,nHScroll,nInfo,FALSE);
|
m_ctrlScrollV[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo,nHScroll,nImgHeight,FALSE);
|
m_ctrlScrollH[i].MoveWindow(pt.x,pt.y + nInfo + nImgHeight,nImgWidth,nInfo,FALSE);
|
pt.x += nImgWidth + nHScroll;
|
}
|
|
|
// Short
|
pt.x = OrgPt.x;
|
pt.y = OrgPt.y + nImgHeight + nInfo + nHScroll + 10;
|
for(i = 4; i < 8; i++)
|
{
|
m_btnLoad[i].MoveWindow(pt.x,pt.y,nInfo,nInfo,FALSE);
|
m_btnSave[i].MoveWindow(pt.x + nImgWidth - nInfo ,pt.y,nInfo,nInfo,FALSE);
|
m_staticCamInfo[i].MoveWindow(pt.x + nInfo ,pt.y,nImgWidth - nInfo *2 ,nInfo,FALSE);
|
m_frameImg[i].MoveWindow(pt.x,pt.y + nInfo,nImgWidth,nImgHeight,FALSE);
|
m_frameImg[i].ChangeRect();
|
|
m_chkWithScorll[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo + nImgHeight,nHScroll,nInfo,FALSE);
|
m_ctrlScrollV[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo,nHScroll,nImgHeight,FALSE);
|
m_ctrlScrollH[i].MoveWindow(pt.x,pt.y + nInfo + nImgHeight,nImgWidth,nInfo,FALSE);
|
pt.x += nImgWidth + nHScroll;
|
}
|
break;
|
}
|
|
switch(nMode)
|
{
|
case 0:
|
for(i = 0; i < 8; i++)
|
{
|
m_btnLoad[i].ShowWindow(SW_SHOW);
|
m_btnSave[i].ShowWindow(SW_SHOW);
|
m_staticCamInfo[i].ShowWindow(SW_SHOW);
|
m_ctrlScrollV[i].ShowWindow(SW_SHOW);
|
m_ctrlScrollH[i].ShowWindow(SW_SHOW);
|
m_chkWithScorll[i].ShowWindow(SW_SHOW);
|
m_frameImg[i].ShowWindow(SW_SHOW);
|
}
|
break;
|
|
case 1:
|
for(i = 4; i < 8; i++)
|
{
|
m_btnLoad[i].ShowWindow(SW_HIDE);
|
m_btnSave[i].ShowWindow(SW_HIDE);
|
m_staticCamInfo[i].ShowWindow(SW_HIDE);
|
m_ctrlScrollV[i].ShowWindow(SW_HIDE);
|
m_ctrlScrollH[i].ShowWindow(SW_HIDE);
|
m_chkWithScorll[i].ShowWindow(SW_HIDE);
|
m_frameImg[i].ShowWindow(SW_HIDE);
|
}
|
|
for(i = 0; i < 4; i++)
|
{
|
m_btnLoad[i].ShowWindow(SW_SHOW);
|
m_btnSave[i].ShowWindow(SW_SHOW);
|
m_staticCamInfo[i].ShowWindow(SW_SHOW);
|
m_ctrlScrollV[i].ShowWindow(SW_SHOW);
|
m_ctrlScrollH[i].ShowWindow(SW_SHOW);
|
m_chkWithScorll[i].ShowWindow(SW_SHOW);
|
m_frameImg[i].ShowWindow(SW_SHOW);
|
}
|
break;
|
|
case 2:
|
for(i = 0; i < 4; i++)
|
{
|
m_btnLoad[i].ShowWindow(SW_HIDE);
|
m_btnSave[i].ShowWindow(SW_HIDE);
|
m_staticCamInfo[i].ShowWindow(SW_HIDE);
|
m_ctrlScrollV[i].ShowWindow(SW_HIDE);
|
m_ctrlScrollH[i].ShowWindow(SW_HIDE);
|
m_chkWithScorll[i].ShowWindow(SW_HIDE);
|
m_frameImg[i].ShowWindow(SW_HIDE);
|
}
|
|
for(i = 4; i < 8; i++)
|
{
|
m_btnLoad[i].ShowWindow(SW_SHOW);
|
m_btnSave[i].ShowWindow(SW_SHOW);
|
m_staticCamInfo[i].ShowWindow(SW_SHOW);
|
m_ctrlScrollV[i].ShowWindow(SW_SHOW);
|
m_ctrlScrollH[i].ShowWindow(SW_SHOW);
|
m_chkWithScorll[i].ShowWindow(SW_SHOW);
|
m_frameImg[i].ShowWindow(SW_SHOW);
|
}
|
break;
|
case 3:
|
for(i = 0; i < 8; i++)
|
{
|
m_btnLoad[i].ShowWindow(SW_HIDE);
|
m_btnSave[i].ShowWindow(SW_HIDE);
|
m_staticCamInfo[i].ShowWindow(SW_HIDE);
|
m_ctrlScrollV[i].ShowWindow(SW_HIDE);
|
m_ctrlScrollH[i].ShowWindow(SW_HIDE);
|
m_chkWithScorll[i].ShowWindow(SW_HIDE);
|
m_frameImg[i].ShowWindow(SW_HIDE);
|
}
|
break;
|
}
|
//InitScrollInfo(-1,1);
|
SetRedraw(TRUE);
|
Invalidate(TRUE);
|
}
|
|
void CViewScanImage::InitScrollInfo(int nSide /*= -1*/,int nScrollPos /*= 0*/)
|
{
|
int i =0;
|
SCROLLINFO scrollInfoV;
|
SCROLLINFO scrollInfoH;
|
|
int nPos_V;
|
int nPos_H;
|
|
scrollInfoV.cbSize = sizeof(SCROLLINFO);
|
scrollInfoV.fMask = SIF_ALL;
|
scrollInfoV.nMin = 1;
|
scrollInfoV.nPos = 1;
|
scrollInfoV.nTrackPos = 400;
|
scrollInfoV.nMax = INT_MAX;
|
|
|
scrollInfoH.cbSize = sizeof(SCROLLINFO);
|
scrollInfoH.fMask = SIF_ALL;
|
scrollInfoH.nMin = 1;
|
scrollInfoH.nPos = 1;
|
scrollInfoH.nTrackPos = 64;
|
|
double dZoom = m_frameImg[0].GetZoomData();
|
|
scrollInfoV.nPage = m_frameImg[0].m_WndRect.Height();
|
scrollInfoH.nPage = (int)(m_frameImg[0].m_WndRect.Width() / dZoom);
|
scrollInfoH.nMax = IMAGE_WIDTH;
|
|
INS_EDGE_RESULT_INFO *pResInfo = NULL;
|
if(nSide == -1)
|
{
|
for(i = 0 ; i < MAX_PANEL_SIDE * UPDN_TYPE; i++)
|
{
|
nSide = GetSideIdx(i);
|
|
nPos_V = m_ctrlScrollV[i].GetScrollPos();
|
nPos_H = m_ctrlScrollH[i].GetScrollPos();
|
|
if(nScrollPos == 0)
|
{
|
nPos_V = 0;
|
nPos_H = 0;
|
}
|
|
if(m_pGlassData != NULL)
|
{
|
pResInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)nSide);
|
}
|
|
if(pResInfo != NULL)
|
{
|
int nEndLIne = pResInfo->nGlassEndLine;
|
if(nEndLIne <= 0)
|
nEndLIne = pResInfo->nPreGlassEndLine;
|
scrollInfoV.nMax = nEndLIne - pResInfo->nGlassStartLine + (int)(m_frameImg[i].m_WndRect.Height() * dZoom);
|
}
|
else
|
{
|
if(i%2)
|
scrollInfoV.nMax = MAX_IMAGE_LINE_LONG - (int)(m_frameImg[i].m_WndRect.Height() / dZoom);
|
else
|
scrollInfoV.nMax = MAX_IMAGE_LINE_SHORT - (int)(m_frameImg[i].m_WndRect.Height() / dZoom);
|
}
|
|
if(m_pHardware == NULL)
|
{
|
if(i%2)
|
scrollInfoV.nMax = CHKMIN(MAX_IMAGE_LINE_LONG - (int)(m_frameImg[i].m_WndRect.Height() / dZoom),scrollInfoV.nMax);
|
else
|
scrollInfoV.nMax = CHKMIN(MAX_IMAGE_LINE_SHORT - (int)(m_frameImg[i].m_WndRect.Height() / dZoom),scrollInfoV.nMax);
|
}
|
else
|
{
|
int iCam = m_pHardware->GetCameraIndexToDimension((DimensionDir)nSide);
|
int nMaxLine = g_pBase->m_pMemFrameNo[iCam]*g_pBase->m_pFrameHeight[iCam];
|
|
scrollInfoV.nMax = CHKMIN(nMaxLine - int(m_frameImg[i].m_WndRect.Height() / dZoom),scrollInfoV.nMax);
|
}
|
|
m_ctrlScrollV[i].SetScrollInfo(&scrollInfoV);
|
m_ctrlScrollV[i].SetScrollPos(nPos_V);
|
|
m_ctrlScrollH[i].SetScrollInfo(&scrollInfoH);
|
m_ctrlScrollH[i].SetScrollPos(nPos_H);
|
}
|
}
|
else
|
{
|
int iView = GetViewIndex(nSide);
|
|
if(m_pGlassData != NULL)
|
{
|
pResInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)nSide);
|
}
|
|
nPos_V = m_ctrlScrollV[iView].GetScrollPos();
|
nPos_H = m_ctrlScrollH[iView].GetScrollPos();
|
|
if(pResInfo != NULL)
|
{
|
int nEndLIne = pResInfo->nGlassEndLine;
|
if(nEndLIne <= 0)
|
nEndLIne = pResInfo->nPreGlassEndLine;
|
|
scrollInfoV.nMax = nEndLIne - pResInfo->nGlassStartLine + m_frameImg[iView].m_WndRect.Height();
|
}
|
|
if(m_pHardware == NULL)
|
{
|
if(i%2)
|
scrollInfoV.nMax = CHKMIN(MAX_IMAGE_LINE_LONG - (int)(m_frameImg[iView].m_WndRect.Height() / dZoom),scrollInfoV.nMax);
|
else
|
scrollInfoV.nMax = CHKMIN(MAX_IMAGE_LINE_SHORT - (int)(m_frameImg[iView].m_WndRect.Height() / dZoom),scrollInfoV.nMax);
|
|
}
|
else
|
{
|
int iCam = m_pHardware->GetCameraIndexToDimension((DimensionDir)nSide);
|
int nMaxLine = g_pBase->m_pMemFrameNo[iCam]*g_pBase->m_pFrameHeight[iCam];
|
|
scrollInfoV.nMax = CHKMIN(nMaxLine - int(m_frameImg[iView].m_WndRect.Height() / dZoom),scrollInfoV.nMax);
|
}
|
|
|
if(nScrollPos == 0)
|
{
|
nPos_V = 0;
|
nPos_H = 0;
|
}
|
|
scrollInfoV.nPos = nPos_V;
|
m_ctrlScrollV[iView].SetScrollInfo(&scrollInfoV);
|
m_ctrlScrollV[iView].SetScrollPos(nPos_V);
|
|
scrollInfoH.nPos = nPos_H;
|
m_ctrlScrollH[iView].SetScrollInfo(&scrollInfoH);
|
m_ctrlScrollH[iView].SetScrollPos(nPos_H);
|
}
|
|
}
|
|
void CViewScanImage::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
|
{
|
int pos;
|
int nScrolIndex = -1;
|
int i,nSide =-1;
|
|
for(i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE ; i++)
|
{
|
if(pScrollBar->m_hWnd==m_ctrlScrollV[i].m_hWnd)
|
{
|
nScrolIndex = i;
|
break;
|
}
|
}
|
|
if(nScrolIndex != -1)
|
{
|
|
nSide = GetSideIdx(nScrolIndex);
|
|
SCROLLINFO si;
|
|
si.fMask=SIF_ALL;
|
m_ctrlScrollV[nScrolIndex].GetScrollInfo(&si,SIF_ALL);
|
|
switch(nSBCode)
|
{
|
|
case SB_LINEUP:
|
si.nPos = si.nPos -1;
|
break;
|
case SB_LINEDOWN:
|
si.nPos = si.nPos +1;
|
break;
|
case SB_PAGEUP:
|
si.nPos-=si.nPage;
|
break;
|
case SB_PAGEDOWN:
|
si.nPos+=si.nPage;
|
break;
|
case SB_THUMBTRACK:
|
si.nPos = si.nTrackPos;
|
break;
|
|
}
|
|
if(si.nPos>(int)(si.nMax-si.nMin -si.nPage+1))
|
si.nPos=si.nMax-si.nMin-si.nPage+1;
|
|
if(si.nPos<si.nMin)
|
si.nPos=si.nMin;
|
|
si.fMask=SIF_POS;
|
pos = si.nPos - 1;
|
|
|
int nOffset = 0;
|
INS_EDGE_RESULT_INFO *pResInfo = NULL;
|
|
if(m_bWithScroll[nScrolIndex] == TRUE)
|
{
|
if(nScrolIndex%2 == 0)
|
{
|
for(i = nScrolIndex ; i < nScrolIndex +2; i++)
|
{
|
nSide = GetSideIdx(i);
|
m_ctrlScrollV[i].SetScrollInfo(&si);
|
|
if(m_pGlassData != NULL)
|
{
|
pResInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)nSide);
|
}
|
if(pResInfo != NULL)
|
{
|
m_frameImg[i].m_ptOrg.y = max(0,pos + pResInfo->nGlassStartLine - m_frameImg[i].m_WndRect.Height()/2);
|
}
|
else
|
m_frameImg[i].m_ptOrg.y = max(0,pos - m_frameImg[i].m_WndRect.Height()/2);
|
|
m_frameImg[i].SetSide(nSide);
|
m_frameImg[i].SetImage(GetBufferPoint(i,m_frameImg[i].m_ptOrg.y));
|
m_frameImg[i].SetGlassData(m_pGlassData);
|
m_frameImg[i].ViewUpdate();
|
}
|
}
|
else if(nScrolIndex == 1 || nScrolIndex == 5)
|
{
|
for(i = nScrolIndex -1; i < nScrolIndex +3; i++)
|
{
|
nSide = GetSideIdx(i);
|
m_ctrlScrollV[i].SetScrollInfo(&si);
|
if(m_pGlassData != NULL)
|
{
|
pResInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)nSide);
|
}
|
if(pResInfo != NULL)
|
{
|
m_frameImg[i].m_ptOrg.y = max(0,pos + pResInfo->nGlassStartLine - m_frameImg[i].m_WndRect.Height()/2);
|
}
|
else
|
m_frameImg[i].m_ptOrg.y = max(0,pos - m_frameImg[i].m_WndRect.Height()/2);
|
|
m_frameImg[i].SetSide(nSide);
|
m_frameImg[i].SetGlassData(m_pGlassData);
|
m_frameImg[i].SetImage(GetBufferPoint(i,m_frameImg[i].m_ptOrg.y));
|
m_frameImg[i].ViewUpdate();
|
}
|
}
|
else
|
{
|
m_ctrlScrollV[nScrolIndex].SetScrollInfo(&si);
|
if(m_pGlassData != NULL)
|
{
|
pResInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)nSide);
|
}
|
if(pResInfo != NULL)
|
{
|
m_frameImg[nScrolIndex].m_ptOrg.y = max(0,pos + pResInfo->nGlassStartLine - m_frameImg[i].m_WndRect.Height()/2);
|
}
|
else
|
m_frameImg[nScrolIndex].m_ptOrg.y = max(0,pos - m_frameImg[nScrolIndex].m_WndRect.Height()/2);
|
|
m_frameImg[nScrolIndex].SetSide(nSide);
|
m_frameImg[nScrolIndex].SetGlassData(m_pGlassData);
|
m_frameImg[nScrolIndex].SetImage(GetBufferPoint(i,m_frameImg[nScrolIndex].m_ptOrg.y));
|
m_frameImg[nScrolIndex].ViewUpdate();
|
}
|
}
|
else
|
{
|
m_ctrlScrollV[nScrolIndex].SetScrollInfo(&si);
|
if(m_pGlassData != NULL)
|
{
|
pResInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)nSide);
|
}
|
if(pResInfo != NULL)
|
{
|
m_frameImg[nScrolIndex].m_ptOrg.y = max(0,pos + pResInfo->nGlassStartLine - m_frameImg[i].m_WndRect.Height()/2);
|
}
|
else
|
m_frameImg[nScrolIndex].m_ptOrg.y = max(0,pos - m_frameImg[nScrolIndex].m_WndRect.Height()/2);
|
|
m_frameImg[nScrolIndex].SetSide(nSide);
|
m_frameImg[nScrolIndex].SetGlassData(m_pGlassData);
|
m_frameImg[nScrolIndex].SetImage(GetBufferPoint(nScrolIndex,m_frameImg[nScrolIndex].m_ptOrg.y));
|
m_frameImg[nScrolIndex].ViewUpdate();
|
}
|
}
|
CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);
|
}
|
|
void CViewScanImage::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
|
{
|
// TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù.
|
if(!pScrollBar)
|
{
|
return CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
|
}
|
|
|
int nScrolIndex = -1;
|
int nSide = -1;
|
|
//CString strTemp;
|
//strTemp.Format("%d", (int)nPos);
|
//theApp.SetStatusBarText(strTemp);
|
|
|
int i =0;
|
for(i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE ; i++)
|
{
|
if(pScrollBar->m_hWnd==m_ctrlScrollH[i].m_hWnd)
|
{
|
nScrolIndex = i;
|
break;
|
}
|
}
|
|
if(nScrolIndex != -1)
|
{
|
nSide = GetSideIdx(nScrolIndex);
|
|
SCROLLINFO si;
|
si.fMask=SIF_ALL;
|
m_ctrlScrollH[nScrolIndex].GetScrollInfo(&si,SIF_ALL);
|
|
switch(nSBCode)
|
{
|
case SB_LINEUP:
|
si.nPos--;
|
break;
|
case SB_LINEDOWN:
|
si.nPos++;
|
break;
|
case SB_PAGEUP:
|
si.nPos-=si.nPage;
|
break;
|
case SB_PAGEDOWN:
|
si.nPos+=si.nPage;
|
break;
|
case SB_THUMBTRACK:
|
si.nPos=nPos;
|
break;
|
}
|
|
if(si.nPos>(int)(si.nMax-si.nMin-si.nPage+1)) si.nPos=si.nMax-si.nMin-si.nPage+1;
|
if(si.nPos<si.nMin) si.nPos=si.nMin;
|
si.fMask=SIF_POS;
|
m_ctrlScrollH[nScrolIndex].SetScrollInfo(&si);
|
|
|
m_frameImg[nScrolIndex].m_ptOrg.x = si.nPos;
|
m_frameImg[nScrolIndex].ViewUpdate();
|
}
|
|
CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
|
}
|
|
int CViewScanImage::GetViewIndex(int nSide)
|
{
|
int nID = 0;
|
|
switch(nSide)
|
{
|
case 0: nID = DIMENSION_C; break;
|
case 1: nID = DIMENSION_C + MAX_PANEL_SIDE; break;
|
case 2: nID = DIMENSION_A; break;
|
case 3: nID = DIMENSION_A + MAX_PANEL_SIDE; break;
|
case 4: nID = DIMENSION_D; break;
|
case 5: nID = DIMENSION_D + MAX_PANEL_SIDE; break;
|
case 6: nID = DIMENSION_B; break;
|
case 7: nID = DIMENSION_B + MAX_PANEL_SIDE; break;
|
|
default:
|
AfxMessageBox(_T("CViewImage::GetViewIndex(int nSide) call Error"));
|
break;
|
}
|
|
return nID;
|
}
|
|
void CViewScanImage::UpdateZoom()
|
{
|
for(int i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE;i++)
|
{
|
m_frameImg[i].SetZommMode(m_dZoom);
|
InitScrollInfo(-1,1);
|
m_frameImg[i].Invalidate(FALSE);
|
}
|
}
|
|
void CViewScanImage::OnBnClickedBtnImgBoth() {ChangeCtrPos(0);}
|
void CViewScanImage::OnBnClickedBtnImgShort() {ChangeCtrPos(2);}
|
void CViewScanImage::OnBnClickedBtnImgLong() {ChangeCtrPos(1);}
|
|
void CViewScanImage::OnBnClickedUpdnWidth1() {(m_bWithScroll[0] == FALSE) ? m_bWithScroll[0] = TRUE : m_bWithScroll[0] = FALSE;}
|
void CViewScanImage::OnBnClickedUpdnWidth2() {(m_bWithScroll[1] == FALSE) ? m_bWithScroll[1] = TRUE : m_bWithScroll[1] = FALSE;}
|
void CViewScanImage::OnBnClickedUpdnWidth3() {(m_bWithScroll[2] == FALSE) ? m_bWithScroll[2] = TRUE : m_bWithScroll[2] = FALSE;}
|
void CViewScanImage::OnBnClickedUpdnWidth4() {(m_bWithScroll[3] == FALSE) ? m_bWithScroll[3] = TRUE : m_bWithScroll[3] = FALSE;}
|
void CViewScanImage::OnBnClickedUpdnWidth6() {(m_bWithScroll[4] == FALSE) ? m_bWithScroll[4] = TRUE : m_bWithScroll[4] = FALSE;}
|
void CViewScanImage::OnBnClickedUpdnWidth5() {(m_bWithScroll[5] == FALSE) ? m_bWithScroll[5] = TRUE : m_bWithScroll[5] = FALSE;}
|
void CViewScanImage::OnBnClickedUpdnWidth7() {(m_bWithScroll[6] == FALSE) ? m_bWithScroll[6] = TRUE : m_bWithScroll[6] = FALSE;}
|
void CViewScanImage::OnBnClickedUpdnWidth8() {(m_bWithScroll[7] == FALSE) ? m_bWithScroll[7] = TRUE : m_bWithScroll[7] = FALSE;}
|
|
|
|
void CViewScanImage::OnBnClickedBtnLoad1() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,0); }
|
void CViewScanImage::OnBnClickedBtnLoad2() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,1); }
|
void CViewScanImage::OnBnClickedBtnLoad3() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,2); }
|
void CViewScanImage::OnBnClickedBtnLoad4() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,3); }
|
void CViewScanImage::OnBnClickedBtnLoad5() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,4); }
|
void CViewScanImage::OnBnClickedBtnLoad6() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,5); }
|
void CViewScanImage::OnBnClickedBtnLoad7() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,6); }
|
void CViewScanImage::OnBnClickedBtnLoad8() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,7); }
|
|
|
void CViewScanImage::OnBnClickedBtnSave1() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,0); }
|
void CViewScanImage::OnBnClickedBtnSave2() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,1); }
|
void CViewScanImage::OnBnClickedBtnSave3() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,2); }
|
void CViewScanImage::OnBnClickedBtnSave4() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,3); }
|
void CViewScanImage::OnBnClickedBtnSave5() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,4); }
|
void CViewScanImage::OnBnClickedBtnSave6() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,5); }
|
void CViewScanImage::OnBnClickedBtnSave7() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,6); }
|
void CViewScanImage::OnBnClickedBtnSave8() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,7); }
|
|
void CViewScanImage::OnBnClickedLoadAll() {ManualThreadStart(M_CMD_IMG_LOAD_ALL,-1);}
|
void CViewScanImage::OnBnClickedSaveAll() {ManualThreadStart(M_CMD_IMG_SAVE_ALL,-1);}
|
|
void CViewScanImage::OnBtnStartBatch()
|
{
|
// Æô¶¯Åú´¦Àí
|
CFolderPickerDialog dlg(NULL, OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT, this, 0);
|
if (dlg.DoModal() == IDOK) {
|
CString strFolderPath = dlg.GetPathName();
|
m_bIsBatchProcessing = TRUE;
|
StartBatchProcess(strFolderPath);
|
}
|
}
|
|
void CViewScanImage::OnBtnStopBatch()
|
{
|
// Í£Ö¹Åú´¦Àí
|
m_bIsBatchProcessing = FALSE;
|
}
|
|
BOOL CViewScanImage::ManualThreadStart(int nCmd,int nIndex /*= -1*/)
|
{
|
if (m_pManualProcess) {
|
DWORD dwWait = ::WaitForSingleObject(m_pManualProcess->m_hThread, 10000);
|
if (dwWait == WAIT_TIMEOUT) {
|
DWORD dwExitCode;
|
if ((::GetExitCodeThread(m_pManualProcess->m_hThread, &dwExitCode)) && (dwExitCode == STILL_ACTIVE)) {
|
::TerminateThread(m_pManualProcess->m_hThread, dwExitCode);
|
m_pManualProcess = NULL;
|
g_pLog->DisplayMessage(_T("Previous manual process was terminated due to timeout."));
|
}
|
}
|
else {
|
m_pManualProcess = NULL;
|
if (dwWait == WAIT_OBJECT_0) {
|
g_pLog->DisplayMessage(_T("Previous manual process completed successfully."));
|
}
|
else {
|
g_pLog->DisplayMessage(_T("Previous manual process was terminated or failed."));
|
}
|
}
|
}
|
|
if (m_pManualProcess != NULL) {
|
g_pLog->DisplayMessage(_T("Manual Process is already running. Please wait until it finishes."));
|
return FALSE;
|
}
|
|
m_nIndex = nIndex;
|
m_nThreadCmd = nCmd;
|
m_pManualProcess = AfxBeginThread(ManualProcessAll, this);
|
if (!m_pManualProcess) {
|
g_pLog->DisplayMessage(_T("Failed to start manual process thread."));
|
return FALSE;
|
}
|
|
return TRUE;
|
}
|
|
BOOL CViewScanImage::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
|
{
|
int nPos = m_sliderZoom.GetPos();
|
if(zDelta > 0)
|
m_sliderZoom.SetPos(nPos+1);
|
else
|
m_sliderZoom.SetPos(nPos-1);
|
|
UpdateZoom();
|
return CDialogEx::OnMouseWheel(nFlags, zDelta, pt);
|
}
|
|
void CViewScanImage::SaveFullImageAll()
|
{
|
if(m_pGlassData == NULL || m_IV2M == NULL)
|
return;
|
|
int iView;
|
CPoint ptStart;
|
int nLength;
|
const int nOneFrameSize = 50000;
|
CString strPath,strLog;
|
int iSide;
|
int nTotalLength = 0;
|
int nFrame = 0;
|
INS_EDGE_RESULT_INFO *pResInfo=NULL;
|
CGlassRecipe *pGlassRcp = m_pGlassData->GetGlassRecipe();
|
|
#if OFFLINE_KEY
|
if (nullptr == pGlassRcp) return;
|
#endif
|
|
CString strRcpName = pGlassRcp->GetRecipeName();
|
CString strGlassID = g_pBase->m_strHPanelID;
|
|
if(strGlassID.IsEmpty() == TRUE)
|
{
|
strGlassID = _T("Manual_ID");
|
}
|
if(strRcpName.IsEmpty() == TRUE)
|
{
|
strRcpName = _T("TestRcp");
|
}
|
|
strGlassID.Trim(_T(' '));
|
|
CTime time = CTime::GetCurrentTime();
|
|
CString strDate,strTime;
|
|
strDate.Format(_T("%04d%02d%02d"),time.GetYear(),time.GetMonth(),time.GetDay());
|
strTime.Format(_T("%02d%02d%02d"),time.GetHour(),time.GetMinute(),time.GetSecond());
|
|
for(iView=0;iView<MAX_DIMENSION_COUNT;iView++)
|
{
|
iSide = GetSideIdx(iView);
|
|
int iCam = m_pHardware->GetCameraIndexToDimension((DimensionDir)iSide);
|
int iScan = m_pHardware->GetScanToDimension((DimensionDir)iSide);
|
|
CCameraSettings *pCamera = m_pHardware->GetCameraSettings(iCam,iScan);
|
if(pCamera == NULL)
|
return;
|
|
nTotalLength = (pCamera->m_nGrabFrameCount-1)*pCamera->m_FrameSize.cy;
|
//nFrame = nTotalLength/nOneFrameSize;
|
|
ptStart.x = 0;
|
ptStart.y = max(0,0);
|
|
int nMaxSize = (pCamera->m_nGrabFrameCount-1)*pCamera->m_FrameSize.cy;
|
|
INS_EDGE_RESULT_INFO *pEdgeInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)iSide);
|
if(pEdgeInfo != NULL)
|
{
|
ptStart.y = max(0,pEdgeInfo->nGlassStartLine-1000);
|
|
nTotalLength = min((int)((pEdgeInfo->nPreGlassEndLine + 1000) - ptStart.y),nMaxSize);
|
}
|
|
if(nTotalLength < 10000)
|
nTotalLength = nMaxSize;
|
|
nFrame = nTotalLength/nOneFrameSize;
|
if(ptStart.y < 0)
|
ptStart.y = 0;
|
|
for(int i = 0; i < nFrame ; i++)
|
{
|
nLength = nOneFrameSize;
|
|
if(ptStart.y+nLength >= nMaxSize)
|
continue;
|
|
strPath.Format(_T("%sDebugFullImage\\%s\\%s\\%s\\%s\\%s__%s_%d"),PATH_INSPECTION_DATA,strDate,strRcpName,strGlassID,strTime,strGlassID,PANEL_SIDE[iSide],i);
|
|
m_IV2M->IV2M_SaveFullImage(strPath,iSide,ptStart,nLength);
|
|
g_pLog->DisplayMessage(_T("%s %d Save Completed : %s"),PANEL_SIDE[iSide],i,strPath);
|
|
ptStart.y += nLength;
|
}
|
|
nLength = nTotalLength%nOneFrameSize;
|
if(nLength > 10)
|
{
|
if(ptStart.y+nLength < nMaxSize)
|
{
|
strPath.Format(_T("%sDebugFullImage\\%s\\%s\\%s\\%s\\%s__%s_%d"),PATH_INSPECTION_DATA,strDate,strRcpName,strGlassID,strTime,strGlassID,PANEL_SIDE[iSide],nFrame);
|
|
m_IV2M->IV2M_SaveFullImage(strPath,iSide,ptStart,nLength);
|
}
|
}
|
|
g_pLog->DisplayMessage(_T("%s %d Save Completed : %s"),PANEL_SIDE[iSide],nFrame,strPath);
|
}
|
}
|
|
void CViewScanImage::SaveFullImage(int nViewIndex)
|
{
|
CPoint ptStart;
|
int nLength;
|
const int nOneFrameSize = 50000;
|
CString strPath,strLog;
|
int iSide = GetSideIdx(nViewIndex);
|
int nTotalLength = 0;
|
int nFrame = 0;
|
|
if(m_pGlassData == NULL || m_IV2M == NULL)
|
return;
|
|
CGlassRecipe *pGlassRcp = m_pGlassData->GetGlassRecipe();
|
CString strRcpName = pGlassRcp->GetRecipeName();
|
|
int iCam = m_pHardware->GetCameraIndexToDimension((DimensionDir)iSide);
|
int iScan = m_pHardware->GetScanToDimension((DimensionDir)iSide);
|
|
CCameraSettings *pCamera = m_pHardware->GetCameraSettings(iCam,iScan);
|
if(pCamera == NULL)
|
return;
|
|
nTotalLength = pCamera->m_nGrabFrameCount*pCamera->m_FrameSize.cy;
|
nFrame = nTotalLength/nOneFrameSize;
|
|
ptStart.x = 0;
|
ptStart.y = max(0,0);
|
|
INS_EDGE_RESULT_INFO *pEdgeInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)iSide);
|
if(pEdgeInfo != NULL)
|
{
|
ptStart.y = max(0,pEdgeInfo->nGlassStartLine-1000);
|
|
nTotalLength = min((pEdgeInfo->nGlassEndLine + 1000) - ptStart.y,pCamera->m_nGrabFrameCount*pCamera->m_FrameSize.cy);
|
}
|
|
CString strGlassID = g_pBase->m_strHPanelID;
|
if(strGlassID.IsEmpty() == TRUE)
|
{
|
strGlassID = _T("Manual_ID");
|
}
|
|
if(strRcpName.IsEmpty() == TRUE)
|
{
|
strRcpName = _T("TestRcp");
|
}
|
|
strGlassID.Trim(_T(' '));
|
|
CTime time = CTime::GetCurrentTime();
|
|
CString strDate,strTime;
|
|
strDate.Format(_T("%04d%02d%02d"),time.GetYear(),time.GetMonth(),time.GetDay());
|
strTime.Format(_T("%02d%02d%02d"),time.GetHour(),time.GetMinute(),time.GetSecond());
|
|
for(int i = 0; i < nFrame ; i++)
|
{
|
nLength = nOneFrameSize;
|
|
strPath.Format(_T("%sDebugFullImage\\%s\\%s\\%s\\%s\\%s__%s_%d"),PATH_INSPECTION_DATA,strDate,strRcpName,strGlassID,strTime,strGlassID,PANEL_SIDE[iSide],i);
|
|
m_IV2M->IV2M_SaveFullImage(strPath,iSide,ptStart,nLength);
|
ptStart.y += nLength;
|
|
g_pLog->DisplayMessage(_T("%s %d Save Completed : %s"),PANEL_SIDE[iSide],i,strPath);
|
}
|
|
|
nLength = nTotalLength%nOneFrameSize;
|
if(nLength)
|
{
|
strPath.Format(_T("%sDebugFullImage\\%s\\%s\\%s\\%s\\%s__%s_%d"),PATH_INSPECTION_DATA,strDate,strRcpName,strGlassID,strTime,strGlassID,PANEL_SIDE[iSide],nFrame);
|
|
m_IV2M->IV2M_SaveFullImage(strPath,iSide,ptStart,nLength);
|
|
g_pLog->DisplayMessage(_T("%s %d Save Completed : %s"),PANEL_SIDE[iSide],nFrame,strPath);
|
}
|
}
|
|
void CViewScanImage::LoadAndProcessImages(const CString& strFolderPath)
|
{
|
if (m_IV2M != NULL) {
|
// ¼ÓÔØÍ¼Ïñ
|
m_IV2M->IV2M_LoadImageFromFolder(-1, strFolderPath, m_pGlassData, [&](BYTE iSide) {
|
int iView = GetViewIndex(iSide);
|
InitScrollInfo(iSide, 0);
|
m_frameImg[iView].Invalidate(FALSE);
|
m_frameImg[iView].Invalidate();
|
});
|
|
for (int i = 0; i < 8; i++) {
|
InitScrollInfo(i, 0);
|
|
int nSide = GetSideIdx(i);
|
m_frameImg[i].SetSide(nSide);
|
m_frameImg[i].SetImage(GetBufferPoint(i, 0));
|
m_frameImg[i].ViewUpdate();
|
}
|
|
if (m_IV2M != NULL) {
|
m_IV2M->IV2M_InitView(VIEW_SCANIMAGE);
|
}
|
|
// Ö´Ðд¦ÀíÏß³Ì
|
m_nIndex = -1;
|
switch (m_nShowSelect)
|
{
|
case 0:
|
m_IV2M->IV2M_InspectionProcessAll(M_CMD_PROC_ALL_START);
|
break;
|
case 1:
|
m_IV2M->IV2M_InspectionProcessAll(M_CMD_PROC_LONG_START);
|
break;
|
case 2:
|
m_IV2M->IV2M_InspectionProcessAll(M_CMD_PROC_SHORT_START);
|
break;
|
}
|
}
|
}
|
|
void CViewScanImage::StartBatchProcess(const CString& strRootFolder)
|
{
|
m_arrFolderList.RemoveAll();
|
|
// ËÑË÷ËùÓÐ×ÓÎļþ¼Ð
|
CFileFind finder;
|
CString strSearchPath = strRootFolder + _T("\\*.*");
|
BOOL bWorking = finder.FindFile(strSearchPath);
|
while (bWorking) {
|
bWorking = finder.FindNextFile();
|
|
// Åųý . ºÍ .. ÒÔ¼°·ÇÎļþ¼Ð
|
if (finder.IsDots() || !finder.IsDirectory()) {
|
continue;
|
}
|
|
m_arrFolderList.Add(finder.GetFilePath());
|
}
|
finder.Close();
|
|
// ´ÓµÚÒ»¸ö¿ªÊ¼´¦Àí
|
m_nCurrentFolderIndex = 0;
|
ProcessNextFolder();
|
}
|
|
void CViewScanImage::ProcessNextFolder()
|
{
|
if (!m_bIsBatchProcessing) {
|
return;
|
}
|
|
if (m_nCurrentFolderIndex < m_arrFolderList.GetSize()) {
|
CString strFolder = m_arrFolderList[m_nCurrentFolderIndex];
|
LoadAndProcessImages(strFolder);
|
}
|
else {
|
m_arrFolderList.RemoveAll();
|
m_bIsBatchProcessing = FALSE;
|
}
|
}
|
|
UINT CViewScanImage::ManualProcessAll(LPVOID pParam)
|
{
|
CViewScanImage *pDlg = (CViewScanImage*)pParam;
|
int i =0;
|
if(pDlg->m_nThreadCmd == M_CMD_PROC_ALL_START
|
|| pDlg->m_nThreadCmd == M_CMD_PROC_SHORT_START
|
|| pDlg->m_nThreadCmd == M_CMD_PROC_LONG_START)
|
{
|
pDlg->m_IV2M->IV2M_InspectionProcessAll(pDlg->m_nThreadCmd);
|
}
|
else if(pDlg->m_nThreadCmd == M_CMD_IMG_LOAD_ALL)
|
{
|
if (pDlg->m_IV2M == NULL) {
|
return 0;
|
}
|
|
pDlg->m_IV2M->IV2M_LoadImageFullFile(-1,pDlg->m_pGlassData, [&] (BYTE iSide) {
|
int iView = pDlg->GetViewIndex(iSide);
|
pDlg->InitScrollInfo(iSide,0);
|
pDlg->m_frameImg[iView].Invalidate(FALSE);
|
pDlg->m_frameImg[iView].Invalidate();
|
});
|
}
|
else if(pDlg->m_nThreadCmd == M_CMD_IMG_SAVE_ALL)
|
{
|
pDlg->SaveFullImageAll();
|
}
|
else if(pDlg->m_nThreadCmd == M_CMD_IMG_LOAD_SIDE)
|
{
|
pDlg->m_IV2M->IV2M_LoadImageFullFile(pDlg->GetSideIdx(pDlg->m_nIndex),pDlg->m_pGlassData, [&] (BYTE iSide)
|
{
|
int iView = pDlg->GetViewIndex(iSide);
|
|
pDlg->InitScrollInfo(iSide,0);
|
pDlg->m_frameImg[iView].Invalidate(FALSE);
|
pDlg->m_frameImg[iView].Invalidate();
|
});
|
}
|
else if(pDlg->m_nThreadCmd == M_CMD_IMG_SAVE_SIDE)
|
{
|
pDlg->SaveFullImage(pDlg->m_nIndex);
|
}
|
else;
|
|
return 0;
|
}
|
|
void CViewScanImage::OnTimer(UINT_PTR nIDEvent)
|
{
|
#if FALSE
|
if(nIDEvent == 1)
|
{
|
|
}
|
#endif
|
CDialogEx::OnTimer(nIDEvent);
|
}
|
|
void CViewScanImage::OnNMCustomdrawSliderZoom(NMHDR *pNMHDR, LRESULT *pResult)
|
{
|
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
|
// TODO: Add your control notification handler code here
|
|
CString strTmp;
|
int nPos = m_sliderZoom.GetPos();
|
|
|
if(nPos > 4)
|
m_dZoom = 1 + (nPos - 4) * 0.25;
|
// m_dZoom = 1 + (nPos - 4) * 0.2;
|
else if(nPos < 4)
|
m_dZoom = 1 /double(5-nPos);
|
else
|
m_dZoom = 1;
|
|
|
strTmp.Format(_T("X %.2f"),m_dZoom);
|
GetDlgItem(IDC_ST_ZOOM)->SetWindowText(strTmp);
|
*pResult = 0;
|
}
|
|
void CViewScanImage::OnNMReleasedcaptureSliderZoom(NMHDR *pNMHDR, LRESULT *pResult)
|
{
|
UpdateZoom();
|
*pResult = 0;
|
}
|
|
void CViewScanImage::OnBnClickedBtnInitDisplay()
|
{
|
for(int i = 0; i <8 ; i++)
|
{
|
InitScrollInfo(i,0);
|
|
int nSide = GetSideIdx(i);
|
|
m_frameImg[i].SetSide(nSide);
|
m_frameImg[i].SetImage(GetBufferPoint(i,0));
|
m_frameImg[i].ViewUpdate();
|
}
|
|
if(m_IV2M != NULL)
|
{
|
m_IV2M->IV2M_InitView(VIEW_SCANIMAGE);
|
}
|
}
|
|
void CViewScanImage::OnBnClickedBtnProc()
|
{
|
switch(m_nShowSelect)
|
{
|
case 0:
|
ManualThreadStart(M_CMD_PROC_ALL_START );
|
break;
|
case 1:
|
ManualThreadStart(M_CMD_PROC_LONG_START );
|
break;
|
case 2:
|
ManualThreadStart(M_CMD_PROC_SHORT_START);
|
break;
|
}
|
|
//CString strFolderPath = _T("D:\\±¸·Ý\\¹â¼ì»ú\\EI¡¢Rcut\\RCUT\\ͼƬ\\n8_NG");
|
//LoadAndProcessImages(strFolderPath);
|
}
|
|
void CViewScanImage::OnBnClickedCheckAutoSize()
|
{
|
|
BOOL bCheck = ((CButton*)GetDlgItem(IDC_CHECK_AUTO_SIZE))->GetCheck();
|
|
for(int i = 0 ; i < 8 ; i++)
|
{
|
if(bCheck)
|
m_frameImg[i].SetMode(MODE_AUTO_MEASURE);
|
else
|
m_frameImg[i].ResetMode(MODE_AUTO_MEASURE);
|
}
|
}
|
|
void CViewScanImage::OnClickBtnNextProcess()
|
{
|
SendMessage(WM_BATCH_PROCESS_NEXT, NULL, NULL);
|
}
|