home *** CD-ROM | disk | FTP | other *** search
- // mfcdemo.cpp : Defines the class behaviors for the application.
- //
-
- #include "stdafx.h"
- #include "mfcdemo.h"
-
- #include "Maindemo.h"
- #include "Childdem.h"
- #include "mfcdeDoc.h"
- #include "mfcdeVw.h"
- #include "LeadDlg.h"
- #include "..\..\..\..\include\ltdlgocx.h"
-
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
-
- /////////////////////////////////////////////////////////////////////////////
- // CMfcdemoApp
-
- BEGIN_MESSAGE_MAP(CMfcdemoApp, CWinApp)
- //{{AFX_MSG_MAP(CMfcdemoApp)
- ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
- ON_COMMAND(ID_FILE_CAPTURESCREEN, OnFileCapturescreen)
- ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
- ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEditPaste)
- ON_COMMAND(ID_FILE_ACQUIRE, OnFileAcquire)
- ON_COMMAND(ID_FILE_SELECTSOURCE, OnFileSelectsource)
- ON_COMMAND(ID_FILE_ISISSELECTSOURCE, OnFileIsisSelectSource)
- ON_COMMAND(ID_PREFERENCES_DITHERING_ERRORDIFFUSION, OnPreferencesDitheringErrordiffusion)
- ON_COMMAND(ID_PREFERENCES_DITHERING_ORDERED, OnPreferencesDitheringOrdered)
- ON_COMMAND(ID_PREFERENCES_PALETTE_AUTO, OnPreferencesPaletteAuto)
- ON_COMMAND(ID_PREFERENCES_PALETTE_FIXED, OnPreferencesPaletteFixed)
- ON_COMMAND(ID_PREFERENCES_BITONALSCALING_FAVORBLACK, OnPreferencesBitonalscalingFavorblack)
- ON_COMMAND(ID_PREFERENCES_BITONALSCALING_NORMAL, OnPreferencesBitonalscalingNormal)
- ON_COMMAND(ID_PREFERENCES_BITONALSCALING_SCALETOGRAY, OnPreferencesBitonalscalingScaletogray)
- ON_UPDATE_COMMAND_UI(ID_PREFERENCES_DITHERING_ERRORDIFFUSION, OnUpdatePreferencesDitheringErrordiffusion)
- ON_UPDATE_COMMAND_UI(ID_PREFERENCES_DITHERING_ORDERED, OnUpdatePreferencesDitheringOrdered)
- ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PALETTE_AUTO, OnUpdatePreferencesPaletteAuto)
- ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PALETTE_FIXED, OnUpdatePreferencesPaletteFixed)
- ON_UPDATE_COMMAND_UI(ID_PREFERENCES_BITONALSCALING_NORMAL, OnUpdatePreferencesBitonalscalingNormal)
- ON_UPDATE_COMMAND_UI(ID_PREFERENCES_BITONALSCALING_SCALETOGRAY, OnUpdatePreferencesBitonalscalingScaletogray)
- ON_UPDATE_COMMAND_UI(ID_PREFERENCES_BITONALSCALING_FAVORBLACK, OnUpdatePreferencesBitonalscalingFavorblack)
- ON_COMMAND(ID_FILE_COLORMERGE, OnFileColormerge)
- ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
- #ifndef _ALPHA_
- ON_COMMAND(ID_FILE_ISISACQUIRE, OnFileIsisacquire)
- ON_COMMAND(ID_FILE_ISISACQUIREMULTI, OnFileIsisacquiremulti)
- ON_UPDATE_COMMAND_UI(ID_FILE_ISISACQUIRE, OnUpdateFileIsisacquire)
- ON_UPDATE_COMMAND_UI(ID_FILE_ISISACQUIREMULTI, OnUpdateFileIsisacquiremulti)
- ON_UPDATE_COMMAND_UI(ID_FILE_ISISSELECTSOURCE, OnUpdateFileIsisselectsource)
- #endif
- //}}AFX_MSG_MAP
- // Standard file based document commands
- ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
- ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
- // Standard print setup command
- ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
- END_MESSAGE_MAP()
-
- /////////////////////////////////////////////////////////////////////////////
- // CMfcdemoApp construction
-
- CMfcdemoApp::CMfcdemoApp()
- {
- // TODO: add construction code here,
- // Place all significant initialization in InitInstance
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // The one and only CMfcdemoApp object
-
- CMfcdemoApp theApp;
- short gnPage;
-
- /////////////////////////////////////////////////////////////////////////////
- // CMfcdemoApp initialization
-
- BOOL CMfcdemoApp::InitInstance()
- {
- AfxEnableControlContainer();
-
- m_nOpenMode = OPENMODE_FILE;
- m_fOrderedDither = TRUE;
- m_fAutoPalette = TRUE;
- m_nBitonalScaling = BITONALSCALING_NORMAL;
- gnPage = 1;
-
- // Standard initialization
- // If you are not using these features and wish to reduce the size
- // of your final executable, you should remove from the following
- // the specific initialization routines you do not need.
-
- #ifdef _AFXDLL
- Enable3dControls(); // Call this when using MFC in a shared DLL
- #else
- Enable3dControlsStatic(); // Call this when linking to MFC statically
- #endif
-
- LoadStdProfileSettings(); // Load standard INI file options (including MRU)
-
- // Register the application's document templates. Document templates
- // serve as the connection between documents, frame windows and views.
-
- CMultiDocTemplate* pDocTemplate;
- pDocTemplate = new CMultiDocTemplate(
- IDR_MFCDEMTYPE,
- RUNTIME_CLASS(CMfcdemoDoc),
- RUNTIME_CLASS(CChildFrame), // custom MDI child frame
- RUNTIME_CLASS(CMfcdemoView));
- AddDocTemplate(pDocTemplate);
-
- // create main MDI Frame window
- CMainFrame* pMainFrame = new CMainFrame;
- if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
- return FALSE;
- m_pMainWnd = pMainFrame;
-
-
- // The main window has been initialized, so show and update it.
- pMainFrame->ShowWindow(m_nCmdShow);
- pMainFrame->UpdateWindow();
-
- return TRUE;
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // CAboutDlg dialog used for App About
-
- class CAboutDlg : public CDialog
- {
- public:
- CAboutDlg();
-
- // Dialog Data
- //{{AFX_DATA(CAboutDlg)
- enum { IDD = IDD_ABOUTBOX };
- //}}AFX_DATA
-
- // ClassWizard generated virtual function overrides
- //{{AFX_VIRTUAL(CAboutDlg)
- protected:
- virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
- //}}AFX_VIRTUAL
-
- // Implementation
- protected:
- //{{AFX_MSG(CAboutDlg)
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
-
- CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
- {
- //{{AFX_DATA_INIT(CAboutDlg)
- //}}AFX_DATA_INIT
- }
-
- void CAboutDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CAboutDlg)
- //}}AFX_DATA_MAP
- }
-
- BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
- //{{AFX_MSG_MAP(CAboutDlg)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
- // App command to run the dialog
- void CMfcdemoApp::OnAppAbout()
- {
- CAboutDlg aboutDlg;
- aboutDlg.DoModal();
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // CMfcdemoApp commands
- int CMfcdemoApp::DisplayLEADError(int nCode)
- {
- CString str;
-
- if((nCode == ERROR_DLG_CANCELED) || (nCode == ERROR_ISIS_CANCEL))
- nCode = 0;
-
- if(nCode)
- {
- str.Format("A LEADTOOLS error has occured.\nCODE = %d", nCode);
- m_pMainWnd->MessageBox(str);
- }
- return(nCode);
- }
-
- void CMfcdemoApp::OpenDocument(int nMode)
- {
- m_nOpenMode = nMode;
- OnFileNew();
- m_nOpenMode = OPENMODE_FILE;
- }
-
- void CMfcdemoApp::OnFileCapturescreen()
- {
- OpenDocument(OPENMODE_CAPTURE);
- }
-
- void CMfcdemoApp::OnEditPaste()
- {
- OpenDocument(OPENMODE_PASTE);
- }
-
- void CMfcdemoApp::OnUpdateEditPaste(CCmdUI* pCmdUI)
- {
- CLead* pLead = GetMainLead();
- if(pLead)
- {
- ASSERT(IsWindow(pLead->m_hWnd));
- pCmdUI->Enable(pLead->Paste(PASTE_ISREADY));
- }
- }
-
- void CMfcdemoApp::OnFileAcquire()
- {
- OpenDocument(OPENMODE_TWAIN);
- }
-
- void CMfcdemoApp::OnFileSelectsource()
- {
- CLead *pLead = GetMainLead();
- pLead->SetEnableMethodErrors(FALSE);
- int nRet = pLead->TwainSelect((OLE_HANDLE) m_pMainWnd->m_hWnd);
- // show no error if the user clicks on Cancel
- if( nRet && nRet != ERROR_TWAIN_CANCEL )
- theApp.DisplayLEADError(nRet);
- pLead->SetEnableMethodErrors(TRUE);
- }
-
- CPtrArray *CMfcdemoApp::EnumAllDocuments( CDocument *pDocToExclude /*=NULL*/)
- {
- CPtrArray* pArray;
- // POSITION pos = m_templateList.GetHeadPosition();
- POSITION pos = theApp.GetFirstDocTemplatePosition();
-
- pArray = new CPtrArray;
- while (pos != NULL)
- {
- // CDocTemplate* pTemplate = (CDocTemplate*)m_templateList.GetNext(pos);
- CDocTemplate* pTemplate = theApp.GetNextDocTemplate(pos);
- POSITION posDoc = pTemplate->GetFirstDocPosition();
- while(posDoc != NULL)
- {
- CDocument* pDoc = pTemplate->GetNextDoc(posDoc);
- if( pDoc != pDocToExclude )
- pArray->Add(pDoc);
- }
- }
- return(pArray);
- }
-
- void CMfcdemoApp::UpdateAllDocumentViews()
- {
- // POSITION pos = m_templateList.GetHeadPosition();
- POSITION pos = theApp.GetFirstDocTemplatePosition();
-
- while (pos != NULL)
- {
- // CDocTemplate* pTemplate = (CDocTemplate*)m_templateList.GetNext(pos);
- CDocTemplate* pTemplate = theApp.GetNextDocTemplate(pos);
- POSITION posDoc = pTemplate->GetFirstDocPosition();
- while(posDoc != NULL)
- {
- CDocument* pDoc = pTemplate->GetNextDoc(posDoc);
- pDoc->UpdateAllViews(NULL, (LPARAM) 0);
- }
- }
- }
-
- void CMfcdemoApp::OnPreferencesDitheringErrordiffusion()
- {
- m_fOrderedDither = FALSE;
- UpdateAllDocumentViews();
- }
-
- void CMfcdemoApp::OnPreferencesDitheringOrdered()
- {
- m_fOrderedDither = TRUE;
- UpdateAllDocumentViews();
- }
-
- CLead* CMfcdemoApp::GetMainLead()
- {
- CMainFrame* pFrame;
- pFrame = (CMainFrame*)m_pMainWnd;
- if(!pFrame)
- return(NULL);
- return(pFrame->m_pLead);
- }
-
- CLeadIsis* CMfcdemoApp::GetMainIsis()
- {
- CMainFrame* pFrame;
- pFrame = (CMainFrame*)m_pMainWnd;
- if(!pFrame)
- return(NULL);
- return(pFrame->m_pLTIsis);
- }
-
- void CMfcdemoApp::OnPreferencesPaletteAuto()
- {
- m_fAutoPalette = TRUE;
- UpdateAllDocumentViews();
- }
-
- void CMfcdemoApp::OnPreferencesPaletteFixed()
- {
- m_fAutoPalette = FALSE;
- UpdateAllDocumentViews();
- }
-
-
- void CMfcdemoApp::OnPreferencesBitonalscalingFavorblack()
- {
- m_nBitonalScaling = BITONALSCALING_FAVORBLACK;
- UpdateAllDocumentViews();
- }
-
- void CMfcdemoApp::OnPreferencesBitonalscalingNormal()
- {
- m_nBitonalScaling = BITONALSCALING_NORMAL;
- UpdateAllDocumentViews();
- }
-
- void CMfcdemoApp::OnPreferencesBitonalscalingScaletogray()
- {
- m_nBitonalScaling = BITONALSCALING_SCALETOGRAY;
- UpdateAllDocumentViews();
- }
-
- void CMfcdemoApp::OnUpdatePreferencesDitheringErrordiffusion(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(m_fOrderedDither ? 0 : 1);
- }
-
- void CMfcdemoApp::OnUpdatePreferencesDitheringOrdered(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(m_fOrderedDither ? 1 : 0);
- }
-
- void CMfcdemoApp::OnUpdatePreferencesPaletteAuto(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(m_fAutoPalette ? 1 : 0);
- }
-
- void CMfcdemoApp::OnUpdatePreferencesPaletteFixed(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(m_fAutoPalette ? 0 : 1);
- }
-
- void CMfcdemoApp::OnUpdatePreferencesBitonalscalingFavorblack(CCmdUI* pCmdUI)
- {
- CLead* pLead = GetMainLead();
- if(pLead)
- pCmdUI->Enable(pLead->GetVersionLevel() == VERSIONLEVEL_EXP||pLead->GetVersionLevel() == VERSIONLEVEL_MEDICAL);
- pCmdUI->SetCheck(m_nBitonalScaling == BITONALSCALING_FAVORBLACK);
- }
-
- void CMfcdemoApp::OnUpdatePreferencesBitonalscalingNormal(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(m_nBitonalScaling == BITONALSCALING_NORMAL);
- }
-
- void CMfcdemoApp::OnUpdatePreferencesBitonalscalingScaletogray(CCmdUI* pCmdUI)
- {
- CLead* pLead = GetMainLead();
- if(pLead)
- pCmdUI->Enable(pLead->GetVersionLevel() == VERSIONLEVEL_EXP||pLead->GetVersionLevel() == VERSIONLEVEL_MEDICAL);
- pCmdUI->SetCheck(m_nBitonalScaling == BITONALSCALING_SCALETOGRAY);
-
- }
-
-
- void CMfcdemoApp::OnFileColormerge()
- {
- OpenDocument(OPENMODE_COLORMERGE);
- }
-
- void CMfcdemoApp::OnFileOpen()
- {
- CLeadDlg LTCommDlg;
- RECT rcWin;
- BOOL bContinue=FALSE;
- int nRet;
-
- ::SetRect(&rcWin, 0, 0, 1, 1);
-
- if(LTCommDlg.Create(NULL,0,rcWin,m_pMainWnd,100))
- {
- LTCommDlg.SetEnableMethodErrors(FALSE);
- LTCommDlg.SetFilter("Graphics|*.cmp;*.jpg;*.jff;*.jtf;*.bmp;*.tif;*.tga;*.pcx;*.cal;*.mac;*.mac;*.img;*.msp;*.wpg;*.wpg;*.ras;*.pct;*.pcd;*.eps;*.wmf");
- LTCommDlg.SetFileDlgFlags(0);
- LTCommDlg.SetDialogTitle("Open File");
- LTCommDlg.SetUIFlags( DLG_FO_FILEINFO |
- DLG_FO_MULTIPAGE |
- DLG_FO_SHOWPREVIEW |
- DLG_FO_SHOWSTAMP |
- DLG_FO_95STYLE );
- nRet = LTCommDlg.FileOpen((long)m_pMainWnd->m_hWnd);
- if(nRet == 0)
- bContinue = TRUE;
- gnPage = (short)LTCommDlg.GetPageNumber();
- }
- if(bContinue)
- OpenDocumentFile((LPCTSTR)LTCommDlg.GetFileName());
- return;
- }
-
- #ifndef _ALPHA_
-
- void CMfcdemoApp::OnFileIsisSelectSource()
- {
- CLeadIsis LTIsis;
- RECT rcWin;
- int nRet;
-
- ::SetRect(&rcWin, 0, 0, 1, 1);
-
- if(LTIsis.Create(NULL,0,rcWin,m_pMainWnd,100))
- {
- LTIsis.SetEnableMethodErrors(FALSE);
- nRet = LTIsis.ISISSelect((long)LTIsis.m_hWnd);
-
- // LTIsis.ISISLoadDriver();
- // LTIsis.ISISSetScanOptions((long)LTIsis.m_hWnd);
- // LTIsis.ISISUnloadDriver();
-
- if(nRet != ERROR_USER_ABORT)
- theApp.DisplayLEADError(nRet);
- }
- }
-
- void CMfcdemoApp::OnFileIsisacquire()
- {
- OpenDocument(OPENMODE_ISIS);
- }
-
-
- void CMfcdemoApp::OnFileIsisacquiremulti()
- {
- CLeadDlg LTCommDlg;
- CLeadIsis LTIsis;
- RECT rcWin;
- BOOL bContinue=FALSE;
- int nRet;
- char buf[1024];
- long MaxPages;
-
- ::SetRect(&rcWin, 0, 0, 1, 1);
-
- if(LTCommDlg.Create(NULL,0,rcWin,m_pMainWnd,100))
- {
- LTCommDlg.SetEnableMethodErrors(FALSE);
- LTCommDlg.SetFileDlgFlags(0);
- LTCommDlg.SetSaveFormatFlags(DLG_FS_TIFF);
- LTCommDlg.SetDialogTitle("Select Base Filename");
- LTCommDlg.SetUIFlags( DLG_FS_95STYLE | DLG_FS_MULTIPAGE );
- nRet = LTCommDlg.FileSave((long)m_pMainWnd->m_hWnd);
- if(nRet == 0)
- bContinue = TRUE;
- else
- {
- theApp.DisplayLEADError(nRet);
- return;
- }
- }
-
- if(bContinue)
- {
- ::SetRect(&rcWin, 0, 0, 1, 1);
- if(LTIsis.Create(NULL,0,rcWin,m_pMainWnd,100))
- {
- LTIsis.SetEnableMethodErrors(FALSE);
- nRet = LTIsis.ISISLoadDriver();
- if(nRet == 0)
- {
- //enable ScanAhead, and set max pages to max ADF pages
- LTIsis.ISISSetTag(TAG_SCANAHEAD, TAG_SCANAHEAD_YES);
- LTIsis.ISISGetTag(TAG_MAXPAGES, &MaxPages);
- LTIsis.ISISSetTag(TAG_SCANAHEAD_MAXPAGES, MaxPages);
- if(LTCommDlg.GetSaveFormat() == FILE_CCITT_GROUP4)
- LTIsis.ISISSetTag(TAG_SCANAHEAD_MAXPAGES, TAG_COMPRESSION_G4);
- else
- LTIsis.ISISSetTag(TAG_SCANAHEAD_MAXPAGES, TAG_COMPRESSION_NONE);
-
- nRet == LTIsis.ISISAcquireMulti((long)LTIsis.m_hWnd,
- (LPCTSTR)LTCommDlg.GetFileName(),
- ISIS_SHOWUI,
- LTCommDlg.GetSaveFormat(),
- (short)LTCommDlg.GetSaveMulti() );
- LTIsis.ISISUnloadDriver();
- }
- }
- if(nRet == 0)
- {
- wsprintf(buf, "Image(s) acquired to file(s) %s", (LPCTSTR)LTCommDlg.GetFileName());
- AfxMessageBox(buf);
- }
- else if(nRet != ERROR_ISIS_CANCEL)
- theApp.DisplayLEADError(nRet);
- }
- }
-
- void CMfcdemoApp::OnUpdateFileIsisacquire(CCmdUI* pCmdUI)
- {
- CLeadIsis *pLTIsis = GetMainIsis();
- pCmdUI->Enable(pLTIsis->GetIsISISAvailable());
- }
-
- void CMfcdemoApp::OnUpdateFileIsisacquiremulti(CCmdUI* pCmdUI)
- {
- CLeadIsis *pLTIsis = GetMainIsis();
- pCmdUI->Enable(pLTIsis->GetIsISISAvailable());
- }
-
- void CMfcdemoApp::OnUpdateFileIsisselectsource(CCmdUI* pCmdUI)
- {
- CLeadIsis *pLTIsis = GetMainIsis();
- pCmdUI->Enable(pLTIsis->GetIsISISAvailable());
- }
-
- #endif