home *** CD-ROM | disk | FTP | other *** search
/ Mastering Visual Basic 6 / mastvb6.iso / leadtools / ocx32.lt / Ocrdemo.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-13  |  25.2 KB  |  884 lines

  1. // OCRDEMO.cpp : Defines the class behaviors for the application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "OCRDEMO.h"
  6.  
  7. #include "MainFrm.h"
  8. #include "OCRDoc.h"
  9. #include "OCRView.h"
  10.  
  11. #ifdef _DEBUG
  12. #define new DEBUG_NEW
  13. #undef THIS_FILE
  14. static char THIS_FILE[] = __FILE__;
  15. #endif
  16.  
  17. /////////////////////////////////////////////////////////////////////////////
  18. // COCRApp
  19.  
  20. BEGIN_MESSAGE_MAP(COCRApp, CWinApp)
  21.     //{{AFX_MSG_MAP(COCRApp)
  22.     ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  23.     ON_UPDATE_COMMAND_UI(ID_FILE_SAVE_AS, OnUpdateFileSaveas)
  24.     ON_UPDATE_COMMAND_UI(ID_OCR_RECOGNIZE, OnUpdateOcrRecognize)
  25.     ON_UPDATE_COMMAND_UI(ID_OCR_CLEARDOCUMENT, OnUpdateOcrCleardocument)
  26.     ON_UPDATE_COMMAND_UI(ID_OCR_EDITDOCUMENT, OnUpdateOcrEditdocument)
  27.     ON_COMMAND(ID_PREFERENCES_LANGUAGE_ENGLISH, OnPreferencesLanguageEnglish)
  28.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_LANGUAGE_ENGLISH, OnUpdatePreferencesLanguageEnglish)
  29.     ON_COMMAND(ID_PREFERENCES_LANGUAGE_GERMAN, OnPreferencesLanguageGerman)
  30.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_LANGUAGE_GERMAN, OnUpdatePreferencesLanguageGerman)
  31.     ON_COMMAND(ID_PREFERENCES_LANGUAGE_FRENCH, OnPreferencesLanguageFrench)
  32.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_LANGUAGE_FRENCH, OnUpdatePreferencesLanguageFrench)
  33.     ON_COMMAND(ID_PREFERENCES_LANGUAGE_SPANISH, OnPreferencesLanguageSpanish)
  34.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_LANGUAGE_SPANISH, OnUpdatePreferencesLanguageSpanish)
  35.     ON_COMMAND(ID_PREFERENCES_LANGUAGE_ITALIAN, OnPreferencesLanguageItalian)
  36.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_LANGUAGE_ITALIAN, OnUpdatePreferencesLanguageItalian)
  37.     ON_COMMAND(ID_PREFERENCES_LANGUAGE_DUTCH, OnPreferencesLanguageDutch)
  38.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_LANGUAGE_DUTCH, OnUpdatePreferencesLanguageDutch)
  39.     ON_COMMAND(ID_PREFERENCES_LANGUAGE_SWEDISH, OnPreferencesLanguageSwedish)
  40.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_LANGUAGE_SWEDISH, OnUpdatePreferencesLanguageSwedish)
  41.     ON_COMMAND(ID_PREFERENCES_LANGUAGE_NORWEGIAN, OnPreferencesLanguageNorwegian)
  42.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_LANGUAGE_NORWEGIAN, OnUpdatePreferencesLanguageNorwegian)
  43.     ON_COMMAND(ID_PREFERENCES_LANGUAGE_FINNISH, OnPreferencesLanguageFinnish)
  44.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_LANGUAGE_FINNISH, OnUpdatePreferencesLanguageFinnish)
  45.     ON_COMMAND(ID_PREFERENCES_LANGUAGE_DANISH, OnPreferencesLanguageDanish)
  46.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_LANGUAGE_DANISH, OnUpdatePreferencesLanguageDanish)
  47.     ON_COMMAND(ID_PREFERENCES_LANGUAGE_PORTUGUESE, OnPreferencesLanguagePortuguese)
  48.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_LANGUAGE_PORTUGUESE, OnUpdatePreferencesLanguagePortuguese)
  49.     ON_COMMAND(ID_PREFERENCES_LANGUAGE_RUSSIAN, OnPreferencesLanguageRussian)
  50.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_LANGUAGE_RUSSIAN, OnUpdatePreferencesLanguageRussian)
  51.     ON_COMMAND(ID_PREFERENCES_TRAINING, OnPreferencesTraining)
  52.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_TRAINING, OnUpdatePreferencesTraining)
  53.     ON_COMMAND(ID_PREFERENCES_PREPROCESSINGMODE_NONE, OnPreferencesPreprocessingmodeNone)
  54.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PREPROCESSINGMODE_NONE, OnUpdatePreferencesPreprocessingmodeNone)
  55.     ON_COMMAND(ID_PREFERENCES_PREPROCESSINGMODE_DOTMATRIX, OnPreferencesPreprocessingmodeDotmatrix)
  56.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PREPROCESSINGMODE_DOTMATRIX, OnUpdatePreferencesPreprocessingmodeDotmatrix)
  57.     ON_COMMAND(ID_PREFERENCES_PREPROCESSINGMODE_REMOVEHALFTONES, OnPreferencesPreprocessingmodeRemovehalftones)
  58.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PREPROCESSINGMODE_REMOVEHALFTONES, OnUpdatePreferencesPreprocessingmodeRemovehalftones)
  59.     ON_COMMAND(ID_PREFERENCES_PREPROCESSINGMODE_AUTOSEGMENTATION, OnPreferencesPreprocessingmodeAutosegmentation)
  60.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PREPROCESSINGMODE_AUTOSEGMENTATION, OnUpdatePreferencesPreprocessingmodeAutosegmentation)
  61.     ON_COMMAND(ID_PREFERENCES_PREPROCESSINGMODE_FAX, OnPreferencesPreprocessingmodeFax)
  62.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PREPROCESSINGMODE_FAX, OnUpdatePreferencesPreprocessingmodeFax)
  63.     ON_COMMAND(ID_PREFERENCES_PREPROCESSINGMODE_NEWSPAPER, OnPreferencesPreprocessingmodeNewspaper)
  64.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PREPROCESSINGMODE_NEWSPAPER, OnUpdatePreferencesPreprocessingmodeNewspaper)
  65.     ON_COMMAND(ID_PREFERENCES_PREPROCESSINGMODE_ORIENTATION, OnPreferencesPreprocessingmodeOrientation)
  66.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PREPROCESSINGMODE_ORIENTATION, OnUpdatePreferencesPreprocessingmodeOrientation)
  67.     ON_COMMAND(ID_PREFERENCES_PREPROCESSINGMODE_SKEW, OnPreferencesPreprocessingmodeSkew)
  68.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PREPROCESSINGMODE_SKEW, OnUpdatePreferencesPreprocessingmodeSkew)
  69.     ON_COMMAND(ID_PREFERENCES_PREPROCESSINGMODE_DOTMATRIXDETECT, OnPreferencesPreprocessingmodeDotmatrixdetect)
  70.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PREPROCESSINGMODE_DOTMATRIXDETECT, OnUpdatePreferencesPreprocessingmodeDotmatrixdetect)
  71.     ON_COMMAND(ID_PREFERENCES_PREPROCESSINGMODE_AUTOSETDEGRADE, OnPreferencesPreprocessingmodeAutosetdegrade)
  72.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PREPROCESSINGMODE_AUTOSETDEGRADE, OnUpdatePreferencesPreprocessingmodeAutosetdegrade)
  73.     ON_COMMAND(ID_PREFERENCES_PREPROCESSINGMODE_AUTOFAX, OnPreferencesPreprocessingmodeAutofax)
  74.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PREPROCESSINGMODE_AUTOFAX, OnUpdatePreferencesPreprocessingmodeAutofax)
  75.     ON_COMMAND(ID_PREFERENCES_PREPROCESSINGMODE_TEXTORIENTATION, OnPreferencesPreprocessingmodeTextorientation)
  76.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PREPROCESSINGMODE_TEXTORIENTATION, OnUpdatePreferencesPreprocessingmodeTextorientation)
  77.     ON_COMMAND(ID_PREFERENCES_PREPROCESSINGMODE_FULLORIENTATION, OnPreferencesPreprocessingmodeFullorientation)
  78.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PREPROCESSINGMODE_FULLORIENTATION, OnUpdatePreferencesPreprocessingmodeFullorientation)
  79.     ON_COMMAND(ID_PREFERENCES_PREPROCESSINGMODE_DORIGHT, OnPreferencesPreprocessingmodeDoright)
  80.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PREPROCESSINGMODE_DORIGHT, OnUpdatePreferencesPreprocessingmodeDoright)
  81.     ON_COMMAND(ID_PREFERENCES_RECOGNITIONMODE_STANDARD, OnPreferencesRecognitionmodeStandard)
  82.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_RECOGNITIONMODE_STANDARD, OnUpdatePreferencesRecognitionmodeStandard)
  83.     ON_COMMAND(ID_PREFERENCES_RECOGNITIONMODE_DEGRADED, OnPreferencesRecognitionmodeDegraded)
  84.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_RECOGNITIONMODE_DEGRADED, OnUpdatePreferencesRecognitionmodeDegraded)
  85.     ON_COMMAND(ID_PREFERENCES_RECOGNITIONMODE_UNKNOWN, OnPreferencesRecognitionmodeUnknown)
  86.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_RECOGNITIONMODE_UNKNOWN, OnUpdatePreferencesRecognitionmodeUnknown)
  87.     ON_COMMAND(ID_PREFERENCES_VERIFIERMODE_NONE, OnPreferencesVerifiermodeNone)
  88.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_VERIFIERMODE_NONE, OnUpdatePreferencesVerifiermodeNone)
  89.     ON_COMMAND(ID_PREFERENCES_VERIFIERMODE_CHAR, OnPreferencesVerifiermodeChar)
  90.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_VERIFIERMODE_CHAR, OnUpdatePreferencesVerifiermodeChar)
  91.     ON_COMMAND(ID_PREFERENCES_VERIFIERMODE_WORD, OnPreferencesVerifiermodeWord)
  92.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_VERIFIERMODE_WORD, OnUpdatePreferencesVerifiermodeWord)
  93.     ON_COMMAND(ID_PREFERENCES_VERIFIERTHRESHOLD, OnPreferencesVerifierthreshold)
  94.     ON_COMMAND(ID_PREFERENCES_MINPOINTSIZE, OnPreferencesMinpointsize)
  95.     ON_COMMAND(ID_PREFERENCES_MAXPOINTSIZE, OnPreferencesMaxpointsize)
  96.     ON_COMMAND(ID_PREFERENCES_TEXTORIENTLIMIT, OnPreferencesTextorientlimit)
  97.     ON_COMMAND(ID_PREFERENCES_HEADERFOOTERPROCESS, OnPreferencesHeaderfooterprocess)
  98.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_HEADERFOOTERPROCESS, OnUpdatePreferencesHeaderfooterprocess)
  99.     ON_COMMAND(ID_PREFERENCES_SLOPPYMANUAL, OnPreferencesSloppymanual)
  100.     ON_UPDATE_COMMAND_UI(ID_PREFERENCES_SLOPPYMANUAL, OnUpdatePreferencesSloppymanual)
  101.     ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
  102.     //}}AFX_MSG_MAP
  103.     // Standard file based document commands
  104.     ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
  105.     ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
  106. END_MESSAGE_MAP()
  107.  
  108. /////////////////////////////////////////////////////////////////////////////
  109. // COCRApp construction
  110.  
  111. COCRApp::COCRApp()
  112. {
  113.     // TODO: add construction code here,
  114.     // Place all significant initialization in InitInstance
  115. }
  116.  
  117. /////////////////////////////////////////////////////////////////////////////
  118. // The one and only COCRApp object
  119.  
  120. COCRApp theApp;
  121.  
  122. /////////////////////////////////////////////////////////////////////////////
  123. // COCRApp initialization
  124.  
  125. BOOL COCRApp::InitInstance()
  126. {
  127.    m_fImage     = FALSE;
  128.    m_fRecognize = FALSE;
  129.    m_nPage      = 1;
  130.    m_nPaintSize = PAINTSIZEMODE_FIT;
  131.  
  132.    m_nPreprocessingMode     = OCRPP_DO_RIGHT;
  133.    m_nRecognitionMode       = OCRREC_UNKNOWN;
  134.     m_nVerifierMode          = OCRVER_WORD;
  135.     m_nVerifierThreshold     = 750;
  136.     m_nMinPointSize          = 5;
  137.     m_nMaxPointSize          = 72;
  138.     m_nLanguage              = OCRLNG_ENGLISH;
  139.     m_bHeaderFooterProcess   = TRUE;
  140.     m_bSloppyManual          = TRUE;
  141.     m_nTextOrientLimit       = -1;
  142.  
  143.    strcpy(m_szDocumentName, "");
  144.     strcpy(m_szUnrecognized, "~");
  145.     strcpy(m_szQuestionable, "");
  146.     strcpy(m_szLeftSingleQuote, "'");
  147.     strcpy(m_szRightSingleQuote, "'");
  148.     sprintf(m_szLeftDoubleQuote, "%c", '"');
  149.     sprintf(m_szRightDoubleQuote, "%c", '"');
  150.     strcpy(m_szDecimal, ".");
  151.     strcpy(m_szThousands, ",");
  152.     strcpy(m_szLexicon, "xxx");
  153. //    strcpy(m_szTraining, "");
  154.    strcpy(m_szTraining, m_pszHelpFilePath);
  155.  
  156.    // Initialize OLE libraries
  157.     if (!AfxOleInit())
  158.     {
  159.         AfxMessageBox(IDP_OLE_INIT_FAILED);
  160.         return FALSE;
  161.     }
  162.  
  163.     AfxEnableControlContainer();
  164.  
  165.     // Standard initialization
  166.     // If you are not using these features and wish to reduce the size
  167.     //  of your final executable, you should remove from the following
  168.     //  the specific initialization routines you do not need.
  169.  
  170. #ifdef _AFXDLL
  171.     Enable3dControls();            // Call this when using MFC in a shared DLL
  172. #else
  173.     Enable3dControlsStatic();    // Call this when linking to MFC statically
  174. #endif
  175.  
  176.     LoadStdProfileSettings();  // Load standard INI file options (including MRU)
  177.  
  178.     // Register the application's document templates.  Document templates
  179.     //  serve as the connection between documents, frame windows and views.
  180.     CSingleDocTemplate* pDocTemplate;
  181.     pDocTemplate = new CSingleDocTemplate(
  182.         IDR_MAINFRAME,
  183.         RUNTIME_CLASS(COCRDEMODoc),
  184.         RUNTIME_CLASS(CMainFrame),       // main SDI frame window
  185.         RUNTIME_CLASS(COCRDEMOView));
  186.     pDocTemplate->SetContainerInfo(IDR_CNTR_INPLACE);
  187.     AddDocTemplate(pDocTemplate);
  188.  
  189.     // Parse command line for standard shell commands, DDE, file open
  190.     CCommandLineInfo cmdInfo;
  191.     ParseCommandLine(cmdInfo);
  192.  
  193.     // Dispatch commands specified on the command line
  194.     if (!ProcessShellCommand(cmdInfo))
  195.         return FALSE;
  196.    
  197.    POSITION FirstDocPos = pDocTemplate->GetFirstDocPosition();
  198.    
  199.    COCRDEMODoc* pDoc = (COCRDEMODoc*)pDocTemplate->GetNextDoc(FirstDocPos);
  200.    pDoc->InitLEADDoc();
  201.  
  202.     return TRUE;
  203. }
  204.  
  205. /////////////////////////////////////////////////////////////////////////////
  206. // CAboutDlg dialog used for App About
  207.  
  208. class CAboutDlg : public CDialog
  209. {
  210. public:
  211.     CAboutDlg();
  212.  
  213. // Dialog Data
  214.     //{{AFX_DATA(CAboutDlg)
  215.     enum { IDD = IDD_ABOUTBOX };
  216.     //}}AFX_DATA
  217.  
  218.     // ClassWizard generated virtual function overrides
  219.     //{{AFX_VIRTUAL(CAboutDlg)
  220.     protected:
  221.     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  222.     //}}AFX_VIRTUAL
  223.  
  224. // Implementation
  225. protected:
  226.     //{{AFX_MSG(CAboutDlg)
  227.         // No message handlers
  228.     //}}AFX_MSG
  229.     DECLARE_MESSAGE_MAP()
  230. };
  231.  
  232. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  233. {
  234.     //{{AFX_DATA_INIT(CAboutDlg)
  235.     //}}AFX_DATA_INIT
  236. }
  237.  
  238. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  239. {
  240.     CDialog::DoDataExchange(pDX);
  241.     //{{AFX_DATA_MAP(CAboutDlg)
  242.     //}}AFX_DATA_MAP
  243. }
  244.  
  245. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  246.     //{{AFX_MSG_MAP(CAboutDlg)
  247.         // No message handlers
  248.     //}}AFX_MSG_MAP
  249. END_MESSAGE_MAP()
  250.  
  251. // App command to run the dialog
  252. void COCRApp::OnAppAbout()
  253. {
  254.     CAboutDlg aboutDlg;
  255.     aboutDlg.DoModal();
  256. }
  257.  
  258. /////////////////////////////////////////////////////////////////////////////
  259. // COCRApp commands
  260. int COCRApp::DisplayLEADError(int nCode)
  261. {
  262.     CString str;
  263.  
  264.     if(nCode)
  265.     {
  266.         str.Format("A LEADTOOLS error has occured.\nCODE = %d", nCode);
  267.         m_pMainWnd->MessageBox(str);
  268.     }
  269.     return(nCode);
  270. }
  271.  
  272. void COCRApp::OnUpdateFileSaveas(CCmdUI* pCmdUI) 
  273. {
  274.    pCmdUI->Enable(m_fImage && m_fRecognize);
  275. }
  276.  
  277. void COCRApp::OnUpdateOcrRecognize(CCmdUI* pCmdUI) 
  278. {
  279.    pCmdUI->Enable(m_fImage);
  280. }
  281.  
  282. void COCRApp::OnUpdateOcrCleardocument(CCmdUI* pCmdUI) 
  283. {
  284.    pCmdUI->Enable(m_fRecognize);
  285. }
  286.  
  287. void COCRApp::OnUpdateOcrEditdocument(CCmdUI* pCmdUI) 
  288. {
  289.    pCmdUI->Enable(m_fRecognize);
  290. }
  291.  
  292. void COCRApp::OnPreferencesLanguageEnglish() 
  293. {
  294.    m_nLanguage = OCRLNG_ENGLISH;
  295. }
  296.  
  297. void COCRApp::OnUpdatePreferencesLanguageEnglish(CCmdUI* pCmdUI) 
  298. {
  299.    pCmdUI->SetCheck(m_nLanguage == OCRLNG_ENGLISH);
  300. }
  301.  
  302. void COCRApp::OnPreferencesLanguageGerman() 
  303. {
  304.    m_nLanguage = OCRLNG_GERMAN;
  305. }
  306.  
  307. void COCRApp::OnUpdatePreferencesLanguageGerman(CCmdUI* pCmdUI) 
  308. {
  309.    pCmdUI->SetCheck(m_nLanguage == OCRLNG_GERMAN);
  310. }
  311.  
  312. void COCRApp::OnPreferencesLanguageFrench() 
  313. {
  314.    m_nLanguage = OCRLNG_FRENCH;
  315. }
  316.  
  317. void COCRApp::OnUpdatePreferencesLanguageFrench(CCmdUI* pCmdUI) 
  318. {
  319.    pCmdUI->SetCheck(m_nLanguage == OCRLNG_FRENCH);
  320. }
  321.  
  322. void COCRApp::OnPreferencesLanguageSpanish() 
  323. {
  324.    m_nLanguage = OCRLNG_SPANISH;
  325. }
  326.  
  327. void COCRApp::OnUpdatePreferencesLanguageSpanish(CCmdUI* pCmdUI) 
  328. {
  329.    pCmdUI->SetCheck(m_nLanguage == OCRLNG_SPANISH);
  330. }
  331.  
  332. void COCRApp::OnPreferencesLanguageItalian() 
  333. {
  334.    m_nLanguage = OCRLNG_ITALIAN;
  335. }
  336.  
  337. void COCRApp::OnUpdatePreferencesLanguageItalian(CCmdUI* pCmdUI) 
  338. {
  339.    pCmdUI->SetCheck(m_nLanguage == OCRLNG_ITALIAN);
  340. }
  341.  
  342. void COCRApp::OnPreferencesLanguageDutch() 
  343. {
  344.    m_nLanguage = OCRLNG_DUTCH;
  345. }
  346.  
  347. void COCRApp::OnUpdatePreferencesLanguageDutch(CCmdUI* pCmdUI) 
  348. {
  349.    pCmdUI->SetCheck(m_nLanguage == OCRLNG_DUTCH);
  350. }
  351.  
  352. void COCRApp::OnPreferencesLanguageSwedish() 
  353. {
  354.    m_nLanguage = OCRLNG_SWEDISH;
  355. }
  356.  
  357. void COCRApp::OnUpdatePreferencesLanguageSwedish(CCmdUI* pCmdUI) 
  358. {
  359.    pCmdUI->SetCheck(m_nLanguage == OCRLNG_SWEDISH);
  360. }
  361.  
  362. void COCRApp::OnPreferencesLanguageNorwegian() 
  363. {
  364.    m_nLanguage = OCRLNG_NORWEGIAN;
  365. }
  366.  
  367. void COCRApp::OnUpdatePreferencesLanguageNorwegian(CCmdUI* pCmdUI) 
  368. {
  369.    pCmdUI->SetCheck(m_nLanguage == OCRLNG_NORWEGIAN);
  370. }
  371.  
  372. void COCRApp::OnPreferencesLanguageFinnish() 
  373. {
  374.    m_nLanguage = OCRLNG_FINNISH;
  375. }
  376.  
  377. void COCRApp::OnUpdatePreferencesLanguageFinnish(CCmdUI* pCmdUI) 
  378. {
  379.    pCmdUI->SetCheck(m_nLanguage == OCRLNG_FINNISH);
  380. }
  381.  
  382. void COCRApp::OnPreferencesLanguageDanish() 
  383. {
  384.    m_nLanguage = OCRLNG_DANISH;
  385. }
  386.  
  387. void COCRApp::OnUpdatePreferencesLanguageDanish(CCmdUI* pCmdUI) 
  388. {
  389.    pCmdUI->SetCheck(m_nLanguage == OCRLNG_DANISH);
  390. }
  391.  
  392. void COCRApp::OnPreferencesLanguagePortuguese() 
  393. {
  394.    m_nLanguage = OCRLNG_PORTUGUESE;
  395. }
  396.  
  397. void COCRApp::OnUpdatePreferencesLanguagePortuguese(CCmdUI* pCmdUI) 
  398. {
  399.    pCmdUI->SetCheck(m_nLanguage == OCRLNG_PORTUGUESE);
  400. }
  401.  
  402. void COCRApp::OnPreferencesLanguageRussian() 
  403. {
  404.    m_nLanguage = OCRLNG_RUSSIAN;
  405. }
  406.  
  407. void COCRApp::OnUpdatePreferencesLanguageRussian(CCmdUI* pCmdUI) 
  408. {
  409.    pCmdUI->SetCheck(m_nLanguage == OCRLNG_RUSSIAN);
  410. }
  411.  
  412. void COCRApp::OnPreferencesTraining() 
  413. {
  414.    if (m_szTraining[0] == 0)
  415.    {
  416.       strcpy(m_szTraining, m_pszHelpFilePath);
  417.       m_szTraining[strlen(m_szTraining)-3] = 'T';
  418.       m_szTraining[strlen(m_szTraining)-2] = 'R';
  419.       m_szTraining[strlen(m_szTraining)-1] = 'A';
  420.    }
  421.    else
  422.    {
  423.       m_szTraining[0] = 0;
  424.    }
  425. }
  426.  
  427. void COCRApp::OnUpdatePreferencesTraining(CCmdUI* pCmdUI) 
  428. {
  429.    pCmdUI->SetCheck(m_szTraining[0] != 0);
  430. }
  431.  
  432. void COCRApp::OnPreferencesPreprocessingmodeNone() 
  433. {
  434.    m_nPreprocessingMode = OCRPP_NONE;
  435. }
  436.  
  437. void COCRApp::OnUpdatePreferencesPreprocessingmodeNone(CCmdUI* pCmdUI) 
  438. {
  439.    pCmdUI->SetCheck(m_nPreprocessingMode == OCRPP_NONE);
  440. }
  441.  
  442. void COCRApp::OnPreferencesPreprocessingmodeDotmatrix() 
  443. {
  444.    long nMode=OCRPP_DOT_MATRIX;
  445.  
  446.    if (m_nPreprocessingMode & nMode)
  447.    {
  448.       m_nPreprocessingMode &= ~nMode;
  449.    }
  450.    else
  451.    {
  452.       m_nPreprocessingMode |= nMode;
  453.    }
  454. }
  455.  
  456. void COCRApp::OnUpdatePreferencesPreprocessingmodeDotmatrix(CCmdUI* pCmdUI) 
  457. {
  458.    pCmdUI->SetCheck(m_nPreprocessingMode & OCRPP_DOT_MATRIX);
  459. }
  460.  
  461. void COCRApp::OnPreferencesPreprocessingmodeRemovehalftones() 
  462. {
  463.    long nMode=OCRPP_REMOVE_HALFTONES;
  464.  
  465.    if (m_nPreprocessingMode & nMode)
  466.    {
  467.       m_nPreprocessingMode &= ~nMode;
  468.    }
  469.    else
  470.    {
  471.       m_nPreprocessingMode |= nMode;
  472.    }
  473. }
  474.  
  475. void COCRApp::OnUpdatePreferencesPreprocessingmodeRemovehalftones(CCmdUI* pCmdUI) 
  476. {
  477.    pCmdUI->SetCheck(m_nPreprocessingMode & OCRPP_REMOVE_HALFTONES);
  478. }
  479.  
  480. void COCRApp::OnPreferencesPreprocessingmodeAutosegmentation() 
  481. {
  482.    long nMode=OCRPP_AUTO_SEGMENTATION;
  483.  
  484.    if (m_nPreprocessingMode & nMode)
  485.    {
  486.       m_nPreprocessingMode &= ~nMode;
  487.    }
  488.    else
  489.    {
  490.       m_nPreprocessingMode |= nMode;
  491.    }
  492. }
  493.  
  494. void COCRApp::OnUpdatePreferencesPreprocessingmodeAutosegmentation(CCmdUI* pCmdUI) 
  495. {
  496.    pCmdUI->SetCheck(m_nPreprocessingMode & OCRPP_AUTO_SEGMENTATION);
  497. }
  498.  
  499. void COCRApp::OnPreferencesPreprocessingmodeFax() 
  500. {
  501.    long nMode=OCRPP_FAX;
  502.  
  503.    if (m_nPreprocessingMode & nMode)
  504.    {
  505.       m_nPreprocessingMode &= ~nMode;
  506.    }
  507.    else
  508.    {
  509.       m_nPreprocessingMode |= nMode;
  510.    }
  511. }
  512.  
  513. void COCRApp::OnUpdatePreferencesPreprocessingmodeFax(CCmdUI* pCmdUI) 
  514. {
  515.    pCmdUI->SetCheck(m_nPreprocessingMode & OCRPP_FAX);
  516. }
  517.  
  518. void COCRApp::OnPreferencesPreprocessingmodeNewspaper() 
  519. {
  520.    long nMode=OCRPP_NEWS_PAPER;
  521.  
  522.    if (m_nPreprocessingMode & nMode)
  523.    {
  524.       m_nPreprocessingMode &= ~nMode;
  525.    }
  526.    else
  527.    {
  528.       m_nPreprocessingMode |= nMode;
  529.    }
  530. }
  531.  
  532. void COCRApp::OnUpdatePreferencesPreprocessingmodeNewspaper(CCmdUI* pCmdUI) 
  533. {
  534.    pCmdUI->SetCheck(m_nPreprocessingMode & OCRPP_NEWS_PAPER);
  535. }
  536.  
  537. void COCRApp::OnPreferencesPreprocessingmodeOrientation() 
  538. {
  539.    long nMode=OCRPP_ORIENTATION;
  540.  
  541.    if (m_nPreprocessingMode & nMode)
  542.    {
  543.       m_nPreprocessingMode &= ~nMode;
  544.    }
  545.    else
  546.    {
  547.       m_nPreprocessingMode |= nMode;
  548.    }
  549. }
  550.  
  551. void COCRApp::OnUpdatePreferencesPreprocessingmodeOrientation(CCmdUI* pCmdUI) 
  552. {
  553.    pCmdUI->SetCheck(m_nPreprocessingMode & OCRPP_ORIENTATION);
  554. }
  555.  
  556. void COCRApp::OnPreferencesPreprocessingmodeSkew() 
  557. {
  558.    long nMode=OCRPP_SKEW;
  559.  
  560.    if (m_nPreprocessingMode & nMode)
  561.    {
  562.       m_nPreprocessingMode &= ~nMode;
  563.    }
  564.    else
  565.    {
  566.       m_nPreprocessingMode |= nMode;
  567.    }
  568. }
  569.  
  570. void COCRApp::OnUpdatePreferencesPreprocessingmodeSkew(CCmdUI* pCmdUI) 
  571. {
  572.    pCmdUI->SetCheck(m_nPreprocessingMode & OCRPP_SKEW);
  573. }
  574.  
  575. void COCRApp::OnPreferencesPreprocessingmodeDotmatrixdetect() 
  576. {
  577.    long nMode=OCRPP_DOT_MATRIX_DETECT;
  578.  
  579.    if (m_nPreprocessingMode & nMode)
  580.    {
  581.       m_nPreprocessingMode &= ~nMode;
  582.    }
  583.    else
  584.    {
  585.       m_nPreprocessingMode |= nMode;
  586.    }
  587. }
  588.  
  589. void COCRApp::OnUpdatePreferencesPreprocessingmodeDotmatrixdetect(CCmdUI* pCmdUI) 
  590. {
  591.    pCmdUI->SetCheck(m_nPreprocessingMode & OCRPP_DOT_MATRIX_DETECT);
  592. }
  593.  
  594. void COCRApp::OnPreferencesPreprocessingmodeAutosetdegrade() 
  595. {
  596.    long nMode=OCRPP_AUTO_SET_DEGRADE;
  597.  
  598.    if (m_nPreprocessingMode & nMode)
  599.    {
  600.       m_nPreprocessingMode &= ~nMode;
  601.    }
  602.    else
  603.    {
  604.       m_nPreprocessingMode |= nMode;
  605.    }
  606. }
  607.  
  608. void COCRApp::OnUpdatePreferencesPreprocessingmodeAutosetdegrade(CCmdUI* pCmdUI) 
  609. {
  610.    pCmdUI->SetCheck(m_nPreprocessingMode & OCRPP_AUTO_SET_DEGRADE);
  611. }
  612.  
  613. void COCRApp::OnPreferencesPreprocessingmodeAutofax() 
  614. {
  615.    long nMode=OCRPP_AUTO_FAX;
  616.  
  617.    if (m_nPreprocessingMode & nMode)
  618.    {
  619.       m_nPreprocessingMode &= ~nMode;
  620.    }
  621.    else
  622.    {
  623.       m_nPreprocessingMode |= nMode;
  624.    }
  625. }
  626.  
  627. void COCRApp::OnUpdatePreferencesPreprocessingmodeAutofax(CCmdUI* pCmdUI) 
  628. {
  629.    pCmdUI->SetCheck(m_nPreprocessingMode & OCRPP_AUTO_FAX);
  630. }
  631.  
  632. void COCRApp::OnPreferencesPreprocessingmodeTextorientation() 
  633. {
  634.    long nMode=OCRPP_TEXT_ORIENTATION;
  635.  
  636.    if (m_nPreprocessingMode & nMode)
  637.    {
  638.       m_nPreprocessingMode &= ~nMode;
  639.    }
  640.    else
  641.    {
  642.       m_nPreprocessingMode |= nMode;
  643.    }
  644. }
  645.  
  646. void COCRApp::OnUpdatePreferencesPreprocessingmodeTextorientation(CCmdUI* pCmdUI) 
  647. {
  648.    pCmdUI->SetCheck(m_nPreprocessingMode & OCRPP_TEXT_ORIENTATION);
  649. }
  650.  
  651. void COCRApp::OnPreferencesPreprocessingmodeFullorientation() 
  652. {
  653.    long nMode=OCRPP_FULL_ORIENTATION;
  654.  
  655.    if ((m_nPreprocessingMode & nMode) == nMode)
  656.    {
  657.       m_nPreprocessingMode &= ~nMode;
  658.    }
  659.    else
  660.    {
  661.       m_nPreprocessingMode |= nMode;
  662.    }
  663. }
  664.  
  665. void COCRApp::OnUpdatePreferencesPreprocessingmodeFullorientation(CCmdUI* pCmdUI) 
  666. {
  667.    pCmdUI->SetCheck((m_nPreprocessingMode & OCRPP_FULL_ORIENTATION) == OCRPP_FULL_ORIENTATION);
  668. }
  669.  
  670. void COCRApp::OnPreferencesPreprocessingmodeDoright() 
  671. {
  672.    long nMode=OCRPP_DO_RIGHT;
  673.  
  674.    if ((m_nPreprocessingMode & nMode) == nMode)
  675.    {
  676.       m_nPreprocessingMode &= ~nMode;
  677.    }
  678.    else
  679.    {
  680.       m_nPreprocessingMode |= nMode;
  681.    }
  682. }
  683.  
  684. void COCRApp::OnUpdatePreferencesPreprocessingmodeDoright(CCmdUI* pCmdUI) 
  685. {
  686.    pCmdUI->SetCheck((m_nPreprocessingMode & OCRPP_DO_RIGHT) == OCRPP_DO_RIGHT);
  687. }
  688.  
  689. void COCRApp::OnPreferencesRecognitionmodeStandard() 
  690. {
  691.    m_nRecognitionMode = OCRREC_STANDARD;
  692. }
  693.  
  694. void COCRApp::OnUpdatePreferencesRecognitionmodeStandard(CCmdUI* pCmdUI) 
  695. {
  696.    pCmdUI->SetCheck(m_nRecognitionMode == OCRREC_STANDARD);
  697. }
  698.  
  699. void COCRApp::OnPreferencesRecognitionmodeDegraded() 
  700. {
  701.    m_nRecognitionMode = OCRREC_DEGRADED;
  702. }
  703.  
  704. void COCRApp::OnUpdatePreferencesRecognitionmodeDegraded(CCmdUI* pCmdUI) 
  705. {
  706.    pCmdUI->SetCheck(m_nRecognitionMode == OCRREC_DEGRADED);
  707. }
  708.  
  709. void COCRApp::OnPreferencesRecognitionmodeUnknown() 
  710. {
  711.    m_nRecognitionMode = OCRREC_UNKNOWN;
  712. }
  713.  
  714. void COCRApp::OnUpdatePreferencesRecognitionmodeUnknown(CCmdUI* pCmdUI) 
  715. {
  716.    pCmdUI->SetCheck(m_nRecognitionMode == OCRREC_UNKNOWN);
  717. }
  718.  
  719. void COCRApp::OnPreferencesVerifiermodeNone() 
  720. {
  721.    m_nVerifierMode = OCRVER_NONE;
  722. }
  723.  
  724. void COCRApp::OnUpdatePreferencesVerifiermodeNone(CCmdUI* pCmdUI) 
  725. {
  726.    pCmdUI->SetCheck(m_nVerifierMode == OCRVER_NONE);
  727. }
  728.  
  729. void COCRApp::OnPreferencesVerifiermodeChar() 
  730. {
  731.    m_nVerifierMode = OCRVER_CHAR;
  732. }
  733.  
  734. void COCRApp::OnUpdatePreferencesVerifiermodeChar(CCmdUI* pCmdUI) 
  735. {
  736.    pCmdUI->SetCheck(m_nVerifierMode == OCRVER_CHAR);
  737. }
  738.  
  739. void COCRApp::OnPreferencesVerifiermodeWord() 
  740. {
  741.    m_nVerifierMode = OCRVER_WORD;
  742. }
  743.  
  744. void COCRApp::OnUpdatePreferencesVerifiermodeWord(CCmdUI* pCmdUI) 
  745. {
  746.    pCmdUI->SetCheck(m_nVerifierMode == OCRVER_WORD);
  747. }
  748.  
  749. void COCRApp::OnPreferencesVerifierthreshold() 
  750. {
  751.    COcrDemoNumberDlg dlg;
  752.  
  753.    dlg.m_strTitle = _T("Verifier Threshold");
  754.    dlg.m_strLabel = _T("&Amount");
  755.    dlg.m_nValue   = m_nVerifierThreshold;
  756.    dlg.m_nMin     = 0;
  757.    dlg.m_nMax     = 999;
  758.    dlg.m_nPage    = 100;
  759.  
  760.    if (dlg.DoModal() == IDOK)
  761.    {
  762.       m_nVerifierThreshold = dlg.m_nValue;
  763.    }
  764. }
  765.  
  766. void COCRApp::OnPreferencesMinpointsize() 
  767. {
  768.    COcrDemoNumberDlg dlg;
  769.  
  770.    dlg.m_strTitle = _T("Min Point Size");
  771.    dlg.m_strLabel = _T("&Amount");
  772.    dlg.m_nValue   = m_nMinPointSize;
  773.    dlg.m_nMin     = 1;
  774.    dlg.m_nMax     = 100;
  775.    dlg.m_nPage    = 10;
  776.  
  777.    if (dlg.DoModal() == IDOK)
  778.    {
  779.       m_nMinPointSize = dlg.m_nValue;
  780.    }
  781. }
  782.  
  783. void COCRApp::OnPreferencesMaxpointsize() 
  784. {
  785.    COcrDemoNumberDlg dlg;
  786.  
  787.    dlg.m_strTitle = _T("Max Point Size");
  788.    dlg.m_strLabel = _T("&Amount");
  789.    dlg.m_nValue   = m_nMaxPointSize;
  790.    dlg.m_nMin     = 1;
  791.    dlg.m_nMax     = 100;
  792.    dlg.m_nPage    = 10;
  793.  
  794.    if (dlg.DoModal() == IDOK)
  795.    {
  796.       m_nMaxPointSize = dlg.m_nValue;
  797.    }
  798. }
  799.  
  800. void COCRApp::OnPreferencesTextorientlimit() 
  801. {
  802.    COcrDemoNumberDlg dlg;
  803.  
  804.    dlg.m_strTitle = _T("Text Orient Limit");
  805.    dlg.m_strLabel = _T("&Amount");
  806.    dlg.m_nValue   = m_nTextOrientLimit;
  807.    dlg.m_nMin     = -1;
  808.    dlg.m_nMax     = 999;
  809.    dlg.m_nPage    = 100;
  810.  
  811.    if (dlg.DoModal() == IDOK)
  812.    {
  813.       m_nTextOrientLimit = dlg.m_nValue;
  814.    }
  815. }
  816.  
  817. void COCRApp::OnPreferencesHeaderfooterprocess() 
  818. {
  819.    if (m_bHeaderFooterProcess == TRUE)
  820.    {
  821.       m_bHeaderFooterProcess = FALSE;
  822.    }
  823.    else
  824.    {
  825.       m_bHeaderFooterProcess = TRUE;
  826.    }
  827. }
  828.  
  829. void COCRApp::OnUpdatePreferencesHeaderfooterprocess(CCmdUI* pCmdUI) 
  830. {
  831.    pCmdUI->SetCheck(m_bHeaderFooterProcess);
  832. }
  833.  
  834. void COCRApp::OnPreferencesSloppymanual() 
  835. {
  836.    if (m_bSloppyManual == TRUE)
  837.    {
  838.       m_bSloppyManual = FALSE;
  839.    }
  840.    else
  841.    {
  842.       m_bSloppyManual = TRUE;
  843.    }
  844. }
  845.  
  846. void COCRApp::OnUpdatePreferencesSloppymanual(CCmdUI* pCmdUI) 
  847. {
  848.    pCmdUI->SetCheck(m_bSloppyManual);
  849. }
  850.  
  851. void COCRApp::OnFileOpen() 
  852. {
  853.    CLeadDlg LTCommDlg;
  854.    RECT rcWin;
  855.    BOOL bContinue=FALSE;
  856.    int nRet;
  857.    
  858.    ::SetRect(&rcWin, 0, 0, 1, 1);
  859.  
  860.    if(LTCommDlg.Create(NULL,0,rcWin,m_pMainWnd,100))
  861.    {
  862.       LTCommDlg.SetEnableMethodErrors(FALSE);
  863.       LTCommDlg.SetFilter("Graphics|*.cmp;*.jpg;*.jff;*.jtf;*.bmp;*.tif;*.tga;*.pcx;*.cal;*.mac;*.mac;*.img;*.msp;*.wpg;*.wpg;*.ras;*.pct;*.pcd;*.eps;*.wmf");
  864.       LTCommDlg.SetFileDlgFlags(0);
  865.       LTCommDlg.SetDialogTitle("Open File");
  866.       LTCommDlg.SetUIFlags( DLG_FO_FILEINFO |
  867.                             DLG_FO_MULTIPAGE |
  868.                             DLG_FO_SHOWPREVIEW |
  869.                             DLG_FO_SHOWSTAMP |
  870.                             DLG_FO_95STYLE );
  871.       nRet = LTCommDlg.FileOpen((long)m_pMainWnd->m_hWnd);
  872.       if(!nRet)
  873.          bContinue = TRUE;
  874.       else
  875.          bContinue = FALSE;
  876.    }
  877.    if(bContinue)
  878.    {
  879.       m_nPage = (short)LTCommDlg.GetPageNumber();
  880.       OpenDocumentFile((LPCTSTR)LTCommDlg.GetFileName());
  881.    }
  882.    return;
  883. }
  884.