--- a/epoc32/include/mw/ocrcommon.h Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/mw/ocrcommon.h Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,361 @@
-ocrcommon.h
+/*
+* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: APIs of the OCR(Optical Character Recognition), current engine
+* can recognize 24 bit colored image and 8 bit gray scale image
+* in BMP format.
+*
+*
+*/
+
+
+#ifndef OCRCOMMON_H
+#define OCRCOMMON_H
+
+// INCLUDE FILES
+#include <e32std.h>
+#include <e32def.h>
+#include <e32base.h>
+
+/**
+* Bad image or unsupported format
+*/
+const TInt KErrOcrBadImage (-1001);
+
+/**
+* Unsupported language
+*/
+const TInt KErrOcrBadLanguage (-1002);
+
+/**
+* Bad layout region
+*/
+const TInt KErrOcrBadRegion (-1003);
+
+/**
+* Not set any language
+*/
+const TInt KErrOcrNotSetLanguage (-1004);
+
+/**
+* Not set any language packages
+*/
+const TInt KErrOcrBadDictFile (-1005);
+
+/** Type of the text layouts
+*/
+enum TOcrLayoutType
+ {
+ /** Texts in the block is horizontal
+ */
+ EOcrLayoutTypeH,
+
+ /** Texts in the block is vertical
+ */
+ EOcrLayoutTypeV
+ };
+
+/** Type of the text
+*/
+enum TOcrTextType
+ {
+ /** when the image or recognition area has multi-line format
+ */
+ EOcrTextMultiLine,
+
+ /** when the image or recognition area has single-line format
+ */
+ EOcrTextSingleLine
+ };
+
+/** Type of the text background
+*/
+enum TOcrBackgroundType
+ {
+ /** light character with light background
+ */
+ EOcrBackgroundLight,
+
+ /** dark character with dark background
+ */
+ EOcrBackgroundDark,
+
+ /** un-suspected background
+ */
+ EOcrBackgroundUnknown
+ };
+
+/**
+ * OCR (Optical Character Recognition) Text Line Information
+ *
+ * This class holds the information from the OCR engine after the recognition
+ * Note that all memory ownership belongs to the OCR engine, so do not need to
+ * either allocate memory for it or push it to the CleanupStack. Engine will
+ * release the memory whenever necessary
+ *
+ * @lib ocrsrv.lib
+ * @since S60 3.1
+ */
+class TOCRTextLineInfo
+ {
+public:
+
+ /**
+ * Text buffer for the line. Note that after layout analysis, this is NULL
+ * and the buffer will be filled after recognition (Not Own)
+ */
+ HBufC16* iText;
+
+ /**
+ * Region coordinate to be processed
+ */
+ TRect iRect;
+
+ /**
+ * Array of the character rects. (Not Own)
+ */
+ TRect* iCharRect;
+
+ /**
+ * Number of characters
+ */
+ TInt iCharCount;
+ };
+
+/**
+ * OCR (Optical Character Recognition) Text Line Information
+ *
+ * This class holds the information from the layout analysis, the engine
+ * will allocate the memory of TOCRBlockInfo array, and pass the ownership
+ * to you while you can remove it by delete[]
+ *
+ * @lib ocrsrv.lib
+ * @since S60 3.1
+ */
+class TOCRBlockInfo
+ {
+public:
+
+ /**
+ * Region coordinate to be processed
+ */
+ TRect iRect;
+
+ /**
+ * Layout Type (Horizontal or Vertical)
+ */
+ TOcrLayoutType iType;
+
+ /**
+ * Id of the block
+ */
+ TInt iBlockId;
+ };
+
+/**
+ * OCR (Optical Character Recognition) Text Block Information
+ *
+ * This class holds the information from the OCR engine after the recognition
+ * Note that all memory ownership belongs to the OCR engine, so do not need to
+ * either allocate memory for it or push it to the CleanupStack. Engine will
+ * release the memory whenever necessary
+ *
+ * @lib ocrsrv.lib
+ * @since S60 3.1
+ */
+class TOCRTextRgnInfo
+ {
+public:
+
+ /**
+ * Region coordinate to be processed
+ */
+ TRect iRect;
+
+ /**
+ * Layout Type (Horizontal or Vertical)
+ */
+ TOcrLayoutType iType;
+
+ /**
+ * Id of the block
+ */
+ TInt iBlockId;
+
+ /**
+ * Text line Information (Not Own)
+ */
+ TOCRTextLineInfo* iLines;
+
+ /**
+ * Number of Lines
+ */
+ TInt iLineCount;
+ };
+
+/**
+ * OCR (Optical Character Recognition) Setting for Layout Analysis
+ *
+ * The setting for layout analysis
+ *
+ * @lib ocrsrv.lib
+ * @since S60 3.1
+ */
+class TOCRLayoutSetting
+ {
+public:
+
+ /**
+ * Image brightness
+ */
+ enum TOcrBrightness
+ {
+ ENormal, ///< brightness is normal
+ ELight, ///< brightness is light
+ EDark ///< brightness is dark
+ };
+
+ /**
+ * Whether skew adjustment enabled, in most cases
+ * this flag shall be always on; But if images are in
+ * very good contition, this flag can be off to increase
+ * the recognition speed
+ */
+ TBool iSkew;
+
+ /**
+ * Brightness for text background
+ */
+ TOcrBrightness iBrightness;
+ };
+
+/**
+ * OCR (Optical Character Recognition) Setting for Recognize (Reserved)
+ *
+ * The setting for recognition
+ *
+ * @lib ocrsrv.lib
+ * @since S60 3.1
+ */
+class TOCRRecognizeSetting
+ {
+public:
+
+ /**
+ * Reserved for future use
+ */
+ TAny* iAny;
+ };
+
+/**
+ * OCR (Optical Character Recognition) Block Information for Recognizing Blocks
+ *
+ * This class is for recognizing blocks. @see MOCREngineRecognizeBlock::RecognizeBlockL
+ *
+ * @lib ocrsrv.lib
+ * @since S60 3.1
+ */
+class TOCRLayoutBlockInfo
+ {
+public:
+
+ /**
+ * Region coordinate to be processed
+ */
+ TRect iRect;
+
+ /**
+ * Layout Type (Horizontal or Vertical)
+ */
+ TOcrLayoutType iLayout;
+
+ /**
+ * Text Type (Multi or Single line)
+ */
+ TOcrTextType iText;
+
+ /**
+ * Brightness for text background
+ */
+ TOcrBackgroundType iBackgroundColor;
+ };
+
+/**
+ * OCR (Optical Character Recognition) Block Information for Recognizing Blocks
+ *
+ * This class is for recognizing blocks. @see MOCREngineRecognizeBlock::RecognizeSpecialRegionL
+ *
+ * @lib ocrsrv.lib
+ * @since S60 3.1
+ */
+class TRegionInfo
+ {
+public:
+
+ /**
+ * Content Type
+ */
+ enum TOcrRegionType
+ {
+ EEmailAddress, ///< E-mail address
+ ETelephoneNumber, ///< telephone number
+ EWWWAddress ///< website address
+ };
+
+public:
+ /**
+ * Region coordinate to be processed
+ */
+ TRect iRect;
+
+ /**
+ * Brightness for text background
+ */
+ TOcrBackgroundType iBackgroundColor;
+
+ /**
+ * Content Type
+ */
+ TOcrRegionType iType;
+ };
+
+/**
+ * OCR (Optical Character Recognition) Engine Environment Settings
+ *
+ * This class is for setting the thread priority and the maximum heap
+ * allocation for the ocr engine
+ *
+ * @lib ocrsrv.lib
+ * @since S60 3.1
+ */
+class TOcrEngineEnv
+ {
+public:
+ /**
+ * Thread priority. The Engine Factory will create a child thread
+ * for the OCR process, EPriorityLess is recommended for most cases
+ */
+ TThreadPriority iPriority;
+
+ /**
+ * The maximum heap size for the OCR process, must be larger than
+ * KMinHeapGrowBy x 1200 to do recognition for 1600x1200 images. If
+ * this value is lower(equal) than KMinHeapGrowBy*1000, a leave will
+ * happen in CreateOCREngineL with KErrArgument
+ */
+ TInt iMaxHeapSize;
+ };
+
+#endif // OCRCOMMON_H
+
+// End of file