// demo.cpp : Defines the class behaviors for the application. // #include "stdafx.h" #include extern void ExitMFCApp(); void RegisterAppKey ( HINSTANCE hInstance ); #define UNITS_PER_INCH 1000 #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDemoApp BEGIN_MESSAGE_MAP(CDemoApp, CWinApp) //{{AFX_MSG_MAP(CDemoApp) ON_COMMAND(ID_APP_ABOUT, OnAppAbout) ON_COMMAND(ID_FILE_OPEN, OnFileOpen) ON_COMMAND(ID_PREFERENCES_PALETTE_AUTO, OnPreferencesPaletteAuto) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PALETTE_AUTO, OnUpdatePreferencesPaletteAuto) ON_COMMAND(ID_PREFERENCES_BITONALSCALING_FAVORBLACK, OnPreferencesBitonalscalingFavorblack) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_BITONALSCALING_FAVORBLACK, OnUpdatePreferencesBitonalscalingFavorblack) ON_COMMAND(ID_PREFERENCES_BITONALSCALING_NORMAL, OnPreferencesBitonalscalingNormal) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_BITONALSCALING_NORMAL, OnUpdatePreferencesBitonalscalingNormal) ON_COMMAND(ID_PREFERENCES_BITONALSCALING_SCALETOGRAY, OnPreferencesBitonalscalingScaletogray) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_BITONALSCALING_SCALETOGRAY, OnUpdatePreferencesBitonalscalingScaletogray) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_DITHERING_ERRORDIFFUSION, OnUpdatePreferencesDitheringErrordiffusion) ON_COMMAND(ID_PREFERENCES_DITHERING_ERRORDIFFUSION, OnPreferencesDitheringErrordiffusion) ON_COMMAND(ID_PREFERENCES_DITHERING_ORDERED, OnPreferencesDitheringOrdered) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_DITHERING_ORDERED, OnUpdatePreferencesDitheringOrdered) ON_COMMAND(ID_PREFERENCES_PAINTSCALING_BICUBIC, OnPreferencesPaintscalingBicubic) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PAINTSCALING_BICUBIC, OnUpdatePreferencesPaintscalingBicubic) ON_COMMAND(ID_PREFERENCES_PAINTSCALING_NORMAL, OnPreferencesPaintscalingNormal) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PAINTSCALING_NORMAL, OnUpdatePreferencesPaintscalingNormal) ON_COMMAND(ID_PREFERENCES_PAINTSCALING_RESAMPLE, OnPreferencesPaintscalingResample) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PAINTSCALING_RESAMPLE, OnUpdatePreferencesPaintscalingResample) ON_COMMAND(ID_PREFERENCES_PALETTE_FIXED, OnPreferencesPaletteFixed) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PALETTE_FIXED, OnUpdatePreferencesPaletteFixed) ON_COMMAND(ID_FILE_TWAINSELECT, OnFileTwainselect) ON_COMMAND(ID_FILE_TWAINACQUIRE, OnFileTwainacquire) ON_COMMAND(ID_FILE_ISISSELECTSOURCE, OnFileISISselect) ON_COMMAND(ID_FILE_ISISACQUIRE, OnFileISISacquire) ON_COMMAND(ID_FILE_ISISACQUIREMULTI, OnFileISISacquireMulti) ON_COMMAND(ID_FILE_COLORMERGE, OnFileColormerge) ON_COMMAND(ID_EDIT_PASTE, OnEditPaste) ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEditPaste) ON_COMMAND(ID_FILE_BROWSE, OnFileBrowse) ON_COMMAND(IDM_FILEFORMATASSOCIATIONS, OnFileFormatAssociations) ON_COMMAND(IDM_CONVERT, OnConvert) ON_UPDATE_COMMAND_UI(ID_FILE_TWAINSELECT, OnUpdateFileTwainselect) ON_UPDATE_COMMAND_UI(ID_FILE_TWAINACQUIRE, OnUpdateFileTwainacquire) ON_UPDATE_COMMAND_UI(ID_FILE_ISISSELECTSOURCE, OnUpdateFileISIS) ON_UPDATE_COMMAND_UI(ID_FILE_ISISACQUIRE, OnUpdateFileISISAcquire) ON_UPDATE_COMMAND_UI(ID_FILE_ISISACQUIREMULTI, OnUpdateFileISISAcquireMulti) ON_COMMAND(ID_FILE_FILEFORMATASSOCIATIONS, OnFileFormatAssociations) ON_COMMAND(IDM_LOADTEXTFILES, OnLoadTextFiles) ON_UPDATE_COMMAND_UI(IDM_LOADTEXTFILES, OnUpdateLoadTextFiles) //}}AFX_MSG_MAP END_MESSAGE_MAP() //Function to gracefully terminate void ExitMFCApp() { // Same as double-clicking on main window close box. ASSERT(AfxGetMainWnd() != NULL); AfxGetMainWnd()->SendMessage(WM_CLOSE); } ///////////////////////////////////////////////////////////////////////////// // CDemoApp construction CDemoApp::CDemoApp() { // TODO: add construction code here, // Place all significant initialization in InitInstance m_uPicturizeFlags = PICTURIZE_LOADALL | PICTURIZE_RESAMPLE; m_pRasterProcess = NULL; m_pRaster = NULL; m_pRasterRgn = NULL; m_pRasterIO = NULL; m_pRasterThumbnail = NULL; m_pRasterBrowseDlg = NULL; m_pBrowseDlg = NULL; m_bStartEffect = FALSE; m_bDICOMLoadMsg = TRUE; m_bDICOMSaveMsg = TRUE; m_pRasterTwainSink = NULL; //Dialogs m_pRasterKrnDlg = NULL; m_pRasterFileDlg = NULL; m_pRasterImgDlg = NULL; m_pRasterClrDlg = NULL; m_pRasterImgEfxDlg = NULL; m_pRasterImgDocDlg = NULL; m_iXRes = 0; m_iYRes = 0; } ///////////////////////////////////////////////////////////////////////////// // The one and only CDemoApp object CDemoApp theApp; ///////////////////////////////////////////////////////////////////////////// // CDemoApp initialization BOOL CDemoApp::InitInstance() { AfxEnableControlContainer(); m_bEnableTwain = FALSE; m_nOpenMode = OPENMODE_FILE; m_bOrderedDither = TRUE; m_bAutoPalette = TRUE; m_nBitonalScaling = BITONALSCALING_NORMAL; m_nPaintScaling = PAINTSCALING_RESAMPLE; m_iPage = 1; // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove dfrom 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 CoInitialize(NULL); // Change the registry key under which our settings are stored. // You should modify this string to be something appropriate // such as the name of your company or organization. SetRegistryKey(_T("Local AppWizard-Generated Applications")); LoadStdProfileSettings(8); // 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_DEMOTYPE, RUNTIME_CLASS(CDemoDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CDemoView)); AddDocTemplate(pDocTemplate); // create main MDI Frame window CMainFrame* pMainFrame = new CMainFrame; if (!pMainFrame->LoadFrame(IDR_MAINFRAME)) return FALSE; m_pMainWnd = pMainFrame; // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); //Do not create document at startup if ( CCommandLineInfo::FileNew == cmdInfo.m_nShellCommand ) { cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing; } //Initialize variables and create COM objects HRESULT hr; m_pBitmap = NULL; //Create the licensed LTRaster COM object m_pRaster = NULL; hr = CreateRasterObjectLic(&m_pRaster); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitMFCApp(); return FALSE;} m_pRaster->EnableMethodErrors = FALSE; //Create the licensed LTRasterRgn com object m_pRasterRgn=NULL; hr = CreateRasterObjectLic(&m_pRasterRgn); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitMFCApp(); return FALSE;} m_pRasterRgn->EnableMethodErrors = FALSE; m_pRasterIO=NULL; hr = CoCreateInstance( CLSID_LEADRasterIO, NULL, CLSCTX_ALL, IID_ILEADRasterIO, (void**)&m_pRasterIO ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitMFCApp(); return FALSE;} m_pRasterIO->EnableMethodErrors = FALSE; m_pRasterProcess=NULL; hr = CoCreateInstance( CLSID_LEADRasterProcess, NULL, CLSCTX_ALL, IID_ILEADRasterProcess, (void**)&m_pRasterProcess ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitMFCApp(); return FALSE;} m_pRasterProcess->EnableMethodErrors = FALSE; m_pRasterKrnDlg = NULL; hr = CoCreateInstance( CLSID_LEADRasterDlgKrn, NULL, CLSCTX_ALL, IID_ILEADRasterDlgKrn, (void**)&m_pRasterKrnDlg ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitMFCApp(); return FALSE;} m_pRasterKrnDlg->InitDlg(INIT_WITH_COLOR); m_pRasterKrnDlg->EnableMethodErrors = FALSE; m_pRasterFileDlg=NULL; hr = CoCreateInstance( CLSID_LEADRasterDlgFile, NULL, CLSCTX_ALL, IID_ILEADRasterDlgFile, (void**)&m_pRasterFileDlg ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitMFCApp(); return FALSE;} m_pRasterFileDlg->EnableMethodErrors = FALSE; m_pRasterImgDlg = NULL; hr = CoCreateInstance( CLSID_LEADRasterDlgImg, NULL, CLSCTX_ALL, IID_ILEADRasterDlgImg, (void**)&m_pRasterImgDlg ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitMFCApp(); return FALSE;} m_pRasterImgDlg->EnableMethodErrors = FALSE; m_pRasterClrDlg=NULL; hr = CoCreateInstance( CLSID_LEADRasterDlgClr, NULL, CLSCTX_ALL, IID_ILEADRasterDlgClr, (void**)&m_pRasterClrDlg ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitMFCApp(); return FALSE;} m_pRasterClrDlg->EnableMethodErrors = FALSE; m_pRasterImgEfxDlg =NULL; hr = CoCreateInstance( CLSID_LEADRasterDlgImgEfx, NULL, CLSCTX_ALL, IID_ILEADRasterDlgImgEfx, (void**)&m_pRasterImgEfxDlg ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitMFCApp(); return FALSE;} m_pRasterImgEfxDlg->EnableMethodErrors = FALSE; m_pRasterImgDocDlg=NULL; hr = CoCreateInstance( CLSID_LEADRasterDlgImgDoc, NULL, CLSCTX_ALL, IID_ILEADRasterDlgImgDoc, (void**)&m_pRasterImgDocDlg ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitMFCApp(); return FALSE;} m_pRasterImgDocDlg->EnableMethodErrors = FALSE; m_pRasterWebDlg = NULL; hr = CoCreateInstance( CLSID_LEADRasterDlgWeb, NULL, CLSCTX_ALL, IID_ILEADRasterDlgWeb, (void**)&m_pRasterWebDlg ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitMFCApp(); return FALSE;} m_pRasterWebDlg->EnableMethodErrors = FALSE; // Dispatch commands specified on the command line if (!ProcessShellCommand(cmdInfo)) return FALSE; // The main window has been initialized, so show and update it. pMainFrame->ShowWindow(m_nCmdShow); pMainFrame->UpdateWindow(); UNLOCKSUPPORT(*m_pRaster); // Unlock support for the LZW files and express capabilities //Instantiate the thumbanil browswer sink class and hold a pointer to it. m_pRasterThumbnailSink = new CRasterThumbSink; //Create the RasterThumbnail object CoCreateInstance( CLSID_LEADRasterThumbnail, NULL, CLSCTX_ALL, IID_ILEADRasterThumbnail, (void**)&m_pRasterThumbnail ); //Establish a connection between source and sink. LPUNKNOWN pUnkSink = m_pRasterThumbnailSink->GetIDispatch(FALSE); AfxConnectionAdvise(m_pRasterThumbnail, DIID__LEADRasterThumbnailEvents, pUnkSink, FALSE, &m_dwThumbnailCookie); //Instantiate the thumbanil browswer sink class and hold a pointer to it. m_pRasterBrowseDlgSink = new CRasterBrowseDlgSink; //Create the RasterThumbnail object CoCreateInstance( CLSID_LEADRasterThumbnail, NULL, CLSCTX_ALL, IID_ILEADRasterThumbnail, (void**)&m_pRasterBrowseDlg ); //Establish a connection between source and sink. LPUNKNOWN pBrowseSink = m_pRasterBrowseDlgSink->GetIDispatch(FALSE); AfxConnectionAdvise(m_pRasterBrowseDlg, DIID__LEADRasterThumbnailEvents, pBrowseSink, FALSE, &m_dwBrowseDlgCookie); //Instantiate the twain browswer sink class and hold a pointer to it. m_pRasterTwainSink = new CRasterTwainSink; //Create the RasterTwain object hr = CoCreateInstance(CLSID_LEADRasterTwain, NULL, CLSCTX_ALL, IID_ILEADRasterTwain, (void**)&m_pRasterTwain); if (SUCCEEDED(hr)) { if(m_pRasterTwain->IsAvailable((long)m_pMainWnd->m_hWnd)) { m_pRasterTwain->InitSession((long)m_pMainWnd->m_hWnd); m_bEnableTwain = TRUE; } } //Establish a connection between source and sink. pUnkSink = m_pRasterTwainSink->GetIDispatch(FALSE); AfxConnectionAdvise(m_pRasterTwain, DIID__LEADRasterTwainEvents, pUnkSink, FALSE, &m_dwCookie); m_pRasterProcSink = new CRasterProcSink; pUnkSink = m_pRasterProcSink->GetIDispatch(FALSE); AfxConnectionAdvise(m_pRasterProcess, DIID__LEADRasterProcessEvents, pUnkSink, FALSE, &m_dwRasterProcCookie); RegisterAppKey(m_hInstance); return TRUE; } int CDemoApp::ExitInstance() { if (m_pRaster != NULL) m_pRaster->Release(); if (m_pRasterRgn != NULL) m_pRasterRgn->Release(); if (m_pRasterIO != NULL) m_pRasterIO->Release(); if (m_pRasterWebDlg !=NULL) m_pRasterWebDlg->Release(); if (m_pRasterClrDlg != NULL) m_pRasterClrDlg->Release(); if (m_pRasterFileDlg != NULL) m_pRasterFileDlg->Release(); if (m_pRasterImgDlg !=NULL) m_pRasterImgDlg->Release(); if (m_pRasterImgEfxDlg!=NULL) m_pRasterImgEfxDlg->Release(); if (m_pRasterImgDocDlg!=NULL) m_pRasterImgDocDlg->Release(); if (m_pRasterKrnDlg!=NULL) { m_pRasterKrnDlg->FreeDlg(); m_pRasterKrnDlg->Release(); } if (m_pRasterThumbnail != NULL) { //Terminate a connection between Thumbnail source and sink. LPUNKNOWN pUnkSink = m_pRasterThumbnailSink->GetIDispatch(FALSE); AfxConnectionUnadvise(m_pRasterThumbnail, DIID__LEADRasterThumbnailEvents, pUnkSink, FALSE, m_dwThumbnailCookie); delete m_pRasterThumbnailSink; m_pRasterThumbnail->Release(); } if (m_pRasterBrowseDlg != NULL) { //Terminate a connection between Thumbnail source and sink. LPUNKNOWN pUnkSink = m_pRasterBrowseDlgSink->GetIDispatch(FALSE); AfxConnectionUnadvise(m_pRasterBrowseDlg, DIID__LEADRasterThumbnailEvents, pUnkSink, FALSE, m_dwBrowseDlgCookie); delete m_pRasterBrowseDlgSink; m_pRasterBrowseDlg->Release(); } if(m_pRasterTwainSink) { LPUNKNOWN pUnkSink = m_pRasterTwainSink->GetIDispatch(FALSE); AfxConnectionUnadvise(m_pRasterTwain, DIID__LEADRasterTwainEvents, pUnkSink, FALSE, m_dwCookie); delete m_pRasterTwainSink; } if (m_pRasterTwain != NULL) { if(m_bEnableTwain) { m_pRasterTwain->EndSession(); } m_pRasterTwain->Release(); } if(m_pRasterProcSink) { LPUNKNOWN pUnkSink = m_pRasterProcSink->GetIDispatch(FALSE); AfxConnectionUnadvise(m_pRasterProcess, DIID__LEADRasterProcessEvents, pUnkSink, FALSE, m_dwRasterProcCookie); delete m_pRasterProcSink; } if (m_pRasterProcess != NULL) { m_pRasterProcess->Release(); } CoUninitialize(); return CWinApp::ExitInstance(); } ///////////////////////////////////////////////////////////////////////////// // 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) // No message handlers //}}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) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() // App command to run the dialog void CDemoApp::OnAppAbout() { CAboutDlg aboutDlg; aboutDlg.DoModal(); } ///////////////////////////////////////////////////////////////////////////// // CDemoApp commands int CDemoApp::DisplayLEADError(int nCode) { CString str; if((nCode == DLG_CANCEL) || (nCode == ERROR_ISIS_CANCEL)) //if (nCode == COM_ERROR_DLG_CANCELED) nCode = 0; if(nCode) { str.Format(TEXT("A LEADTOOLS error has occured.\nCODE = %d"), nCode); m_pMainWnd->MessageBox(str); } return(nCode); } static const WCHAR BASED_CODE _szLicString[] = L"LEADTOOLS OCX Copyright (c) 1991-2004 LEAD Technologies, Inc."; void CDemoApp::OnFileOpen() { BOOL bContinue=FALSE; int nRet; m_pRasterFileDlg->PutFilter(""); m_pRasterFileDlg->PutFileDlgFlags(0); m_pRasterFileDlg->PutFileName(""); m_pRasterFileDlg->PutDialogTitle("Open File"); m_pRasterFileDlg->PutBitmap(((CMainFrame*)m_pMainWnd)->m_pRaster->GetBitmap()); m_pRasterFileDlg->PutUIFlags( OPEN_LOADBITMAP | OPEN_SHOW_MULTIPAGE | OPEN_SHOW_PREVIEW | OPEN_USEFILESTAMP | OPEN_SHOW_FILEINFO | OPEN_SHOW_LOADOPTIONS | OPEN_SHOW_LOADCOMPRESSED | OPEN_SHOW_LOADROTATED | OPEN_SHOW_DELPAGE | OPEN_SHOW_PDFOPTIONS | OPEN_SHOW_RASTEROPTIONS | OPEN_SHOW_VECTOROPTIONS | OPEN_VIEWTOTALPAGES | OPEN_ENABLESIZING ); nRet = m_pRasterFileDlg->ShowOpenDlg((long)m_pMainWnd->m_hWnd); if(nRet == 0 && m_pRasterFileDlg->GetDialogStatus() ==DLG_OK) { m_iPage = (short)m_pRasterFileDlg->GetPageNumber(); m_iXRes = (short)m_pRasterFileDlg->GetRasterXResolution(); m_iYRes = (short)m_pRasterFileDlg->GetRasterYResolution(); POSITION pos = GetFirstDocTemplatePosition(); CDocTemplate* pDocTemplate = GetNextDocTemplate(pos); pDocTemplate->OpenDocumentFile((LPCTSTR)m_pRasterFileDlg->GetFileName()); } else if(nRet == ERROR_PDF_BAD_INITIALIZATION_FILES) { if( IDYES == MessageBox( AfxGetMainWnd()->m_hWnd, TEXT("LEADTOOLS PDF plugin is not found, do you want to download the plugin now?"), TEXT("Open file"),MB_ICONEXCLAMATION | MB_YESNO)) ShellExecute(AfxGetMainWnd()->m_hWnd, TEXT("open"), TEXT("http://www.leadtools.com/ReleaseDownloads/v14/LEADTOOLSPDFRuntime.exe"), NULL, NULL, SW_SHOWNORMAL); } } /**/ void CDemoApp::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 CDemoApp::OnPreferencesDitheringErrordiffusion() { m_bOrderedDither = FALSE; UpdateAllDocumentViews(); } void CDemoApp::OnPreferencesDitheringOrdered() { m_bOrderedDither = TRUE; UpdateAllDocumentViews(); } void CDemoApp::OnPreferencesPaletteAuto() { m_bAutoPalette = TRUE; UpdateAllDocumentViews(); } void CDemoApp::OnPreferencesPaletteFixed() { m_bAutoPalette = FALSE; UpdateAllDocumentViews(); } void CDemoApp::OnPreferencesBitonalscalingFavorblack() { m_nBitonalScaling = BITONALSCALING_FAVORBLACK; UpdateAllDocumentViews(); } void CDemoApp::OnPreferencesBitonalscalingNormal() { m_nBitonalScaling = BITONALSCALING_NORMAL; UpdateAllDocumentViews(); } void CDemoApp::OnPreferencesBitonalscalingScaletogray() { m_nBitonalScaling = BITONALSCALING_SCALETOGRAY; UpdateAllDocumentViews(); } void CDemoApp::OnPreferencesPaintscalingNormal() { m_nPaintScaling = PAINTSCALING_NORMAL; UpdateAllDocumentViews(); } void CDemoApp::OnPreferencesPaintscalingResample() { m_nPaintScaling = PAINTSCALING_RESAMPLE; UpdateAllDocumentViews(); } void CDemoApp::OnPreferencesPaintscalingBicubic() { m_nPaintScaling = PAINTSCALING_BICUBIC; UpdateAllDocumentViews(); } void CDemoApp::OnUpdatePreferencesDitheringErrordiffusion(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_bOrderedDither ? 0 : 1); } void CDemoApp::OnUpdatePreferencesDitheringOrdered(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_bOrderedDither ? 1 : 0); } void CDemoApp::OnUpdatePreferencesPaletteAuto(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_bAutoPalette ? 1 : 0); } void CDemoApp::OnUpdatePreferencesPaletteFixed(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_bAutoPalette ? 0 : 1); } void CDemoApp::OnUpdatePreferencesBitonalscalingFavorblack(CCmdUI* pCmdUI) { int bLocked; if(m_pRaster) { bLocked = m_pRaster->IsSupportLocked((RasterSupportLockConstants)L_SUPPORT_DOCUMENT) && m_pRaster->IsSupportLocked((RasterSupportLockConstants)L_SUPPORT_MEDICAL); pCmdUI->Enable(!bLocked); pCmdUI->SetCheck(m_nBitonalScaling == BITONALSCALING_FAVORBLACK); } } void CDemoApp::OnUpdatePreferencesBitonalscalingNormal(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_nBitonalScaling == BITONALSCALING_NORMAL); } void CDemoApp::OnUpdatePreferencesBitonalscalingScaletogray(CCmdUI* pCmdUI) { int bLocked; ILEADRaster* pRaster = GetMainRaster(); if(pRaster) { bLocked = pRaster->IsSupportLocked((RasterSupportLockConstants)L_SUPPORT_DOCUMENT) && pRaster->IsSupportLocked((RasterSupportLockConstants)L_SUPPORT_MEDICAL); pCmdUI->Enable(!bLocked); pCmdUI->SetCheck(m_nBitonalScaling == BITONALSCALING_SCALETOGRAY); } } void CDemoApp::OnUpdatePreferencesPaintscalingNormal(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_nPaintScaling == PAINTSCALING_NORMAL); } void CDemoApp::OnUpdatePreferencesPaintscalingResample(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_nPaintScaling == PAINTSCALING_RESAMPLE); } void CDemoApp::OnUpdatePreferencesPaintscalingBicubic(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_nPaintScaling == PAINTSCALING_BICUBIC); } ILEADRaster * CDemoApp::GetMainRaster() { return(m_pRaster); } void CDemoApp::OnFileTwainselect() { ILEADRaster *pRaster = GetMainRaster(); CMainFrame* pFrame = (CMainFrame*)AfxGetApp()->GetMainWnd(); if (m_pRasterTwain) { m_pRasterTwain->EnableMethodErrors = FALSE; int nRet = m_pRasterTwain->SelectSource(); // show no error if the user clicks on Cancel if( nRet && nRet != ERROR_TWAIN_CANCEL ) theApp.DisplayLEADError(nRet); m_pRasterTwain->EnableMethodErrors = TRUE; } } void CDemoApp::OnFileTwainacquire() { m_pRasterTwain->EnableMethodErrors = FALSE; int nRet = m_pRasterTwain->Acquire(L_LTWAIN_SHOW_USER_INTERFACE | L_LTWAIN_MODAL_USER_INTERFACE); m_pRasterTwain->EnableMethodErrors = TRUE; if (nRet) theApp.DisplayLEADError(nRet); } void CDemoApp::OnFileISISselect() { //You need ILEADRasterISIS object here #ifndef _UNICODE ILEADRaster *pRaster = GetMainRaster(); ILEADRasterISIS *pRasterISIS; //Create the RasterISIS object HRESULT hr = CoCreateInstance(CLSID_LEADRasterISIS, NULL, CLSCTX_ALL, IID_ILEADRasterISIS, (void**)&pRasterISIS); if (SUCCEEDED(hr)) { pRasterISIS->EnableMethodErrors = FALSE; int nRet = pRasterISIS->ISISSelect((long) m_pMainWnd->m_hWnd); // show no error if the user clicks on Cancel if( nRet && nRet != ERROR_ISIS_CANCEL ) theApp.DisplayLEADError(nRet); pRasterISIS->Release(); } #endif } void CDemoApp::OnFileISISacquire() { OpenDocument(OPENMODE_ISIS); } void CDemoApp::OnFileISISacquireMulti() { #ifndef _UNICODE ILEADRaster *pRaster = GetMainRaster(); //Create the RasterISIS object BOOL bContinue=FALSE; int nRet; m_pRasterFileDlg->PutFilter("All Files|*.*"); m_pRasterFileDlg->PutFileDlgFlags(0); m_pRasterFileDlg->PutEnableMethodErrors(FALSE); m_pRasterFileDlg->PutDialogTitle("Select Base FileName"); m_pRasterFileDlg->PutUIFlags(SAVE_SHOW_FILEOPTIONS_MULTIPAGE); nRet = m_pRasterFileDlg->ShowSaveDlg((long)theApp.m_pMainWnd->m_hWnd); if(nRet == 0 && m_pRasterFileDlg->GetDialogStatus() == DLG_OK) { //You need ILEADRasterISIS object here ILEADRasterISIS *pRasterISIS; HRESULT hr = CoCreateInstance(CLSID_LEADRasterISIS, NULL, CLSCTX_ALL, IID_ILEADRasterISIS, (void**)&pRasterISIS); if (SUCCEEDED(hr)) { CString csFileName; csFileName = (LPCTSTR)m_pRasterFileDlg->FileName; HCURSOR hOldCursor = SetCursor(theApp.LoadStandardCursor(MAKEINTRESOURCE(IDC_WAIT))); pRasterISIS->EnableMethodErrors = FALSE; pRasterISIS->ISISLoadDriver(); int nRet = pRasterISIS->ISISAcquireMulti( (long)m_pMainWnd->m_hWnd, pRaster, (LPCTSTR)csFileName, ISIS_SHOWUI, RasterFileConstants(m_pRasterFileDlg->GetSaveFormat()), m_pRasterFileDlg->GetSaveMulti(), ISIS_BITMAP_LIST_OVERWRITE ); pRasterISIS->ISISUnloadDriver(); // show no error if the user clicks on Cancel if( nRet && nRet != ERROR_ISIS_CANCEL ) theApp.DisplayLEADError(nRet); pRasterISIS->Release(); SetCursor(hOldCursor); } } else theApp.DisplayLEADError(nRet); #endif return; } void CDemoApp::OpenDocument(int nMode) { m_nOpenMode = nMode; OnFileNew(); m_nOpenMode = OPENMODE_FILE; } void CDemoApp::OnFileColormerge() { OpenDocument(OPENMODE_COLORMERGE); } CPtrArray * CDemoApp::EnumAllDocuments(CDocument * pDocToExclude) { CPtrArray* pArray; POSITION pos = theApp.GetFirstDocTemplatePosition(); pArray = new CPtrArray; while (pos != NULL) { 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 CDemoApp::OnEditPaste() { OpenDocument(OPENMODE_PASTE); } void CDemoApp::OnUpdateEditPaste(CCmdUI* pCmdUI) { ILEADRaster* pRaster = GetMainRaster(); if(pRaster) { pCmdUI->Enable(pRaster->Paste(PASTE_ISREADY)); } } //Converts szVal to 1000ths of inches or pixels BOOL CDemoApp::StringToUnit(long * piVal, char * szVal, BOOL bInches) { char *pChar; double dVal; BOOL bRet; dVal = strtod(szVal, &pChar); if(bRet = (*pChar == '\0')) { if(bInches) *piVal = (long)(dVal * UNITS_PER_INCH); else *piVal = (long)(dVal); } return bRet; } long CDemoApp::PixelsToInches(long iPixels, long iRes) { long iInches; iInches = iPixels * UNITS_PER_INCH / iRes; return(iInches); } long CDemoApp::InchesToPixels(long iInches, long iRes) { long iPixels; iPixels = iInches * iRes / UNITS_PER_INCH; return(iPixels); } CString CDemoApp::UnitToString(long iVal, BOOL bInches) { CString szVal; double dVal; if(bInches) { dVal = (double)iVal / (double)UNITS_PER_INCH; szVal.Format(TEXT("%.3f"), dVal); } else //pixels { dVal = (double)iVal; szVal.Format(TEXT("%.0f"), dVal); } return szVal; } CString CDemoApp::IntToString(UINT iVal) { CString szVal; szVal.Format(TEXT("%d"), iVal); return szVal; } HRESULT CDemoApp::CreateRasterObjectLic(ILEADRaster ** ppRaster) { HRESULT hr; *ppRaster = NULL; IClassFactory2 *pCF2 = NULL; hr = CoGetClassObject(CLSID_LEADRaster, CLSCTX_ALL, NULL, IID_IClassFactory2, (void**)&pCF2); if (!pCF2) return hr; IUnknown *pOuter = NULL; static const WCHAR BASED_CODE _szLicString[] =L"LEADTOOLS OCX Copyright (c) 1991-2004 LEAD Technologies, Inc."; BSTR LicKey = SysAllocString(_szLicString); BSTR pszLic = SysAllocString(_szLicString); hr = pCF2->CreateInstanceLic(pOuter, NULL, IID_IUnknown, pszLic, (void**)ppRaster); pCF2->Release(); SysFreeString(pszLic); return hr; } void CDemoApp::OnFileBrowse() { m_pRasterThumbnail->EnableMethodErrors= FALSE; m_pRasterThumbnail->Filter = "*.ico"; m_pRasterThumbnail->ExpandMultipage = true; m_pRasterThumbnail->BrowseDir("C:\\face"); short nRet; HCURSOR hOldCursor=NULL; if(m_pBrowseDlg) { m_pBrowseDlg->ShowWindow(SW_SHOW); m_pBrowseDlg->SetActiveWindow(); m_pBrowseDlg->DestroyWindow(); m_pBrowseDlg=NULL; } m_pRasterFileDlg->PutEnableMethodErrors(FALSE); m_pRasterFileDlg->PutDialogTitle("Get Directory"); nRet = m_pRasterFileDlg->ShowDirectoryDlg((long)m_pMainWnd->m_hWnd); if(nRet == 0 && m_pRasterFileDlg->GetDialogStatus() == DLG_OK) { //create window m_pBrowseDlg = new CBrowseDlg(m_pMainWnd); m_pBrowseDlg->Create(); m_pBrowseDlg->m_LEADImageList.Clear(); m_pBrowseDlg->m_HiddenList.ResetContent(); ((CMainFrame*)m_pMainWnd)->m_bBrowseQuit = FALSE; //browse a directory hOldCursor = SetCursor(theApp.LoadStandardCursor(MAKEINTRESOURCE(IDC_WAIT))); m_pBrowseDlg->m_LEADImageList.SetAllowSelection(IMGLST_ALLOWSELECTION_SINGLE); theApp.m_pRasterThumbnail->PutFilter("*.*"); theApp.m_pRasterThumbnail->PutEnableMethodErrors(FALSE); theApp.m_pRasterThumbnail->PutForceSize(FALSE); theApp.m_pRasterThumbnail->PutResample(FALSE); theApp.m_pRasterThumbnail->PutLoadStamp(FALSE); theApp.m_pRasterThumbnail->PutMaintainAspect(TRUE); theApp.m_pRasterThumbnail->PutStopOnError(FALSE); theApp.m_pRasterThumbnail->PutIncludeSubDirectories(FALSE); theApp.m_pRasterThumbnail->PutExpandMultipage(FALSE); theApp.m_pRasterThumbnail->PutThumbnailBitsPerPixel(24); theApp.m_pRasterThumbnail->PutMaxSizeMem(4096000); //set a size limit m_pBrowseDlg->SetWindowText("Browsing: " + m_pRasterFileDlg->GetDirectory()); m_pBrowseDlg->ShowWindow(SW_SHOW); m_pBrowseDlg->m_bBrowsing = TRUE; nRet = theApp.m_pRasterThumbnail->BrowseDir(m_pRasterFileDlg->GetDirectory()); m_pBrowseDlg->m_bBrowsing = FALSE; if(nRet != 0) { if(nRet != ERROR_USER_ABORT) { CString csOut; csOut.Format(TEXT("Error browsing directory: %ld"), nRet); AfxMessageBox(csOut); m_pBrowseDlg->DestroyWindow(); m_pBrowseDlg=NULL; } else AfxMessageBox(TEXT("Browsing Canceled!")); } SetCursor(hOldCursor); } else theApp.DisplayLEADError(nRet); } void CDemoApp::OnFileFormatAssociations() { m_pRasterFileDlg->PutServerApplicationName(REGISTRYKEY_SERVER_NAME ); m_pRasterFileDlg->ShowFilesAssociationDlg((long)m_pMainWnd->m_hWnd); } void CDemoApp::OnConvert() { m_pRasterFileDlg->PutOverWriteFlags(FILECONVERSION_OVERWRITE_SKIP); m_pRasterFileDlg->PutEnableLogReport(TRUE); m_pRasterFileDlg->PutEnableRemoveSourceFile(FALSE); m_pRasterFileDlg->PutEnableShowFullPath(TRUE); m_pRasterFileDlg->PutUseOriginalFolder(TRUE); m_pRasterFileDlg->PutUIFlags( FILECONVERSION_SHOW_ADD | FILECONVERSION_SHOW_PREVIEW | FILECONVERSION_SHOW_LOADOPTIONS | FILECONVERSION_SHOW_FILEINFO | FILECONVERSION_SHOW_PREVIEW_PAGES | FILECONVERSION_SHOW_RESIZE | FILECONVERSION_SHOW_ROTATE | FILECONVERSION_SHOW_NAMINGTEMPLATE | FILECONVERSION_SHOW_OVERWRITE | FILECONVERSION_SHOW_OVERWRITE_ALL | FILECONVERSION_SHOW_ADD | FILECONVERSION_SHOW_ADDFOLDER | FILECONVERSION_SHOW_REMOVE | FILECONVERSION_SHOW_SELECTALL | FILECONVERSION_SHOW_DELETEORIGINAL | FILECONVERSION_SHOW_NEWFORMATSUPDATES ); m_pRasterFileDlg->ShowFileConversionDlg((long)m_pMainWnd->m_hWnd); } void CDemoApp::OnUpdateFileTwainselect(CCmdUI* pCmdUI) { if(m_pRasterTwain->IsAvailable((long)m_pMainWnd->m_hWnd)) pCmdUI->Enable(!m_bStartEffect); else pCmdUI->Enable(FALSE); } void CDemoApp::OnUpdateFileTwainacquire(CCmdUI* pCmdUI) { if(m_pRasterTwain->IsAvailable((long)m_pMainWnd->m_hWnd)) pCmdUI->Enable(!m_bStartEffect); else pCmdUI->Enable(FALSE); } BOOL CDemoApp::IsISISIsAvailable() { BOOL bRet = FALSE; #ifndef _UNICODE ILEADRasterISIS *pRasterISIS; HRESULT hr = CoCreateInstance(CLSID_LEADRasterISIS, NULL, CLSCTX_ALL, IID_ILEADRasterISIS, (void**)&pRasterISIS); bRet = pRasterISIS->GetIsISISAvailable(); pRasterISIS->Release(); #endif return bRet; } void CDemoApp::OnUpdateFileISIS(CCmdUI* pCmdUI) { if(IsISISIsAvailable()) pCmdUI->Enable(!m_bStartEffect); else pCmdUI->Enable(FALSE); } void CDemoApp::OnUpdateFileISISAcquire(CCmdUI* pCmdUI) { if(IsISISIsAvailable()) pCmdUI->Enable(!m_bStartEffect); else pCmdUI->Enable(FALSE); } void CDemoApp::OnUpdateFileISISAcquireMulti(CCmdUI* pCmdUI) { if(IsISISIsAvailable()) pCmdUI->Enable(!m_bStartEffect); else pCmdUI->Enable(FALSE); } static BOOL CreateStandardServerRegisteryEntry ( TCHAR FAR * pszServerName, TCHAR FAR * pszCommand, TCHAR FAR * pszDefaultIcon ) { DWORD dwDispos ; LONG lRet ; HKEY hKey ; BOOL fRet = TRUE ; TCHAR FAR *szRegisterKey [ REG_KEYS ] = { TEXT ( "\\shell\\open\\command" ), TEXT ( "\\DefaultIcon" ) } ; TCHAR FAR *szRegisterKeyDefaultValues [ REG_KEYS ] = { pszCommand, pszDefaultIcon } ; {// CREATE SERVER NODE lRet = RegCreateKeyEx ( HKEY_CLASSES_ROOT, pszServerName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, &dwDispos ) ; if ( lRet != ERROR_SUCCESS ) { return FALSE ; } RegCloseKey ( hKey ) ; }// CREATE SERVER NODE {// CREATE STANDARD SUB NODES & VALUSE INT k = 0 ; for ( ; k < REG_KEYS; k++ ) { TCHAR szKey [ 256 * 2 ] = { 0 } ; //compose full key _stprintf ( szKey, TEXT("%s%s"), REGISTRYKEY_SERVER_NAME, szRegisterKey [ k ] ) ; // create... lRet = RegCreateKeyEx ( HKEY_CLASSES_ROOT, szKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, &dwDispos ) ; // set default value if ( lRet == ERROR_SUCCESS ) { RegSetValueEx ( hKey, TEXT(""), 0, REG_SZ, ( BYTE* CONST ) ( szRegisterKeyDefaultValues [ k ] ), ( lstrlen ( szRegisterKeyDefaultValues [ k ] ) + 1 ) * sizeof ( TCHAR ) ) ; } else { fRet = FALSE ; } // close key handle RegCloseKey ( hKey ) ; } }// CREATE STANDARD SUB NODES & VALUSE return fRet ; } VOID RegisterAppKey ( HINSTANCE hInstance ) { TCHAR szFullFileName [256] = {0} ; TCHAR szShortFileName [256] = {0} ; TCHAR * pszPathName = NULL ; {// RETRIEVE PATH NAME DWORD dwRet ; // full file name GetModuleFileName ( hInstance, szFullFileName, 256 ) ; dwRet = GetShortPathName ( szFullFileName, szShortFileName, 256 ) ; if ( ERROR_INVALID_PARAMETER == dwRet ) { pszPathName = szFullFileName ; } else { pszPathName = szShortFileName ; } }// RETRIEVE PATH NAME {// REGISTER [BASIC] SERVER NAME TCHAR szDefaultIcon [256*2] = {0}; TCHAR szOpen [256*2] = {0}; // Open STRING _stprintf ( szOpen, TEXT ( "\"%s\" \"%%1\""), pszPathName ) ; // default icon _stprintf ( szDefaultIcon, TEXT("%s,%d"), pszPathName, -IDR_MAINFRAME ) ; CreateStandardServerRegisteryEntry ( REGISTRYKEY_SERVER_NAME, szOpen, szDefaultIcon ) ; }// REGISTER [BASIC] SERVER NAME } void CDemoApp::OnLoadTextFiles() { m_pRasterIO->TXTEnabled = !theApp.m_pRasterIO->TXTEnabled; } void CDemoApp::OnUpdateLoadTextFiles(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_pRasterIO->TXTEnabled); }