// PDFCompSetDlg.cpp : implementation file // #include "stdafx.h" #include "PDFCompDemo.h" #include "PDFCompDemoDoc.h" #include "PDFCompSetDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define PDFSETTINGS_AUTO TEXT("Auto Select") #define PDFSETTINGS_NOISY TEXT("Noisy Image") #define PDFSETTINGS_SCANNED TEXT("Scanned Image") #define PDFSETTINGS_PRINTED TEXT("Printed Image") #define PDFSETTINGS_COMPUTERGEN TEXT("Computer Generated Image") #define PDFSETTINGS_PHOTOS TEXT("Photo") #define PDFSETTINGS_USERDDEFINED TEXT("User Defined") #define PDFSETTINGS_MAX 6 #define PDFSIMGQUALITY_AUTO TEXT("Auto Select") #define PDFSIMGQUALITY_POOR TEXT("Poor Quality") #define PDFSIMGQUALITY_AVG TEXT("Average Quality") #define PDFSIMGQUALITY_GOOD TEXT("Good Quality") #define PDFSIMGQUALITY_EXCELLENT TEXT("Excellent Quality") #define PDFSIMGQUALITY_USERDDEFINED TEXT("User Defined") #define PDFSIMGQUALITY_MAX 5 ///////////////////////////////////////////////////////////////////////////// // CPDFCompSetDlg dialog extern CPDFCompDemoApp theApp; CPDFCompSetDlg::CPDFCompSetDlg(CWnd* pParent /*=NULL*/) : CDialog(CPDFCompSetDlg::IDD, pParent) { //{{AFX_DATA_INIT(CPDFCompSetDlg) // NOTE: the ClassWizard will add member initialization here m_nBKThreshold = 0; m_nCleanSize = 0; m_nCLRThreshold = 0; m_nCombThreshold = 0; m_nSegQuality = 0; m_nPageOrder = 0; m_bNOMRC = FALSE; //}}AFX_DATA_INIT m_bAdded = FALSE; m_nPDFComboSel =0; m_nImgQComboSel=0; m_nDocCount =0; } void CPDFCompSetDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPDFCompSetDlg) // NOTE: the ClassWizard will add DDX and DDV calls here DDX_Control(pDX, IDADD, m_AddButton); DDX_Control(pDX, IDC_CHECK_NOMRC, m_NOMRC); DDX_Control(pDX, IDC_EDIT_PAGEORDER, m_PageOrder); DDX_Control(pDX, IDC_EDIT_SEGQUALITY, m_SegQuality); DDX_Control(pDX, IDC_EDIT_COMBTHRESHOLD, m_CombThreshold); DDX_Control(pDX, IDC_EDIT_CLRTHRESHOLD, m_CLRThreshold); DDX_Control(pDX, IDC_EDIT_CLEANSZ, m_CleanSize); DDX_Control(pDX, IDC_EDIT_BKGDTHRESHOLD, m_BKThreshold); DDX_Control(pDX, IDC_COMBO_OPIMGQUALITY, m_PDFImgQuality); DDX_Control(pDX, IDC_COMBO_PDFPROF, m_PDFProfCombo); DDX_Text(pDX, IDC_EDIT_BKGDTHRESHOLD, m_nBKThreshold); DDV_MinMaxInt(pDX, m_nBKThreshold, 0, 100); DDX_Text(pDX, IDC_EDIT_CLEANSZ, m_nCleanSize); DDV_MinMaxInt(pDX, m_nCleanSize, 0, 10); DDX_Text(pDX, IDC_EDIT_CLRTHRESHOLD, m_nCLRThreshold); DDV_MinMaxInt(pDX, m_nCLRThreshold, 0, 100); DDX_Text(pDX, IDC_EDIT_COMBTHRESHOLD, m_nCombThreshold); DDV_MinMaxInt(pDX, m_nCombThreshold, 0, 300); DDX_Text(pDX, IDC_EDIT_SEGQUALITY, m_nSegQuality); DDV_MinMaxInt(pDX, m_nSegQuality, 0, 100); DDX_Text(pDX, IDC_EDIT_PAGEORDER, m_nPageOrder); DDV_MinMaxInt(pDX, m_nPageOrder, 0, m_nDocCount); DDX_Check(pDX, IDC_CHECK_NOMRC, m_bNOMRC); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CPDFCompSetDlg, CDialog) //{{AFX_MSG_MAP(CPDFCompSetDlg) // NOTE: the ClassWizard will add message map macros here ON_BN_CLICKED(IDADD, OnAdd) ON_CBN_SELCHANGE(IDC_COMBO_PDFPROF, OnSelchangeComboPdfprof) ON_CBN_SELCHANGE(IDC_COMBO_OPIMGQUALITY, OnSelchangeComboOpimgquality) ON_BN_CLICKED(IDC_CHECK_NOMRC, OnCheckNomrc) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CPDFCompSetDlg message handlers BOOL CPDFCompSetDlg::OnInitDialog() { CDialog::OnInitDialog(); m_PDFProfCombo.AddString(PDFSETTINGS_AUTO); m_PDFProfCombo.AddString(PDFSETTINGS_NOISY); m_PDFProfCombo.AddString(PDFSETTINGS_SCANNED); m_PDFProfCombo.AddString(PDFSETTINGS_PRINTED); m_PDFProfCombo.AddString(PDFSETTINGS_COMPUTERGEN); m_PDFProfCombo.AddString(PDFSETTINGS_PHOTOS); m_PDFProfCombo.AddString(PDFSETTINGS_USERDDEFINED); m_PDFImgQuality.AddString(PDFSIMGQUALITY_AUTO); m_PDFImgQuality.AddString(PDFSIMGQUALITY_POOR); m_PDFImgQuality.AddString(PDFSIMGQUALITY_AVG); m_PDFImgQuality.AddString(PDFSIMGQUALITY_GOOD); m_PDFImgQuality.AddString(PDFSIMGQUALITY_EXCELLENT); m_PDFImgQuality.AddString(PDFSIMGQUALITY_USERDDEFINED); m_PDFProfCombo.SetCurSel(m_nPDFComboSel); m_PDFImgQuality.SetCurSel(m_nImgQComboSel); m_nDocCount = theApp.CountAllOpenedDoccuments()-1; if(m_bAdded) m_AddButton.SetWindowText(TEXT("Update")); CheckPdfPrf(); CheckOpImgQualityPrf(); CheckPdfMrc(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } BOOL CPDFCompSetDlg::OnCommand(WPARAM wParam, LPARAM lParam) { return CDialog::OnCommand(wParam, lParam); } void CPDFCompSetDlg::OnAdd() { CMDIFrameWnd* pFrame = (CMDIFrameWnd* )AfxGetApp()->m_pMainWnd; CMDIChildWnd* pChild = (CMDIChildWnd* ) pFrame->GetActiveFrame(); CPDFCompDemoDoc* pDocument ; L_BOOL bRepeated = FALSE; L_INT nSwappedPgNo=-1; if(!TestValues()) return; if(!UpdateData(TRUE)) return; m_nPDFComboSel = m_PDFProfCombo.GetCurSel(); m_nImgQComboSel = m_PDFImgQuality.GetCurSel(); m_bAdded = TRUE; if(BST_CHECKED == m_NOMRC.GetCheck()) m_bNOMRC = TRUE; else m_bNOMRC = FALSE; if ((pDocument=(CPDFCompDemoDoc* )pChild->GetActiveDocument()) != NULL) { if(pDocument->m_PDFCompSettings.bAdded) nSwappedPgNo = pDocument->m_PDFCompSettings.nPageNumber; pChild = (CMDIChildWnd* ) pChild->GetWindow(GW_HWNDNEXT); while (pChild) { if ((pDocument=(CPDFCompDemoDoc* )pChild->GetActiveDocument()) != NULL) { if( pDocument->m_PDFCompSettings.bAdded && (m_nPageOrder == pDocument->m_PDFCompSettings.nPageNumber)) { MessageBox(TEXT("Page numbers for other pages were modified since this number already exists"), TEXT("PDFComp Demo"), MB_ICONEXCLAMATION); bRepeated = TRUE; } } pChild = (CMDIChildWnd* ) pChild->GetWindow(GW_HWNDNEXT); } } if(bRepeated) theApp.SetPageOrder(m_nPageOrder, bRepeated, FALSE, nSwappedPgNo); CDialog::OnOK(); } void CPDFCompSetDlg::OnSelchangeComboPdfprof() { CheckPdfPrf(); } void CPDFCompSetDlg::OnSelchangeComboOpimgquality() { CheckOpImgQualityPrf(); } L_VOID CPDFCompSetDlg::CheckPdfPrf() { if(PDFSETTINGS_MAX == m_PDFProfCombo.GetCurSel()) { m_CombThreshold.EnableWindow(TRUE); m_CleanSize.EnableWindow(TRUE); m_BKThreshold.EnableWindow(TRUE); } else { m_CombThreshold.EnableWindow(FALSE); m_CleanSize.EnableWindow(FALSE); m_BKThreshold.EnableWindow(FALSE);; } SetProfileValue(); } L_VOID CPDFCompSetDlg::CheckOpImgQualityPrf() { if(PDFSIMGQUALITY_MAX == m_PDFImgQuality.GetCurSel()) { m_SegQuality.EnableWindow(TRUE); m_CLRThreshold.EnableWindow(TRUE); } else { m_SegQuality.EnableWindow(FALSE); m_CLRThreshold.EnableWindow(FALSE); } SetProfileValue(); } void CPDFCompSetDlg::OnCheckNomrc() { CheckPdfMrc(); m_PDFProfCombo.SetCurSel(0); m_PDFImgQuality.SetCurSel(0); SetProfileValue(); } L_VOID CPDFCompSetDlg::SetProfileValue() { enum { PDFSRCIMGPROF_AUTO=0, PDFSRCIMGPROF_NOISY, PDFSRCIMGPROF_SCANNED, PDFSRCIMGPROF_PRINTED, PDFSRCIMGPROF_COMPUTERGEN, PDFSRCIMGPROF_PHOTOS, PDFSRCIMGPROF_USERDDEFINED }; enum { PDFOPIMGQ_AUTO=0, PDFOPIMGQ_POOR, PDFOPIMGQ_AVG, PDFOPIMGQ_GOOD, PDFOPIMGQ_EXCELLENT }; switch(m_PDFProfCombo.GetCurSel()) { case PDFSRCIMGPROF_AUTO: m_CombThreshold.SetWindowText(TEXT("100")); m_BKThreshold.SetWindowText(TEXT("15")); m_CleanSize.SetWindowText(TEXT("7")); break; case PDFSRCIMGPROF_NOISY: m_CombThreshold.SetWindowText(TEXT("125")); m_BKThreshold.SetWindowText(TEXT("25")); m_CleanSize.SetWindowText(TEXT("10")); break; case PDFSRCIMGPROF_SCANNED: m_CombThreshold.SetWindowText(TEXT("125")); m_BKThreshold.SetWindowText(TEXT("15")); m_CleanSize.SetWindowText(TEXT("8")); break; case PDFSRCIMGPROF_PRINTED: m_CombThreshold.SetWindowText(TEXT("100")); m_BKThreshold.SetWindowText(TEXT("10")); m_CleanSize.SetWindowText(TEXT("7")); break; case PDFSRCIMGPROF_COMPUTERGEN: m_CombThreshold.SetWindowText(TEXT("75")); m_BKThreshold.SetWindowText(TEXT("10")); m_CleanSize.SetWindowText(TEXT("3")); break; case PDFSRCIMGPROF_PHOTOS: m_CombThreshold.SetWindowText(TEXT("75")); m_BKThreshold.SetWindowText(TEXT("0")); m_CleanSize.SetWindowText(TEXT("3")); break; } switch(m_PDFImgQuality.GetCurSel()) { case PDFOPIMGQ_AUTO: m_SegQuality.SetWindowText(TEXT("50")); m_CLRThreshold.SetWindowText(TEXT("25")); break; case PDFOPIMGQ_POOR: m_SegQuality.SetWindowText(TEXT("0")); m_CLRThreshold.SetWindowText(TEXT("30")); break; case PDFOPIMGQ_AVG: m_SegQuality.SetWindowText(TEXT("50")); m_CLRThreshold.SetWindowText(TEXT("25")); break; case PDFOPIMGQ_GOOD: m_SegQuality.SetWindowText(TEXT("75")); m_CLRThreshold.SetWindowText(TEXT("25")); break; case PDFOPIMGQ_EXCELLENT: m_SegQuality.SetWindowText(TEXT("100")); m_CLRThreshold.SetWindowText(TEXT("25")); break; } } void CPDFCompSetDlg::CheckPdfMrc() { if(BST_CHECKED == m_NOMRC.GetCheck()) { m_PDFProfCombo.EnableWindow(FALSE); m_PDFImgQuality.EnableWindow(FALSE); m_SegQuality.EnableWindow(FALSE); m_CombThreshold.EnableWindow(FALSE); m_CLRThreshold.EnableWindow(FALSE); m_CleanSize.EnableWindow(FALSE); m_BKThreshold.EnableWindow(FALSE); } else { m_PDFProfCombo.EnableWindow(TRUE); OnSelchangeComboPdfprof(); m_PDFImgQuality.EnableWindow(TRUE); OnSelchangeComboOpimgquality(); } } L_BOOL CPDFCompSetDlg::TestValues() { CString str = "" ; int nValue = 0 ; //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// CMDIFrameWnd* pFrame = (CMDIFrameWnd* )AfxGetApp()->m_pMainWnd; CMDIChildWnd* pChild = (CMDIChildWnd* )pFrame->GetActiveFrame(); L_INT nAddedViews=0; CPDFCompDemoDoc* pDoc; do { if (pChild) { pDoc = NULL; pDoc = (CPDFCompDemoDoc* )pChild->GetActiveDocument(); if(pDoc) if(pDoc->m_PDFCompSettings.bAdded) nAddedViews++; } pChild = (CMDIChildWnd* ) pChild->GetWindow(GW_HWNDNEXT); } while (pChild); // --------------------------------------------------------------// GetDlgItem (IDC_EDIT_PAGEORDER)->GetWindowText(str) ; nValue = _ttoi(str.GetBuffer(str.GetLength())) ; if (nValue<0 || nValue>nAddedViews) { MessageBox(TEXT("Invalid Page Number!"),TEXT("Error"),MB_OK|MB_ICONEXCLAMATION); return FALSE; } GetDlgItem (IDC_EDIT_BKGDTHRESHOLD)->GetWindowText(str) ; nValue = _ttoi(str.GetBuffer(str.GetLength())) ; if (nValue<0 || nValue>100) { MessageBox(TEXT("Invalid Background Threshold!"),TEXT("Error"),MB_OK|MB_ICONEXCLAMATION); return FALSE; } GetDlgItem (IDC_EDIT_COMBTHRESHOLD)->GetWindowText(str) ; nValue = _ttoi(str.GetBuffer(str.GetLength())) ; if (nValue<0 || nValue>300) { MessageBox(TEXT("Invalid Combine Threshold!"),TEXT("Error"),MB_OK|MB_ICONEXCLAMATION); return FALSE; } GetDlgItem (IDC_EDIT_CLEANSZ)->GetWindowText(str) ; nValue = _ttoi(str.GetBuffer(str.GetLength())) ; if (nValue<0 || nValue>10) { MessageBox(TEXT("Invalid Clean Size!"),TEXT("Error"),MB_OK|MB_ICONEXCLAMATION); return FALSE; } GetDlgItem (IDC_EDIT_SEGQUALITY)->GetWindowText(str) ; nValue = _ttoi(str.GetBuffer(str.GetLength())) ; if (nValue<0 || nValue>100) { MessageBox(TEXT("Invalid Segment Quality!"),TEXT("Error"),MB_OK|MB_ICONEXCLAMATION); return FALSE; } GetDlgItem (IDC_EDIT_CLRTHRESHOLD)->GetWindowText(str) ; nValue = _ttoi(str.GetBuffer(str.GetLength())) ; if (nValue<0 || nValue>100) { MessageBox(TEXT("Invalid Color Threshold!"),TEXT("Error"),MB_OK|MB_ICONEXCLAMATION); return FALSE; } return TRUE ; }