twain3.0/huagao/CImageProcPage.cpp

168 lines
3.8 KiB
C++

// 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)
, m_ckbHSVCorrect(FALSE)
{
}
CImageProcPage::~CImageProcPage()
{
}
void CImageProcPage::ImageProcPageUpdate(int val)
{
CComboBox* m_temp = (CComboBox*)(GetDlgItem(IDC_CMBFILTER));
CButton* t_chMultiOutput = (CButton*)(GetDlgItem(IDC_CKMULTIOUTPUT));
CComboBox* m_temp_sharpen = (CComboBox*)(GetDlgItem(IDC_CMBSHARPEN));
int ival = (val == 0 ? 0 : (val == 1 ? 1 : 2));
if (0 == ival)//彩色
{
m_temp->SetCurSel(0);
m_temp->EnableWindow(FALSE);
t_chMultiOutput->SetCheck(FALSE);
t_chMultiOutput->EnableWindow(TRUE);
}
else
{
m_temp->SetCurSel(0);
m_temp->EnableWindow(TRUE);
t_chMultiOutput->SetCheck(FALSE);
t_chMultiOutput->EnableWindow(FALSE);
}
//bool enabele = ival <= 1;//彩色或灰度
//if (!enabele) {
// m_temp_sharpen->SetCurSel(0);
//}
//m_temp_sharpen->EnableWindow(enabele);
}
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);
DDX_Control(pDX, IDC_CMBFILTER, m_cmBoxFilter);
DDX_Control(pDX, IDC_CMBSHARPEN, m_cmBoxSharpen);
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);
DDX_Check(pDX, IDC_CKHSVCORRECT, m_ckbHSVCorrect);
}
BOOL CImageProcPage::OnInitDialog()
{
CTabPageSSL::OnInitDialog();
m_edit_hole.SetSlideLink(this, IDC_SLDOUTHOLE);
m_edit_hole.SetParams(0.01, 0.50, 10, _T("%0.2f"));
m_edit_hole.SetValue(0.10);
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)
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);
}