From 5cc675212e96d87ebbf00f4fd7a8106b06a490ff Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期三, 13 八月 2025 14:00:50 +0800
Subject: [PATCH] 1. 侧面检功能添加优化(主要是现场获取图像问题)

---
 EdgeInspector_App/View/ViewMain_ScanImage.cpp |  708 +++++++++++++++++++++++++---------------------------------
 1 files changed, 304 insertions(+), 404 deletions(-)

diff --git a/EdgeInspector_App/View/ViewMain_ScanImage.cpp b/EdgeInspector_App/View/ViewMain_ScanImage.cpp
index f597c00..cebf8b4 100644
--- a/EdgeInspector_App/View/ViewMain_ScanImage.cpp
+++ b/EdgeInspector_App/View/ViewMain_ScanImage.cpp
@@ -10,6 +10,7 @@
 
 enum TYPE_MANUAL_CMD
 {
+	M_CMD_PROC_RIP_START = 0,
 	M_CMD_PROC_SHORT_START,
 	M_CMD_PROC_LONG_START,
 	M_CMD_PROC_ALL_START,
@@ -17,7 +18,6 @@
 	M_CMD_IMG_SAVE_ALL,
 	M_CMD_IMG_LOAD_SIDE,
 	M_CMD_IMG_SAVE_SIDE,
-
 };
 
 // CViewScanImage 鎺嫵 鎯戠娑濊仾淇�.
@@ -43,69 +43,97 @@
 
 void CViewMain_ScanImage::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_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_V_9, m_ctrlScrollV[8]);
+	DDX_Control(pDX, IDC_SCROLLBAR_V_10, m_ctrlScrollV[9]);
+	DDX_Control(pDX, IDC_SCROLLBAR_V_11, m_ctrlScrollV[10]);
+	DDX_Control(pDX, IDC_SCROLLBAR_V_12, m_ctrlScrollV[11]);
 
 
-	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_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_SCROLLBAR_H_9, m_ctrlScrollH[8]);
+	DDX_Control(pDX, IDC_SCROLLBAR_H_10, m_ctrlScrollH[9]);
+	DDX_Control(pDX, IDC_SCROLLBAR_H_11, m_ctrlScrollH[10]);
+	DDX_Control(pDX, IDC_SCROLLBAR_H_12, m_ctrlScrollH[11]);
 
 
+	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_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_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_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_BTN_LOAD9, m_btnLoad[8]);
+	DDX_Control(pDX, IDC_BTN_LOAD10, m_btnLoad[9]);
+	DDX_Control(pDX, IDC_BTN_LOAD11, m_btnLoad[10]);
+	DDX_Control(pDX, IDC_BTN_LOAD12, m_btnLoad[11]);
 
 
+	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_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_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_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_BTN_SAVE9, m_btnSave[8]);
+	DDX_Control(pDX, IDC_BTN_SAVE10, m_btnSave[9]);
+	DDX_Control(pDX, IDC_BTN_SAVE11, m_btnSave[10]);
+	DDX_Control(pDX, IDC_BTN_SAVE12, m_btnSave[11]);
 
 
-	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_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_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_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_UPDN_WIDTH9, m_chkWithScorll[8]);
+	DDX_Control(pDX, IDC_UPDN_WIDTH10, m_chkWithScorll[9]);
+	DDX_Control(pDX, IDC_UPDN_WIDTH11, m_chkWithScorll[10]);
+	DDX_Control(pDX, IDC_UPDN_WIDTH12, m_chkWithScorll[11]);
+
+
+	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_STATIC_CAM_INFO9, m_staticCamInfo[8]);
+	DDX_Control(pDX, IDC_STATIC_CAM_INFO10, m_staticCamInfo[9]);
+	DDX_Control(pDX, IDC_STATIC_CAM_INFO11, m_staticCamInfo[10]);
+	DDX_Control(pDX, IDC_STATIC_CAM_INFO12, m_staticCamInfo[11]);
+
 
 	DDX_Control(pDX, IDC_SLIDER_ZOOM, m_sliderZoom);
 
@@ -116,7 +144,10 @@
 BEGIN_MESSAGE_MAP(CViewMain_ScanImage, CDialogEx)
 	ON_WM_VSCROLL()
 	ON_WM_HSCROLL()
-	
+	ON_WM_MOUSEWHEEL()
+	ON_WM_SHOWWINDOW()
+	ON_WM_TIMER()
+	ON_WM_PAINT()
 	ON_BN_CLICKED(IDC_BTN_LOAD1, &CViewMain_ScanImage::OnBnClickedBtnLoad1)
 	ON_BN_CLICKED(IDC_BTN_SAVE1, &CViewMain_ScanImage::OnBnClickedBtnSave1)
 	ON_BN_CLICKED(IDC_BTN_LOAD2, &CViewMain_ScanImage::OnBnClickedBtnLoad2)
@@ -125,34 +156,38 @@
 	ON_BN_CLICKED(IDC_BTN_SAVE3, &CViewMain_ScanImage::OnBnClickedBtnSave3)
 	ON_BN_CLICKED(IDC_BTN_LOAD4, &CViewMain_ScanImage::OnBnClickedBtnLoad4)
 	ON_BN_CLICKED(IDC_BTN_SAVE4, &CViewMain_ScanImage::OnBnClickedBtnSave4)
+	ON_BN_CLICKED(IDC_BTN_LOAD5, &CViewMain_ScanImage::OnBnClickedBtnLoad5)
+	ON_BN_CLICKED(IDC_BTN_SAVE5, &CViewMain_ScanImage::OnBnClickedBtnSave5)
+	ON_BN_CLICKED(IDC_BTN_LOAD6, &CViewMain_ScanImage::OnBnClickedBtnLoad6)
+	ON_BN_CLICKED(IDC_BTN_SAVE6, &CViewMain_ScanImage::OnBnClickedBtnSave6)
+	ON_BN_CLICKED(IDC_BTN_LOAD7, &CViewMain_ScanImage::OnBnClickedBtnLoad7)
+	ON_BN_CLICKED(IDC_BTN_SAVE7, &CViewMain_ScanImage::OnBnClickedBtnSave7)
+	ON_BN_CLICKED(IDC_BTN_LOAD8, &CViewMain_ScanImage::OnBnClickedBtnLoad8)
+	ON_BN_CLICKED(IDC_BTN_SAVE8, &CViewMain_ScanImage::OnBnClickedBtnSave8)
+	ON_BN_CLICKED(IDC_BTN_LOAD9, &CViewMain_ScanImage::OnBnClickedBtnLoad9)
+	ON_BN_CLICKED(IDC_BTN_SAVE9, &CViewMain_ScanImage::OnBnClickedBtnSave9)
+	ON_BN_CLICKED(IDC_BTN_LOAD10, &CViewMain_ScanImage::OnBnClickedBtnLoad10)
+	ON_BN_CLICKED(IDC_BTN_SAVE10, &CViewMain_ScanImage::OnBnClickedBtnSave10)
+	ON_BN_CLICKED(IDC_BTN_LOAD11, &CViewMain_ScanImage::OnBnClickedBtnLoad11)
+	ON_BN_CLICKED(IDC_BTN_SAVE11, &CViewMain_ScanImage::OnBnClickedBtnSave11)
+	ON_BN_CLICKED(IDC_BTN_LOAD12, &CViewMain_ScanImage::OnBnClickedBtnLoad12)
+	ON_BN_CLICKED(IDC_BTN_SAVE12, &CViewMain_ScanImage::OnBnClickedBtnSave12)
+	ON_BN_CLICKED(IDC_UPDN_WIDTH1, &CViewMain_ScanImage::OnBnClickedUpdnWidth1)
+	ON_BN_CLICKED(IDC_UPDN_WIDTH2, &CViewMain_ScanImage::OnBnClickedUpdnWidth2)
+	ON_BN_CLICKED(IDC_UPDN_WIDTH3, &CViewMain_ScanImage::OnBnClickedUpdnWidth3)
+	ON_BN_CLICKED(IDC_UPDN_WIDTH4, &CViewMain_ScanImage::OnBnClickedUpdnWidth4)
+	ON_BN_CLICKED(IDC_UPDN_WIDTH6, &CViewMain_ScanImage::OnBnClickedUpdnWidth6)
+	ON_BN_CLICKED(IDC_UPDN_WIDTH5, &CViewMain_ScanImage::OnBnClickedUpdnWidth5)
+	ON_BN_CLICKED(IDC_UPDN_WIDTH7, &CViewMain_ScanImage::OnBnClickedUpdnWidth7)
+	ON_BN_CLICKED(IDC_UPDN_WIDTH8, &CViewMain_ScanImage::OnBnClickedUpdnWidth8)
 	ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_ZOOM, &CViewMain_ScanImage::OnNMCustomdrawSliderZoom)
 	ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_ZOOM, &CViewMain_ScanImage::OnNMReleasedcaptureSliderZoom)
-	ON_WM_MOUSEWHEEL()
-	ON_BN_CLICKED(IDC_UPDN_WIDTH1,		&CViewMain_ScanImage::OnBnClickedUpdnWidth1)
- 	
-	ON_BN_CLICKED(IDC_UPDN_WIDTH2,		&CViewMain_ScanImage::OnBnClickedUpdnWidth2)
-	ON_BN_CLICKED(IDC_UPDN_WIDTH3,		&CViewMain_ScanImage::OnBnClickedUpdnWidth3)
-	ON_BN_CLICKED(IDC_UPDN_WIDTH4,		&CViewMain_ScanImage::OnBnClickedUpdnWidth4)
-	ON_BN_CLICKED(IDC_UPDN_WIDTH6,		&CViewMain_ScanImage::OnBnClickedUpdnWidth6)
-	ON_BN_CLICKED(IDC_UPDN_WIDTH5,		&CViewMain_ScanImage::OnBnClickedUpdnWidth5)
-	ON_BN_CLICKED(IDC_UPDN_WIDTH7,		&CViewMain_ScanImage::OnBnClickedUpdnWidth7)
-	ON_BN_CLICKED(IDC_UPDN_WIDTH8,		&CViewMain_ScanImage::OnBnClickedUpdnWidth8)
-	ON_BN_CLICKED(IDC_BTN_LOAD5,		&CViewMain_ScanImage::OnBnClickedBtnLoad5)
-	ON_BN_CLICKED(IDC_BTN_SAVE5,		&CViewMain_ScanImage::OnBnClickedBtnSave5)
-	ON_BN_CLICKED(IDC_BTN_LOAD6,		&CViewMain_ScanImage::OnBnClickedBtnLoad6)
-	ON_BN_CLICKED(IDC_BTN_SAVE6,		&CViewMain_ScanImage::OnBnClickedBtnSave6)
-	ON_BN_CLICKED(IDC_BTN_LOAD7,		&CViewMain_ScanImage::OnBnClickedBtnLoad7)
-	ON_BN_CLICKED(IDC_BTN_SAVE7,		&CViewMain_ScanImage::OnBnClickedBtnSave7)
-	ON_BN_CLICKED(IDC_BTN_LOAD8,		&CViewMain_ScanImage::OnBnClickedBtnLoad8)
-	ON_BN_CLICKED(IDC_BTN_SAVE8,		&CViewMain_ScanImage::OnBnClickedBtnSave8)		
 	ON_BN_CLICKED(IDC_CHECK_AUTO_DEFECT_VIEW, &CViewMain_ScanImage::OnBnClickedCheckAutoDefectView)
-	ON_WM_SHOWWINDOW()
-	ON_WM_TIMER()
-	ON_WM_PAINT()
- 	ON_MESSAGE(WM_POCESS_STATUS, OnProcessStatus) 	
+ 	ON_MESSAGE(WM_POCESS_STATUS, &CViewMain_ScanImage::OnProcessStatus)
 END_MESSAGE_MAP()
 
 BEGIN_EVENTSINK_MAP(CViewMain_ScanImage, CDialogEx)
+	ON_EVENT(CViewMain_ScanImage, IDC_BTN_IMG_RIP, DISPID_CLICK, CViewMain_ScanImage::OnBnClickedBtnImgRip, VTS_NONE)
 	ON_EVENT(CViewMain_ScanImage, IDC_BTN_IMG_SHORT, DISPID_CLICK, CViewMain_ScanImage::OnBnClickedBtnImgShort, VTS_NONE)
 	ON_EVENT(CViewMain_ScanImage, IDC_BTN_IMG_LONG, DISPID_CLICK, CViewMain_ScanImage::OnBnClickedBtnImgLong, VTS_NONE)
 	ON_EVENT(CViewMain_ScanImage, IDC_BTN_IMG_BOTH, DISPID_CLICK, CViewMain_ScanImage::OnBnClickedBtnImgBoth, VTS_NONE)
@@ -172,8 +207,7 @@
 	m_sliderZoom.SetPos(0);
 
 	int i;
-	for( i = 0; i < MAX_PANEL_SIDE  * UPDN_TYPE;i++)
-	{
+	for (i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE; i++) {
 		m_btnLoad[i].m_bTransparent = TRUE;
 		m_btnSave[i].m_bTransparent = TRUE;
 
@@ -186,15 +220,17 @@
 	}
 
 	int nSide;
-	CRect rc2(0,0,10,10);
-	for(i = 0 ; i < MAX_PANEL_SIDE * UPDN_TYPE; i++)
-	{
+	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].SetSideIdx(nSide);
-		m_frameImg[i].SetImageBuffer(NULL, IMAGE_WIDTH, IMAGE_HEIGHT, MAX_FRAM_COUNT);
-		m_frameImg[i].SetSideIdx(0);
+		if (i < 2 * MAX_PANEL_SIDE) {
+			m_frameImg[i].SetImageBuffer(NULL, IMAGE_WIDTH, IMAGE_HEIGHT, MAX_FRAM_COUNT);
+		}
+		else {
+			m_frameImg[i].SetImageBuffer(NULL, IMAGE_WIDTH / 2, IMAGE_HEIGHT, MAX_FRAM_COUNT);
+		}
 		m_frameImg[i].SetGlassData(m_pGlassData);
 		m_frameImg[i].Create(NULL,NULL,WS_VISIBLE | WS_CHILD,rc2,this,0);
 		m_frameImg[i].SetImageBuffer(GetBufferPoint(i,0));
@@ -203,11 +239,10 @@
 
 	m_bInitDlg = TRUE;
 
-	ChangeCtrPos(3);
+	m_nShowSelect = 0;
+	ChangeCtrPos(m_nShowSelect);
 
 	SetZoom(0.2);
-
-	m_nShowSelect = 0;
 
 	((CButton*)GetDlgItem(IDC_CHECK_AUTO_DEFECT_VIEW))->SetCheck(TRUE);
 
@@ -216,14 +251,11 @@
 
 BOOL CViewMain_ScanImage::PreTranslateMessage(MSG* pMsg)
 {
-	if( pMsg->message == WM_KEYDOWN )
-	{
-		if(pMsg->wParam == VK_RETURN
-			|| pMsg->wParam == VK_ESCAPE )
-		{
+	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 TRUE;
 		}
 	}
 
@@ -232,12 +264,10 @@
 
 void CViewMain_ScanImage::OnShowWindow(BOOL bShow, UINT nStatus)
 {
-	if(bShow == TRUE)
-	{
+	if(bShow == TRUE) {
 		int nSide;		
-		CString		strTitle;
-		for(int i = 0 ; i < MAX_PANEL_SIDE * UPDN_TYPE; i++)
-		{
+		CString	strTitle;
+		for(int i = 0 ; i < MAX_PANEL_SIDE * UPDN_TYPE; i++) {
 			nSide = GetSideIdx(i);
 			m_frameImg[i].SetSideIdx(nSide);			
 			m_frameImg[i].SetGlassData(m_pGlassData);
@@ -246,27 +276,16 @@
 			m_frameImg[i].SetImageBuffer(GetBufferPoint(i,ptDisplayPos.y));
 			m_frameImg[i].Invalidate();
 
-			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);
-				}
-
-				if(pCamera != NULL)
-				{
+			if(m_pHardware != NULL) {
+				CCameraSettings *pCamera = GetCameraSettingsByViewIndex(i);
+				if(pCamera != NULL) {
 					double dPixelSizeX = pCamera->m_dConvResolution[0];
 					double dPixelSizeY = pCamera->m_dScanResolution[0];
 					m_frameImg[i].SetPixelSize(dPixelSizeX, dPixelSizeY);
+
+					strTitle.Format(_T("BORD[%d]  CHANNEL[%d]"), pCamera->m_iCamera, 0);
+					m_staticCamInfo[i].SetWindowText(strTitle);
 				}
-				
-				strTitle.Format(_T("BORD[%d]  CHANNEL[%d]"),pCamera->m_iCamera, 0);
-				m_staticCamInfo[i].SetWindowText(strTitle);
 			}			
 		}
 
@@ -281,11 +300,9 @@
 void CViewMain_ScanImage::OnPaint()
 {
 	CPaintDC dc(this); // device context for painting
-
-	
 }
 
-void    CViewMain_ScanImage::SetZoom(double dZoom)
+void CViewMain_ScanImage::SetZoom(double dZoom)
 {
 	m_dZoom = dZoom;
 	UpdateZoom();
@@ -299,12 +316,13 @@
 BYTE* CViewMain_ScanImage::GetBufferPoint(int nViewIndex,int nPos /*= 0*/)
 {
 	BYTE *add = NULL;
-	int nIdx_Side	 = GetSideIdx(nViewIndex);
+	int nIdx_Side = GetSideIdx(nViewIndex);
 
 	LPBYTE plpBuf = NULL;
-	if(m_IV2M != NULL)
-		plpBuf = m_IV2M->IV2M_GetGrabBufferByDimension((DimensionDir)nIdx_Side,nPos);
-	
+	if (m_IV2M != NULL) {
+		plpBuf = m_IV2M->IV2M_GetGrabBufferByDimension((DimensionDir)nIdx_Side, nPos);
+	}
+
 	return plpBuf;
 }
 
@@ -313,8 +331,7 @@
 	PROG_MSG MsgJob = *((PROG_MSG*)wParam);	
 
 	int nIndex = GetViewIndex(MsgJob.nSide);
-	if(MsgJob.nState == 2)
-	{
+	if(MsgJob.nState == 2) {
 		InitScrollInfo(MsgJob.nSide,1);
 
 		m_ctrlScrollV[nIndex].EnableWindow(TRUE);
@@ -338,23 +355,7 @@
 		m_frameImg[nIndex].SetGlassData(m_pGlassData);
 		m_frameImg[nIndex].Invalidate();
 	}
-	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);
+	else {
 		CPoint ptOrg = m_frameImg[nIndex].GetDisplayPos();
 		ptOrg.y = MsgJob.nDispLine;
 
@@ -368,7 +369,7 @@
 
 void CViewMain_ScanImage::SetupImageSave()
 {
-	ManualThreadStart(M_CMD_IMG_SAVE_ALL,-1);
+	ManualThreadStart(M_CMD_IMG_SAVE_ALL, -1);
 }
 
 void CViewMain_ScanImage::SetRecipe(CHardwareSettings *pHW)
@@ -378,10 +379,9 @@
 
 void CViewMain_ScanImage::ResetView()
 {
-	for(int i = 0; i <8 ; i++)
-	{
+	for(int i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE; i++) {
 		m_ctrlScrollV[i].EnableWindow(FALSE);
-	}	
+	}
 }
 
 void CViewMain_ScanImage::ViewRefresh(PROG_MSG ProcMsg)
@@ -403,6 +403,10 @@
 	case 5: nID = DIMENSION_D + MAX_PANEL_SIDE;	break;
 	case 6: nID = DIMENSION_B;					break;
 	case 7: nID = DIMENSION_B + MAX_PANEL_SIDE;	break;
+	case 8: nID = DIMENSION_A_RIP;				break;
+	case 9: nID = DIMENSION_B_RIP;				break;
+	case 10: nID = DIMENSION_C_RIP;				break;
+	case 11: nID = DIMENSION_D_RIP;				break;
 	default:
 		AfxMessageBox(_T("CViewImage::GetPanelID(int nViewIndex) call Error"));
 		break;
@@ -413,21 +417,18 @@
 
 void CViewMain_ScanImage::ChangeCtrPos(int nMode)
 {
+	// 0: Long & Short, 1: Long only, 2: Short only, 3: Rip
 	m_nShowSelect = nMode;
 
-	int nInfo			= 20;
-	int nHScroll		= 20;
-	int nImgWidth		= 450;
-	int nImgHeight		= 350;
+	const int nInfo = 20;
+	const int nHScroll = 20;
+	const int nImgWidth = 450;
+	int nImgHeight = 350;
 
-	int i = 0;
-	CPoint OrgPt(10,5),pt;
-	pt = OrgPt;
-
+	CPoint OrgPt(10, 5), pt = OrgPt;
 
 	SetRedraw(FALSE);
-	for(i = 0; i < 8 ; i ++)
-	{
+	for (int i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE; i++) {
 		m_btnLoad[i].SetRedraw(FALSE);
 		m_btnSave[i].SetRedraw(FALSE);
 		m_staticCamInfo[i].SetRedraw(FALSE);
@@ -437,219 +438,42 @@
 		m_frameImg[i].SetRedraw(FALSE);
 	}
 
-	switch(nMode)
+	switch (nMode)
 	{
-	case 0:
+	case 0: // Long & Short
+		pt = OrgPt;
+		LayoutCameraGroup(0, 4, pt, nImgWidth, nImgHeight, nInfo, nHScroll); // Long
 
-		// 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);	
-			CRect rtWnd;
-			m_frameImg[i].GetClientRect(rtWnd);
-			m_frameImg[i].SetWndRect(rtWnd);
-			// 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);
-			CRect rtWnd;
-			m_frameImg[i].GetClientRect(rtWnd);
-			m_frameImg[i].SetWndRect(rtWnd);
-			//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;
-		}
+		pt.y = OrgPt.y + nImgHeight + nInfo + nHScroll + 10;
+		LayoutCameraGroup(4, 4, pt, nImgWidth, nImgHeight, nInfo, nHScroll); // Short
+		ShowCameraGroup(0, 8, TRUE);
 		break;
 
-	case 1: // long
-		pt.x = OrgPt.x;
-		pt.y = OrgPt.y;
-
+	case 1: // Long only, large
 		nImgHeight = 750;
-		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);	
-			CRect rtWnd;
-			m_frameImg[i].GetClientRect(rtWnd);
-			m_frameImg[i].SetWndRect(rtWnd);
-			//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;
-		}
+		pt = OrgPt;
+		LayoutCameraGroup(0, 4, pt, nImgWidth, nImgHeight, nInfo, nHScroll);
+		ShowCameraGroup(0, 4, TRUE);
+		ShowCameraGroup(4, 4, FALSE);
 		break;
 
-
-	case 2:// Short
-		pt.x = OrgPt.x;
-		pt.y = OrgPt.y;
+	case 2: // Short only, large
 		nImgHeight = 750;
-		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);	
-			CRect rtWnd;
-			m_frameImg[i].GetClientRect(rtWnd);
-			m_frameImg[i].SetWndRect(rtWnd);
-			// 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;
-		}
+		pt = OrgPt;
+		LayoutCameraGroup(4, 4, pt, nImgWidth, nImgHeight, nInfo, nHScroll);
+		ShowCameraGroup(0, 4, FALSE);
+		ShowCameraGroup(4, 4, TRUE);
 		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);	
-			CRect rtWnd;
-			m_frameImg[i].GetClientRect(rtWnd);
-			m_frameImg[i].SetWndRect(rtWnd);
-			//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);	
-			CRect rtWnd;
-			m_frameImg[i].GetClientRect(rtWnd);
-			m_frameImg[i].SetWndRect(rtWnd);
-			//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;
-		}
+	case 3: // Rip (cam 8~11)
+		nImgHeight = 750;
+		pt = OrgPt;
+		LayoutCameraGroup(8, 4, pt, nImgWidth, nImgHeight, nInfo, nHScroll);
+		ShowCameraGroup(8, 4, TRUE);
 		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);
 }
@@ -678,7 +502,6 @@
 	scrollInfoH.nTrackPos	= 64;
 	
 	double dZoom = m_frameImg[0].GetZoom();
-
 
 	scrollInfoV.nPage	= m_frameImg[0].GetWndRect().Height();
 	scrollInfoH.nPage	= (int)(m_frameImg[0].GetWndRect().Width() / dZoom);	
@@ -1050,7 +873,10 @@
 	case 5: nID = DIMENSION_D + MAX_PANEL_SIDE;	break;
 	case 6: nID = DIMENSION_B;					break;
 	case 7: nID = DIMENSION_B + MAX_PANEL_SIDE;	break;
-
+	case 8: nID = DIMENSION_A_RIP;				break;
+	case 9: nID = DIMENSION_B_RIP;				break;
+	case 10: nID = DIMENSION_C_RIP;				break;
+	case 11: nID = DIMENSION_D_RIP;				break;
 	default:
 		AfxMessageBox(_T("CViewImage::GetViewIndex(int nSide) call Error"));
 		break;
@@ -1069,39 +895,49 @@
 	}	
 }
 
-void CViewMain_ScanImage::OnBnClickedBtnImgBoth()	{ChangeCtrPos(0);}
-void CViewMain_ScanImage::OnBnClickedBtnImgShort()	{ChangeCtrPos(2);}
-void CViewMain_ScanImage::OnBnClickedBtnImgLong()	{ChangeCtrPos(1);}
+void CViewMain_ScanImage::OnBnClickedBtnImgRip() { ChangeCtrPos(3); }
+void CViewMain_ScanImage::OnBnClickedBtnImgShort() { ChangeCtrPos(2); }
+void CViewMain_ScanImage::OnBnClickedBtnImgLong() { ChangeCtrPos(1); }
+void CViewMain_ScanImage::OnBnClickedBtnImgBoth() { ChangeCtrPos(0); }
 
-void CViewMain_ScanImage::OnBnClickedUpdnWidth1()  {(m_bWithScroll[0] == FALSE) ? m_bWithScroll[0] = TRUE : m_bWithScroll[0] = FALSE;}
-void CViewMain_ScanImage::OnBnClickedUpdnWidth2()  {(m_bWithScroll[1] == FALSE) ? m_bWithScroll[1] = TRUE : m_bWithScroll[1] = FALSE;}
-void CViewMain_ScanImage::OnBnClickedUpdnWidth3()  {(m_bWithScroll[2] == FALSE) ? m_bWithScroll[2] = TRUE : m_bWithScroll[2] = FALSE;}
-void CViewMain_ScanImage::OnBnClickedUpdnWidth4()  {(m_bWithScroll[3] == FALSE) ? m_bWithScroll[3] = TRUE : m_bWithScroll[3] = FALSE;}
-void CViewMain_ScanImage::OnBnClickedUpdnWidth6()  {(m_bWithScroll[4] == FALSE) ? m_bWithScroll[4] = TRUE : m_bWithScroll[4] = FALSE;}
-void CViewMain_ScanImage::OnBnClickedUpdnWidth5()  {(m_bWithScroll[5] == FALSE) ? m_bWithScroll[5] = TRUE : m_bWithScroll[5] = FALSE;}
-void CViewMain_ScanImage::OnBnClickedUpdnWidth7()  {(m_bWithScroll[6] == FALSE) ? m_bWithScroll[6] = TRUE : m_bWithScroll[6] = FALSE;}
-void CViewMain_ScanImage::OnBnClickedUpdnWidth8()  {(m_bWithScroll[7] == FALSE) ? m_bWithScroll[7] = TRUE : m_bWithScroll[7] = FALSE;}
+void CViewMain_ScanImage::OnBnClickedUpdnWidth1() { (m_bWithScroll[0] == FALSE) ? m_bWithScroll[0] = TRUE : m_bWithScroll[0] = FALSE; }
+void CViewMain_ScanImage::OnBnClickedUpdnWidth2() { (m_bWithScroll[1] == FALSE) ? m_bWithScroll[1] = TRUE : m_bWithScroll[1] = FALSE; }
+void CViewMain_ScanImage::OnBnClickedUpdnWidth3() { (m_bWithScroll[2] == FALSE) ? m_bWithScroll[2] = TRUE : m_bWithScroll[2] = FALSE; }
+void CViewMain_ScanImage::OnBnClickedUpdnWidth4() { (m_bWithScroll[3] == FALSE) ? m_bWithScroll[3] = TRUE : m_bWithScroll[3] = FALSE; }
+void CViewMain_ScanImage::OnBnClickedUpdnWidth6() { (m_bWithScroll[4] == FALSE) ? m_bWithScroll[4] = TRUE : m_bWithScroll[4] = FALSE; }
+void CViewMain_ScanImage::OnBnClickedUpdnWidth5() { (m_bWithScroll[5] == FALSE) ? m_bWithScroll[5] = TRUE : m_bWithScroll[5] = FALSE; }
+void CViewMain_ScanImage::OnBnClickedUpdnWidth7() { (m_bWithScroll[6] == FALSE) ? m_bWithScroll[6] = TRUE : m_bWithScroll[6] = FALSE; }
+void CViewMain_ScanImage::OnBnClickedUpdnWidth8() { (m_bWithScroll[7] == FALSE) ? m_bWithScroll[7] = TRUE : m_bWithScroll[7] = FALSE; }
+void CViewMain_ScanImage::OnBnClickedUpdnWidth9() { (m_bWithScroll[8] == FALSE) ? m_bWithScroll[8] = TRUE : m_bWithScroll[8] = FALSE; }
+void CViewMain_ScanImage::OnBnClickedUpdnWidth10() { (m_bWithScroll[9] == FALSE) ? m_bWithScroll[9] = TRUE : m_bWithScroll[9] = FALSE; }
+void CViewMain_ScanImage::OnBnClickedUpdnWidth11() { (m_bWithScroll[10] == FALSE) ? m_bWithScroll[10] = TRUE : m_bWithScroll[10] = FALSE; }
+void CViewMain_ScanImage::OnBnClickedUpdnWidth12() { (m_bWithScroll[11] == FALSE) ? m_bWithScroll[11] = TRUE : m_bWithScroll[11] = FALSE; }
 
+void CViewMain_ScanImage::OnBnClickedBtnLoad1() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 0); }
+void CViewMain_ScanImage::OnBnClickedBtnLoad2() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 1); }
+void CViewMain_ScanImage::OnBnClickedBtnLoad3() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 2); }
+void CViewMain_ScanImage::OnBnClickedBtnLoad4() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 3); }
+void CViewMain_ScanImage::OnBnClickedBtnLoad5() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 4); }
+void CViewMain_ScanImage::OnBnClickedBtnLoad6() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 5); }
+void CViewMain_ScanImage::OnBnClickedBtnLoad7() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 6); }
+void CViewMain_ScanImage::OnBnClickedBtnLoad8() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 7); }
+void CViewMain_ScanImage::OnBnClickedBtnLoad9() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 8); }
+void CViewMain_ScanImage::OnBnClickedBtnLoad10() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 9); }
+void CViewMain_ScanImage::OnBnClickedBtnLoad11() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 10); }
+void CViewMain_ScanImage::OnBnClickedBtnLoad12() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 11); }
 
-
-void CViewMain_ScanImage::OnBnClickedBtnLoad1() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,0);	}
-void CViewMain_ScanImage::OnBnClickedBtnLoad2() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,1);	}
-void CViewMain_ScanImage::OnBnClickedBtnLoad3() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,2);	}
-void CViewMain_ScanImage::OnBnClickedBtnLoad4() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,3);	}
-void CViewMain_ScanImage::OnBnClickedBtnLoad5() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,4);	}
-void CViewMain_ScanImage::OnBnClickedBtnLoad6() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,5);	}
-void CViewMain_ScanImage::OnBnClickedBtnLoad7() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,6);	}
-void CViewMain_ScanImage::OnBnClickedBtnLoad8() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,7);	}
-
-
-void CViewMain_ScanImage::OnBnClickedBtnSave1() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,0);	}
-void CViewMain_ScanImage::OnBnClickedBtnSave2() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,1);	}
-void CViewMain_ScanImage::OnBnClickedBtnSave3() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,2);	}
-void CViewMain_ScanImage::OnBnClickedBtnSave4() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,3);	}
-void CViewMain_ScanImage::OnBnClickedBtnSave5() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,4);	}
-void CViewMain_ScanImage::OnBnClickedBtnSave6() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,5);	}
-void CViewMain_ScanImage::OnBnClickedBtnSave7() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,6);	}
-void CViewMain_ScanImage::OnBnClickedBtnSave8() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,7);	}
+void CViewMain_ScanImage::OnBnClickedBtnSave1() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 0); }
+void CViewMain_ScanImage::OnBnClickedBtnSave2() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 1); }
+void CViewMain_ScanImage::OnBnClickedBtnSave3() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 2); }
+void CViewMain_ScanImage::OnBnClickedBtnSave4() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 3); }
+void CViewMain_ScanImage::OnBnClickedBtnSave5() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 4); }
+void CViewMain_ScanImage::OnBnClickedBtnSave6() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 5); }
+void CViewMain_ScanImage::OnBnClickedBtnSave7() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 6); }
+void CViewMain_ScanImage::OnBnClickedBtnSave8() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 7); }
+void CViewMain_ScanImage::OnBnClickedBtnSave9() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 8); }
+void CViewMain_ScanImage::OnBnClickedBtnSave10() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 9); }
+void CViewMain_ScanImage::OnBnClickedBtnSave11() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 10); }
+void CViewMain_ScanImage::OnBnClickedBtnSave12() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 11); }
 
 void CViewMain_ScanImage::OnBnClickedLoadAll()  {ManualThreadStart(M_CMD_IMG_LOAD_ALL,-1);}
 void CViewMain_ScanImage::OnBnClickedSaveAll()  {ManualThreadStart(M_CMD_IMG_SAVE_ALL,-1);}
@@ -1109,7 +945,7 @@
 BOOL CViewMain_ScanImage::ManualThreadStart(int nCmd,int nIndex /*= -1*/)
 {
 	if(m_pManualProcess) {
-		DWORD dwWait = ::WaitForSingleObject(m_pManualProcess->m_hThread, 1000);
+		DWORD dwWait = ::WaitForSingleObject(m_pManualProcess->m_hThread, 3000);
 		if (dwWait == WAIT_TIMEOUT) {
 			DWORD dwExitCode;
 			if ((::GetExitCodeThread(m_pManualProcess->m_hThread, &dwExitCode)) && (dwExitCode == STILL_ACTIVE)) {
@@ -1177,8 +1013,8 @@
 	if (NULL == pGlassRcp) return;
 #endif
 
-	CString			strRcpName = pGlassRcp->GetRecipeName();
-	CString			strGlassID = g_pBase->m_strHPanelID;
+	CString	strRcpName = pGlassRcp->GetRecipeName();
+	CString	strGlassID = g_pBase->m_strHPanelID;
 
 	if(strGlassID.IsEmpty() == TRUE) {
 		strGlassID = _T("Manual_ID");
@@ -1246,11 +1082,10 @@
 		if(nLength > 10) {		
 			if(ptStart.y+nLength < nMaxSize) {
 				strPath.Format(_T("%s\\DebugFullImage\\%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);		
+				m_IV2M->IV2M_SaveFullImage(strPath,iSide,ptStart,nLength);
+				g_pLog->DisplayMessage(_T("%s %d Save Completed : %s"), PANEL_SIDE[iSide], nFrame, strPath);
 			}			
 		}
-
-		g_pLog->DisplayMessage(_T("%s %d Save Completed : %s"),PANEL_SIDE[iSide],nFrame,strPath);
 	}
 }
 
@@ -1334,9 +1169,10 @@
 {
 	CViewMain_ScanImage *pDlg = (CViewMain_ScanImage*)pParam;
 	int i =0;
-	if(pDlg->m_nThreadCmd == M_CMD_PROC_ALL_START 
+	if(pDlg->m_nThreadCmd == M_CMD_PROC_ALL_START
+		|| pDlg->m_nThreadCmd == M_CMD_PROC_LONG_START
 		|| pDlg->m_nThreadCmd == M_CMD_PROC_SHORT_START
-		|| pDlg->m_nThreadCmd == M_CMD_PROC_LONG_START)
+		|| pDlg->m_nThreadCmd == M_CMD_PROC_RIP_START)
 	{
 		pDlg->m_IV2M->IV2M_InspectionProcessAll(pDlg->m_nThreadCmd);
 	}
@@ -1347,7 +1183,7 @@
 
 		pDlg->m_IV2M->IV2M_LoadImageFullFile(-1,pDlg->m_pGlassData, [&] (BYTE iSide)
 		{
-			int			iView = pDlg->GetViewIndex(iSide);		
+			int	iView = pDlg->GetViewIndex(iSide);		
 
 			pDlg->InitScrollInfo(iSide,0);
 			pDlg->m_frameImg[iView].Invalidate(FALSE);
@@ -1362,7 +1198,7 @@
 	{
 		pDlg->m_IV2M->IV2M_LoadImageFullFile(pDlg->GetSideIdx(pDlg->m_nIndex),pDlg->m_pGlassData, [&] (BYTE iSide)
 		{
-			int			iView = pDlg->GetViewIndex(iSide);		
+			int	iView = pDlg->GetViewIndex(iSide);		
 
 			pDlg->InitScrollInfo(iSide,0);
 			pDlg->m_frameImg[iView].Invalidate(FALSE);
@@ -1397,10 +1233,8 @@
 	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
@@ -1420,19 +1254,17 @@
 
 void CViewMain_ScanImage::OnBnClickedBtnInitDisplay()
 {
-	for(int i = 0; i <8 ; i++)
-	{
+	for(int i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE; i++) {
 		InitScrollInfo(i,0);		
 
-		int nSide	 = GetSideIdx(i);
+		int nSide = GetSideIdx(i);
 
 		m_frameImg[i].SetSideIdx(nSide);
 		m_frameImg[i].SetImageBuffer(GetBufferPoint(i,0));
 		m_frameImg[i].Invalidate();
 	}	
 
-	if(m_IV2M != NULL)
-	{
+	if(m_IV2M != NULL) {
 		m_IV2M->IV2M_InitView(VIEW_SCANIMAGE);
 	}
 }
@@ -1442,15 +1274,19 @@
 	switch(m_nShowSelect)
 	{
 	case 0: 
-		ManualThreadStart(M_CMD_PROC_ALL_START	);
+		ManualThreadStart(M_CMD_PROC_ALL_START);
 		break;
 
 	case 1: 
-		ManualThreadStart(M_CMD_PROC_LONG_START	); 	
+		ManualThreadStart(M_CMD_PROC_LONG_START); 	
 		break;
 
 	case 2:
 		ManualThreadStart(M_CMD_PROC_SHORT_START);  
+		break;
+
+	case 3:
+		ManualThreadStart(M_CMD_PROC_RIP_START);
 		break;
 	}
 }
@@ -1464,7 +1300,7 @@
 	/*
 	BOOL bCheck = ((CButton*)GetDlgItem(IDC_CHECK_AUTO_SIZE))->GetCheck();
 
-	for(int i = 0 ; i < 8 ; i++)
+	for(int i = 0 ; i < MAX_PANEL_SIDE * UPDN_TYPE ; i++)
 	{
 		if(bCheck)
 			m_frameImg[i].SetMode(MODE_AUTO_MEASURE); 
@@ -1472,4 +1308,68 @@
 			m_frameImg[i].ResetMode(MODE_AUTO_MEASURE); 
 	}
 	*/
+}
+
+void CViewMain_ScanImage::LayoutCameraGroup(int nStartIdx, int nCount, CPoint& pt, int nImgWidth, int nImgHeight, int nInfo, int nHScroll)
+{
+	for (int i = 0; i < nCount; ++i) {
+		int idx = nStartIdx + i;
+
+		m_btnLoad[idx].MoveWindow(pt.x, pt.y, nInfo, nInfo, FALSE);
+		m_btnSave[idx].MoveWindow(pt.x + nImgWidth - nInfo, pt.y, nInfo, nInfo, FALSE);
+		m_staticCamInfo[idx].MoveWindow(pt.x + nInfo, pt.y, nImgWidth - nInfo * 2, nInfo, FALSE);
+		m_frameImg[idx].MoveWindow(pt.x, pt.y + nInfo, nImgWidth, nImgHeight, FALSE);
+
+		CRect rtWnd;
+		m_frameImg[idx].GetClientRect(rtWnd);
+		m_frameImg[idx].SetWndRect(rtWnd);
+
+		m_chkWithScorll[idx].MoveWindow(pt.x + nImgWidth, pt.y + nInfo + nImgHeight, nHScroll, nInfo, FALSE);
+		m_ctrlScrollV[idx].MoveWindow(pt.x + nImgWidth, pt.y + nInfo, nHScroll, nImgHeight, FALSE);
+		m_ctrlScrollH[idx].MoveWindow(pt.x, pt.y + nInfo + nImgHeight, nImgWidth, nInfo, FALSE);
+
+		pt.x += nImgWidth + nHScroll;
+	}
+}
+
+void CViewMain_ScanImage::ShowCameraGroup(int nStartIdx, int nCount, BOOL bShow)
+{
+	int nCmd = bShow ? SW_SHOW : SW_HIDE;
+	for (int i = nStartIdx; i < nStartIdx + nCount; ++i) {
+		m_btnLoad[i].ShowWindow(nCmd);
+		m_btnSave[i].ShowWindow(nCmd);
+		m_staticCamInfo[i].ShowWindow(nCmd);
+		m_ctrlScrollV[i].ShowWindow(nCmd);
+		m_ctrlScrollH[i].ShowWindow(nCmd);
+		m_chkWithScorll[i].ShowWindow(nCmd);
+		m_frameImg[i].ShowWindow(nCmd);
+	}
+}
+
+CCameraSettings* CViewMain_ScanImage::GetCameraSettingsByViewIndex(int nViewIndex)
+{
+	CCameraSettings* pCamera = NULL;
+	if (nullptr == m_pHardware) {
+		return pCamera;
+	}
+
+	// ViewIndex -> DimensionDir
+	static const DimensionDir SIDE_MAP[] = {
+		DIMENSION_C, DIMENSION_C_DN,
+		DIMENSION_A, DIMENSION_A_DN,
+		DIMENSION_D, DIMENSION_D_DN,
+		DIMENSION_B, DIMENSION_B_DN,
+		DIMENSION_A_RIP, DIMENSION_B_RIP,
+		DIMENSION_C_RIP, DIMENSION_D_RIP
+	};
+
+	if (nViewIndex < 0 || nViewIndex >= _countof(SIDE_MAP)) {
+		AfxMessageBox(_T("GetCameraSettingsByViewIndex: Invalid view index"));
+		return nullptr;
+	}
+
+	DimensionDir eSide = SIDE_MAP[nViewIndex];
+	int nScan = m_pHardware->GetScanToDimension(eSide);
+	int nCamera = m_pHardware->GetCameraIndexToDimension(eSide);
+	return pCamera = m_pHardware->GetCameraSettings(nCamera, nScan);
 }
\ No newline at end of file

--
Gitblit v1.9.3