twain2/hugaotwainds/TwainUIDlg.cpp

1042 lines
56 KiB
C++
Raw Permalink Normal View History

2020-03-11 02:53:30 +00:00
<EFBFBD><EFBFBD>// TwainUIDlg.cpp: <EFBFBD>[<EFBFBD>s<EFBFBD>e<EFBFBD>N
//
#include "stdafx.h"
#include "TwainUIDlg.h"
#include "afxdialogex.h"
#include "Resource.h"
#include "scn_config.h"
#include "PublicFunc.h"
#include "filetools.h"
//extern CUI_INI* m_pUI_INI;
// TwainUIDlg <EFBFBD>[݋Fh
IMPLEMENT_DYNAMIC(TwainUIDlg, CDialog)
TwainUIDlg::TwainUIDlg(MFC_UI* pUI, CWnd* pParent /*=nullptr*/)
: CDialog(IDD_DIALOG_TWAINUI, pParent)
{
ui = pUI;
//m_serialNum=ui->m_pDS->GetSerialNum();
//m_FwVersion=ui->m_pDS->GetFWVerison();
basicSetting.m_pBrightWin = &brightSetting;
basicSetting.m_pFeedWin = &feederPaper;
basicSetting.m_pImagePrcWin = &imageProcess;
}
TwainUIDlg::~TwainUIDlg()
{
}
void TwainUIDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_TAB, m_tabCtrl);
}
BEGIN_MESSAGE_MAP(TwainUIDlg, CDialog)
//ON_BN_CLICKED(IDOK, &TwainUIDlg::OnBnClickedOk)
ON_BN_CLICKED(IDCANCEL, &TwainUIDlg::OnBnClickedCancel)
ON_BN_CLICKED(IDC_BTNDEFAULT, &TwainUIDlg::OnBnClickedDefault)
ON_BN_CLICKED(IDC_BTNHELP, &TwainUIDlg::OnBnClickedHelp)
ON_BN_CLICKED(IDC_BTNSAVECONFIG, &TwainUIDlg::OnBnClickedSaveItem)
ON_BN_CLICKED(IDC_BTNDELETCONFIG, &TwainUIDlg::OnBnClickedDeletItem)
ON_BN_CLICKED(IDC_BTNRECOVERYCONFIG, &TwainUIDlg::OnBnClickedRecovery)
ON_BN_CLICKED(IDC_BTNBACKUPCONFIG, &TwainUIDlg::OnBnClickedBackUp)
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, &TwainUIDlg::OnSelchangeTab)
ON_BN_CLICKED(IDC_CONFIRM, &TwainUIDlg::OnBnClickedConfirm)
ON_LBN_SELCHANGE(IDC_LSTCONFIG, &TwainUIDlg::OnLbnSelchangeLstconfig)
END_MESSAGE_MAP()
// TwainUIDlg <EFBFBD>mo`Yt z<EFBFBD>^
void TwainUIDlg::OnBnClickedConfirm()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
CString str_caption;
GetDlgItemText(IDC_CONFIRM, str_caption);
CONFIGPARAMS configItem = { 0 };
UpDateScanParam(&configItem);
TCHAR szIniFile[MAX_PATH] = { 0 };
SHGetSpecialFolderPath(NULL, szIniFile, CSIDL_LOCAL_APPDATA, TRUE);
_tcscat(szIniFile, HUAGAO_SCAN);
_tcscat(szIniFile,TWAIN_INIPATH);
_tcscat(szIniFile, TEXT("\\"));
_tcscat(szIniFile, TWAIN_JSON_NAME);
JsonConfig js;
vector<CONFIGPARAMS> vc;
vc.push_back(configItem);
std::string savepath(szIniFile);
js.WriteJsonArrayToFile(vc,savepath);
if (str_caption.Compare(_T("kb<6B>c")) == 0)//<EFBFBD>Q<EFBFBD>[:Nkb<EFBFBD>c<EFBFBD>e
{
ui->Scan();
}
else
{
ui->m_pDS->DoCloseDSOkEvent();
this->ShowWindow(HIDE_WINDOW);
}
}
//<EFBFBD>S<EFBFBD>m c<EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>N
void TwainUIDlg::OnBnClickedCancel()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
//CDialog::OnCancel();
//disableDS
ui->m_pDS->DoCloseDSRequestEvent();
this->ShowWindow(HIDE_WINDOW);
}
//؞<EFBFBD><EFBFBD><P<EFBFBD><EFBFBD><EFBFBD>[ c<EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>N
void TwainUIDlg::OnBnClickedDefault()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
JsonConfig js;
CONFIGPARAMS cf=js.GetDefaultConfigParams();
UpdateUI(cf);
}
//.^<EFBFBD>R c<EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>N
void TwainUIDlg::OnBnClickedHelp()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
TCHAR chmPath[MAX_PATH]={0};
SHGetSpecialFolderPath(NULL, chmPath, CSIDL_WINDOWS, TRUE);
_tcscat(chmPath,CHM_DEFAULT_PATH);
HINSTANCE ret= ShellExecute(NULL,"Open",chmPath,NULL,NULL,SW_SHOWMAXIMIZED);
//MessageBox(chmPath,"Path",MB_OK);
int cvt=(int)ret;
if (cvt<32)
{
switch (cvt)
{
case ERROR_FILE_NOT_FOUND:
MessageBox("*g~b0R.^<5E>R<EFBFBD>ech<01>","<00>c:y",MB_OK|MB_ICONINFORMATION);
break;
default:
MessageBox("Sb_.^<5E>R<EFBFBD>ech_8^<01>","<00>c:y",MB_OK|MB_ICONINFORMATION);
break;
}
}
}
//<EFBFBD>OX[(u7b<EFBFBD><EFBFBD> <EFBFBD>y<EFBFBD> c<EFBFBD><EFBFBD>
void TwainUIDlg::OnBnClickedSaveItem()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
SaveConfigDlg sfd(this);
sfd.DoModal();
}
// Rd<EFBFBD>N*N(u7b<EFBFBD><EFBFBD> <EFBFBD>y<EFBFBD> c<EFBFBD><EFBFBD>
void TwainUIDlg::OnBnClickedDeletItem()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
if (MessageBox(TEXT("nx<6E><78><EFBFBD><EFBFBD> Rd<52>dk(u7b<37><62> <09>y<EFBFBD>M<EFBFBD>nT<1F>"),TEXT("(u7b<37><62> <09>y<EFBFBD>"),MB_YESNO|MB_ICONQUESTION)==IDYES)
{
int cursel=-1;
cursel=((CListBox*)(GetDlgItem(IDC_LSTCONFIG)))->GetCurSel();
if (cursel!=-1)
{
CFile file;
file.Remove(cfi[cursel].SavePath.c_str());
UpdateListConfig();
}
}
}
//b` YN*N(u7b<EFBFBD><EFBFBD> <EFBFBD>y<EFBFBD><EFBFBD>~
void TwainUIDlg::OnBnClickedRecovery()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
if (MessageBox(TEXT("<00>Y<EFBFBD>gb` Y,S_MR@b g<EFBFBD>]<EFBFBD>OX[M<EFBFBD>n\"N1Y0/f&T<>~<7E>~<1F>"),TEXT("b` Y"),MB_YESNO|MB_ICONQUESTION)==IDYES)
{
JsonConfig js;
CFileDialog ofd(TRUE,
".json",
NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
_TEXT("Json Files (*.json)|*.json)"),
NULL);
for (int i=0;i<cfi.size();i++)
{
DeleteFile(cfi[i].SavePath.c_str());
}
cfi.clear();
if (IDOK==ofd.DoModal())
{
std::string path=ofd.GetPathName().GetBuffer();
vector<CONFIGPARAMS> vc=js.ReadJsonArrayFromFile(path);
for (int i=0;i<vc.size();i++)
{
// js.WriteJsonArrayToFile(vc[i],vc[i].SavePath);
vector<CONFIGPARAMS> vc_item;
vc_item.push_back(vc[i]);
js.WriteJsonArrayToFile(vc_item,vc[i].SavePath);
}
UpdateListConfig();
}
}
}
//Y<EFBFBD>NN*N(u7b<EFBFBD><EFBFBD> <EFBFBD>y<EFBFBD><EFBFBD>~
void TwainUIDlg::OnBnClickedBackUp()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
char szFilters[] = "Json file(*.json)\0";
CFileDialog cfd(FALSE,"json",_T("<00>SX[:N"));
cfd.m_ofn.lpstrTitle="";
cfd.m_ofn.lpstrFilter=szFilters;
this->SetWindowPos(&wndNoTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);
JsonConfig js;
if (IDOK==cfd.DoModal())
{
vector<CONFIGPARAMS> vc_tempOut;
std::vector<CONFIGINFO> temp_cfi = getConfigFiles();
for (int i=0;i<temp_cfi.size();i++)
{
vector<CONFIGPARAMS> vc_item=js.ReadJsonArrayFromFile(cfi[i].SavePath.c_str());
if (vc_item.size()>0)
{
vc_tempOut.push_back(vc_item[0]);
}
}
if (vc_tempOut.size()>0)
{
std:;string path=cfd.GetFileName().GetBuffer();
js.WriteJsonArrayToFile(vc_tempOut,path);
}
}
this->SetWindowPos(&wndTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);
}
/*R<EFBFBD>YSTwainUI <EFBFBD>S<EFBFBD>b<EFBFBD>W,g <EFBFBD>y<EFBFBD>aS0*/
/*<EFBFBD>N<EFBFBD>^0<EFBFBD>V<EFBFBD>PYt0<EFBFBD><EFBFBD>~ <EFBFBD>y<EFBFBD>aS<EFBFBD>vR<EFBFBD>YS*/
BOOL TwainUIDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_tabCtrl.InsertItem(0, "<00>W,g");
m_tabCtrl.InsertItem(1, "<00>N<EFBFBD>^");
m_tabCtrl.InsertItem(2, "<00>V<EFBFBD>PYt");
m_tabCtrl.InsertItem(3, "<01><>~");
basicSetting.Create(IDD_DIALOG_PAGEBASIC, &m_tabCtrl);
brightSetting.Create(IDD_DIALOG_PAGEBRIGHTNESS, &m_tabCtrl);
imageProcess.Create(IDD_DIALOG_PAGEIMGPROC, &m_tabCtrl);
feederPaper.Create(IDD_DIALOG_PAGEFEEDPAPER, &m_tabCtrl);
CRect rect;
m_tabCtrl.GetClientRect(&rect);
rect.top += 22;
rect.bottom -= 4;
rect.left += 4;
rect.right -= 6;
basicSetting.MoveWindow(&rect);
brightSetting.MoveWindow(&rect);
imageProcess.MoveWindow(&rect);
feederPaper.MoveWindow(&rect);
basicSetting.ShowWindow(TRUE);
m_tabCtrl.SetCurSel(0);
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD><EFBFBD>Y<EFBFBD>vR<EFBFBD>YS
if(SCANNERNAME == "XS8100")
{
SetWindowText("ZhibenScan XS8100 TWAIN");
2020-03-11 02:53:30 +00:00
}
else
{
#ifdef G200
SetWindowText("HUAGOSCAN Hi-5100 TWAIN");
#elif defined G300
SetWindowText("HUAGOSCAN G300 TWAIN");
#elif defined G400
SetWindowText("HUAGOSCAN G400 TWAIN");
#endif
2020-03-11 02:53:30 +00:00
}
JsonConfig cfg;
CONFIGPARAMS configParams=cfg.ReadDefaultConfig();
UpdateUI(configParams);
UpdateListConfig();
return TRUE; // return TRUE unless you set the focus to a control
// _8^: OCX ^\'`u<EFBFBD><EFBFBD>^ԏ<EFBFBD>V FALSE
}
void TwainUIDlg::OnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
CRect tabRect; // h~{<EFBFBD>c<EFBFBD>N<EFBFBD>[7b:S<EFBFBD>vRect
// <EFBFBD><EFBFBD><EFBFBD>Sh~{<EFBFBD>c<EFBFBD>N<EFBFBD>[7b:SRect <EFBFBD>v^<EFBFBD>[vQ<EFBFBD>te <EFBFBD><EFBFBD>N<EFBFBD>T>enh~{u<EFBFBD>
m_tabCtrl.GetClientRect(&tabRect);
tabRect.left += 1;
tabRect.right -= 2;
tabRect.top += 23;
tabRect.bottom -= 4;
switch (m_tabCtrl.GetCurSel())
{
case 0:
basicSetting.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
brightSetting.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
imageProcess.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
feederPaper.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
break;
case 1:
basicSetting.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
brightSetting.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
imageProcess.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
feederPaper.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
break;
case 2:
basicSetting.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
brightSetting.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
imageProcess.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
feederPaper.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
break;
case 3:
basicSetting.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
brightSetting.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
imageProcess.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
feederPaper.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
break;
default:
break;
}
*pResult = 0;
}
//////////////////////////////////////////////////////////////////////
/*<EFBFBD>NUI<EFBFBD><EFBFBD><EFBFBD>S<EFBFBD>Spe*/
void TwainUIDlg::UpDateScanParam(PCONFIGPARAMS configItem,bool updateDs)
{
configItem->EnAutoContrast = ((CButton*)(brightSetting.GetDlgItem(IDC_CHKSELFCONTRAST)))->GetCheck();//R<EFBFBD>N<EFBFBD>^<EFBFBD>[<EFBFBD>k<EFBFBD>^
configItem->EnBackRotate180 = ((CButton*)(feederPaper.GetDlgItem(IDC_CKBACKROTATION)))->GetCheck();//̀b<EFBFBD><EFBFBD>el<EFBFBD>180
configItem->EnBindingDetect = ((CButton*)(feederPaper.GetDlgItem(IDC_CKBINDINGDETECT)))->GetCheck();//ň<EFBFBD><EFBFBD><EFBFBD>hKm
configItem->EnUltrasonicDetect = ((CButton*)(feederPaper.GetDlgItem(IDC_CKULTRSONICDETECT)))->GetCheck();//<EFBFBD>S _<EFBFBD>hKm
configItem->EnFillBlack = ((CButton*)(imageProcess.GetDlgItem(IDC_CKFILLBLACKRECT)))->GetCheck();//kXEQўFh
configItem->EnAutoDescrew=((CButton*)(imageProcess.GetDlgItem(IDC_CKAUTODESKREW)))->GetCheck();//R<EFBFBD>~OP
configItem->EnScrewDetect = ((CButton*)(feederPaper.GetDlgItem(IDC_CKSKEWDETECT)))->GetCheck();//jk<EFBFBD>e<EFBFBD>hKm
configItem->Brightness = ((CSliderCtrl*)brightSetting.GetDlgItem(IDC_SLDBRIGTHNESS))->GetPos() - 128;//<EFBFBD>N<EFBFBD>^
int indexColorModel=((CComboBox*)basicSetting.GetDlgItem(IDC_CMBCOLORTYPE))->GetCurSel();
configItem->Pixtype = getColorModel(indexColorModel);//<EFBFBD><EFBFBD>r<EFBFBD>!j_
configItem->Contrast = ((CSliderCtrl*)brightSetting.GetDlgItem(IDC_SLDCONTRAST))->GetPos()-4;//<EFBFBD>[<EFBFBD>k<EFBFBD>^
int index = ((CComboBox*)basicSetting.GetDlgItem(IDC_CMBRESLUTION))->GetCurSel();
configItem->Resolution = getResolution(index);//R<EFBFBD><EFBFBD><EFBFBD>s
configItem->Duplex = ((CComboBox*)(basicSetting.GetDlgItem(IDC_CMBDUPLEX)))->GetCurSel();//US<EFBFBD>Sb<EFBFBD>
configItem->Filter = ((CComboBox*)imageProcess.GetDlgItem(IDC_CMBFILTER))->GetCurSel();//d<EFBFBD>r<EFBFBD>
configItem->Gamma = ((CSliderCtrl*)brightSetting.GetDlgItem(IDC_SLDGAMMA))->GetPos();//gamma
int index_ss = ((CComboBox*)basicSetting.GetDlgItem(IDC_CMBSS))->GetCurSel();
configItem->PaperSize = getPaparSize(index_ss);//<EFBFBD>~ _{|<EFBFBD>W
configItem->Orentation = ((CComboBox*)feederPaper.GetDlgItem(IDC_CMBORENTATION))->GetCurSel();//<EFBFBD>el<EFBFBD><EFBFBD>eT
CString str_count;
((CEdit*)feederPaper.GetDlgItem(IDC_EDSCANNUM))->GetWindowText(str_count);
int count = atoi(str_count);
if (count==0)
{
((CEdit*)feederPaper.GetDlgItem(IDC_EDSCANNUM))->SetWindowTextA("1");
count=1;
}
str_count.ReleaseBuffer();
configItem->ScanCount = ((CButton*)feederPaper.GetDlgItem(IDC_RDCONSISTSCAN))->GetCheck() ? -1 : (configItem->Duplex==0? count :count*2);//kb<EFBFBD>c _pe
configItem->ScrewDetectLevel = ((CSliderCtrl*)feederPaper.GetDlgItem(IDC_SLDDETECTLEVEL))->GetPos();//jk<EFBFBD>e<EFBFBD>hKmI{<EFBFBD>~
configItem->EnOutHole=((CButton*)imageProcess.GetDlgItem(IDC_CKREMOVEHOLE))->GetCheck();//d<EFBFBD>zT[<EFBFBD>S(u'`
configItem->OutHoleRatio=((CSliderCtrl*)imageProcess.GetDlgItem(IDC_SLDOUTHOLE))->GetPos();//zT[d"}<03><>V<EFBFBD>k<EFBFBD>O<EFBFBD>|pe
configItem->EnMultiOutPutR=((CButton*)imageProcess.GetDlgItem(IDC_CKMULTIOUTPUT))->GetCheck();//YAmd<EFBFBD><EFBFBD>~
if (!updateDs)
{
return;
}
CTWAINContainerInt *pnCap = 0;
CTWAINContainerBool *pbCap = false;
CTWAINContainerFix32 *pfCap = 0;
CTWAINContainerFix32Range *pfRCap = 0;
CTWAINContainerFrame *pframeCap = 0;
bool ret=false;
if (0 == (pnCap = dynamic_cast<CTWAINContainerInt*>(ui->m_pDS->findCapability(ICAP_PIXELTYPE))))
{
//XdPrint("Could not get ICAP_PIXELTYPE\n");
return;
}
else
{
ret=pnCap->SetCurrent(configItem->Pixtype);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set ICAP_PIXELTYPE Error");
//}
}
if (0 == (pnCap = dynamic_cast<CTWAINContainerInt*>(ui->m_pDS->findCapability(ICAP_SUPPORTEDSIZES))))
{
//XdPrint("Could not get ICAP_SUPPORTEDSIZES\n");
return;
}
else
{
ret=pnCap->SetCurrent(configItem->PaperSize);
//CString sss;
//sss.Format("m_HardWareParams.PaperType is %d",configItem->PaperSize);
//std::string sbuffer = sss.GetBuffer();
//FileTools::write_log("D:/1.txt","set " + sbuffer);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set ICAP_SUPPORTEDSIZES Error");
//}
}
if (0 == (pnCap = dynamic_cast<CTWAINContainerInt*>(ui->m_pDS->findCapability(ICAP_ORIENTATION))))
{
//XdPrint("Could not get ICAP_ORIENTATION\n");
return;
}
else
{
ret=pnCap->SetCurrent(configItem->Orentation==4?TWOR_AUTOTEXT:configItem->Orentation);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set ICAP_ORIENTATION Error");
//}
}
if (0 == (pfCap = dynamic_cast<CTWAINContainerFix32*>(ui->m_pDS->findCapability(ICAP_XRESOLUTION))))
{
//XdPrint("Could not get ICAP_XRESOLUTION\n");
return;
}
else
{
ret=pfCap->SetCurrent(configItem->Resolution);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set ICAP_XRESOLUTION Error");
//}
}
// Y resolution the same.
if (0 == (pfCap = dynamic_cast<CTWAINContainerFix32*>(ui->m_pDS->findCapability(ICAP_YRESOLUTION))))
{
//XdPrint("Could not get ICAP_YRESOLUTION\n");
return;
}
else
{
ret=pfCap->SetCurrent(configItem->Resolution);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set ICAP_YRESOLUTION Error");
//}
}
if (0 == (pfRCap = dynamic_cast<CTWAINContainerFix32Range*>(ui->m_pDS->findCapability(ICAP_CONTRAST))))
{
//XdPrint("Could not get ICAP_CONTRAST\n");
return;
}
else
{
float value_Contrast=GetContrast(configItem->Contrast);
ret=pfRCap->SetCurrent(value_Contrast);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set ICAP_CONTRAST Error");
//}
}
if (0 == (pfRCap = dynamic_cast<CTWAINContainerFix32Range*>(ui->m_pDS->findCapability(ICAP_BRIGHTNESS))))
{
//XdPrint("Could not get ICAP_BRIGHTNESS\n");
return;
}
else
{
ret=pfRCap->SetCurrent(configItem->Brightness);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set ICAP_BRIGHTNESS Error");
//}
}
// Y resolution the same.
if (0 == (pfRCap = dynamic_cast<CTWAINContainerFix32Range*>(ui->m_pDS->findCapability(ICAP_GAMMA))))
{
//XdPrint("Could not get ICAP_GAMMA\n");
return;
}
else
{
ret=pfRCap->SetCurrent(configItem->Gamma/10);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set ICAP_GAMMA Error");
//}
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(ICAP_AUTOMATICCROPUSESFRAME))))
{
//XdPrint("Could not get ICAP_AUTOMATICCROPUSESFRAME\n");
return;
}
else
{
bool temp = (configItem->PaperSize) == TWSS_NONE;
ret=pbCap->SetCurrent(temp);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set ICAP_AUTOMATICCROPUSESFRAME Error");
//}
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(ICAP_AUTODISCARDBLANKPAGES))))
{
//XdPrint("Could not get ICAP_AUTODISCARDBLANKPAGES\n");
return;
}
else
{
bool temp = (configItem->Duplex) == 2;
configItem->EnDiscardBlank=temp;
ret=pbCap->SetCurrent(temp);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set ICAP_AUTODISCARDBLANKPAGES Error");
//}
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(0x8091))))
{
//XdPrint("Could not get ICAP_AUTODISCARDBLANKPAGES\n");
return;
}
else
{
bool temp = (configItem->Duplex) == 3;
configItem->EnDiscardBlankVince=temp;
ret=pbCap->SetCurrent(temp);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set 0x8091 Error");
//}
}
//kXEQўFh
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(0x8004))))
{
cerr << "Could not get ICAP_AUTOMATICCROPUSESFRAME" << endl;
return;
}
else
{
ret=pbCap->SetCurrent(configItem->EnFillBlack);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set 0x8004 Error");
//}
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(ICAP_AUTOMATICDESKEW))))
{
//XdPrint("Could not get ICAP_AUTOMATICDESKEW\n");
return;
}
else
{
ret=pbCap->SetCurrent(configItem->EnAutoDescrew);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set ICAP_AUTOMATICDESKEW Error");
//}
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(0x8005))))//̀b<EFBFBD><EFBFBD>el<EFBFBD>180
{
//XdPrint("Could not get jk<6A>e<EFBFBD>hKm\n");
return;
}
else
{
ret=pbCap->SetCurrent(configItem->EnBackRotate180);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set 0x8005 Error");
//}
}
#ifdef G200
2020-03-11 02:53:30 +00:00
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(0x8006))))//jk<EFBFBD>e<EFBFBD>hKm
{
//XdPrint("Could not get jk<6A>e<EFBFBD>hKm\n");
return;
}
else
{
ret=pbCap->SetCurrent(configItem->EnScrewDetect);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set 0x8006 Error");
//}
}
if (0 == (pfRCap = dynamic_cast<CTWAINContainerFix32Range*>(ui->m_pDS->findCapability(0x8021))))//jk<EFBFBD>e<EFBFBD>hKmI{<EFBFBD>~
{
//XdPrint("Could not get jk<6A>e<EFBFBD>hKmI{<7B>~\n");
return;
}
else
{
ret=pfRCap->SetCurrent((float)configItem->ScrewDetectLevel);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set 0x8021 Error");
//}
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(0x8090))))//ň<EFBFBD><EFBFBD><EFBFBD>hKm
{
//XdPrint("Could not get ň<><C588><EFBFBD>hKm\n");
return;
}
else
{
ret=pbCap->SetCurrent(configItem->EnBindingDetect);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set 0x8090 Error");
//}
}
#endif // G200
2020-03-11 02:53:30 +00:00
if (0==(pbCap=dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability((CAP_DOUBLEFEEDDETECTION)))))
{
cerr << "Could not get CAP_DOUBLEFEEDDETECTION" << endl;
}
else
{
ret=pbCap->SetCurrent(configItem->EnUltrasonicDetect);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set CAP_DOUBLEFEEDDETECTION Error");
//}
}
if (0 == (pnCap = dynamic_cast<CTWAINContainerInt*>(ui->m_pDS->findCapability(CAP_XFERCOUNT))))
{
//XdPrint("Could not get ICAP_SUPPORTEDSIZES\n");
return;
}
else
{
ret=pnCap->SetCurrent(configItem->ScanCount);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set CAP_XFERCOUNT Error");
//}
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(CAP_DUPLEXENABLED))))
{
//XdPrint("Could not get CAP_DUPLEX\n");
return;
}
else
{
ret= pbCap->SetCurrent(configItem->Duplex==0?FALSE:TRUE);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set CAP_DUPLEXENABLED Error");
//}
}
if (0 == (pnCap = dynamic_cast<CTWAINContainerInt*>(ui->m_pDS->findCapability(ICAP_FILTER))))
{
//XdPrint("Could not get ICAP_FILTER\n");
return;
}
else
{
ret=pnCap->SetCurrent(configItem->Filter);
//if (!ret)
//{
// FileTools::write_log("D:/1.txt","set ICAP_FILTER Error");
//}
}
if (0==(pbCap=dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(0x8018))))
{
return;
}
else
{
ret=pbCap->SetCurrent(configItem->EnOutHole);
}
if (0==(pfRCap=dynamic_cast<CTWAINContainerFix32Range*>(ui->m_pDS->findCapability(0x8092))))
{
return;
}
else
{
ret=pfRCap->SetCurrent((float)(configItem->OutHoleRatio));
}
if (0==(pbCap=dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(0x8026))))
{
return;
}
else
{
ret=pbCap->SetCurrent(configItem->EnMultiOutPutR);
}
}
void TwainUIDlg::UpdateListConfig()
{
((CListBox*)(GetDlgItem(IDC_LSTCONFIG)))->ResetContent();
if (cfi.size()>0)
{
cfi.clear();
}
cfi=getConfigFiles();
for (int i=0;i<cfi.size();i++)
{
((CListBox*)(GetDlgItem(IDC_LSTCONFIG)))->AddString(cfi[i].Caption.c_str());
}
if (cfi.size()<=0)
{
((CButton*)(GetDlgItem(IDC_BTNDELETCONFIG)))->EnableWindow(FALSE);
((CButton*)(GetDlgItem(IDC_BTNBACKUPCONFIG)))->EnableWindow(FALSE);
}
else
{
((CButton*)(GetDlgItem(IDC_BTNDELETCONFIG)))->EnableWindow(TRUE);
((CButton*)(GetDlgItem(IDC_BTNBACKUPCONFIG)))->EnableWindow(TRUE);
}
}
std::string TwainUIDlg::getSerialNum()
{
return ui->m_pDS->GetSerialNum();
}
std::string TwainUIDlg::getHardVersion()
{
return ui->m_pDS->GetFWVerison();
}
//////////////////////////////////////////////////////////////////////
/*<EFBFBD>f<EFBFBD>eUI*/
void TwainUIDlg::UpdateUI(CONFIGPARAMS configParams)
{
((CComboBox*)basicSetting.GetDlgItem(IDC_CMBCOLORTYPE))->SetCurSel(getColorModelIndex(configParams.Pixtype));
basicSetting.OnCbnSelchangeCmbcolortype();
((CButton*)brightSetting.GetDlgItem(IDC_CHKSELFCONTRAST))->SetCheck(configParams.EnAutoContrast);
((CButton*)imageProcess.GetDlgItem(IDC_CKAUTODESKREW))->SetCheck(configParams.EnAutoDescrew);
((CButton*)(imageProcess.GetDlgItem(IDC_CKFILLBLACKRECT)))->SetCheck(configParams.EnFillBlack);
((CButton*)feederPaper.GetDlgItem(IDC_CKBACKROTATION))->SetCheck(configParams.EnBackRotate180);
((CButton*)feederPaper.GetDlgItem(IDC_CKBINDINGDETECT))->SetCheck(configParams.EnBindingDetect);
((CButton*)feederPaper.GetDlgItem(IDC_CKULTRSONICDETECT))->SetCheck(configParams.EnUltrasonicDetect);
imageProcess.SetOutHoleValue(configParams.OutHoleRatio);
imageProcess.EnableOutHoleCheckChanged(configParams.EnOutHole);
imageProcess.SetMultiOutputEnable(configParams.Pixtype,configParams.EnMultiOutPutR);
int br_value = configParams.Brightness + 128;
((CSliderCtrl*)brightSetting.GetDlgItem(IDC_SLDBRIGTHNESS))->SetPos(br_value);
sprintf(strB,"%d",br_value);
((CStatic*)brightSetting.GetDlgItem(IDC_LBBRIGHTNESS))->SetWindowTextA(strB);
((CSliderCtrl*)brightSetting.GetDlgItem(IDC_SLDCONTRAST))->SetPos (configParams.Contrast+4);
sprintf(strC,"%d",(configParams.Contrast+4));
((CStatic*)brightSetting.GetDlgItem(IDC_LBCONTRAST))->SetWindowTextA(strC);
((CComboBox*)basicSetting.GetDlgItem(IDC_CMBRESLUTION))->SetCurSel(getResolutionIndex(configParams.Resolution));
((CComboBox*)basicSetting.GetDlgItem(IDC_CMBDUPLEX))->SetCurSel(configParams.Duplex);
if (configParams.Duplex==0)
{
((CButton*)feederPaper.GetDlgItem(IDC_CKBACKROTATION))->SetCheck(FALSE);
((CButton*)feederPaper.GetDlgItem(IDC_CKBACKROTATION))->EnableWindow(FALSE);
}
((CComboBox*)imageProcess.GetDlgItem(IDC_CMBFILTER))->SetCurSel(configParams.Filter);
if (configParams.Pixtype == 2)
{
((CComboBox*)imageProcess.GetDlgItem(IDC_CMBFILTER))->SetCurSel(0);
((CComboBox*)imageProcess.GetDlgItem(IDC_CMBFILTER))->EnableWindow(FALSE);
}
((CSliderCtrl*)brightSetting.GetDlgItem(IDC_SLDGAMMA))->SetPos(configParams.Gamma);
sprintf(strG, "%0.1f", configParams.Gamma / 10.0);
((CStatic*)brightSetting.GetDlgItem(IDC_LBGAMMA))->SetWindowTextA(strG);
((CComboBox*)basicSetting.GetDlgItem(IDC_CMBSS))->SetCurSel(getPaparSizeIndex(configParams.PaperSize));
if (configParams.ScanCount<=0)//ޏ<EFBFBD>~kb<EFBFBD>c
{
((CButton*)feederPaper.GetDlgItem(IDC_RDCONSISTSCAN))->SetCheck(TRUE);
((CButton*)feederPaper.GetDlgItem(IDC_RDSPECIFYSCANNUM))->SetCheck(FALSE);
((CEdit*)feederPaper.GetDlgItem(IDC_EDSCANNUM))->SetWindowTextA(_T("1"));
((CEdit*)feederPaper.GetDlgItem(IDC_EDSCANNUM))->EnableWindow(FALSE);
}
else//c<EFBFBD>[pe<EFBFBD>v
{
((CEdit*)feederPaper.GetDlgItem(IDC_EDSCANNUM))->EnableWindow(TRUE);
((CButton*)feederPaper.GetDlgItem(IDC_RDCONSISTSCAN))->SetCheck(FALSE);
((CButton*)feederPaper.GetDlgItem(IDC_RDSPECIFYSCANNUM))->SetCheck(TRUE);
CString str_count;
int tempcount;
if (configParams.Duplex==0)
{
tempcount= configParams.ScanCount;
}
else
{
tempcount= configParams.ScanCount/2;
}
str_count.Format("%d", tempcount);
((CEdit*)feederPaper.GetDlgItem(IDC_EDSCANNUM))->SetWindowTextA(str_count);
}
((CButton*)feederPaper.GetDlgItem(IDC_CKSKEWDETECT))->SetCheck(configParams.EnScrewDetect);
((CSliderCtrl*)feederPaper.GetDlgItem(IDC_SLDDETECTLEVEL))->SetPos(configParams.ScrewDetectLevel);
feederPaper.OnBnClickedCkskewdetect();
((CComboBox*)feederPaper.GetDlgItem(IDC_CMBORENTATION))->SetCurSel(configParams.Orentation);
//brightSetting.FlashWindow(TRUE);
}
int TwainUIDlg::getResolution(int index)
{
int result = 200;//؞<EFBFBD><EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s
switch (index)
{
case 0:
result = 100;
break;
case 1:
result = 150;
break;
case 2:
result = 200;
break;
case 3:
result = 240;
break;
case 4:
result = 300;
break;
default:
break;
}
return result;
}
//////////////////////////////////////////////////////////////////////
int TwainUIDlg::getPaparSize(int index)
{
int result = TWSS_A4;//؞<EFBFBD><EFBFBD>A4
if (index >= papersizelist.size())
return result;
result = papersizelist[index];
//switch (index)
//{
//case 0:
// result = TWSS_A3;
// break;
//case 1:
// result = TWSS_A4;
// break;
//case 2:
// result = TWSS_A4R;
// break;
//case 3:
// result = TWSS_A5;
// break;
//case 4:
// result = TWSS_A5R;
// break;
//case 5:
// result = TWSS_A6;
// break;
//case 6:
// result = TWSS_A6R;
// break;
//case 7:
// result = TWSS_B4;
// break;
//case 8:
// result = TWSS_B5;
// break;
//case 9:
// result = TWSS_B5R;
// break;
//case 10:
// result = TWSS_B6;
// break;
//case 11:
// result = TWSS_B6R;
// break;
//case 12:
// result = TWSS_USLETTER;
// break;
//case 13:
// result = LETTERR;
// break;
//case 14:
// result = DOUBLELETTER;
// break;
//case 15:
// result = TWSS_USLEGAL;
// break;
//case 16:
// result = TWSS_NONE;
// break;
//case 17:
// result = TWSS_MAXSIZE;
// break;
//default:
// break;
//}
2020-03-11 02:53:30 +00:00
return result;
}
int TwainUIDlg::getResolutionIndex(int resolution)
{
int result = 0;
int resulotions[RESOLUTIONCOUNT] = { RESOLUTION };
for (size_t i = 0; i < RESOLUTIONCOUNT; i++)
{
if (resulotions[i]==resolution)
{
result=i;
break;
}
}
return result;
}
int TwainUIDlg::getPaparSizeIndex(int papersize)
{
for (auto it = papersizelist.begin(); it!=papersizelist.end(); it++)
{
if (it->second == papersize)
return it->first;
}
return 1;
//int result = 1;
//int ss[TOTALPAPARTYPE] = { PAPARTYPE };
//for (size_t i = 0; i < TOTALPAPARTYPE; i++)
//{
// if (ss[i]==papersize)
// {
// result = i;
// break;
// }
//}
//return result;
2020-03-11 02:53:30 +00:00
}
int TwainUIDlg::getColorModel(int index)
{
int result = TWPT_GRAY;
switch (index)
{
case 0:
result = TWPT_RGB;
break;
case 2:
result = TWPT_BW;
default:
break;
}
return result;
}
int TwainUIDlg::getColorModelIndex(int pixtype)
{
return pixtype==2?0:(pixtype==1?1:2);
}
vector<CONFIGINFO> TwainUIDlg::getConfigFiles()
{
vector<CONFIGINFO> vc_cfi;
CFileFind find;
TCHAR cfFilePath[MAX_PATH]={0};
SHGetSpecialFolderPath(NULL,cfFilePath,CSIDL_LOCAL_APPDATA,TRUE);
_tcscat(cfFilePath,HUAGAO_SCAN);
_tcscat(cfFilePath,TWAIN_DATA_PATH);
CString filePath(cfFilePath);
BOOL isFind=find.FindFile(filePath+_TEXT("/*.json"));
while (isFind)
{
isFind=find.FindNextFileA();
if (find.IsDots())
{
continue;
}
else
{
CONFIGINFO cfi;
cfi.Caption=find.GetFileTitle();
cfi.SavePath=find.GetFilePath();
vc_cfi.push_back(cfi);
}
}
return vc_cfi;
}
/*
**Rh<EFBFBD> <EFBFBD><EFBFBD>by<EFBFBD><EFBFBD>S<EFBFBD>f<EFBFBD>N<EFBFBD>N**
*/
void TwainUIDlg::OnLbnSelchangeLstconfig()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
int index=-1;
index= ((CListBox*)(GetDlgItem(IDC_LSTCONFIG)))->GetCurSel();
if (index!=-1)
{
JsonConfig js;
//std::string savepath= cfi[index].SavePath;
std::vector<CONFIGPARAMS> vc_temp;
vc_temp=js.ReadJsonArrayFromFile(cfi[index].SavePath);
if (vc_temp.size()>0)
{
UpdateUI(vc_temp[0]);
}
}
}