diff -r d40e813b23c0 -r 48060abbbeaf htiui/HtiServicePlugins/HtiScreenshotServicePlugin/inc/HtiTextRcg.h --- a/htiui/HtiServicePlugins/HtiScreenshotServicePlugin/inc/HtiTextRcg.h Thu Jul 15 18:39:46 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,178 +0,0 @@ -/* -* Copyright (c) 2009 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: Text recognition algorithm implementation. -* -*/ - - -#ifndef __HTI_TEXT_RCG_ -#define __HTI_TEXT_RCG_ - -#include -#include -#include - -const TInt KDefaultAvgDiffMin = 50; -const TInt KDefaultFgSSMin = 50; -const TInt KDefaultFgAvgDiffMin = 5; //in "pure" (not AA) pixels -const TInt KWorstCase = 0xFF; -const TInt KSuccessThresold = 50; -const TInt KNormCoefAcc = 2; - -const TInt KDefaultFGAAmount = 5; -const TInt KDefaultBGAAmount = 10; - -const TInt KFgPatternColor = 0x00; //black -const TInt KBgPatternColor = 0xff; //white - -TInt CompareTPoint(const TPoint& aP1,const TPoint& aP2); - -enum THtiTextRecgHints - { - EHintNone = 0, - EHintEdge = 1 - }; - -/** -* The class implements text recognition algorithm on screenshots -* based on system fonts -* -*/ -class CHtiTextRcg : public CBase -{ -public: - CHtiTextRcg(); - virtual ~CHtiTextRcg(); - - void SetHint(TInt aHint); - - TBool RecognizeTextL(CFbsBitmap* aScreenshot, - const TDesC& aText, - const CFont* aFont, - TRect& aResult); - - /** - * aResult will contain the coordinates of the found text - * Return 0 if match is perfect, 255 if text was not found - * return value from 0 to 255 means some error, the lower it is the better match - * - */ - //brute force optim - TInt RecognizeAAL(CFbsBitmap* aScreenshot,const TDesC& aText, const CFont* aFont, TRect& aResult); - //brute force clean optim - TInt RecognizeBinL(CFbsBitmap* aScreenshot,const TDesC& aText, const CFont* aFont, TRect& aResult); - - //static image processing routines - //convert image to 256-greyscale - static CFbsBitmap* ColorDownL(CFbsBitmap * aBitmap); - //generates bitmap of the text using the font given - - static CFbsBitmap* GetTextBitmapL( const TDesC& aText, - const CFont* fontUsed, - const TInt aLength = KMaxTInt ); - - static CFbsBitmap* GetTextBitmapL( const TDesC& aText, - const CFont* fontUsed, - TRgb aForeground, - TRgb aBackground, - TDisplayMode aDisplayMode, - const TInt aLength = KMaxTInt ); - - //calculates min max of a greyscale bitmap in question - static void MinMax(CFbsBitmap * aBitmap, TInt& aMin, TInt& aMax); - - /** - * use FGA and BGA to speed-up comparation - * this function only returns 255 or 0 - * Analyses only min and max colors - */ - TInt ImageDiffBinSampleL(CFbsBitmap * aBitmap1, TPoint aOrigin1, - CFbsBitmap * aBitmap2); - - /** - * Iterations like in Diff5 but metrics from Diff6 - * Used for full word checking if Diff6 is 0 for a letter - * this function only returns 255 or 0 - */ - TInt ImageDiffBinFullL(CFbsBitmap * aBitmap1, TPoint aOrigin1, - CFbsBitmap * aBitmap2); - - /** - * use FGA and BGA to speed-up comparation and AA pixels - */ - TInt ImageDiffAASampleL(CFbsBitmap * aBitmap1, TPoint aOrigin1, - CFbsBitmap * aBitmap2); - - /** - * Iterations like in Diff5 but metrics from Diff6/DiffAASample - * Used for full word checking if Diff6 is 0 for a letter - */ - TInt ImageDiffAAFullL(CFbsBitmap * aBitmap1, TPoint aOrigin1, - CFbsBitmap * aBitmap2); - - /* - * Analyze pattern and fills in FGA and BGA sets - * Return ETrue if pattern is valid (non empty) - */ - TBool AnalyzePatternL(CFbsBitmap * aPattern); - -private: - //algorithm parameters - //minimal abs avarage difference beetwen foreground and background - TInt iAvgDiffMin; - //minimal SS for foreground, with plain color should be 0 - TInt iFgSSMin; - /** - * minimal avg diff for foreground, used in Diff3 - */ - TInt iFgAvgDiffMin; - - //TInt64 iSeed; - - //following vars set by AnalyzePatternL - TInt iFGAAmount; - TInt iBGAAmount; - //foreground assesment point set - RArray iFGASet; - //background assesment point set - RArray iBGASet; - - //font color in reference image - TInt iMaskFgColor;// - //background color in reference image - TInt iMaskBgColor;// - - //used for AA algorithm - //set in Sample function and used in Full function - //for optimization - TInt iTestFgColor; - TInt iTestBgColor; - - // normalization coeff to compare test image with mask directly - // |iMaskFgColor-iMaskBgColor|*NormCoefAcc)/|iTestFgColor-iTestBgColor| - // where NormCoefAcc multiplyer is used to increase accuracy (all ints) - // and is implemented as shif by KNormCoefAcc bits - // back shift is performed after color is multiplied by iTestNormCoef - TInt iTestNormCoef; - - /** - * Current recognition method - * Changed by SetHint - */ - TInt iCurrentStrategy; -}; - -#endif //__HTI_TEXT_RCG_ - -// End of file