twain3.0/huagao/CTwainUI.cpp

987 lines
38 KiB
C++
Raw Normal View History

2023-04-28 06:55:16 +00:00
// CTwainUI.cpp: ʵ<><CAB5><EFBFBD>ļ<EFBFBD>
//
#include "stdafx.h"
#include "CTwainUI.h"
#include "afxdialogex.h"
#include "resource.h"
#include "TabCtrlSSL.h"
#include "CBasicPage.h"
#include "CBrightnessPage.h"
#include "CFeedPaperPage.h"
#include "CImageProcPage.h"
#include "Device/PaperSize.h"
#include <list>
2022-05-24 12:05:47 +00:00
#include "Device/filetools.h"
#include "GscanJsonConfig.h"
2023-04-28 06:55:16 +00:00
// CTwainUI <20>Ի<EFBFBD><D4BB><EFBFBD>
IMPLEMENT_DYNAMIC(CTwainUI, CDialogEx)
CTwainUI::CTwainUI(TwGlue glue, GScanCap caps, std::string confirmtitle, std::string hardwareversion, std::string serialnum,std::string macadder, std::uint32_t mbversion ,CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_TWAINUI, pParent)
, m_tabCtrl(new CTabCtrlSSL())
, m_pageBrightness(new CBrightnessPage)
, m_pageFeedPaper(new CFeedPaperPage(glue))
, m_pageImageProc(new CImageProcPage)
, m_glue(glue)
, settings(new GScanCap(caps))
, m_confirmtitle(confirmtitle)
{
m_hardwareVersion = hardwareversion;
m_serialnum = serialnum;
2021-12-16 08:21:35 +00:00
m_mbversion = mbversion;
m_macadder = macadder;
}
CTwainUI::~CTwainUI()
{
2020-09-21 01:25:46 +00:00
m_pageBrightness.reset();
m_pageBasic.reset();
m_pageFeedPaper.reset();
m_pageImageProc.reset();
}
void CTwainUI::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_TAB, *m_tabCtrl);
}
BOOL CTwainUI::OnInitDialog()
{
CDialogEx::OnInitDialog();
// Setup the tab control
this->SetWindowText(TWAIN_NAME);
auto dataChangeFunction = [this]() {
2022-06-29 12:24:24 +00:00
if (m_pageBasic.get() && m_pageImageProc.get() && m_pageBrightness.get() && m_pageFeedPaper.get()) {
m_pageImageProc->ImageProcPageUpdate(m_pageBasic->m_cmBoxColorMode->GetCurSel(), m_pageBasic->m_cmBoxSS->GetCurSel(), m_pageBasic->m_cmBoxDuplex->GetCurSel(),
(getcombox_ss(m_pageBasic->m_cmBoxSS->GetCurSel()) == TwSS::USStatement) || (getcombox_ss(m_pageBasic->m_cmBoxSS->GetCurSel()) == TwSS::None), m_pageBasic->m_Slider_Dpi.m_iPosition);
m_pageFeedPaper->FeedPaperPageUpdate(m_pageBasic->m_cmBoxDuplex->GetCurSel());
m_pageImageProc->ImageAutoDescrewUpdate(m_pageBasic->m_cmBoxSS->GetCurSel());
//m_pageFeedPaper->FeedAutoDescrewUpdate(m_pageBasic->m_cmBoxSS->GetCurSel());
UpdateUi();
m_pageBasic->OnNMReleasedcaptureSliderdpi(nullptr, nullptr);
}
};
int nPageID = 0;
m_pageBasic.reset(new CBasicPage(dataChangeFunction));
m_pageBasic->Create(IDD_PAGEBASIC, this);
m_pageBasic->discardblank_percent = settings->discardblank_percent;
m_pageBasic->SetScannerInfo(m_hardwareVersion, m_serialnum, m_macadder);
2023-04-28 06:55:16 +00:00
m_tabCtrl->AddSSLPage(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), nPageID++, m_pageBasic.get());
m_pageBrightness->Create(IDD_PAGEBRIGHTNESS, this);
2023-04-28 06:55:16 +00:00
m_tabCtrl->AddSSLPage(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), nPageID++, m_pageBrightness.get());
m_pageImageProc->Create(IDD_PAGEIMGPROC, this);
2023-04-28 06:55:16 +00:00
m_tabCtrl->AddSSLPage(_T("ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), nPageID++, m_pageImageProc.get());
m_pageFeedPaper->Create(IDD_PAGEFEEDPAPER, this);
2023-04-28 06:55:16 +00:00
m_tabCtrl->AddSSLPage(_T("<EFBFBD><EFBFBD>ֽ"), nPageID++, m_pageFeedPaper.get());
CString title(m_confirmtitle.c_str());
this->GetDlgItem(IDC_CONFIRM)->SetWindowText(title);
2021-11-20 03:09:04 +00:00
#ifdef G200
2022-05-24 12:05:47 +00:00
if (m_hardwareVersion.size() > 9 && m_hardwareVersion.substr(2,2) == "39")
2021-12-16 08:21:35 +00:00
{
2022-05-24 12:05:47 +00:00
if ((m_hardwareVersion[5] == 'A' && atoi(m_hardwareVersion.substr(6, 4).c_str()) > 1209)|| (m_hardwareVersion[5] > 'A'))
{
2021-12-16 08:21:35 +00:00
if (m_mbversion >= 35211210)
setvisable_autopaper(true);
else
setvisable_autopaper(false);
}
else
setvisable_autopaper(false);
2022-05-24 12:05:47 +00:00
if ((m_hardwareVersion[5] == 'B' && atoi(m_hardwareVersion.substr(6, 4).c_str()) >= 412)||(m_hardwareVersion[5] > 'B'))
setvisable_fixedpaper(true);
else
setvisable_fixedpaper(false);
setvisable_dogear(true);
setvisable_size(true);
if ((m_hardwareVersion[5] == 'B' && atoi(m_hardwareVersion.substr(6, 4).c_str()) >= 505) || (m_hardwareVersion[5] > 'B'))
m_pageFeedPaper->GetDlgItem(IDC_BTNFEEDMODE)->ShowWindow(SW_SHOW);
2022-06-29 12:24:24 +00:00
if ((m_hardwareVersion[5] == 'B' && atoi(m_hardwareVersion.substr(6, 4).c_str()) >= 430) || (m_hardwareVersion[5] > 'B'))
m_pageBasic->m_Edit_Dpi.SetParams(100, 600, 10);
if ((m_hardwareVersion[5] == 'C' && atoi(m_hardwareVersion.substr(6, 4).c_str()) >= 103) || (m_hardwareVersion[5] > 'C'))
m_pageBasic->GetDlgItem(IDC_CKCOLORCAST)->ShowWindow(SW_SHOW);
else
{
((CButton*)m_pageBasic->GetDlgItem(IDC_CKCOLORCAST))->SetCheck(FALSE);
m_pageBasic->GetDlgItem(IDC_CKCOLORCAST)->ShowWindow(SW_HIDE);
}
2022-05-24 12:05:47 +00:00
}
else {
setvisable_dogear(false);
setvisable_size(false);
setvisable_autopaper(false);
setvisable_fixedpaper(false);
2022-06-29 12:24:24 +00:00
((CButton*)m_pageBasic->GetDlgItem(IDC_RDQUALITYPRIORITY))->ShowWindow(SW_HIDE);
((CButton*)m_pageBasic->GetDlgItem(IDC_RDSPEEDPRIORITY))->ShowWindow(SW_HIDE);
2021-12-16 08:21:35 +00:00
}
2021-11-20 03:09:04 +00:00
#else
2022-05-24 12:05:47 +00:00
#ifndef ANDROIDSERIAL
setvisable_dogear(true);
if (m_hardwareVersion.size() > 9 && m_hardwareVersion.substr(2,2) == "39")
{
if ((m_hardwareVersion[5] == 'B' && atoi(m_hardwareVersion.substr(6, 4).c_str()) > 422)||(m_hardwareVersion[5] > 'B')){
setvisable_autopaper(true);
}
else {
setvisable_autopaper(false);
}
if ((m_hardwareVersion[5] == 'C' && atoi(m_hardwareVersion.substr(6, 4).c_str()) >= 103) || (m_hardwareVersion[5] > 'C'))
m_pageBasic->GetDlgItem(IDC_CKCOLORCAST)->ShowWindow(SW_SHOW);
else
{
((CButton*)m_pageBasic->GetDlgItem(IDC_CKCOLORCAST))->SetCheck(FALSE);
m_pageBasic->GetDlgItem(IDC_CKCOLORCAST)->ShowWindow(SW_HIDE);
}
2022-05-24 12:05:47 +00:00
setvisable_dogear(true);
setvisable_size(true);
2022-06-29 12:24:24 +00:00
setvisable_fixedpaper(false);
m_pageBasic->m_Edit_Dpi.SetParams(100, 600, 10);
2022-05-24 12:05:47 +00:00
}
else
{
2022-06-29 12:24:24 +00:00
if (atoi(m_hardwareVersion.substr(4, 6).c_str()) >= 230130)
2022-06-29 12:24:24 +00:00
{
2022-05-24 12:05:47 +00:00
setvisable_size(true);
2022-06-29 12:24:24 +00:00
}
2022-05-24 12:05:47 +00:00
else
2022-06-29 12:24:24 +00:00
{
2022-05-24 12:05:47 +00:00
setvisable_size(false);
2022-06-29 12:24:24 +00:00
}
2022-06-29 12:24:24 +00:00
((CButton*)m_pageBasic->GetDlgItem(IDC_RDQUALITYPRIORITY))->ShowWindow(SW_HIDE);
((CButton*)m_pageBasic->GetDlgItem(IDC_RDSPEEDPRIORITY))->ShowWindow(SW_HIDE);
#ifdef G400
if (atoi(m_hardwareVersion.substr(4, 6).c_str()) >= 220117)
{
((CButton*)m_pageBasic->GetDlgItem(IDC_RDQUALITYPRIORITY))->ShowWindow(SW_SHOW);
((CButton*)m_pageBasic->GetDlgItem(IDC_RDSPEEDPRIORITY))->ShowWindow(SW_SHOW);
}
#elif defined(G300)
if (atoi(m_hardwareVersion.substr(4, 6).c_str()) >= 230130)
{
((CButton*)m_pageBasic->GetDlgItem(IDC_RDQUALITYPRIORITY))->ShowWindow(SW_SHOW);
((CButton*)m_pageBasic->GetDlgItem(IDC_RDSPEEDPRIORITY))->ShowWindow(SW_SHOW);
}
#endif
2022-06-29 12:24:24 +00:00
setvisable_dogear(false);
setvisable_autopaper(true);
2022-05-24 12:05:47 +00:00
setvisable_fixedpaper(false);
}
#else
2021-11-20 03:09:04 +00:00
setvisable_dogear(false);
2022-05-24 12:05:47 +00:00
setvisable_size(false);
2021-12-16 08:21:35 +00:00
setvisable_autopaper(false);
2022-05-24 12:05:47 +00:00
setvisable_fixedpaper(false);
2022-06-29 12:24:24 +00:00
((CButton*)m_pageBasic->GetDlgItem(IDC_RDQUALITYPRIORITY))->ShowWindow(SW_HIDE);
((CButton*)m_pageBasic->GetDlgItem(IDC_RDSPEEDPRIORITY))->ShowWindow(SW_HIDE);
2022-05-24 12:05:47 +00:00
#endif
#endif // G200
2022-05-24 12:05:47 +00:00
//setvisable_fixedpaper(false);
2022-06-29 12:24:24 +00:00
UpdateUI();
UpdateListConfig();
dataChangeFunction();
setvisable_sleepmode(false);
return true;
}
BEGIN_MESSAGE_MAP(CTwainUI, CDialogEx)
ON_BN_CLICKED(IDC_CONFIRM, &CTwainUI::OnBnClickedConfirm)
ON_BN_CLICKED(IDC_BTNDEFAULT, &CTwainUI::OnBnClickedBtndefault)
ON_BN_CLICKED(ID_CANCEL, &CTwainUI::OnBnClickedCancel)
ON_BN_CLICKED(IDC_BTNHELP, &CTwainUI::OnBnClickedBtnhelp)
ON_BN_CLICKED(IDC_BTNBACKUPCONFIG, &CTwainUI::OnBnClickedBtnbackupconfig)
ON_BN_CLICKED(IDC_BTNSAVECONFIG, &CTwainUI::OnBnClickedBtnsaveconfig)
ON_BN_CLICKED(IDC_BTNDELETCONFIG, &CTwainUI::OnBnClickedBtndeletconfig)
ON_BN_CLICKED(IDC_BTNRECOVERYCONFIG, &CTwainUI::OnBnClickedBtnrecoveryconfig)
ON_LBN_SELCHANGE(IDC_LSTCONFIG, &CTwainUI::OnLbnSelchangeLstconfig)
ON_WM_CLOSE()
2022-06-29 12:24:24 +00:00
ON_NOTIFY(NM_CLICK, IDC_TAB, &CTwainUI::OnNMClickTab)
END_MESSAGE_MAP()
void CTwainUI::OnBnClickedConfirm()
{
2023-04-28 06:55:16 +00:00
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2022-06-29 12:24:24 +00:00
OnNMClickTab(nullptr, nullptr);
CONFIGPARAMS cfg = { 0 };
UpDateScanParam(&cfg);
m_glue.m_scan(*settings);
}
void CTwainUI::OnBnClickedBtndefault()
{
2023-04-28 06:55:16 +00:00
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GscanJsonConfig js;
GScanCap cf = js.GetDefaultGscancapValue();
settings.reset(new GScanCap(cf));
UpdateUI();
}
void CTwainUI::OnBnClickedCancel()
{
2023-04-28 06:55:16 +00:00
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_glue.m_cancel();
}
void CTwainUI::OnBnClickedBtnhelp()
{
2023-04-28 06:55:16 +00:00
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
this->SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
TCHAR chmPath[MAX_PATH] = { 0 };
SHGetSpecialFolderPath(NULL, chmPath, CSIDL_WINDOWS, TRUE);
_tcscat(chmPath, CHM_DEFAULT_PATH);
int ret = (int)ShellExecute(NULL, _T("Open"), chmPath, NULL, NULL, SW_SHOWMAXIMIZED);
if (ret < 32)
2023-04-28 06:55:16 +00:00
MessageBox(ret == ERROR_FILE_NOT_FOUND ? _T("δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD>") : _T("<EFBFBD>򿪰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),
_T("<EFBFBD><EFBFBD>ʾ"), MB_OK | MB_ICONINFORMATION);
this->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
void CTwainUI::UpdateUI()
{
//!< basic page
2023-04-28 06:55:16 +00:00
m_pageBasic->m_cmBoxColorMode->SetCurSel(settings->automaticcolor ? 3 : get_map_key_by_value(colorModes, settings->pixtype));//!< <20><>ɫģʽ
//m_pageBasic->m_cmBoxResultion->SetCurSel(get_map_key_by_value(resolutions, settings->resolution_dst));//!< <20>ֱ<EFBFBD><D6B1><EFBFBD>
//m_pageBasic->m_Slider_Dpi.SetPos(settings->resolution_dst);
m_pageBasic->m_Edit_Dpi.SetValue((int)settings->resolution_dst);
2023-04-28 06:55:16 +00:00
m_pageBasic->m_cmBoxDuplex->SetCurSel(getCmbDuplexIndex());//!< <20><>˫<EFBFBD><CBAB>
m_pageBasic->m_cmBoxSS->SetCurSel(getPaparSizeIndex(settings->papertype, settings->paperAlign)); //!< ֽ<><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pageBasic->m_enableSizeCheck = settings->en_sizecheck == 1 ? TRUE : FALSE;//!< <20>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD>
m_pageBasic->m_bswitchfrontback = settings->is_switchfrontback ? TRUE : FALSE; //!< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2022-05-24 12:05:47 +00:00
((CButton*)m_pageBasic->GetDlgItem(IDC_RDQUALITYPRIORITY))->SetCheck(settings->is_high_imagequality);
((CButton*)m_pageBasic->GetDlgItem(IDC_RDSPEEDPRIORITY))->SetCheck(!settings->is_high_imagequality);
2021-12-16 08:21:35 +00:00
((CButton*)m_pageBasic->GetDlgItem(IDC_CKSPLIT))->SetCheck(settings->is_split);
2022-05-24 12:05:47 +00:00
((CButton*)m_pageBasic->GetDlgItem(IDC_CKFIXEDPAPER))->SetCheck(settings->en_fixedpaper);
((CButton*)m_pageBasic->GetDlgItem(IDC_CKCOLORCAST))->SetCheck(settings->pixtype == 2?settings->is_colorcast : FALSE);
#ifdef UV
m_pageBasic->m_bUV = settings->hardwarecaps.en_uv == 1 ? TRUE : FALSE;
#endif
m_pageBasic->UpdateData(FALSE);
if (getCmbDuplexIndex() == 2 || getCmbDuplexIndex() == 3)
m_pageBasic->GetDlgItem(IDC_BTNDISCARDSETTING)->EnableWindow(true);
else
m_pageBasic->GetDlgItem(IDC_BTNDISCARDSETTING)->EnableWindow(false);
//!< Page Breghtness
2023-04-28 06:55:16 +00:00
m_pageBrightness->m_cbAutoContrast = settings->is_autocontrast == TRUE ? TRUE : FALSE; //!< <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ȶԱȶ<D4B1>
int brt = GetMappingBrightnessValue(settings->brightness);
2023-04-28 06:55:16 +00:00
m_pageBrightness->m_Edit_Brightness.SetValue(brt); //!< <20><><EFBFBD><EFBFBD>
int crt = GetContrastLevel(settings->contrast);
2023-04-28 06:55:16 +00:00
m_pageBrightness->m_Edit_Contrast.SetValue(crt);//!<<3C>Աȶ<D4B1>
m_pageBrightness->m_Edit_Gamma.SetValue(settings->gamma); //!< gamma
m_pageBrightness->UpdateData(FALSE);
//!< Page Proc
//!
m_pageImageProc->noise = settings->noise;
m_pageImageProc->threshold = settings->AutoCrop_threshold;
m_pageImageProc->indent = settings->indent;
m_pageImageProc->is_convex = settings->is_convex;
m_pageBasic->discardblank_percent = settings->discardblank_percent;
((CButton*)m_pageImageProc->GetDlgItem(IDC_CKCROPMODEL))->SetCheck(settings->normalCrop);
2023-04-28 06:55:16 +00:00
m_pageImageProc->m_ckbFillBlack = settings->fillbackground == TRUE ? TRUE : FALSE;//<2F><><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD>
m_pageImageProc->m_ckbAutoDeskrew = settings->autodescrew ? TRUE : FALSE;//<2F>Զ<EFBFBD><D4B6><EFBFBD>ƫ
UpdateFilterCmbx();
if (settings->fillbackground || settings->autodescrew || settings->is_autocrop) {
m_pageImageProc->GetDlgItem(IDC_ADVANCEDSET)->EnableWindow(TRUE);
}
else {
m_pageImageProc->GetDlgItem(IDC_ADVANCEDSET)->EnableWindow(FALSE);
}
2020-07-07 01:55:33 +00:00
m_pageImageProc->m_cmBoxSharpen.SetCurSel(settings->sharpen);
//UpdateSharpenCmbx();
2023-04-28 06:55:16 +00:00
m_pageImageProc->m_ckbRemoveHole = settings->fillhole.is_fillhole == TRUE ? TRUE : FALSE;//<2F><><EFBFBD><EFBFBD><EFBFBD>׿<EFBFBD><D7BF><EFBFBD><EFBFBD><EFBFBD>
m_pageImageProc->m_edit_hole.SetValue(settings->fillhole.fillholeratio / 100.0);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
m_pageImageProc->m_edit_hole.EnableWindow(settings->fillhole.is_fillhole == TRUE ? TRUE : FALSE);
2022-09-20 01:08:11 +00:00
m_pageImageProc->GetDlgItem(IDC_BTNHOLE)->EnableWindow(settings->fillhole.is_fillhole == TRUE ? TRUE : FALSE);
m_pageImageProc->m_fillhole_up = settings->fillholeratio_up;
m_pageImageProc->m_fillhole_down = settings->fillholeratio_down;
m_pageImageProc->m_fillhole_left = settings->fillholeratio_left;
m_pageImageProc->m_fillhole_right = settings->fillholeratio_right;
m_pageImageProc->m_en_fillhole_up = settings->en_fillholeratio_up;
m_pageImageProc->m_en_fillhole_down = settings->en_fillholeratio_down;
m_pageImageProc->m_en_fillhole_left = settings->en_fillholeratio_left;
m_pageImageProc->m_en_fillhole_right = settings->en_fillholeratio_right;
m_pageImageProc->GetDlgItem(IDC_SLDOUTHOLE)->EnableWindow(m_pageImageProc->m_ckbRemoveHole);
m_pageImageProc->m_ckbfadeback = settings->fadeback;
m_pageImageProc->m_ckbHSVDetechNoise = settings->hsvFilter;
((CButton*)m_pageImageProc->GetDlgItem(IDC_CKBACKGROUNDSMOOTH))->SetCheck(m_pageImageProc->m_ckbfadeback);
//((CButton*)m_pageImageProc->GetDlgItem(IDC_CKBACKGROUNDSMOOTH))->EnableWindow(settings->pixtype == 2);
m_pageImageProc->m_edit_faderange.SetValue(settings->fadeback_range);
m_pageImageProc->m_slider_faderange.EnableWindow(settings->fadeback);
m_pageImageProc->m_edit_faderange.EnableWindow(settings->fadeback);
2023-04-28 06:55:16 +00:00
m_pageImageProc->m_ckbDetachNoise = settings->detachnoise.is_detachnoise == TRUE ? TRUE : FALSE;//<2F>ڰ׽<DAB0><D7BD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
((CButton*)m_pageImageProc->GetDlgItem(IDC_CHECKDETACHNOISE))->SetCheck(m_pageImageProc->m_ckbDetachNoise);
2021-01-22 07:37:46 +00:00
((CButton*)m_pageImageProc->GetDlgItem(IDC_CHECKDETACHNOISE))->EnableWindow(settings->pixtype != 2);
2023-04-28 06:55:16 +00:00
((CButton*)m_pageImageProc->GetDlgItem(IDC_CHMULTIPUT))->SetCheck(settings->pixtype != 2 ? FALSE : settings->en_multi_output); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2022-05-24 12:05:47 +00:00
m_pageImageProc->GetDlgItem(IDC_CHMULTIPUT)->EnableWindow(settings->pixtype != 2);
((CComboBox*)m_pageImageProc->GetDlgItem(IDC_CMBMULTIOUT))->SetCurSel(settings->pixtype != 2 ? 0 : (settings->en_multi_output ? (settings->multioutput < 0 ? 0 : settings->multioutput) : 0));
2022-05-24 12:05:47 +00:00
m_pageImageProc->GetDlgItem(IDC_CMBMULTIOUT)->EnableWindow(settings->pixtype != 2 ? FALSE : settings->en_multi_output);
m_pageImageProc->m_edit_detachnoise.SetValue(settings->detachnoise.detachnoise);
m_pageImageProc->m_slider_detachnoise.EnableWindow(settings->detachnoise.is_detachnoise == TRUE ? TRUE : FALSE);
m_pageImageProc->m_edit_detachnoise.EnableWindow(settings->detachnoise.is_detachnoise == TRUE ? TRUE : FALSE);
if (settings->pixtype == 2)
2023-04-28 06:55:16 +00:00
m_pageImageProc->m_ckbMultioutput = settings->multi_output_red == TRUE ? TRUE : FALSE;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else
2023-04-28 06:55:16 +00:00
m_pageImageProc->m_ckbMultioutput = FALSE;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2023-04-28 06:55:16 +00:00
m_pageImageProc->m_ckbHSVCorrect = settings->hsvcorrect == TRUE ? TRUE : FALSE;//<2F><><EFBFBD><EFBFBD><E2BFA8><EFBFBD><EFBFBD>
m_pageImageProc->m_ckbHSVDetechNoise = settings->hsvFilter == TRUE ? TRUE : FALSE;
2023-04-28 06:55:16 +00:00
m_pageImageProc->GetDlgItem(IDC_CKMULTIOUTPUT)->EnableWindow(settings->pixtype == 2);//<2F><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
((CButton*)m_pageImageProc->GetDlgItem(IDC_CKMULTIOUTPUT))->SetCheck(settings->pixtype == 2);
m_pageImageProc->UpdateData(FALSE);
m_pageFeedPaper->dogear.SetCheck(settings->is_dogeardetection);
//!< Page feed paper
if (settings->is_duplex || settings->is_autodiscradblank_normal || settings->is_autodiscradblank_vince)
{
2023-04-28 06:55:16 +00:00
m_pageFeedPaper->m_cbRotation = settings->is_backrotate180 == TRUE ? TRUE : FALSE;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת180
m_pageFeedPaper->GetDlgItem(IDC_CKBACKROTATION)->EnableWindow(settings->is_autotext ? FALSE : TRUE);
}
else
{
m_pageFeedPaper->GetDlgItem(IDC_CKBACKROTATION)->EnableWindow(FALSE);
m_pageFeedPaper->m_cbRotation = FALSE;
}
2023-04-28 06:55:16 +00:00
m_pageFeedPaper->m_cbStaple = settings->hardwarecaps.en_stapledetect == TRUE ? TRUE : FALSE;//װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pageFeedPaper->m_cbDoublePaper = settings->hardwarecaps.en_doublefeed == TRUE ? TRUE : FALSE;//˫<>ż<EFBFBD><C5BC><EFBFBD>
m_pageFeedPaper->m_cbSkew = settings->hardwarecaps.en_skrewdetect == TRUE ? TRUE : FALSE;//<2F><>б<EFBFBD><D0B1><EFBFBD><EFBFBD>
2021-12-16 08:21:35 +00:00
((CButton*)m_pageFeedPaper->GetDlgItem(IDC_CKAUTOPAPER))->SetCheck(settings->hardwarecaps.is_autopaper);
auto tmp_init_autopaper_timeout = {10,15,30,60};
auto tmp_autopaper_cmbindex = std::distance(tmp_init_autopaper_timeout.begin(),
std::find(tmp_init_autopaper_timeout.begin(), tmp_init_autopaper_timeout.end(), settings->autopaper_timeout));
((CComboBox*)m_pageFeedPaper->GetDlgItem(IDC_CMBAUTOPAPER))->SetCurSel(tmp_autopaper_cmbindex == tmp_init_autopaper_timeout.size() ? 0 : tmp_autopaper_cmbindex);
2023-04-28 06:55:16 +00:00
m_pageFeedPaper->m_cmBoxOrentation.SetCurSel(settings->is_autotext?4:getRotateCmbIndex(settings->imageRotateDegree));//<2F><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>;
m_pageFeedPaper->m_sldSkrewDetecttion.SetPos(m_pageFeedPaper->m_cbSkew?settings->hardwarecaps.skrewdetectlevel:3);//<2F><>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
2020-07-07 01:55:33 +00:00
m_pageFeedPaper->m_sldSkrewDetecttion.EnableWindow(m_pageFeedPaper->m_cbSkew);
2021-11-20 03:09:04 +00:00
m_pageFeedPaper->m_slider_dogear.SetPos(settings->dogeardistance);
m_pageFeedPaper->m_slider_dogear.EnableWindow(((CButton*)m_pageFeedPaper->GetDlgItem(IDC_DogEarDetection))->GetCheck());
((CComboBox*)m_pageFeedPaper->GetDlgItem(IDC_CBLOWPOWERMODE))->SetCurSel(settings->hardwarecaps.lowpowermode);
2023-04-28 06:55:16 +00:00
if (settings->scannum == 65535 || settings->hardwarecaps.is_autopaper)//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8>
{
m_pageFeedPaper->m_radioGroupScanMode = 0;
m_pageFeedPaper->GetDlgItem(IDC_EDSCANNUM)->SetWindowText(_T("1"));
m_pageFeedPaper->GetDlgItem(IDC_EDSCANNUM)->EnableWindow(FALSE);
}
2023-04-28 06:55:16 +00:00
else//ָ<><D6B8><EFBFBD><EFBFBD>Ŀ
{
m_pageFeedPaper->GetDlgItem(IDC_EDSCANNUM)->EnableWindow(TRUE);
m_pageFeedPaper->m_radioGroupScanMode = 1;
int tempcount = settings->scannum;
CString csCount;
csCount.Format(_T("%d"), settings->is_duplex==TRUE?tempcount/2: tempcount);
m_pageFeedPaper->GetDlgItem(IDC_EDSCANNUM)->SetWindowText(csCount);
}
if (settings->hardwarecaps.is_autopaper)
{
m_pageFeedPaper->GetDlgItem(IDC_CMBAUTOPAPER)->EnableWindow(TRUE);
m_pageFeedPaper->GetDlgItem(IDC_STATICAUTOPAPER)->EnableWindow(TRUE);
}
else
{
m_pageFeedPaper->GetDlgItem(IDC_CMBAUTOPAPER)->EnableWindow(FALSE);
m_pageFeedPaper->GetDlgItem(IDC_STATICAUTOPAPER)->EnableWindow(FALSE);
}
m_pageFeedPaper->UpdateData(FALSE);
m_pageBasic->updateCmbDuplex(TRUE);
m_pageImageProc->ImageProcPageUpdate(m_pageBasic->m_cmBoxColorMode->GetCurSel(), m_pageBasic->m_cmBoxSS->GetCurSel(), m_pageBasic->m_cmBoxDuplex->GetCurSel(),
2022-06-29 12:24:24 +00:00
(getcombox_ss(m_pageBasic->m_cmBoxSS->GetCurSel()) == TwSS::USStatement) || (getcombox_ss(m_pageBasic->m_cmBoxSS->GetCurSel()) == TwSS::None),m_pageBasic->m_Slider_Dpi.m_iPosition);
}
void CTwainUI::UpdateFilterCmbx()
{
if (settings->pixtype == 2)
{
m_pageImageProc->m_cmBoxFilter.SetCurSel(0);
m_pageImageProc->m_cmBoxFilter.EnableWindow(FALSE);
}
else
{
m_pageImageProc->m_cmBoxFilter.EnableWindow(TRUE);
int selectindex = 0;
if (settings->filter != 3)
{
selectindex = settings->filter == 0 ? 1 : (settings->filter == 1 ? 2 : 3);
}
else if(settings->enhance_color != Enchace_Color::Enhance_None)
{
selectindex = settings->enhance_color == Enchace_Color::Enhance_Red ? 4:(settings->enhance_color == Enchace_Color::Enhance_Green?5:6);
}
m_pageImageProc->m_cmBoxFilter.SetCurSel(selectindex);
}
}
void CTwainUI::UpdateSharpenCmbx()
{
m_pageImageProc->m_cmBoxSharpen.EnableWindow(settings->pixtype != 0);
m_pageImageProc->m_cmBoxSharpen.SetCurSel(settings->pixtype == 0?0: settings->sharpen);
}
int CTwainUI::getCmbDuplexIndex()
{
int ret = 1;
if (settings->is_autodiscradblank_normal)
ret = 2;
else if (settings->is_autodiscradblank_vince)
ret = 3;
else if (settings->en_fold)
ret = 4;
else if(settings->is_duplex==FALSE)
ret = 0;
return ret;
}
//int CTwainUI::getResolutionIndex(int resolution)
//{
// int result = 0;
// for (size_t i = 0; i < SUPPORTRESNUMS; i++)
// {
// if (Resolutions[i] == resolution)
// {
// result = i;
// break;
// }
// }
// return result;
//}
int CTwainUI::getPaparSizeIndex(int papersize, int orentation)
{
PaperStatus ps((unsigned int)papersize, (unsigned int)orentation);
int result = 0;
for (std::map<int, PaperStatus>::iterator it = paperStatusMap.begin(); it != paperStatusMap.end(); it++) {
if (it->second.Paper == ps.Paper && it->second.Orentate == ps.Orentate) {
return it->first;
}
}
return 0;
}
TwSS CTwainUI::getcombox_ss(int index)
{
for (std::map<int, PaperStatus>::iterator it = paperStatusMap.begin(); it != paperStatusMap.end(); it++) {
if (it->first == index) {
return (TwSS)it->second.Paper;
}
}
return TwSS::A3;
}
int CTwainUI::getColorModelIndex(int pixtype)
{
return pixtype == 2 ? 0 : (pixtype == 1 ? 1 : 2);
}
int CTwainUI::getRotateCmbIndex(float res)
{
int ret = 0;
if (res == 90.0f)
ret = 1;
else if (res == 180.0f)
ret = 2;
else if (res == 270.0f)
ret = 3;
return ret;
}
vector<CONFIGINFO> CTwainUI::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.FindNextFile();
if (find.IsDots())
{
continue;
}
else
{
CONFIGINFO cfi;
cfi.Caption = CW2A(find.GetFileTitle());
cfi.SavePath = CW2A(find.GetFilePath());
vc_cfi.push_back(cfi);
}
}
return vc_cfi;
}
static int WndCtrl2i(const CWnd* wnd)
{
CString valText;
wnd->GetWindowText(valText);
return _ttoi(valText);
}
static float WndCtrl2f(const CWnd* wnd)
{
CString valText;
wnd->GetWindowText(valText);
return (float)_ttof(valText);
}
template<typename T>
static T* GetCtrl(const CWnd* wnd, int nID)
{
return wnd->GetDlgCtrlID(nID);
}
//////////////////////////////////////////////////////////////////////
2023-04-28 06:55:16 +00:00
/*<2A><>UI<55><49>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>*/
void CTwainUI::UpDateScanParam(PCONFIGPARAMS configItem, bool updateDs)
{
//!< Page Basic
m_pageBasic->UpdateData();
2023-04-28 06:55:16 +00:00
configItem->Pixtype = m_pageBasic->m_cmBoxColorMode->GetCurSel() == 3 ? 0 : m_pageBasic->m_cmBoxColorMode->GetCurSel();//!< <20><>ɫģʽ index
configItem->EnSizeCheck = m_pageBasic->m_enableSizeCheck;
2023-04-28 06:55:16 +00:00
//configItem->Resolution = m_pageBasic->m_cmBoxResultion->GetCurSel();//!< <20>ֱ<EFBFBD><D6B1><EFBFBD> index
configItem->Resolution = m_pageBasic->m_Slider_Dpi.m_iPosition;
2023-04-28 06:55:16 +00:00
configItem->Duplex = m_pageBasic->m_cmBoxDuplex->GetCurSel();//!< <20><>˫<EFBFBD><CBAB>
configItem->PaperSize = m_pageBasic->m_cmBoxSS->GetCurSel();//!< ֽ<><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> index
configItem->EnSwitchFrontBack = m_pageBasic->m_bswitchfrontback == TRUE ? true : false;
2022-05-24 12:05:47 +00:00
settings->is_high_imagequality = ((CButton*)m_pageBasic->GetDlgItem(IDC_RDQUALITYPRIORITY))->GetCheck();
2023-04-28 06:55:16 +00:00
configItem->LowPowerMode = ((CComboBox*)m_pageFeedPaper->GetDlgItem(IDC_CBLOWPOWERMODE))->GetCurSel();//!<<3C><><EFBFBD><EFBFBD>ģʽ
PaperStatus page = paperStatusMap[configItem->PaperSize];
configItem->EnAutoCrop = page.Paper == TwSS::None;
2023-04-28 06:55:16 +00:00
configItem->EnDiscardBlank = configItem->Duplex == 2;//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ǿհ<C7BF>ҳͨ<D2B3><CDA8>
configItem->EnDiscardBlankVince = configItem->Duplex == 3;//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ǿհ<C7BF>ҳ<EFBFBD><D2B3>Ʊ
configItem->EnFlod = configItem->Duplex == 4;
#ifdef UV
configItem->EnUVModel = m_pageBasic->m_bUV;
#endif
2023-04-28 06:55:16 +00:00
//configItem->DBlank_AreaNum = m_pageBasic->AreaNum;//!< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//configItem->DBlank_DevnMax = m_pageBasic->DevnMax;//!< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
//!< Page Breghtness
m_pageBrightness->UpdateData();
2023-04-28 06:55:16 +00:00
configItem->EnAutoContrast = m_pageBrightness->m_cbAutoContrast; //!< <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ȶԱȶ<D4B1>
configItem->Brightness = (WndCtrl2i(&(m_pageBrightness->m_Edit_Brightness)) - 128)*(2000.0 / 254.0); //!< <20><><EFBFBD><EFBFBD>
int crtvalue = WndCtrl2i(&(m_pageBrightness->m_Edit_Contrast)) - 4;
2023-04-28 06:55:16 +00:00
configItem->Contrast = GetContrast(crtvalue);//!<<3C>Աȶ<D4B1>
configItem->Gamma = WndCtrl2f(&(m_pageBrightness->m_Edit_Gamma)); //!< gamma
//!< Page Proc
m_pageImageProc->UpdateData();
2023-04-28 06:55:16 +00:00
configItem->EnFillBlack = m_pageImageProc->m_ckbFillBlack;//<2F><><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD>
configItem->EnAutoDescrew = m_pageImageProc->m_ckbAutoDeskrew;//<2F>Զ<EFBFBD><D4B6><EFBFBD>ƫ
configItem->Filter = m_pageImageProc->m_cmBoxFilter.GetCurSel();//<2F><>ɫ
configItem->Sharpen = m_pageImageProc->m_cmBoxSharpen.GetCurSel();//<2F><><EFBFBD><EFBFBD>
configItem->EnOutHole = m_pageImageProc->m_ckbRemoveHole;//<2F><><EFBFBD><EFBFBD><EFBFBD>׿<EFBFBD><D7BF><EFBFBD><EFBFBD><EFBFBD>
configItem->OutHoleRatio = WndCtrl2f(&(m_pageImageProc->m_edit_hole)) * 100;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
configItem->EnMultiOutPutR = m_pageImageProc->m_ckbMultioutput;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
configItem->EnHsvCorrect = m_pageImageProc->m_ckbHSVCorrect;//<2F><><EFBFBD><EFBFBD><E2BFA8><EFBFBD><EFBFBD>
configItem->EnHsvFilterDetechNoise = m_pageImageProc->m_ckbHSVDetechNoise;
//!< Page feed paper
m_pageFeedPaper->UpdateData();
2023-04-28 06:55:16 +00:00
configItem->EnBackRotate180 = m_pageFeedPaper->m_cbRotation;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת180
configItem->EnBindingDetect = m_pageFeedPaper->m_cbStaple;//װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
configItem->EnUltrasonicDetect = m_pageFeedPaper->m_cbDoublePaper;//˫<>ż<EFBFBD><C5BC><EFBFBD>
configItem->EnScrewDetect = m_pageFeedPaper->m_cbSkew;//<2F><>б<EFBFBD><D0B1><EFBFBD><EFBFBD>
configItem->Orentation = m_pageFeedPaper->m_cmBoxOrentation.GetCurSel();//<2F><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
int count = WndCtrl2i(&(m_pageFeedPaper->m_editNum));
if (count == 0)
{
m_pageFeedPaper->GetDlgItem(IDC_EDSCANNUM)->SetWindowText(_T("1"));
count = 1;
}
configItem->ScanCount = (m_pageFeedPaper->m_radioGroupScanMode == 0) ? -1 : count;
2023-04-28 06:55:16 +00:00
configItem->ScrewDetectLevel = m_pageFeedPaper->m_sldSkrewDetecttion.GetPos();//<2F><>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
if (!updateDs)
return;
settings->automaticcolor = m_pageBasic->m_cmBoxColorMode->GetCurSel() == 3 ? 1 : 0;
settings->pixtype = colorModes[configItem->Pixtype];
settings->hardwarecaps.capturepixtype = settings->pixtype == 2 ? 2 : settings->pixtype;
PaperStatus paper = paperStatusMap[configItem->PaperSize];
settings->papertype = paper.Paper;
settings->paperAlign = (PaperAlign)paper.Orentate;
settings->en_sizecheck = configItem->EnSizeCheck;
2022-05-24 12:05:47 +00:00
settings->en_fixedpaper = ((CButton*)m_pageBasic->GetDlgItem(IDC_CKFIXEDPAPER))->GetCheck();
//settings->resolution_dst = Resolutions[configItem->Resolution];
settings->resolution_dst = configItem->Resolution;
settings->resolution_native = 200.0f;
2021-12-16 08:21:35 +00:00
settings->is_split = ((CButton*)m_pageBasic->GetDlgItem(IDC_CKSPLIT))->GetCheck();
settings->is_colorcast = ((CButton*)m_pageBasic->GetDlgItem(IDC_CKCOLORCAST))->GetCheck();
settings->is_switchfrontback = configItem->EnSwitchFrontBack ? 1 : 0;
//float value_Contrast = GetContrast(configItem->Contrast);
settings->contrast = configItem->Contrast;
settings->brightness = (configItem->Brightness);
settings->gamma = (configItem->Gamma);
settings->normalCrop = ((CButton*)m_pageImageProc->GetDlgItem(IDC_CKCROPMODEL))->GetCheck();
settings->is_autocrop = paper.Paper == TwSS::None;
settings->is_duplex = configItem->Duplex >= 1;
settings->is_autodiscradblank_normal = configItem->Duplex == 2;
settings->is_autodiscradblank_vince = configItem->Duplex == 3;
//settings->areanum = configItem->DBlank_AreaNum;
//settings->devnmax = configItem->DBlank_DevnMax;
settings->discardblank_percent = m_pageBasic->discardblank_percent;
#ifdef UV
settings->hardwarecaps.en_uv = configItem->EnUVModel;
#endif
2023-04-28 06:55:16 +00:00
//<2F><><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD>
settings->fillbackground = configItem->EnFillBlack;
settings->autodescrew = configItem->EnAutoDescrew;
if (configItem->Orentation <= 3) {
settings->imageRotateDegree = rotateDegrees[configItem->Orentation];
}
else {
settings->imageRotateDegree = 0.0f;
}
settings->AutoCrop_threshold = m_pageImageProc->threshold;
settings->noise = m_pageImageProc->noise;
settings->indent = m_pageImageProc->indent;
settings->is_convex = m_pageImageProc->is_convex;
settings->is_autotext = configItem->Orentation == 4;
settings->is_backrotate180 =configItem->EnBackRotate180;
settings->is_dogeardetection = m_pageFeedPaper->dogear.GetCheck();
settings->hardwarecaps.lowpowermode = (LowPowerMode)configItem->LowPowerMode;
settings->hardwarecaps.en_skrewdetect = configItem->EnScrewDetect;
settings->hardwarecaps.skrewdetectlevel = (int)configItem->ScrewDetectLevel;
settings->hardwarecaps.en_stapledetect = configItem->EnBindingDetect;
2021-12-16 08:21:35 +00:00
settings->hardwarecaps.is_autopaper = ((CButton*)m_pageFeedPaper->GetDlgItem(IDC_CKAUTOPAPER))->GetCheck();
CString tmp_autopaper_timeout;
m_pageFeedPaper->GetDlgItem(IDC_CMBAUTOPAPER)->GetWindowTextW(tmp_autopaper_timeout);
settings->autopaper_timeout = _wtoi(tmp_autopaper_timeout);
settings->hardwarecaps.en_doublefeed = configItem->EnUltrasonicDetect;
2021-11-20 03:09:04 +00:00
settings->dogeardistance = m_pageFeedPaper->m_slider_dogear.GetPos();
settings->en_fold = configItem->EnFlod ? 1 : 0;
if (configItem->ScanCount == -1)
settings->scannum = configItem->ScanCount;
else {
2023-04-28 06:55:16 +00:00
if (configItem->Duplex == 0)//<2F><><EFBFBD><EFBFBD>
settings->scannum = configItem->ScanCount;
else {
settings->scannum = configItem->ScanCount * 2;
}
}
if (configItem->Filter) {
if (configItem->Filter <= 3) {
settings->filter = (byte)filterMaps[configItem->Filter];
settings->enhance_color = (byte)EnchaceColor::Enhance_None;
}
else {
2023-04-28 06:55:16 +00:00
settings->filter = 3;//<2F><><EFBFBD><EFBFBD>ɫ
settings->enhance_color = (byte)filterMaps[configItem->Filter];
}
}
else {
settings->filter = 3;
settings->enhance_color = (byte)EnchaceColor::Enhance_None;
}
settings->sharpen = configItem->Sharpen;
if (configItem->Filter != 0 || configItem->EnMultiOutPutR)
settings->hardwarecaps.capturepixtype = TWPT_RGB;
settings->detachnoise.is_detachnoise = m_pageImageProc->m_ckbDetachNoise;
settings->detachnoise.detachnoise = m_pageImageProc->m_slider_detachnoise.m_iPosition;
settings->fadeback = m_pageImageProc->m_ckbfadeback;
settings->fadeback_range = m_pageImageProc->m_slider_faderange.m_iPosition;
settings->fillhole.is_fillhole = configItem->EnOutHole;
settings->fillhole.fillholeratio = configItem->OutHoleRatio;
2022-09-20 01:08:11 +00:00
settings->fillholeratio_up = m_pageImageProc->m_fillhole_up;
settings->fillholeratio_down = m_pageImageProc->m_fillhole_down;
settings->fillholeratio_left = m_pageImageProc->m_fillhole_left;
settings->fillholeratio_right = m_pageImageProc->m_fillhole_right;
settings->en_fillholeratio_up = m_pageImageProc->m_en_fillhole_up;
settings->en_fillholeratio_down = m_pageImageProc->m_en_fillhole_down;
settings->en_fillholeratio_left = m_pageImageProc->m_en_fillhole_left;
settings->en_fillholeratio_right = m_pageImageProc->m_en_fillhole_right;
settings->multi_output_red = configItem->EnMultiOutPutR;
2022-05-24 12:05:47 +00:00
settings->en_multi_output = ((CButton*)m_pageImageProc->GetDlgItem(IDC_CHMULTIPUT))->GetCheck();
settings->multioutput = ((CComboBox*)m_pageImageProc->GetDlgItem(IDC_CMBMULTIOUT))->GetCurSel();
settings->hsvcorrect = configItem->EnHsvCorrect;
settings->hsvFilter = configItem->EnHsvFilterDetechNoise;
2020-04-03 01:31:18 +00:00
#ifdef REAL300DPI
settings->resolution_native = settings->resolution_dst > 240.0f ? 300.0f : 200.0f;
#else // REAL300DPI
settings->resolution_native = 200.0f;
#endif
if (settings->pixtype == TWPT_BW)
//{
// if (settings->filter == 3 && settings->enhance_color <=1)
// {
// settings->enhance_color = Enchace_Color::Enhance_Red;
// settings->filter = 3;//none
// }
//}
UpdateUi();
}
void CTwainUI::UpdateListConfig()
{
((CListBox*)(GetDlgItem(IDC_LSTCONFIG)))->ResetContent();
if (cfi.size() > 0)
{
cfi.clear();
}
cfi = getConfigFiles();
for (int i = 0; i < cfi.size(); i++)
{
CString a;
a = cfi[i].Caption.c_str();
((CListBox*)(GetDlgItem(IDC_LSTCONFIG)))->AddString(a);
}
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);
}
}
void CTwainUI::GetGScanCap(GScanCap & cap)
{
cap = *settings;
}
void CTwainUI::UpdateUi()
{
m_pageImageProc->m_cmBoxFilter.EnableWindow((m_pageBasic->m_cmBoxColorMode->GetCurSel() != 0) && (m_pageBasic->m_cmBoxColorMode->GetCurSel() != 3));
INT dupindex = m_pageBasic->m_cmBoxDuplex->GetCurSel();
BOOL enableback = dupindex == 0 || dupindex == 4;
if ((dupindex==0)||(dupindex==4))
{
((CButton*)(m_pageFeedPaper->GetDlgItem(IDC_CKBACKROTATION)))->SetCheck(FALSE);
m_pageFeedPaper->GetDlgItem(IDC_CKBACKROTATION)->EnableWindow(FALSE);
}
else
m_pageFeedPaper->GetDlgItem(IDC_CKBACKROTATION)->EnableWindow(m_pageFeedPaper->m_cmBoxOrentation.GetCurSel()==4? FALSE:TRUE);
if (dupindex == 4) {
((CButton*)m_pageImageProc->GetDlgItem(IDC_CKAUTODESKREW))->SetCheck(TRUE);
((CButton*)m_pageImageProc->GetDlgItem(IDC_CKAUTODESKREW))->EnableWindow(FALSE);
}
else
((CButton*)m_pageImageProc->GetDlgItem(IDC_CKAUTODESKREW))->EnableWindow(TRUE);
m_pageImageProc->GetDlgItem(IDC_SLDOUTHOLE)->EnableWindow(((CButton*)m_pageImageProc->GetDlgItem(IDC_CKREMOVEHOLE))->GetCheck() == TRUE);
m_pageFeedPaper->GetDlgItem(IDC_SLDDETECTLEVEL)->EnableWindow(((CButton*)m_pageFeedPaper->GetDlgItem(IDC_CKSKEWDETECT))->GetCheck() == TRUE);
m_pageImageProc->GetDlgItem(IDC_CKMULTIOUTPUT)->EnableWindow(m_pageBasic->m_cmBoxColorMode->GetCurSel() == 0);
if(m_pageBasic->m_cmBoxColorMode->GetCurSel() != 0)
((CButton*)m_pageImageProc->GetDlgItem(IDC_CKMULTIOUTPUT))->SetCheck(FALSE);
}
void CTwainUI::setvisable_size(bool flag)
{
m_pageBasic->GetDlgItem(IDC_CKBSIZEDETECT)->ShowWindow(flag?SW_SHOW:SW_HIDE);
if(!flag)
((CButton*)m_pageBasic->GetDlgItem(IDC_CKBSIZEDETECT))->SetCheck(false);
}
void CTwainUI::setvisable_sleepmode(bool flag)
{
m_pageFeedPaper->GetDlgItem(IDC_STATICLOWPM)->ShowWindow(flag ? SW_SHOW : SW_HIDE);
m_pageFeedPaper->GetDlgItem(IDC_CBLOWPOWERMODE)->ShowWindow(flag ? SW_SHOW : SW_HIDE);
if (!flag)
((CComboBox*)m_pageFeedPaper->GetDlgItem(IDC_CBLOWPOWERMODE))->SetCurSel(0);
}
2021-11-20 03:09:04 +00:00
void CTwainUI::setvisable_dogear(bool flag)
{
m_pageFeedPaper->GetDlgItem(IDC_DogEarDetection)->ShowWindow(flag ? SW_SHOW : SW_HIDE);
m_pageFeedPaper->GetDlgItem(IDC_SLIDER_DOGEAR)->ShowWindow(flag ? SW_SHOW : SW_HIDE);
m_pageFeedPaper->GetDlgItem(IDC_LBSDL2)->ShowWindow(flag ? SW_SHOW : SW_HIDE);
m_pageFeedPaper->GetDlgItem(IDC_LBSDR2)->ShowWindow(flag ? SW_SHOW : SW_HIDE);
if (!flag)
((CButton*)m_pageFeedPaper->GetDlgItem(IDC_DogEarDetection))->SetCheck(false);
}
2021-12-16 08:21:35 +00:00
void CTwainUI::setvisable_autopaper(bool flag)
{
((CButton*)m_pageFeedPaper->GetDlgItem(IDC_CKAUTOPAPER))->ShowWindow(flag ? SW_SHOW : SW_HIDE);
m_pageFeedPaper->GetDlgItem(IDC_STATICAUTOPAPER)->ShowWindow(flag ? SW_SHOW : SW_HIDE);
m_pageFeedPaper->GetDlgItem(IDC_CMBAUTOPAPER)->ShowWindow(flag ? SW_SHOW : SW_HIDE);
2021-12-16 08:21:35 +00:00
if (!flag)
((CButton*)m_pageFeedPaper->GetDlgItem(IDC_CKAUTOPAPER))->SetCheck(false);
}
2022-05-24 12:05:47 +00:00
void CTwainUI::setvisable_fixedpaper(bool flag)
{
((CButton*)m_pageBasic->GetDlgItem(IDC_CKFIXEDPAPER))->ShowWindow(flag ? SW_SHOW : SW_HIDE);
if (!flag)
((CButton*)m_pageBasic->GetDlgItem(IDC_CKFIXEDPAPER))->SetCheck(false);
}
void CTwainUI::EnableID_OKorID_Cancel(bool enable)
{
GetDlgItem(IDC_CONFIRM)->EnableWindow(enable);
GetDlgItem(ID_CANCEL)->EnableWindow(enable);
GetDlgItem(IDC_BTNHELP)->EnableWindow(enable);
GetDlgItem(IDC_BTNDEFAULT)->EnableWindow(enable);
GetDlgItem(IDC_TAB)->EnableWindow(enable);
GetDlgItem(IDC_GROUP)->EnableWindow(enable);
}
void CTwainUI::OnBnClickedBtnbackupconfig()
{
2023-04-28 06:55:16 +00:00
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString csFilters = _T("Json file(*.json)\0");
2023-04-28 06:55:16 +00:00
CFileDialog cfd(FALSE, _T("json"), _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ"));
cfd.m_ofn.lpstrTitle = _T("");
cfd.m_ofn.lpstrFilter = csFilters;
this->SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
GscanJsonConfig js;
if (IDOK == cfd.DoModal())
{
vector<GScanCap> vc_tempOut;
std::vector<CONFIGINFO> temp_cfi = getConfigFiles();
for (int i = 0; i < temp_cfi.size(); i++)
{
vector<GScanCap> vc_item = js.ReadGscanCapsVector(temp_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 = (CW2A)cfd.GetPathName();
js.WriteJsonArrayToFile(vc_tempOut, path);
}
}
this->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
void CTwainUI::OnBnClickedBtnsaveconfig()
{
2023-04-28 06:55:16 +00:00
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CSaveConfigDlg sfd(this);
sfd.DoModal();
}
void CTwainUI::OnBnClickedBtndeletconfig()
{
2023-04-28 06:55:16 +00:00
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (MessageBox(TEXT("ȷ<EFBFBD><EFBFBD>Ҫɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), TEXT("<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>"), MB_YESNO | MB_ICONQUESTION) == IDYES)
{
int cursel = -1;
cursel = ((CListBox*)(GetDlgItem(IDC_LSTCONFIG)))->GetCurSel();
if (cursel != -1)
{
CFile file;
CString csFile;
csFile = cfi[cursel].SavePath.c_str();
file.Remove(csFile);
UpdateListConfig();
}
}
}
void CTwainUI::OnBnClickedBtnrecoveryconfig()
{
2023-04-28 06:55:16 +00:00
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
this->SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
2023-04-28 06:55:16 +00:00
if (MessageBox(TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>,<2C><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD><D1B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), TEXT("<EFBFBD>ָ<EFBFBD>"), MB_YESNO | MB_ICONQUESTION) == IDYES)
{
GscanJsonConfig js;
CFileDialog ofd(TRUE,
_T(".json"),
NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
_TEXT("Json Files (*.json)|*.json||)"),
NULL);
for (int i = 0; i < cfi.size(); i++)
{
DeleteFile((LPCWSTR)cfi[i].SavePath.c_str());
}
cfi.clear();
if (IDOK == ofd.DoModal())
{
std::string path = (CW2A)ofd.GetPathName();
vector<GScanCap> vc = js.ReadGscanCapsVector(path);
for (int i = 0; i < vc.size(); i++)
{
// js.WriteJsonArrayToFile(vc[i],vc[i].SavePath);
vector<GScanCap> vc_item;
vc_item.push_back(vc[i]);
js.WriteJsonArrayToFile(vc_item, vc[i].SavePath);
}
UpdateListConfig();
}
}
this->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
void CTwainUI::OnLbnSelchangeLstconfig()
{
2023-04-28 06:55:16 +00:00
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int index = -1;
index = ((CListBox*)(GetDlgItem(IDC_LSTCONFIG)))->GetCurSel();
if (index != -1)
{
GscanJsonConfig js;
//std::string savepath= cfi[index].SavePath;
std::vector<GScanCap> vc_temp;
vc_temp = js.ReadGscanCapsVector(cfi[index].SavePath);
if (vc_temp.size() > 0)
{
settings.reset(new GScanCap(vc_temp[0]));
UpdateUI();
}
}
}
void CTwainUI::OnClose()
{
2023-04-28 06:55:16 +00:00
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
m_glue.m_cancel();
}
2020-09-21 01:25:46 +00:00
LRESULT CTwainUI::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
2023-04-28 06:55:16 +00:00
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>ר<EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>
2020-09-21 01:25:46 +00:00
return CDialogEx::WindowProc(message, wParam, lParam);
}
2022-06-29 12:24:24 +00:00
void CTwainUI::OnNMClickTab(NMHDR* pNMHDR, LRESULT* pResult)
{
2023-04-28 06:55:16 +00:00
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2022-06-29 12:24:24 +00:00
//*pResult = 0;
m_pageImageProc->ImageProcPageUpdate(m_pageBasic->m_cmBoxColorMode->GetCurSel(), m_pageBasic->m_cmBoxSS->GetCurSel(), m_pageBasic->m_cmBoxDuplex->GetCurSel(),
(getcombox_ss(m_pageBasic->m_cmBoxSS->GetCurSel()) == TwSS::USStatement) || (getcombox_ss(m_pageBasic->m_cmBoxSS->GetCurSel()) == TwSS::None),
m_pageBasic->m_Slider_Dpi.m_iPosition);
}