inputmethods_plat/ptiengine_hwr_api/inc/PtiMHwrRecognizer.h
author hgs
Fri, 23 Jul 2010 16:49:01 +0800
changeset 35 0f326f2e628e
parent 0 eb1f2e154e89
permissions -rw-r--r--
201029

/*
* 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_MHWRRECOGNIZER_H
#define _PTI_MHWRRECOGNIZER_H

// INCLUDES
#include <badesca.h>
#include <PtiDefs.h>
#include <eikon.hrh>

// public sdk
enum TPtiHwrScriptType
    {
    EPtiHwrScriptBegin = ELangMaximum,
    EPtiHwrScriptLatin,
    EPtiHwrScriptCyrillic,
    EPtiHwrScriptGreek,
    EPtiHwrScriptHebrew,
    EPtiHwrScriptArabic,
    EPtiHwrScriptAny = ELangMaximum + 200   
    };

enum TPtiHwrRange
    {
    EPtiHwrRangeLanguage = 1,
    EPtiHwrRangeSymbol,
    EPtiHwrRangeNumber,
    EPtiHwrRangeAny = EPtiHwrRangeLanguage + 100
    };   
    
    
/**
 *  MTruiEngine class.
 *  The interface between HWR engine and TrainUI application
 */
class MTruiEngine
    {
public:
    /**
     * Set current trained character's Language Script
     *
     * @param aLanguageScript current trained character's Language Script
     */
    virtual void SetLanguageScriptL( TInt aLanguageScript ) = 0;
    
    /**
     * Check if character has model
     *
     * @param aChar The character which is checked
     * @return TBool True means this character has model
     *               False means this character doesn't has model yet
     */
    virtual TBool CharacterModelExist( const TDesC& aChar ) = 0;
    
    /**
     * Get character model
     *
     * @param aChar Get this character's model
     * @param aModel Array of points where the character's model is stored.
     * @return TInt Error value. If no error occurred, KErrNone is returned
     */
    virtual void GetCharacterModelL( const TDesC& aChar,
                                    RArray<TPoint>& aModel ) = 0;
    
    /**
     * Set character model
     *
     * @param aChar Set model to this character
     * @param aModel Array of points where the character's model is stored.
     * @aSubRange Shall set the value to TPtiHwrRange.
     * @aSimilarChar if not accepted by engine, store the conflict char
     * @return TInt Error value. If no error occurred, KErrNone is returned
     */
    virtual void SetCharacterModelL( const TDesC& aChar,
                                    RArray<TPoint>& aModel , TInt aSubRange, TDes& aSimilarChar ) = 0;
    
    /**
     * Delete character model
     *
     * @param aChar Delete this character's model
     * @return TInt Error value. If no error occurred, KErrNone is returned
     */
    virtual TInt DeleteCharacterModel( const TDesC& aChar ) = 0;   
    
    /**
     * Get text list of all the shortcuts
     *
     * @param aShortcutTextList The text list.
     * @return TInt Error value. If no error occurred, KErrNone is returned
     */
    virtual void GetShortcutTextListL( RPointerArray<HBufC>& aShortcutTextList ) = 0;
    
    /**
     * Check if shortcut has model
     *
     * @param aText The shortcut which is checked
     * @return TBool True means this shortcut has model
     *               False means this shortcut doesn't has model yet
     */
    virtual TBool CheckShortcutModel( const TDesC& aText ) = 0;
    
    /**
     * Get trails assigned to the specified shortcut.
     * 
     * @param aText The specified shortcut text
     * @param aModel Trails of the shortcut.
     * @param aUnicode The assigned preset text if it is a preset shortcut,
     *        otherwise, it is 0;     
     */
    virtual void GetShortcutModelL( const TDesC& aText, 
                            RArray<TPoint>& aModel, TUint& aUnicode ) = 0;
    
    /**
     * Set Shortcut model
     *
     * @param aText Set model to this Shortcut
     * @param aModel Array of points where the Shortcut's model is stored.
     * @param aSimilarText Store the conflict text if exist.
     * @return void.
     */
    virtual void SetShortcutModelL( const TDesC& aText,
                              RArray<TPoint>& aModel, TDes& aSimilarText ) = 0;
    
    /**
     * Delete Shortcut model
     *
     * @param aText Delete this Shortcut's model
     * @return TInt Error value. If no error occurred, KErrNone is returned
     */
    virtual TInt DeleteShortcutModel( const TDesC& aText ) = 0;
    
    /**
     * Change the text of an existing shortcut
     *
     * @param aOldText The text of an existing shortcut
     * @param aNewText The new text of the shortcut
     * @return none
     */
    virtual void ChangeShortcutTextL( const TDesC& aOldText,
                                     const TDesC& aNewText ) = 0;


    /**
     * Get guiding line pos
     * 
     * @aSize The are
     * @param aTop The vertical coordinate of top guiding line
     * @param aBottom The vertical coordinate of bottom guiding line
     * @return TInt Error value. If no error occurred, KErrNone is returned
     */
    virtual TInt GetGuidingLinePos( const TSize& aSize, TInt& aTop , TInt&  aBottom) = 0; 

    /**
     * Get the number of the maximum of shortcuts
     *
     * @return TInt The number of the maximum of shortcuts
     */
    virtual TInt MaxShortCutLength() = 0; 

    /**
     * Save preset shortcuts.
     * 
     * @param aUnicode The assigned preset text.
     * @param aShortcut The shortcut to be save.
     */
    virtual void SavePresetShortcutL( TUint aUnicode, const TDesC& aShortcut ) = 0;
    
    /**
     * Return all unicodes of preset text stored in PTI engine
     * 
     * @param aPresets All preset text's unicodes are stored in this array.     
     */
    virtual void GetAllPresetSymbolsL( RArray<TUint>& aPresets ) = 0;  
    
    /**
     * Get trails assigned to a preset text.
     * 
     * @param aUnicode The unicode of the preset text.
     * @param aModel Store trails of the preset text.
     * @param aShortcut Indicate whether the preset text has been assigned to a shortcut text.
     *        If KNullDesC, it is not in use.
     */
    virtual void GetPresetSymbolByUnicodeL( TUint aUnicode, RArray<TPoint>& aModel, TDes& aShortcut ) = 0;  
    };
    
    
/**
* MHwrRecognizer class.
* Interface definiton for Hwr.
*/
class MPtiHwrRecognizer
    {
public:
    // pure hwr interface
    /**
     * Set Hwr to given recognition range
     *
     * @param aRange Given recognition range
     * @return KErrNone means successfully, otherwise system wide error codes
     */
    virtual TInt SetRange(const TRecognitionRange& aRange) = 0;

    /**
     * Get current recognition range of hwr engine
     *
     * @return Current recognition range
     */
    virtual TRecognitionRange GetRange() = 0;

    /**
     * Appends an auxiliary range
     *
     * @param aRange The auxiliary range to be appended
     * @return KErrNone means successfully, otherwise system wide error codes
     */
    virtual TInt AddAuxiliaryRange (const TRecognitionRange& aRange) = 0;
    
    /**
     * Remove all auxiliary recognition ranges
     *
     * @return None
     */
    virtual void RemoveAllAuxRange () = 0;
    
    /**
     * 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
     */
    virtual TInt RemoveAuxiliaryRange (TInt aIndex) = 0;
    
    /**
     * 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
     */
    virtual TInt SetCandidateNum(TInt aNumber) = 0;

    /**
     * Retrieve the current primary candidate number need to be returned 
     * each time
     *
     * @return The number of primary candidate characters which engine returns 
     * each time
     */
    virtual TInt GetCandidateNum() const = 0;
    
    /**
     * Get the stroke end mark 
     *
     * @return Current stroke end mark
     */
    virtual TPoint StrokeEndMark() const = 0;
    
    /**
     * 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
     */
    virtual TInt Recognize(const RArray<TPoint>& aTraceData, RPointerArray<HBufC>& aResult) = 0;

    /**
     * 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
     */
    virtual TInt SetInputAreaSize(TSize& aSize) = 0;

    /**
     * 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
     */
    virtual TInt GetEngineVersion(TDes& aVersion) = 0;
    
    /**
     * 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
     */
    virtual TInt GetDictVersion(TDes& aVersion) = 0;

    /**
     * Enable or disable word recognition
     *
     * @param aFlag The word recognition flag, ETrue if enable word recognition, 
     * otherwise EFalse
     * @return None
     */
    virtual void EnableWordRecognition(const TBool aFlag) = 0;
    
    /**
     * 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
     */
    virtual void SetFirstLetterOrder (const TLatinLetterOrder aOrder) = 0;

    /**
     * Set number mode
     * 
     * @param aNumberMode Given number mode
     * @return None
     */
    virtual void SetNumberMode(const TAknEditorNumericKeymap aNumberMode) = 0;
    
    /**
     * Set position of HWR top guideline
     * 
     * @param aPos Position to be set
     * @return None
     */
    virtual void GetTopGuideLinePos(TInt& aPos) = 0;

    /**
     * Set position of HWR bottom guideline
     * 
     * @param aPos Position to be set
     * @return None
     */
    virtual void GetBottomGuideLinePos(TInt& aPos) = 0;
    
    /**
     * Set permitted recognized character set
     * 
     * @param aSymbolSet Permitted recognized character set
     * @return None
     */
    virtual void SetPermittedSymbolSet(const TDesC& aSymbolSet) = 0;    

    /**
     * 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
     */
    virtual TInt RecognizeWithCharSet(const RArray<TPoint>& aTraceData, RPointerArray<HBufC>& aResult, const TDesC& aCharSet) = 0;
    
    /**
     * 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
     */
    virtual TInt SetAuxCandidateNum(TInt aNumber) = 0;
    
    /**
     * 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
     */
    virtual TInt GetAuxCandidateNum() const = 0;
    
    /**
     * Retrieve MTruiEngine interface pointer if the derived engine support UDM feature.
     *
     * @return The pointer of MTruiEngine if success.
     */
    virtual MTruiEngine* QueryUdmInterfaceL()  = 0;
    
    /**
     * Tell the engine that a new MCR session has been started.
     *
     * @return None.
     */
    virtual void McrBeginSessionL() = 0;
    
        /**
     * 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
     */
    virtual void McrAddStrokesL(const RArray<TPoint>& aTraceData, RPointerArray<HBufC>& aResult) = 0;
    
    /**
     * Tell the engine that a new MCR session need to be ended, return the last result.
     *
     * @return None.
     */
    virtual void McrEndSessionL( RPointerArray<HBufC>& aResult ) = 0;
    /**
     * 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
     */
    virtual TInt EnableRecognitionDictionary(const TBool aFlag) = 0;
    /**
     * 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
     */  
    virtual TInt SetScreenSize(TSize& aSize) = 0;   
    /**
     * 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
     */  
    virtual TInt EnableGuideline(const TBool aFlag) = 0;    
    };

    
#endif  //_PTI_MHWRRECOGNIZER_H