diff -r 000000000000 -r 0ce1b5ce9557 ocrsrv_stub/inc/language.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ocrsrv_stub/inc/language.h Thu Jan 14 07:14:53 2010 +0200 @@ -0,0 +1,407 @@ +/* +* 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: language manager definitions +* +*/ + + +#ifndef OCRLANGUAGE_H +#define OCRLANGUAGE_H + +// INCLUDES FILES +#include "languageconvertor.h" +#include "ocrthread.h" +#include +#include + +// CONSTANTS +const TInt KFileNameLength = 128; + +/** Pathes where the engine marks stores */ +_LIT(KDataPathZ, "z:\\resource\\ocrsrv\\*.dat"); +_LIT(KDataPathC, "c:\\resource\\ocrsrv\\*.dat"); + +_LIT( KExtend, "dll" ); + +/** Language Definitions */ +const TInt KEngineLangInvalid ( 0 ); +const TInt KEngineLangChineseSimp ( 1 ); +const TInt KEngineLangChineseTrad ( 2 ); +const TInt KEngineLangJapanese ( 3 ); +const TInt KEngineLangEnglish ( 101 ); +const TInt KEngineLangFinish ( 102 ); + +/** + * Internal Language Structure + * + * Map one language instance with an engine id + * + * @lib ocrsrv.lib + * @since S60 v3.1 + */ +class TOCRLanguage + { +public: + + /** + * Eninge id + */ + TInt iEngineId; + + /** + * Language + */ + TLanguage iLanguage; + }; + +/** + * Internal Language Structure + * + * Map two combined languages with an engine ID + * + * @lib ocrsrv.lib + * @since S60 v3.1 + */ +class TOCRCombinedLanguage + { +public: + + /** + * Eninge id + */ + TInt iEngineId; + + /** + * Eastern language that the engine supports + */ + TLanguage iLanguageEast; + + /** + * Western language that the engine supports + */ + TLanguage iLanguageWest; + }; + +/** + * OCR Engine Wrapper class + * + * OCR Engine wrapper which offers the abstruct of all + * OCR engines + * + * @lib ocrsrv.lib + * @since S60 v3.1 + */ +class COCREngine : public CBase + { +public: + + /** + * Default C++ Destructor + */ + virtual ~COCREngine(); + + /** + * Symbian Two-phased constructor + */ + static COCREngine* NewL(const TDesC& aEnginePathAndName,const TInt aEngineId); + + /** + * Initialize the analyze engine + * @since S60 v3.1 + * @return None + */ + void AnalyzeEngineL(); + + /** + * Empty data of current engine + * @since S60 v3.1 + * @return none + */ + void EmptyData(); + + /** + * Get engine Id + * @since S60 v3.1 + * @return Engine id + */ + inline const TInt GetEngineId() const ; + + /** + * Get unique engine name + * @since S60 v3.1 + * @param aEngineName A new engine name + * @return None + */ + void GetEngineName(TDes& aEngineName) const ; + + /** + * Get languages the engine support + * @since S60 v3.1 + * @return Supported language list + */ + inline const RArray& GetSupportLanguage() const ; + + /** + * Get language combinations the engine support + * @since S60 v3.1 + * @return Supported language combination list + */ + inline const RArray& GetSupportCombinedLanguage() const; + +private: + + /** + * By default Symbian 2nd phase constructor is private + * @since S60 v3.1 + * @param aEngineName Engine name to be constructed + * @param aEngineId Engine Id to be constructed + * @return None + */ + void ConstructL(const TDesC& aEngineName,const TInt aEngineId); + + /** + * Justify if given language is an eastern language + * @since S60 v3.1 + * @param aLanguage A language to be tested + * @return ETrue if it's an eastern language + */ + inline TBool IsEast(const TLanguage aLanguage) const; + + /** + * Combine eastern and western languages + * @since S60 v3.1 + * @param aEast eastern language to be combined + * @param aWest western language to be combined + * @param aDestination An array which holds the result + * @return None + */ + void CombineLanguage(const RArray& aEast, + const RArray& aWest, + RArray& aDestination); + + /** + * C++ default constructor + */ + COCREngine(); + +private: + + /** + * Engine id + */ + TInt iEngineId; + + /** + * Enigne name + */ + TBuf iEngineName; + + /** + * Languages that the engine support + */ + RArray iLanguageList; + + /** + * Language combinations that the engine support + */ + RArray iCombinedLanguageList; + }; + +/** + * OCR Engine Wrapper list + * + * List of all loaded engines + * + * @lib ocrsrv.lib + * @since S60 v3.1 + */ +class COCREngineList : public CBase + { +public: + + /** + * Symbian Two-phased constructor + */ + static COCREngineList* NewL(); + + /** + * Default C++ destructor + */ + virtual ~COCREngineList(); + + /** + * Justify if the language is supported + * @since S60 v3.1 + * @param aLanguage A language to be tested + * @return ETrue if supported + */ + TBool IsSupportLanguage(const TLanguage aLanguage); + + /** + * Get all supported languages + * @since S60 v3.1 + * @param aLanguages A list which holds all supported languages + * @return None + */ + void GetALLSupportLanguage(RArray &aLanguages); + + /** + * Refresh language databases, this method shall be always called + * whenever databases changed + * @since S60 v3.1 + * @return None + */ + void RefreshL(); + + /** + * Get supported engine numbers + * @since S60 v3.1 + * @return Num of engine detected + */ + inline TInt GetEngineCount() const; + + /** + * Get engine name by a given language + * @since S60 v3.1 + * @param aLanguage A language supported by the engine + * @param aEngineName The name of the engine + * @return KErrNone if no error, otherwise system level error raised + */ + TInt GetEngineName(const TLanguage aLanguage, TDes& aEngineName); + + /** + * Get engine name by language combination + * @since S60 v3.1 + * @param aLanguageFirst A language supported by the engine + * @param aLanguageSecond Another language supported by the engine + * @param aEngineName The name of the engine + * @return KErrNone if no error, otherwise system level error raised + */ + TInt GetEngineName(const TLanguage aLanguageFirst, + const TLanguage aLanguageSecond, + TDes& aEngineName); + +private: + + /** + * Empty data of the engine + * @since S60 v3.1 + * @return None + */ + void EmptyData(); + + /** + * Analyze engines information + * @since S60 v3.1 + * @return None + */ + void DoAnalyzeEnginesInfoL(); + + /** + * Set engines information + * @since S60 v3.1 + * @param aDir A directory information array + * @param aCount A number of dirs of the array + * @return None + */ + void SetEngineInfoL(const CDir* aDir, const TInt aCount); + + /** + * Default Symbian 2nd phase constructor + * @since S60 v3.1 + * @return None + */ + void ConstructL(); + + /** + * Add language array + * @since S60 v3.1 + * @param aSource A src language array + * @param aDestination A tar language array + * @return None + */ + void AddLanguageArray(const RArray& aSource, RArray& aDestination); + + /** + * Add language combination array + * @since S60 v3.1 + * @param aSource A src language array + * @param aDestination A tar language array + * @return None + */ + void AddCombinedLanguageArray(const RArray& aSource, + RArray& aDestination); + + /** + * Test if the language is within one array + * @since S60 v3.1 + * @param aLanguage A language to be tested + * @param aArray An array to be tested + * @return ETrue if the language is in language list + */ + TBool IsHaveLanguage(const TLanguage aLanguage, const RArray& aArray) const; + + /** + * Test if the language is within one combined array + * @since S60 v3.1 + * @param aLanguageFirst A language to be tested + * @param aLanguageSecond Another language to be tested + * @param aArray An array to be tested + * @return ETrue if the language is in language list + */ + TBool IsHaveCombinedLanguage(const TLanguage aLanguageFirst, + const TLanguage aLanguageSecond, + const RArray& aArray) const; + + /** + * C++ default constructor + */ + COCREngineList(); + +private: + + /** + * Pathes for searching the ocr libraries + */ + RPointerArray iPathes; + + /** + * List of all supported lanugages + */ + RArray iLanguageList; + + /** + * List of all combined languages, this generated from iLanguageList + * e.g. if we support English and Japanese, then the iCombinedLanguageList + * would have English, Japanese and EnglishJapanese languages. Note that + * only one western language and one eastern language would be combined + */ + RArray iCombinedLanguageList; + + /** + * List of all loaded OCR engine instances + */ + RPointerArray iOCREngineList; + + /** + * File session + */ + RFs iFs; + }; + +#include "language.inl" + +#endif // OCRLANGUAGE_H + +// End Of File