ocrsrv_stub/inc/ocrthread.h
changeset 0 0ce1b5ce9557
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ocrsrv_stub/inc/ocrthread.h	Thu Jan 14 07:14:53 2010 +0200
@@ -0,0 +1,267 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  ocr engine thread definitions
+*
+*/
+
+
+#ifndef OCRTHREAD_H
+#define OCRTHREAD_H
+
+// INCLUDES FILES
+#include "ocrsharedata.h"
+
+class CFbsBitmap;
+
+/** Global function type definitions */
+typedef TBool (*IsCanceled)( void );
+typedef TBool (*RecogProgress)(TUint aPercentage);
+
+/** Internal error code definition */
+const TInt KErrEngineOK             ( 0 );          //no error
+const TInt KErrEngineBadImage       ( -1001 );      //bad image or unsupported format
+const TInt KErrEngineBadLanguage    ( -1002 );      //unsupported language
+const TInt KErrEngineBadRgn         ( -1003 );      //bad layout region
+const TInt KErrEngineNoMemory       ( -1004 );      //no enough memory
+const TInt KErrEngineBadParam       ( -1005 );      //wrong parameter
+const TInt KErrEngineNotSetLang     ( -1006 );      //not set any language
+const TInt KErrEngineBadDicFile     ( -1007 );      //bad dictionary files
+const TInt KErrEngineGeneral        ( -1100 );      //the other errors
+
+/** Number of interfaces defined in the engine DLLs */
+const TInt KNumOfInterfaces ( 14 );
+
+/** Implementation interfaces definitions */
+enum TImplementationIds
+    {
+    EExitEngine = 1,
+    EFreeBinImage,
+    EFreeBlocks,
+    EGetInstalledLanguages,
+    EGetVersion,
+    EInitEngine,
+    ELayoutAnalysis,
+    ERecognizeWithLayout,
+    ERecognizeBlock,
+    ERefresh,
+    ESetActiveLanguage,
+    ERecognizeSpecialRegion,
+    EIsLanguageSupported,
+    EFreeTextRgns
+    };
+
+/**
+ *  Version of 3rd party ocr engines
+ *
+ *  @lib ocrsrv.lib
+ *  @since S60 v3.1
+ */
+class TEngineVersion
+    {
+public:
+    
+    /** 
+    * Major version 
+    */
+    TInt8 iMajor;
+    
+    /**
+    * Minor version
+    */
+    TInt8 iMinor;
+    
+    /**
+    * Build number
+    */
+    TInt16 iBuild;
+    };
+    
+/** type definition of the interfaces */
+typedef TInt            (*TLibFuncInitEngine)(IsCanceled aFuncIsCanceled, TAny* aParam);
+typedef void            (*TLibFuncExitEngine)( void );
+
+typedef TInt            (*TLibFuncLayout)(const CFbsBitmap* aImage, const TOCRLayoutSetting aSettings, HBufC8** aBinImage, TOCRBlockInfo** aBlock, TInt* aBlockCount);
+typedef TInt            (*TLibFuncRecognize)(HBufC8* aBinImage, const TOCRRecognizeSetting aSettings, TOCRBlockInfo* aBlock, const TInt aBlockCount, TOCRTextRgnInfo** aTextRgn, RecogProgress aFuncRecogProgress);
+
+typedef void            (*TLibFuncFreeBinImage)(HBufC8* aBinImage);
+typedef void            (*TLibFuncFreeBlocks)(TOCRBlockInfo* aBlock);
+typedef void            (*TLibFuncFreeTextRgns)(TOCRTextRgnInfo *aTextRgn,const TInt aBlockCount);
+
+typedef TEngineVersion  (*TLibFuncGetVersion)( void );
+typedef TInt            (*TLibFuncSetActiveLanguage)(RArray<TInt> iLanguages);
+typedef TInt            (*TLibFuncGetInstalledLanguages)(RArray<TInt>& aLanguages);
+typedef TInt            (*TLibFuncRefresh)( void );
+typedef TBool           (*TLibFuncIsLanguageSupported)(const TLanguage aLanguage);
+
+typedef TInt            (*TLibFuncRecognizeBlock)(const CFbsBitmap* aImage, TOCRLayoutBlockInfo aLayoutInfo, TOCRTextRgnInfo** aTextRgn, RecogProgress aFuncRecogProgress);
+typedef TInt            (*TLibFuncRecognizeSpecialRegion)(const CFbsBitmap* aImage, TRegionInfo aRegionInfo, TOCRTextRgnInfo** aTextRgn, RecogProgress aFuncRecogProgress);
+
+// CLASS DECLARATION
+
+/**
+ *  Thread for Ocr process
+ *
+ *  Definition of the child thread of the engine
+ *
+ *  @lib ocrsrv.lib
+ *  @since S60 v3.1
+ */
+class EngineThread 
+    {
+public:
+
+    /**
+    * Thread entry function
+    * @since S60 v3.1
+    * @param aData Thread parameter
+    * @return KErrNone if no error
+    */
+    static TInt ThreadFunction(TAny* aData);
+    
+private:
+
+    /**
+    * Request Processor
+    * @since S60 v3.1
+    * @param aShareData Pointer to the shared data
+    * @return None
+    */
+    static void ProcessRequestL(CShareData* aShareData);
+
+    /**
+    * Inform main thread that request is completed
+    * @since S60 v3.1
+    * @param aShareData Pointer to the shared data
+    * @param aCmd A specified command
+    * @param aErrCode An error code
+    * @return None
+    */
+    static void CompleteRequest(CShareData* aShareData, TEngineCmd aCmd, TInt aErrCode);
+
+    /**
+    * Reset the vendor engine and release all memory allocated
+    * @since S60 v3.1
+    * @param aShareData Pointer to the shared data
+    * @param aLibrary A reference to the loaded library
+    * @return None
+    */
+    static void ResetVendorEngine(CShareData* aShareData, const RLibrary& aLibrary);
+
+    /**
+    * Get the cancel flag
+    * @since S60 v3.1
+    * @return ETrue if cancal flag is on; otherwise EFalse
+    */
+    static TBool GetCancelFlag();
+
+    /**
+    * Get the progress information from the engine
+    * @since S60 v3.1
+    * @param aPercentage A percentage of recognition progress
+    * @return KErrNone if no error
+    */
+    static TInt RecognizeProgress(TUint aPercentage);
+
+    /**
+    * Check and convert the engine error to system level error msg
+    * @since S60 v3.1
+    * @param aError Vendor error code
+    * @return None
+    */
+    static void CheckError(TInt& aError);
+    
+    /**
+    * Handle engine command
+    * @since S60 v3.1
+    * @param aLibrary A handle to the engine library
+    * @param aCommand A command to be handled
+    * @param aData Pointer to the shared data
+    * @return None
+    */        
+    static TBool HandleCommandL(const RLibrary& aLibrary, TEngineCmd aCommand, CShareData* aData);
+    
+    /**
+    * Handle engine command - Layout Analysis
+    * @since S60 v3.1
+    * @param aLibrary A handle to the engine library
+    * @param aCommand A command to be handled
+    * @param aData Pointer to the shared data
+    * @return None
+    */    
+    static void HandleLayoutAnalysis(const RLibrary& aLibrary, CShareData* aData);
+    
+    /**
+    * Handle engine command - Recognition
+    * @since S60 v3.1
+    * @param aLibrary A handle to the engine library
+    * @param aCommand A command to be handled
+    * @param aData Pointer to the shared data
+    * @return None
+    */    
+    static void HandleRecognition(const RLibrary& aLibrary, CShareData* aData);
+
+    /**
+    * Handle engine command - Block Recognition
+    * @since S60 v3.1
+    * @param aLibrary A handle to the engine library
+    * @param aCommand A command to be handled
+    * @param aData Pointer to the shared data
+    * @return None
+    */    
+    static void HandleBlockRecognition(const RLibrary& aLibrary, CShareData* aData);
+    
+    /**
+    * Handle engine command - Special Region Recognition
+    * @since S60 v3.1
+    * @param aLibrary A handle to the engine library
+    * @param aCommand A command to be handled
+    * @param aData Pointer to the shared data
+    * @return None
+    */    
+    static void HandleSpecialRegionRecognition(const RLibrary& aLibrary, CShareData* aData);
+    
+    /**
+    * Handle engine command - Getting Language
+    * @since S60 v3.1
+    * @param aLibrary A handle to the engine library
+    * @param aCommand A command to be handled
+    * @param aData Pointer to the shared data
+    * @return None
+    */    
+    static void HandleGettingLanguage(const RLibrary& aLibrary, CShareData* aData);
+    
+    /**
+    * Handle engine command - Setting Language
+    * @since S60 v3.1
+    * @param aLibrary A handle to the engine library
+    * @param aCommand A command to be handled
+    * @param aData Pointer to the shared data
+    * @return None
+    */    
+    static void HandleSettingLanguage(const RLibrary& aLibrary, CShareData* aData);
+    
+    /**
+    * Handle engine command - Refresh Database
+    * @since S60 v3.1
+    * @param aLibrary A handle to the engine library
+    * @param aCommand A command to be handled
+    * @param aData Pointer to the shared data
+    * @return None
+    */    
+    static void HandleRefreshDatabase(const RLibrary& aLibrary, CShareData* aData);
+    };
+
+#endif      // OCRTHREAD_H   
+            
+// End of File