diff -r 000000000000 -r eb1f2e154e89 inputmethods_plat/ptiengine_hwr_api/inc/PtiHwrRecognizer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/inputmethods_plat/ptiengine_hwr_api/inc/PtiHwrRecognizer.h Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,492 @@ +/* +* Copyright (c) 2003 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: Predective text input engine hwr recognizer interface. +* +*/ + + + + + + + + + + + + + + + +#ifndef _PTI_HWRRECOGNIZER_H +#define _PTI_HWRRECOGNIZER_H + +// INCLUDES +#include "PtiMHwrRecognizer.h" + +// internal definition +enum TUdmType + { + EUdmSymbol = 1, + EUdmShortcut, + EUdmMax + }; + struct THwrUdmRange + { + TInt iScript; + TInt iRange; + }; +class CTruiPtiEngine; + + + + +/** +* CHwrRecognizer class. +* Interface definiton for Hwr. +*/ +class CHwrRecognizer : + public CBase, + public MPtiHwrRecognizer + { +public: + /** + * Two phase constructor, create instance of implementation by + * implementation uid. + * + * @param aImpId The given implementation uid + */ + IMPORT_C static CHwrRecognizer* NewL(TInt aImpId); + + /** + * Two phase constructor, create instance of implementation by + * given language. + * + * @param aLanguage The language should be support by implementation instance + * @param aHwrImplUid Carray the implementation uid on return + */ + IMPORT_C static CHwrRecognizer* NewL(const TLanguage aLanguage, TUid& aHwrImplUid); + + /** + * Destructor + */ + IMPORT_C virtual ~CHwrRecognizer(); + + /** + * Get implementation uid list by supplied resolution parameters + * + * @param aMatch Resolution parameters + * @param aImpIdList The array carry the implementation uid list + * @return None + */ + IMPORT_C static void ListImplementationsL(const TLanguage aLanguage, RArray& aImpIdList); + + /** + * Get supported language list + * + * @param aResult Carry the supported language list on return + * @return None + */ + IMPORT_C static void ListAvailableLanguagesL(RArray& aResult); + + /** + * Get supported language list of given hwr implementation instance specified by given + * implementation uid + * + * @param aImpId The given implementation uid + * @param aResult Carry the supported language list on return + * @return None + */ + IMPORT_C static void ListGivenAvailableLanguagesL(TUid aImpId, RArray& aResult); + + // from MPtiHwrRecognizer + /** + * Set Hwr to given recognition range + * + * @param aRange Given recognition range + * @return KErrNone means successfully, otherwise system wide error codes + */ + IMPORT_C TInt SetRange(const TRecognitionRange& aRange); + + /** + * Get current recognition range of hwr engine + * + * @return Current recognition range + */ + IMPORT_C TRecognitionRange GetRange(); + + /** + * Appends an auxiliary range + * + * @param aRange The auxiliary range to be appended + * @return KErrNone means successfully, otherwise system wide error codes + */ + IMPORT_C TInt AddAuxiliaryRange (const TRecognitionRange& aRange); + + /** + * Remove all auxiliary recognition ranges + * + * @return None + */ + IMPORT_C void RemoveAllAuxRange (); + + /** + * Remove an specified auxiliary recognition range. + * + * @param aIndex The index of auxiliary range to be deleted + * @return KErrNone means successfully, otherwise system wide error codes + */ + IMPORT_C TInt RemoveAuxiliaryRange (TInt aIndex); + + /** + * Set the number of primary candidate candidates the HWR engine should + * return each time + * + * @param aNumber The number of primary candidates that HWR engine should + * return each time + * @return KErrNone means successfully, otherwise means aNumber is illegal + */ + IMPORT_C TInt SetCandidateNum(TInt aNumber); + + /** + * Retrieve the current primary candidate number need to be returned + * each time + * + * @return The number of primary candidate characters which engine returns + * each time + */ + IMPORT_C TInt GetCandidateNum() const; + + /** + * Get the stroke end mark + * + * @return Current stroke end mark + */ + IMPORT_C TPoint StrokeEndMark () const; + + /** + * Get the character candidates from the HWR engine based on the input strokes + * + * @param aTraceData The array of pen trace points, each stroke is ended by + * stroke end mark + * @param aResult Candidate buffer array + * @return KErrOutOfMem if out of memory, otherwise number of the primary + * candidate in the candidate list + */ + IMPORT_C TInt Recognize(const RArray& aTraceData, RPointerArray& aResult); + + /** + * Tell the HWR engine about the size of the writing area used to + * input character + * + * @param aSize The size of writing area + * @return KErrNone means operation succeed, otherwise system wide error codes + */ + IMPORT_C TInt SetInputAreaSize(TSize& aSize); + + /** + * Retrieve an ASCII string that describes the version information + * of the current HWR engine + * + * @param aVersion Contains the engine version string on return + * @return KErrNone means operation succeed, otherwise system wide error codes + */ + IMPORT_C TInt GetEngineVersion(TDes& aVersion); + + /** + * Retrieve an ASCII string that describes the version information + * of the basic recognition dictionary + * + * @param aVersion Contains recognition dictionary version string on return + * @return KErrNone means operation succeed, otherwise system wide error codes + */ + IMPORT_C TInt GetDictVersion(TDes& aVersion); + + /** + * Enable or disable word recognition + * + * @param aFlag The word recognition flag, ETrue if enable word recognition, + * otherwise EFalse + * @return None + */ + IMPORT_C void EnableWordRecognition(const TBool aFlag); + + /** + * Specify whether small case or upper case letter will be the first one + * in candidate list when the first two letters are the same if case is ignored + * + * @param aOrder EUpperFirst if user wants upper case letter in the first, + * otherwise ELowerFirst + * @return None + */ + IMPORT_C void SetFirstLetterOrder (const TLatinLetterOrder aOrder); + + /** + * Set number mode + * + * @param aNumberMode Given number mode + * @return None + */ + IMPORT_C void SetNumberMode(const TAknEditorNumericKeymap aNumberMode); + + /** + * Set position of HWR top guideline + * + * @param aPos Position to be set + * @return None + */ + IMPORT_C void GetTopGuideLinePos(TInt& aPos); + + /** + * Set position of HWR bottom guideline + * + * @param aPos Position to be set + * @return None + */ + IMPORT_C void GetBottomGuideLinePos(TInt& aPos); + + /** + * Set permitted recognized character set + * + * @param aPos Position to be set + * @return None + */ + IMPORT_C void SetPermittedSymbolSet(const TDesC& aSymbolSet); + + /** + * Get the character candidates from the HWR engine based on the input strokes + * + * @param aTraceData The array of pen trace points, each stroke is ended by + * stroke end mark + * @param aResult Candidate buffer array + * @param aCharSet The small charset that primary range candidate should come from + * @return KErrOutOfMem if out of memory, otherwise number of the primary + * candidate in the candidate list + */ + IMPORT_C TInt RecognizeWithCharSet(const RArray& aTraceData, RPointerArray& aResult, const TDesC& aCharSet); + + /** + * Set the number of each secondary candidates the HWR engine should + * return each time + * + * @param aNumber The number of each secondary candidates that HWR engine should + * return each time + * @return KErrNone means successfully, otherwise means aNumber is illegal + */ + IMPORT_C TInt SetAuxCandidateNum(TInt aNumber); + + /** + * Retrieve the current each secondary candidate number need to be returned + * each time + * + * @return The number of secondary candidate characters which engine returns + * each time + */ + IMPORT_C TInt GetAuxCandidateNum() const; + + /** + * Retrieve MTruiEngine interface pointer if the derived engine support UDM feature. + * + * @return The pointer of MTruiEngine if success. + */ + IMPORT_C MTruiEngine* QueryUdmInterfaceL(); + + /** + * Tell the engine that a new MCR session has been started. + * + * @return None. + */ + IMPORT_C void McrBeginSessionL(); + + /** + * Get the character candidates from the HWR engine based on the input strokes by MCR + * + * @param aTraceData The array of pen trace points, each stroke is ended by + * stroke end mark + * @param aResult Candidate buffer array + * @return KErrOutOfMem if out of memory, otherwise number of the primary + * candidate in the candidate list + */ + IMPORT_C void McrAddStrokesL(const RArray& aTraceData, RPointerArray& aResult); + + + /** + * Tell the engine that a new MCR session need to be ended, return the last result. + * + * @return None. + */ + IMPORT_C void McrEndSessionL( RPointerArray& aResult ); + + /** + * Check wether the new symbol model is valid. + * + * @param aSymbolName The name of the symbol name. + * @param aStrokes Store the strokes for the model. + * @param aScriptType The script that the model shall belongs to . + * @param aSimilarSymbol Store the characters recognized by aStrokes + * @return KErrNone if the model is accpeted by the engine, otherwise err codes + */ + IMPORT_C virtual TInt SymbolModelValid( const TDesC& aSymbolName, const RArray& aStrokes, THwrUdmRange aScriptType, TDes& aSimilarSymbol ); + /** + * Tell the engine whether to use dictionary when doing reconition. + * @param aFlag ETrue to enable recognition dictionary, and EFalse to diable. + * @return KErrNone means operation succeed, otherwise system wide error codes + */ + IMPORT_C TInt EnableRecognitionDictionary(const TBool aFlag); + /** + * Tell the HWR engine about the size of the touch screen + * + * + * @param aSize The size of touch screen + * @return KErrNone means operation succeed, otherwise system wide error codes + */ + IMPORT_C TInt SetScreenSize(TSize& aSize); + /** + * Tell the HWR engine whether guideline is on. + * + * + * @param aFlag ETrue to enable guideline, and EFalse to diable. + * @return KErrNone means operation succeed, otherwise system wide error codes + */ + IMPORT_C TInt EnableGuideline(const TBool aFlag); +protected: + + /** + * Retrieve whether the derived engine support UDM feature. + * + * @return ETrue if support. + */ + IMPORT_C virtual TBool IsSupportUdm() const; + + /** + * Load the aType models to memory. + * + * @param aType Shall set with the value TUdmType + * @return none + */ + IMPORT_C void LoadUdmL( TUdmType aType ); + + /** + * Free the momory of the aType models + * + * @param aType Shall set with the value TUdmType + * @return none + */ + IMPORT_C void UnLoadUdmL( TUdmType aType ); + + /** + * Get the filterd models by THwrUdmRange, return the indexes. + * + * @param aType Shall set with the value TUdmType + * @param aList Store the indexes that fulfil the aRange + * @param aRange Sepcifiy the rules that the modles shall belong to. + * @return none + */ + IMPORT_C void GetModelIndexListL(TUdmType aType, RArray& aList, const THwrUdmRange& aRange ); + + /** + * Get the filterd models by THwrUdmRange, return the indexes. + * + * @param aType Shall set with the value TUdmType + * @param aIndex The index of the model. + * @param aSymbolName Sepcifiy the rules that the modles shall belong to. + * @param aModel Store the strokes for the model. + * @param aHelpLine Store the helpline. + * @param aBaseLine Store the baseline. + * @return none + */ + IMPORT_C void GetSymbolModelL(TUdmType aType, TInt aIndex, TPtrC& aSymbolName,RArray& aModel, TInt& aHelpLine, TInt& aBaseLine ); + +private: + + /** + * Utitlity function, parse a string to range values + * + * @param aRangeData The string to convert + * @param aLowerValue The lower bound value. + * @param aUpperValue The upper bound value. + * @param aRadix The number system representation for the integer + * @since S60 v3.2 + * + * @return None + */ + void static GetRanges(const TDesC8& aRangeData, TInt& aLowerValue, TInt& aUpperValue); + + /** + * Utitlity function, extract the languages and append them to array + * + * @param aImplementationData The string to extract. + * @param aResult The result array that need to append. + * @since S60 v3.2 + * + * @return None. + */ + void static AppendMatchedLanguagesL(const TDesC8& aImplementationData, RArray& aResult); + + /** + * Utitlity function, indicates whether the value is included + * in a string. + * + * @param aImplementationData The string to test. + * @param aValue The value to test. + * @since S60 v3.2 + * + * @return ETrue if match, otherwise EFalse. + */ + TBool static Match(const TDesC8& aImplementationData, TInt aValue); + +private: + + /** + * instance identifier key + */ + TUid iDtor_ID_Key; + + CTruiPtiEngine* iUdmEngine; + + + }; + +/** + * This class declares the hwr recognizer + * Purpose of this class is to save some information of active hwr recognizer + * + * @since S60 v4.0 + */ +class CPtiHwrRecognizer : public CBase + { +public: // data + + /** + * Destructor + */ + ~CPtiHwrRecognizer(); + + /** + * The pointer points to current active hwr implementation + */ + CHwrRecognizer* iHwrRecognizer; + + /** + * The languages list that current active hwr implementation supports + */ + RArray iHwrLanguagesList; + + /** + * The implementation uid of current active hwr implementation + */ + TUid iHwrImpId; + }; + +#endif // _PTI_HWRRECOGNIZER_H \ No newline at end of file