2020-03-11 01:58:06 +00:00
|
|
|
|
// CImageProcPage.cpp: 实现文件
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
#include "CImageProcPage.h"
|
|
|
|
|
#include "afxdialogex.h"
|
|
|
|
|
#include "resource.h"
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static std::vector<CString> filters = {
|
|
|
|
|
_T("不除色"),
|
|
|
|
|
_T("除红色"),
|
|
|
|
|
_T("除绿色"),
|
|
|
|
|
_T("除蓝色"),
|
|
|
|
|
_T("红色增强"),
|
|
|
|
|
_T("绿色增强"),
|
|
|
|
|
_T("蓝色增强")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static std::vector<CString> sharpens = {
|
|
|
|
|
_T("无"),
|
|
|
|
|
_T("锐化"),
|
|
|
|
|
_T("进一步锐化"),
|
|
|
|
|
_T("模糊"),
|
|
|
|
|
_T("进一步模糊")
|
|
|
|
|
};
|
|
|
|
|
// CImageProcPage 对话框
|
|
|
|
|
|
|
|
|
|
IMPLEMENT_DYNAMIC(CImageProcPage, CTabPageSSL)
|
|
|
|
|
|
|
|
|
|
CImageProcPage::CImageProcPage(CWnd* pParent /*=nullptr*/)
|
|
|
|
|
: CTabPageSSL(IDD_PAGEIMGPROC, pParent)
|
|
|
|
|
, m_ckbFillBlack(FALSE)
|
|
|
|
|
, m_ckbAutoDeskrew(FALSE)
|
|
|
|
|
, m_ckbMultioutput(FALSE)
|
|
|
|
|
, m_ckbRemoveHole(FALSE)
|
2020-12-09 08:02:51 +00:00
|
|
|
|
, m_ckbDetachNoise(FALSE)
|
2020-06-23 09:31:43 +00:00
|
|
|
|
, m_ckbHSVCorrect(FALSE)
|
2020-12-09 08:02:51 +00:00
|
|
|
|
, indent(5)
|
2021-06-28 03:58:54 +00:00
|
|
|
|
, noise(8)
|
2020-12-09 08:02:51 +00:00
|
|
|
|
,threshold(40)
|
|
|
|
|
,is_bw(false)
|
2020-03-11 01:58:06 +00:00
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CImageProcPage::~CImageProcPage()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2021-07-19 10:36:34 +00:00
|
|
|
|
void CImageProcPage::ImageProcPageUpdate(int val,int twss, int cmduplexsel,bool is_Crop)
|
2020-03-11 01:58:06 +00:00
|
|
|
|
{
|
2021-07-19 10:36:34 +00:00
|
|
|
|
this->twss = twss;
|
|
|
|
|
this->cmduplexsel = cmduplexsel;
|
2020-03-11 01:58:06 +00:00
|
|
|
|
CComboBox* m_temp = (CComboBox*)(GetDlgItem(IDC_CMBFILTER));
|
|
|
|
|
CButton* t_chMultiOutput = (CButton*)(GetDlgItem(IDC_CKMULTIOUTPUT));
|
|
|
|
|
CComboBox* m_temp_sharpen = (CComboBox*)(GetDlgItem(IDC_CMBSHARPEN));
|
2020-12-09 08:02:51 +00:00
|
|
|
|
is_bw = val == 2 ? true : false;
|
|
|
|
|
this->is_crop = is_Crop;
|
|
|
|
|
if (((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck() || ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck() || is_crop)
|
|
|
|
|
((CButton*)GetDlgItem(IDC_ADVANCEDSET))->EnableWindow(true);
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
((CButton*)GetDlgItem(IDC_ADVANCEDSET))->EnableWindow(false);
|
|
|
|
|
}
|
2021-07-19 10:36:34 +00:00
|
|
|
|
if (val == 0)
|
2022-02-14 02:30:19 +00:00
|
|
|
|
{
|
2021-07-19 10:36:34 +00:00
|
|
|
|
GetDlgItem(IDC_CKHSVCORRECT)->EnableWindow(TRUE);
|
2022-02-14 02:30:19 +00:00
|
|
|
|
GetDlgItem(IDC_CKBACKGROUNDSMOOTH)->EnableWindow(TRUE);
|
|
|
|
|
}
|
2021-07-19 10:36:34 +00:00
|
|
|
|
else {
|
|
|
|
|
GetDlgItem(IDC_CKHSVCORRECT)->EnableWindow(FALSE);
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKHSVCORRECT))->SetCheck(FALSE);
|
2022-02-14 02:30:19 +00:00
|
|
|
|
GetDlgItem(IDC_CKBACKGROUNDSMOOTH)->EnableWindow(FALSE);
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKBACKGROUNDSMOOTH))->SetCheck(FALSE);
|
2021-07-19 10:36:34 +00:00
|
|
|
|
}
|
2020-12-18 09:47:30 +00:00
|
|
|
|
if (0 == val||val==3)//彩色
|
2020-03-11 01:58:06 +00:00
|
|
|
|
{
|
|
|
|
|
m_temp->SetCurSel(0);
|
|
|
|
|
m_temp->EnableWindow(FALSE);
|
2020-11-16 10:05:04 +00:00
|
|
|
|
//t_chMultiOutput->SetCheck(TRUE);
|
2020-03-11 01:58:06 +00:00
|
|
|
|
t_chMultiOutput->EnableWindow(TRUE);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
m_temp->EnableWindow(TRUE);
|
|
|
|
|
t_chMultiOutput->SetCheck(FALSE);
|
|
|
|
|
t_chMultiOutput->EnableWindow(FALSE);
|
2022-02-14 02:30:19 +00:00
|
|
|
|
GetDlgItem(IDC_CKBACKGROUNDSMOOTH)->EnableWindow(FALSE);
|
2020-03-11 01:58:06 +00:00
|
|
|
|
}
|
2020-12-17 09:02:33 +00:00
|
|
|
|
if (val == 2)
|
2020-12-09 08:02:51 +00:00
|
|
|
|
{
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CHECKDETACHNOISE))->EnableWindow(true);
|
2020-12-29 13:33:26 +00:00
|
|
|
|
//m_temp->SetCurSel(4);
|
2020-12-09 08:02:51 +00:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CHECKDETACHNOISE))->SetCheck(false);
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CHECKDETACHNOISE))->EnableWindow(false);
|
|
|
|
|
m_edit_detachnoise.EnableWindow(false);
|
|
|
|
|
m_slider_detachnoise.EnableWindow(false);
|
|
|
|
|
}
|
2021-07-19 10:36:34 +00:00
|
|
|
|
#ifndef G300
|
|
|
|
|
if (twss == 19 || twss == 20 || (cmduplexsel == 4) || ((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck() || ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck())
|
|
|
|
|
#else
|
|
|
|
|
if (twss == 8 || (cmduplexsel == 4) || ((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck() || ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck())
|
|
|
|
|
#endif // !G300
|
|
|
|
|
{
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKCROPMODEL))->SetCheck(false);
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKCROPMODEL))->EnableWindow(false);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKCROPMODEL))->EnableWindow(true);
|
|
|
|
|
|
2020-03-11 01:58:06 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::ImageAutoDescrewUpdate(int val)
|
|
|
|
|
{
|
|
|
|
|
//CButton* t_chAutoDeskrew = (CButton*)(GetDlgItem(IDC_CKAUTODESKREW));
|
|
|
|
|
|
|
|
|
|
//if (16 == val)
|
|
|
|
|
//{
|
|
|
|
|
// t_chAutoDeskrew->SetCheck(TRUE);
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::DoDataExchange(CDataExchange* pDX)
|
|
|
|
|
{
|
|
|
|
|
CTabPageSSL::DoDataExchange(pDX);
|
|
|
|
|
DDX_Control(pDX, IDC_SLDOUTHOLE, m_slider_hole);
|
|
|
|
|
DDX_Control(pDX, IDC_EDIT_HOLE, m_edit_hole);
|
2020-12-09 08:02:51 +00:00
|
|
|
|
DDX_Control(pDX, IDC_EDITDETACHNOISE, m_edit_detachnoise);
|
|
|
|
|
DDX_Control(pDX, IDC_SLIDERDETACHNOISE, m_slider_detachnoise);
|
2022-02-14 02:30:19 +00:00
|
|
|
|
DDX_Control(pDX, IDC_SLIDERFADEBACKRANGE, m_slider_faderange);
|
|
|
|
|
DDX_Control(pDX, IDC_EDITFADEBACKRANGE, m_edit_faderange);
|
2020-03-11 01:58:06 +00:00
|
|
|
|
DDX_Control(pDX, IDC_CMBFILTER, m_cmBoxFilter);
|
|
|
|
|
DDX_Control(pDX, IDC_CMBSHARPEN, m_cmBoxSharpen);
|
2022-02-14 02:30:19 +00:00
|
|
|
|
DDX_Check(pDX, IDC_CKBACKGROUNDSMOOTH, m_ckbfadeback);
|
2020-03-11 01:58:06 +00:00
|
|
|
|
DDX_Check(pDX, IDC_CKFILLBLACKRECT, m_ckbFillBlack);
|
|
|
|
|
DDX_Check(pDX, IDC_CKAUTODESKREW, m_ckbAutoDeskrew);
|
|
|
|
|
DDX_Check(pDX, IDC_CKMULTIOUTPUT, m_ckbMultioutput);
|
|
|
|
|
DDX_Check(pDX, IDC_CKREMOVEHOLE, m_ckbRemoveHole);
|
2020-12-09 08:02:51 +00:00
|
|
|
|
DDX_Check(pDX, IDC_CHECKDETACHNOISE,m_ckbDetachNoise);
|
2020-06-23 09:31:43 +00:00
|
|
|
|
DDX_Check(pDX, IDC_CKHSVCORRECT, m_ckbHSVCorrect);
|
2020-03-11 01:58:06 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL CImageProcPage::OnInitDialog()
|
|
|
|
|
{
|
|
|
|
|
CTabPageSSL::OnInitDialog();
|
|
|
|
|
m_edit_hole.SetSlideLink(this, IDC_SLDOUTHOLE);
|
2021-04-06 01:31:21 +00:00
|
|
|
|
m_edit_hole.SetParams(0.01, 0.50, 10, _T("%0.2f"),20);
|
2020-03-11 01:58:06 +00:00
|
|
|
|
m_edit_hole.SetValue(0.10);
|
|
|
|
|
|
2022-02-14 02:30:19 +00:00
|
|
|
|
m_edit_faderange.SetSlideLink(this, IDC_SLIDERFADEBACKRANGE);
|
|
|
|
|
m_edit_faderange.SetParams(1, 128, 1);
|
|
|
|
|
m_edit_faderange.SetValue(40);
|
|
|
|
|
|
2020-12-09 08:02:51 +00:00
|
|
|
|
m_edit_detachnoise.SetSlideLink(this, IDC_SLIDERDETACHNOISE);
|
2021-07-19 10:36:34 +00:00
|
|
|
|
m_edit_detachnoise.SetParams(10, 50, 10);
|
2020-12-09 08:02:51 +00:00
|
|
|
|
m_edit_detachnoise.SetValue(detachnoise);
|
|
|
|
|
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CHECKDETACHNOISE))->SetCheck(is_detachnoise);
|
2020-03-11 01:58:06 +00:00
|
|
|
|
for (int i = 0; i < filters.size(); i++)
|
|
|
|
|
{
|
|
|
|
|
m_cmBoxFilter.InsertString(i, filters[i]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < sharpens.size(); i++)
|
|
|
|
|
{
|
|
|
|
|
m_cmBoxSharpen.InsertString(i, sharpens[i]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CImageProcPage, CTabPageSSL)
|
|
|
|
|
ON_BN_CLICKED(IDC_CKREMOVEHOLE, &CImageProcPage::OnCtrlChange)
|
2020-12-09 08:02:51 +00:00
|
|
|
|
ON_BN_CLICKED(IDC_ADVANCEDSET, &CImageProcPage::OnBnClickedAdvancedset)
|
|
|
|
|
ON_BN_CLICKED(IDC_CKFILLBLACKRECT, &CImageProcPage::OnBnClickedCkfillblackrect)
|
|
|
|
|
ON_BN_CLICKED(IDC_CKAUTODESKREW, &CImageProcPage::OnBnClickedCkautodeskrew)
|
|
|
|
|
ON_BN_CLICKED(IDC_CHECKDETACHNOISE, &CImageProcPage::OnBnClickedCheckdetachnoise)
|
2022-02-14 02:30:19 +00:00
|
|
|
|
ON_BN_CLICKED(IDC_CKBACKGROUNDSMOOTH, &CImageProcPage::OnBnClickedCkbackgroundsmooth)
|
2020-03-11 01:58:06 +00:00
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::EnableOutHoleCheckChanged(BOOL enable)
|
|
|
|
|
{
|
|
|
|
|
UpdateData();
|
|
|
|
|
((CButton*)GetDlgItem(IDC_EDIT_HOLE))->SetCheck(enable);
|
|
|
|
|
GetDlgItem(IDC_EDIT_HOLE)->EnableWindow(enable);
|
|
|
|
|
GetDlgItem(IDC_SLDOUTHOLE)->EnableWindow(enable);
|
|
|
|
|
GetDlgItem(IDC_EDIT_HOLE)->EnableWindow(enable);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::SetOutHoleValue(int value)
|
|
|
|
|
{
|
|
|
|
|
m_edit_hole.SetValue(value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::SetMultiOutputEnable(int pixtype, bool enable)
|
|
|
|
|
{
|
|
|
|
|
switch (pixtype)
|
|
|
|
|
{
|
|
|
|
|
case 2://彩色
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKMULTIOUTPUT))->SetCheck(enable);
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKMULTIOUTPUT))->EnableWindow(TRUE);
|
|
|
|
|
break;
|
|
|
|
|
case 0://灰度 黑白
|
|
|
|
|
case 1:
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKMULTIOUTPUT))->SetCheck(FALSE);
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKMULTIOUTPUT))->EnableWindow(FALSE);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::OnCtrlChange()
|
|
|
|
|
{
|
|
|
|
|
// TODO: 在此添加控件通知处理程序代码
|
|
|
|
|
UpdateData();
|
|
|
|
|
m_edit_hole.EnableWindow(m_ckbRemoveHole);
|
|
|
|
|
m_slider_hole.EnableWindow(m_ckbRemoveHole);
|
2020-12-09 08:02:51 +00:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::OnBnClickedAdvancedset()
|
|
|
|
|
{
|
|
|
|
|
// TODO: 在此添加控件通知处理程序代码
|
|
|
|
|
CAdvancedDLG cb(indent, noise, threshold,is_convex,((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck(),this);
|
|
|
|
|
cb.DoModal();
|
|
|
|
|
noise= cb.m_Slider_noise.m_iPosition;
|
|
|
|
|
indent = cb.m_Slider_indent.m_iPosition;
|
|
|
|
|
threshold = cb.m_Slider_threshold.m_iPosition;
|
|
|
|
|
is_convex = cb.is_convex;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::OnBnClickedCkfillblackrect()
|
|
|
|
|
{
|
|
|
|
|
// TODO: 在此添加控件通知处理程序代码
|
|
|
|
|
if(((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck()|| ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck()||is_crop)
|
|
|
|
|
((CButton*)GetDlgItem(IDC_ADVANCEDSET))->EnableWindow(true);
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
((CButton*)GetDlgItem(IDC_ADVANCEDSET))->EnableWindow(false);
|
|
|
|
|
}
|
2021-07-19 10:36:34 +00:00
|
|
|
|
#ifndef G300
|
|
|
|
|
if (twss == 19 || twss == 20 || (cmduplexsel == 4) || ((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck() || ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck())
|
|
|
|
|
#else
|
|
|
|
|
if (twss == 8|| (cmduplexsel == 4) || ((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck() || ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck())
|
|
|
|
|
#endif // !G300
|
|
|
|
|
{
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKCROPMODEL))->SetCheck(false);
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKCROPMODEL))->EnableWindow(false);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKCROPMODEL))->EnableWindow(true);
|
2020-12-09 08:02:51 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::OnBnClickedCkautodeskrew()
|
|
|
|
|
{
|
|
|
|
|
// TODO: 在此添加控件通知处理程序代码
|
|
|
|
|
if (((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck() || ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck() || is_crop)
|
|
|
|
|
((CButton*)GetDlgItem(IDC_ADVANCEDSET))->EnableWindow(true);
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
((CButton*)GetDlgItem(IDC_ADVANCEDSET))->EnableWindow(false);
|
|
|
|
|
}
|
2021-07-19 10:36:34 +00:00
|
|
|
|
#ifndef G300
|
|
|
|
|
if (twss == 19 || twss == 20 || (cmduplexsel == 4) || ((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck() || ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck())
|
|
|
|
|
#else
|
|
|
|
|
if (twss == 8 || (cmduplexsel == 4) || ((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck() || ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck())
|
|
|
|
|
#endif // !G300
|
|
|
|
|
{
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKCROPMODEL))->SetCheck(false);
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKCROPMODEL))->EnableWindow(false);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKCROPMODEL))->EnableWindow(true);
|
2020-12-09 08:02:51 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::OnBnClickedCheckdetachnoise()
|
|
|
|
|
{
|
|
|
|
|
// TODO: 在此添加控件通知处理程序代码
|
|
|
|
|
UpdateData();
|
|
|
|
|
m_ckbDetachNoise = m_ckbDetachNoise && is_bw;
|
|
|
|
|
m_edit_detachnoise.EnableWindow(m_ckbDetachNoise);
|
|
|
|
|
m_slider_detachnoise.EnableWindow(m_ckbDetachNoise);
|
2020-03-11 01:58:06 +00:00
|
|
|
|
}
|
2022-02-14 02:30:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::OnBnClickedCkbackgroundsmooth()
|
|
|
|
|
{
|
|
|
|
|
// TODO: 在此添加控件通知处理程序代码
|
|
|
|
|
UpdateData();
|
|
|
|
|
m_ckbfadeback = m_ckbfadeback && (!is_bw);
|
|
|
|
|
GetDlgItem(IDC_SLIDERFADEBACKRANGE)->EnableWindow(m_ckbfadeback);
|
|
|
|
|
GetDlgItem(IDC_EDITFADEBACKRANGE)->EnableWindow(m_ckbfadeback);
|
|
|
|
|
}
|