1206 lines
52 KiB
C++
1206 lines
52 KiB
C++
/***************************************************************************/
|
|
/*
|
|
|
|
Filename: MILOCR.H
|
|
Owner : Matrox Imaging
|
|
Revision: 10.60.0776
|
|
Content : This file contains the prototypes and #defines for the Matrox
|
|
Imaging Library (MIL) C OCR module user's functions.
|
|
|
|
Copyright © Matrox Electronic Systems Ltd., 1992-2023.
|
|
All Rights Reserved
|
|
|
|
*/
|
|
/***************************************************************************/
|
|
|
|
#ifndef __MILOCR_H__
|
|
#define __MILOCR_H__
|
|
|
|
#if (!M_MIL_LITE) // MIL FULL ONLY
|
|
|
|
/* Prototypes */
|
|
/* C++ directive if needed */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
|
|
typedef MIL_INT (MFTYPE *MIL_OCR_HOOK_FUNCTION_PTR)( MIL_INT HookType,
|
|
char *String,
|
|
void *FExpansionFlagPtr);
|
|
|
|
MIL_ID MFTYPE MocrAllocFont( MIL_ID SysId,
|
|
MIL_INT64 FontType,
|
|
MIL_INT CharNumber,
|
|
MIL_INT CharCellSizeX,
|
|
MIL_INT CharCellSizeY,
|
|
MIL_INT CharOffsetX,
|
|
MIL_INT CharOffsetY,
|
|
MIL_INT CharSizeX,
|
|
MIL_INT CharSizeY,
|
|
MIL_INT CharThickness,
|
|
MIL_INT StringLength,
|
|
MIL_INT64 InitFlag,
|
|
MIL_ID* FontContextOcrIdPtr);
|
|
|
|
MIL_ID MFTYPE MocrAllocResult( MIL_ID SysId,
|
|
MIL_INT64 InitFlag,
|
|
MIL_ID* ResultOcrIdPtr);
|
|
|
|
void MFTYPE MocrFree( MIL_ID FontContextOrResultOcrId);
|
|
|
|
void MFTYPE MocrGetResult( MIL_ID ResultOcrId,
|
|
MIL_INT64 ResultType,
|
|
void *ResultPtr);
|
|
|
|
MIL_INT MFTYPE MocrInquire( MIL_ID FontContextOrResultOcrId,
|
|
MIL_INT64 InquireType,
|
|
void *UserVarPtr);
|
|
|
|
void MFTYPE MocrReadString( MIL_ID ImageBufId,
|
|
MIL_ID FontContextOcrId,
|
|
MIL_ID OcrResultId);
|
|
|
|
void MFTYPE MocrModifyFont( MIL_ID FontContextOcrId,
|
|
MIL_INT64 Operation,
|
|
MIL_INT64 OperationFlag);
|
|
|
|
#if M_MIL_USE_64BIT
|
|
// Prototypes for 64 bits OSs
|
|
void MFTYPE MocrControlInt64 (MIL_ID FontContextOrResultOcrId,
|
|
MIL_INT64 ControlType,
|
|
MIL_INT64 ControlValue);
|
|
|
|
void MFTYPE MocrControlDouble(MIL_ID FontContextOrResultOcrId,
|
|
MIL_INT64 ControlType,
|
|
MIL_DOUBLE ControlValue);
|
|
|
|
#else
|
|
// Prototypes for 32 bits OSs
|
|
#define MocrControlInt64 MocrControl
|
|
#define MocrControlDouble MocrControl
|
|
|
|
void MFTYPE MocrControl( MIL_ID FontContextOrResultOcrId,
|
|
MIL_INT64 ControlType,
|
|
MIL_DOUBLE ControlValue);
|
|
#endif
|
|
|
|
void MFTYPE MocrLineControl( MIL_ID FontId,
|
|
MIL_INT LineIndex,
|
|
MIL_INT64 ControlToSet,
|
|
double Value);
|
|
|
|
|
|
MIL_OCR_HOOK_FUNCTION_PTR MFTYPE MocrHookFunction( MIL_ID FontContextOcrId,
|
|
MIL_INT HookType,
|
|
MIL_OCR_HOOK_FUNCTION_PTR HookHandlerPtr,
|
|
void *UserDataPtr);
|
|
|
|
MIL_INT MFTYPE OcrSemiM1292CheckValid(MIL_INT HookType,
|
|
char *String,
|
|
void *FExpansionFlagPtr);
|
|
MIL_INT MFTYPE OcrSemiM1388CheckValid(MIL_INT HookType,
|
|
char *String,
|
|
void *FExpansionFlagPtr);
|
|
MIL_INT MFTYPE OcrSemiCheckValid( MIL_INT HookType,
|
|
char *String,
|
|
void *FExpansionFlagPtr);
|
|
MIL_INT MFTYPE OcrDefaultCheckValid(MIL_INT HookType,
|
|
char *String,
|
|
void *FExpansionFlagPtr);
|
|
|
|
MIL_ID MFTYPE MocrAutoAllocFont( MIL_ID SysId,
|
|
MIL_ID ImageId,
|
|
MIL_INT CharNumber,
|
|
MIL_INT StringLength,
|
|
MIL_INT64 InitFlag,
|
|
MIL_ID *FontIdPtr);
|
|
|
|
void MFTYPE MocrPreprocess(MIL_ID FontContextOcrId, MIL_INT64 ControlFlag);
|
|
|
|
#if M_MIL_USE_UNICODE
|
|
|
|
void MFTYPE MocrCalibrateFontW(MIL_ID ImageBufId,
|
|
MIL_ID FontContextOcrId,
|
|
MIL_CONST_TEXTW_PTR String,
|
|
MIL_DOUBLE TargetCharSizeXMin,
|
|
MIL_DOUBLE TargetCharSizeXMax,
|
|
MIL_DOUBLE TargetCharSizeXStep,
|
|
MIL_DOUBLE TargetCharSizeYMin,
|
|
MIL_DOUBLE TargetCharSizeYMax,
|
|
MIL_DOUBLE TargetCharSizeYStep,
|
|
MIL_INT64 Operation);
|
|
|
|
void MFTYPE MocrCopyFontW(MIL_ID ImageBufId,
|
|
MIL_ID FontContextOcrId,
|
|
MIL_INT64 Operation,
|
|
MIL_CONST_TEXTW_PTR CharListString);
|
|
|
|
void MFTYPE MocrImportFontW(MIL_CONST_TEXTW_PTR FileName,
|
|
MIL_INT64 FileFormat,
|
|
MIL_INT64 Operation,
|
|
MIL_CONST_TEXTW_PTR CharListString,
|
|
MIL_ID FontContextOcrId);
|
|
|
|
MIL_ID MFTYPE MocrRestoreFontW(MIL_CONST_TEXTW_PTR FileName,
|
|
MIL_INT64 Operation,
|
|
MIL_ID SysId,
|
|
MIL_ID *FontContextOcrIdPtr);
|
|
|
|
void MFTYPE MocrSaveFontW(MIL_CONST_TEXTW_PTR FileName,
|
|
MIL_INT64 Operation,
|
|
MIL_ID FontContextOcrId);
|
|
|
|
void MFTYPE MocrSetConstraintW(MIL_ID FontContextOcrId,
|
|
MIL_INT CharPos,
|
|
MIL_INT64 CharPosType,
|
|
MIL_CONST_TEXTW_PTR CharValidString);
|
|
|
|
void MFTYPE MocrLineSetConstraintW(MIL_ID FontId,
|
|
MIL_INT LineIndex,
|
|
MIL_INT CharPos,
|
|
MIL_INT64 CharPosType,
|
|
MIL_CONST_TEXTW_PTR CharValid);
|
|
|
|
void MFTYPE MocrStreamW(MIL_TEXTW_PTR MemPtrOrFileName ,
|
|
MIL_ID SysId ,
|
|
MIL_INT64 Operation ,
|
|
MIL_INT64 StreamType ,
|
|
MIL_DOUBLE Version ,
|
|
MIL_INT64 ControlFlag ,
|
|
MIL_ID *FontContextOcrIdPtr,
|
|
MIL_INT *SizeByteVarPtr );
|
|
|
|
void MFTYPE MocrVerifyStringW(MIL_ID ImageBufId,
|
|
MIL_ID FontContextOcrId,
|
|
MIL_CONST_TEXTW_PTR String,
|
|
MIL_ID OcrResultId);
|
|
|
|
MIL_INT64 MFTYPE MocrValidateStringW(MIL_ID FontId,
|
|
MIL_INT64 Mode,
|
|
MIL_CONST_TEXTW_PTR String);
|
|
|
|
void MFTYPE MocrDrawW(MIL_ID ContextGraId,
|
|
MIL_ID FontContextOrResultOcrId,
|
|
MIL_ID DstImageBufOrListGraId,
|
|
MIL_INT64 Operation,
|
|
MIL_INT Index,
|
|
MIL_CONST_TEXTW_PTR CharList,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
void MFTYPE MocrCalibrateFontA(MIL_ID ImageBufId,
|
|
MIL_ID FontContextOcrId,
|
|
MIL_CONST_TEXTA_PTR String,
|
|
MIL_DOUBLE TargetCharSizeXMin,
|
|
MIL_DOUBLE TargetCharSizeXMax,
|
|
MIL_DOUBLE TargetCharSizeXStep,
|
|
MIL_DOUBLE TargetCharSizeYMin,
|
|
MIL_DOUBLE TargetCharSizeYMax,
|
|
MIL_DOUBLE TargetCharSizeYStep,
|
|
MIL_INT64 Operation);
|
|
|
|
void MFTYPE MocrCopyFontA(MIL_ID ImageBufId,
|
|
MIL_ID FontContextOcrId,
|
|
MIL_INT64 Operation,
|
|
MIL_CONST_TEXTA_PTR CharListString);
|
|
|
|
void MFTYPE MocrImportFontA(MIL_CONST_TEXTA_PTR FileName,
|
|
MIL_INT64 FileFormat,
|
|
MIL_INT64 Operation,
|
|
MIL_CONST_TEXTA_PTR CharListString,
|
|
MIL_ID FontContextOcrId);
|
|
|
|
MIL_ID MFTYPE MocrRestoreFontA(MIL_CONST_TEXTA_PTR FileName,
|
|
MIL_INT64 Operation,
|
|
MIL_ID SysId,
|
|
MIL_ID *FontContextOcrIdPtr);
|
|
|
|
void MFTYPE MocrSaveFontA(MIL_CONST_TEXTA_PTR FileName,
|
|
MIL_INT64 Operation,
|
|
MIL_ID FontContextOcrId);
|
|
|
|
void MFTYPE MocrSetConstraintA(MIL_ID FontContextOcrId,
|
|
MIL_INT CharPos,
|
|
MIL_INT64 CharPosType,
|
|
MIL_CONST_TEXTA_PTR CharValidString);
|
|
|
|
void MFTYPE MocrLineSetConstraintA(MIL_ID FontId,
|
|
MIL_INT LineIndex,
|
|
MIL_INT CharPos,
|
|
MIL_INT64 CharPosType,
|
|
MIL_CONST_TEXTA_PTR CharValid);
|
|
|
|
void MFTYPE MocrStreamA(MIL_TEXTA_PTR MemPtrOrFileName ,
|
|
MIL_ID SysId ,
|
|
MIL_INT64 Operation ,
|
|
MIL_INT64 StreamType ,
|
|
MIL_DOUBLE Version ,
|
|
MIL_INT64 ControlFlag ,
|
|
MIL_ID *FontContextOcrIdPtr,
|
|
MIL_INT *SizeByteVarPtr );
|
|
|
|
void MFTYPE MocrVerifyStringA(MIL_ID ImageBufId,
|
|
MIL_ID FontContextOcrId,
|
|
MIL_CONST_TEXTA_PTR String,
|
|
MIL_ID OcrResultId);
|
|
|
|
MIL_INT64 MFTYPE MocrValidateStringA(MIL_ID FontId,
|
|
MIL_INT64 Mode,
|
|
MIL_CONST_TEXTA_PTR String);
|
|
|
|
void MFTYPE MocrDrawA(MIL_ID ContextGraId,
|
|
MIL_ID FontContextOrResultOcrId,
|
|
MIL_ID DstImageBufOrListGraId,
|
|
MIL_INT64 Operation,
|
|
MIL_INT Index,
|
|
MIL_CONST_TEXTA_PTR CharList,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
#if M_MIL_UNICODE_API
|
|
|
|
#define MocrCalibrateFont MocrCalibrateFontW
|
|
#define MocrCopyFont MocrCopyFontW
|
|
#define MocrImportFont MocrImportFontW
|
|
#define MocrSaveFont MocrSaveFontW
|
|
#define MocrSetConstraint MocrSetConstraintW
|
|
#define MocrLineSetConstraint MocrLineSetConstraintW
|
|
#define MocrRestoreFont MocrRestoreFontW
|
|
#define MocrStream MocrStreamW
|
|
#define MocrValidateString MocrValidateStringW
|
|
#define MocrVerifyString MocrVerifyStringW
|
|
#define MocrDraw MocrDrawW
|
|
|
|
#else
|
|
|
|
#define MocrCalibrateFont MocrCalibrateFontA
|
|
#define MocrCopyFont MocrCopyFontA
|
|
#define MocrImportFont MocrImportFontA
|
|
#define MocrSaveFont MocrSaveFontA
|
|
#define MocrSetConstraint MocrSetConstraintA
|
|
#define MocrLineSetConstraint MocrLineSetConstraintA
|
|
#define MocrRestoreFont MocrRestoreFontA
|
|
#define MocrStream MocrStreamA
|
|
#define MocrValidateString MocrValidateStringA
|
|
#define MocrVerifyString MocrVerifyStringA
|
|
#define MocrDraw MocrDrawA
|
|
|
|
#endif
|
|
|
|
#else
|
|
|
|
void MFTYPE MocrCalibrateFont(MIL_ID ImageBufId,
|
|
MIL_ID FontContextOcrId,
|
|
MIL_CONST_TEXT_PTR String,
|
|
MIL_DOUBLE TargetCharSizeXMin,
|
|
MIL_DOUBLE TargetCharSizeXMax,
|
|
MIL_DOUBLE TargetCharSizeXStep,
|
|
MIL_DOUBLE TargetCharSizeYMin,
|
|
MIL_DOUBLE TargetCharSizeYMax,
|
|
MIL_DOUBLE TargetCharSizeYStep,
|
|
MIL_INT64 Operation);
|
|
|
|
void MFTYPE MocrCopyFont(MIL_ID ImageBufId,
|
|
MIL_ID FontContextOcrId,
|
|
MIL_INT64 Operation,
|
|
MIL_CONST_TEXT_PTR CharListString);
|
|
|
|
void MFTYPE MocrImportFont(MIL_CONST_TEXT_PTR FileName,
|
|
MIL_INT64 FileFormat,
|
|
MIL_INT64 Operation,
|
|
MIL_CONST_TEXT_PTR CharListString,
|
|
MIL_ID FontContextOcrId);
|
|
|
|
MIL_ID MFTYPE MocrRestoreFont(MIL_CONST_TEXT_PTR FileName,
|
|
MIL_INT64 Operation,
|
|
MIL_ID SysId,
|
|
MIL_ID *FontContextOcrIdPtr);
|
|
|
|
void MFTYPE MocrSaveFont(MIL_CONST_TEXT_PTR FileName,
|
|
MIL_INT64 Operation,
|
|
MIL_ID FontContextOcrId);
|
|
|
|
void MFTYPE MocrSetConstraint(MIL_ID FontContextOcrId,
|
|
MIL_INT CharPos,
|
|
MIL_INT64 CharPosType,
|
|
MIL_CONST_TEXT_PTR CharValidString);
|
|
|
|
void MFTYPE MocrLineSetConstraint(MIL_ID FontId,
|
|
MIL_INT LineIndex,
|
|
MIL_INT CharPos,
|
|
MIL_INT64 CharPosType,
|
|
MIL_CONST_TEXT_PTR CharValid);
|
|
|
|
void MFTYPE MocrStream(MIL_TEXT_PTR MemPtrOrFileName ,
|
|
MIL_ID SysId ,
|
|
MIL_INT64 Operation ,
|
|
MIL_INT64 StreamType ,
|
|
MIL_DOUBLE Version ,
|
|
MIL_INT64 ControlFlag ,
|
|
MIL_ID *FontContextOcrIdPtr,
|
|
MIL_INT *SizeByteVarPtr );
|
|
|
|
void MFTYPE MocrVerifyString( MIL_ID ImageBufId,
|
|
MIL_ID FontContextOcrId,
|
|
MIL_CONST_TEXT_PTR String,
|
|
MIL_ID OcrResultId);
|
|
|
|
MIL_INT64 MFTYPE MocrValidateString(MIL_ID FontId,
|
|
MIL_INT64 Mode,
|
|
MIL_CONST_TEXT_PTR String);
|
|
|
|
void MFTYPE MocrDraw(MIL_ID ContextGraId,
|
|
MIL_ID FontContextOrResultOcrId,
|
|
MIL_ID DstImageBufOrListGraId,
|
|
MIL_INT64 Operation,
|
|
MIL_INT Index,
|
|
MIL_CONST_TEXT_PTR CharList,
|
|
MIL_INT64 ControlFlag);
|
|
#endif
|
|
|
|
/* C++ directive if needed */
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
|
|
inline void MFTYPE MocrStreamCpp(MilStreamParam MemPtrOrFileName,
|
|
MIL_ID SysId,
|
|
MIL_INT64 Operation,
|
|
MIL_INT64 StreamType,
|
|
MIL_DOUBLE Version,
|
|
MIL_INT64 ControlFlag,
|
|
MIL_ID* FontContextOcrIdPtr,
|
|
MIL_INT* SizeByteVarPtr)
|
|
{
|
|
MocrStream(MemPtrOrFileName.m_Param, SysId, Operation, StreamType, Version, ControlFlag, FontContextOcrIdPtr, SizeByteVarPtr);
|
|
}
|
|
|
|
#undef MocrStream
|
|
#define MocrStream MocrStreamCpp
|
|
|
|
#endif // __cplusplus
|
|
|
|
// OCR control defaults
|
|
#define M_DEF_STRING_LOC_MAX_NB_ITER 2L
|
|
#define M_DEF_STRING_LOC_STOP_ITER 0.50
|
|
#define M_DEF_STRING_LOC_GOOD_NB_CHAR 4L
|
|
#define M_DEF_STRING_READ_BAD_SIZE_X 0.40
|
|
#define M_DEF_STRING_READ_BAD_SIZE_Y 0.40
|
|
#define M_DEF_STRING_READ_GOOD_SIZE_X 0.25
|
|
#define M_DEF_STRING_READ_GOOD_SIZE_Y 0.25
|
|
#define M_DEF_STRING_READ_BAD_ADD_CHAR 4L
|
|
#define M_DEF_STRING_LOC_MIN_CHAR_SIZE 0.66
|
|
#define M_DEF_STRING_LOC_MAX_CHAR_SIZE 1.50
|
|
#define M_DEF_STRING_LOC_MIN_CHAR_SPACE 0.66
|
|
#define M_DEF_STRING_LOC_MAX_CHAR_DISTANCE 0.50
|
|
#define M_DEF_STRING_LOC_GOOD_CHAR_SIZE 0.90
|
|
#define M_DEF_STRING_MAX_SLOPE 0.1763269
|
|
#define M_DEF_STRING_READ_SIZE_X 0.33
|
|
#define M_DEF_STRING_READ_SIZE_Y 0.25
|
|
#define M_DEF_SKIP_SEARCH M_DISABLE
|
|
#define M_DEF_SKIP_STRING_LOCATION M_DISABLE
|
|
#define M_DEF_SKIP_CONTRAST_ENHANCE M_DISABLE
|
|
#define M_DEF_STRING_ACCEPTANCE 1.00
|
|
#define M_DEF_CHAR_ACCEPTANCE 1.00
|
|
#define M_DEF_CHAR_INVALID 0
|
|
#define M_DEF_DEBUG 0
|
|
#define M_DEF_ENHANCE_MORPHO 2L
|
|
#define M_DEF_KILL_BORDER M_ENABLE
|
|
#define M_DEF_READ_SPEED M_MEDIUM
|
|
#define M_DEF_READ_ACCURACY M_MEDIUM
|
|
#define M_DEF_READ_FIRST_LEVEL M_DEFAULT
|
|
#define M_DEF_READ_LAST_LEVEL M_DEFAULT
|
|
#define M_DEF_READ_MODEL_STEP M_DEFAULT
|
|
#define M_DEF_READ_FAST_FIND M_DEFAULT
|
|
#define M_DEF_READ_ROBUSTNESS M_MEDIUM
|
|
#define M_DEF_STRING_LOC_NB_MODELS 2L
|
|
#define M_DEF_PAT_ON_ACCELERATED M_DISABLE
|
|
#define M_DEF_BLOB_ON_ACCELERATED M_DISABLE
|
|
#define M_DEF_PROC_ON_ACCELERATED M_ENABLE
|
|
#define M_DEF_ENHANCE_DOT_CHARS 0L //default 0 disabled
|
|
#define M_DEF_ADD_SEARCH_AREA_X 0.0
|
|
#define M_DEF_ADD_SEARCH_AREA_Y 0.0
|
|
#define M_DEF_EXTRA_CHARACTERS M_DISABLE
|
|
|
|
// Control associated InfoType defines
|
|
#define M_STRING_LOC_CHAR_SIZE_X 1L
|
|
#define M_STRING_LOC_CHAR_SIZE_Y 2L
|
|
#define M_STRING_LOC_MAX_NB_ITER 3L
|
|
#define M_FOREGROUND_VALUE 4L
|
|
#define M_STRING_LOC_STOP_ITER 5L
|
|
#define M_STRING_LOC_GOOD_NB_CHAR 6L
|
|
#define M_STRING_READ_BAD_SIZE_X 7L
|
|
#define M_SPEED 8L // Already define in milpat.h
|
|
#define M_STRING_READ_GOOD_SIZE_X 9L
|
|
#define M_STRING_READ_GOOD_SIZE_Y 10L
|
|
#define M_STRING_READ_BAD_ADD_CHAR 11L
|
|
#define M_STRING_LOC_MIN_CHAR_SIZE 12L
|
|
#define M_STRING_LOC_MAX_CHAR_SIZE 13L
|
|
#define M_STRING_LOC_MIN_CHAR_SPACE 64L
|
|
#define M_STRING_LOC_MAX_CHAR_DISTANCE 15L
|
|
#define M_STRING_LOC_GOOD_CHAR_SIZE 16L
|
|
#define M_STRING_MAX_SLOPE 17L
|
|
#define M_STRING_READ_SIZE_X 18L
|
|
#define M_STRING_READ_SIZE_Y 19L
|
|
#define M_SKIP_SEARCH 21L
|
|
#define M_SKIP_STRING_LOCATION 22L
|
|
#define M_SKIP_CONTRAST_ENHANCE 23L
|
|
#define M_SKIP_DEFAULT_CONTRAST_ENHANCE 23L
|
|
#define M_STRING_ACCEPTANCE 24L
|
|
#define M_CHAR_ACCEPTANCE 25L
|
|
#define M_CHAR_INVALID 26L
|
|
#define M_TARGET_CHAR_SIZE_X 27L
|
|
#define M_TARGET_CHAR_SIZE_Y 28L
|
|
#define M_TARGET_CHAR_SPACING 29L
|
|
#define M_DEBUG 30L
|
|
#define M_FONT_TYPE 31L
|
|
#define M_CHAR_NUMBER 32L
|
|
#define M_CHAR_BOX_SIZE_X 33L
|
|
#define M_CHAR_CELL_SIZE_X 33L
|
|
#define M_CHAR_BOX_SIZE_Y 34L
|
|
#define M_CHAR_CELL_SIZE_Y 34L
|
|
#define M_CHAR_OFFSET_X 35L
|
|
#define M_CHAR_OFFSET_Y 36L
|
|
#define M_CHAR_SIZE_X 37L
|
|
#define M_CHAR_SIZE_Y 38L
|
|
#define M_CHAR_THICKNESS 39L
|
|
#define M_STRING_SIZE MAKE_INT64(0x0000050000000000)
|
|
#define M_STRING_LENGTH M_STRING_SIZE // Bitwise-Combined with M_ESCAPE_SEQUENCE in Milcode
|
|
#define M_STRING_CHAR_NUMBER 2277L // Also defined in mildmr.h and milstr.h
|
|
|
|
#define M_FONT_INIT_FLAG 41L
|
|
#define M_CHAR_IN_FONT (42L | M_CLIENT_ENCODING)
|
|
#define M_KILL_BORDER 44L
|
|
#define M_CHAR_ERASE 45L
|
|
#define M_MODEL_LIST 46L
|
|
#define M_CHAR_NUMBER_IN_FONT 47L
|
|
#define M_STRING_VALIDATION 48L
|
|
#define M_STRING_VALIDATION_HANDLER_PTR M_STRING_VALIDATION
|
|
#define M_STRING_VALIDATION_HANDLER_USER_PTR 49L
|
|
#define M_READ_SPEED 50L
|
|
#define M_READ_ACCURACY 51L
|
|
#define M_READ_FIRST_LEVEL 52L
|
|
#define M_READ_LAST_LEVEL 53L
|
|
#define M_READ_FAST_FIND 55L
|
|
#define M_READ_ROBUSTNESS 56L
|
|
#define M_STRING_LOC_NB_MODELS 57L
|
|
#define M_READ_MODEL_STEP 58L
|
|
#define M_PAT_ON_ACCELERATED 59L
|
|
#define M_BLOB_ON_ACCELERATED 60L
|
|
#define M_PROC_ON_ACCELERATED 61L
|
|
#define M_STRING_LENGTH_MAX M_STRING_SIZE_MAX
|
|
#define M_STRING_SIZE_MAX 62L
|
|
#define M_STRING_READ_BAD_SIZE_Y 63L
|
|
//64 to 72 reserved
|
|
#define M_BLANK_CHARACTERS 73L
|
|
#define M_NBR_OF_LINES 74L
|
|
#define M_AUTO 444L
|
|
#define M_OCR_THRESHOLD 82
|
|
#define M_THRESHOLD 82
|
|
#define M_ENHANCE_MORPHO 43L
|
|
#define M_MORPHOLOGIC_FILTERING 43L
|
|
#define M_MORPHOLOGIC_ENHANCEMENT 43L
|
|
#define M_ENHANCE_DOT_CHARS 84L
|
|
#define M_ENLARGE_CHAR_THICKNESS 84L
|
|
#define M_THICKEN_CHAR 84L
|
|
#define M_NBR_OF_LINES_READ M_STRING_NUMBER
|
|
#define M_NB_STRING M_STRING_NUMBER
|
|
#define M_STRING_NUMBER 74L
|
|
#define M_NBR_OF_LINES_FOUND M_STRING_NUMBER_FOUND
|
|
#define M_NB_STRING_FOUND M_STRING_NUMBER_FOUND
|
|
#define M_STRING_NUMBER_FOUND 86L
|
|
#define M_STRING_ANGLE 87L
|
|
#define M_SKEW_INTERPOLATION_MODE 88L
|
|
#define M_STRING_ANGLE_INTERPOLATION_MODE 88L
|
|
#define M_CHAR_POSITION_VARIATION_X 91L
|
|
#define M_ADD_SEARCH_AREA_X M_CHAR_POSITION_VARIATION_X // obsolete
|
|
#define M_CHAR_POSITION_TOLERANCE_X M_CHAR_POSITION_VARIATION_X // obsolete
|
|
#define M_TARGET_CHAR_POSITION_VARIATION_X M_CHAR_POSITION_VARIATION_X // obsolete
|
|
#define M_CHAR_POSITION_VARIATION_Y 92L
|
|
#define M_ADD_SEARCH_AREA_Y M_CHAR_POSITION_VARIATION_Y // obsolete
|
|
#define M_CHAR_POSITION_TOLERANCE_Y M_CHAR_POSITION_VARIATION_Y // obsolete
|
|
#define M_TARGET_CHAR_POSITION_VARIATION_Y M_CHAR_POSITION_VARIATION_Y // obsolete
|
|
#define M_READ_CERTAINTY 98L
|
|
#define M_TARGET_CHAR_SIZE_X_MIN 99L
|
|
#define M_TARGET_CHAR_SIZE_X_MAX 100L
|
|
#define M_TARGET_CHAR_SIZE_Y_MIN 101L
|
|
#define M_TARGET_CHAR_SIZE_Y_MAX 102L
|
|
#define M_CONTEXT 0x08000000L //already defined in Milmod.h
|
|
#define M_METHOD 103L //To be used instead of M_CONTEXT for 7.5
|
|
#define M_READ_BROKEN_CHAR 104L
|
|
#define M_BROKEN_CHAR 104L
|
|
#define M_READ_TOUCHING_CHAR 105L
|
|
#define M_TOUCHING_CHAR 105L
|
|
#define M_STRING_ANGLE_DELTA_NEG 106L
|
|
#define M_STRING_ANGLE_DELTA_POS 107L
|
|
#define M_LINE_CHAR_SEPARATOR 109L
|
|
#define M_TEXT_STRING_SEPARATOR 109L
|
|
#define M_CHAR_NORMAL_SIZE_X 110L
|
|
#define M_CHAR_NORMAL_SIZE_Y 111L
|
|
#define M_CERTAINTY 202L //already defined in Milmod.h
|
|
#define M_CONTEXT_CONVERT 535L
|
|
#define M_METHOD_CONVERT M_CONTEXT_CONVERT
|
|
#define M_METHOD_CONVERT_OLD 108L
|
|
|
|
#define M_STRING_ANGLE_SPEED 112L
|
|
#define M_STRING_ANGLE_SCORE 113L
|
|
#define M_TIMEOUT 2077L // already define in mil.h
|
|
#define M_STRING_ANGLE_SMOOTHNESS 114L //
|
|
#define M_RESULT_OUTPUT_UNITS 1300L // Also in milim.h
|
|
|
|
#define M_EXTRA_CHARACTERS 115L
|
|
|
|
#define M_CONSTRAINED 0x40000000L //method
|
|
#define M_GENERAL 0x20000000L //method
|
|
#define M_FLEXIBLE 0x20000000L //method
|
|
#define M_FUTUR_METHODE1 3L
|
|
#define M_FUTUR_METHODE2 4L
|
|
|
|
#define M_ANY 0x11000000L
|
|
#define M_SAME -1L
|
|
|
|
#define M_OCR_PREPROCESSED 14L
|
|
#define M_PREPROCESSED 14L // Already defined in MilPat.h
|
|
|
|
#define M_CONSTRAINT (0x04000000L | M_CLIENT_ENCODING)
|
|
|
|
#define M_CONSTRAINT_TYPE 0x00008000L
|
|
#define M_CONSTRAINT_TYPE_OLD 0x8000000L
|
|
|
|
#define M_PRINT_ENABLE 1L
|
|
#define M_DISPLAY_ENABLE 2L
|
|
#define M_BENCHMARK_ENABLE 4L
|
|
|
|
// #MIL_INTr#
|
|
#define M_DSAVE_IMGS 0x0001000L
|
|
#define M_DSAVE_INFO 0x0002000L
|
|
#define M_DFSAS_READ 0x0003000L
|
|
#define M_DOCR_CALIB 0x0004000L
|
|
#define M_DSKEW 0x0005000L
|
|
#define M_DMULTIPLE_LINES 0x0006000L
|
|
#define M_DCHAR_SEG 0x0007000L
|
|
#define M_DMATCH 0x0008000L
|
|
#define M_DDRAW_EDGE_MODEL 0x0009000L
|
|
|
|
// MocrControl result mode
|
|
#define M_SELECT_LINE 0x100L
|
|
#define M_SELECT_STRING M_SELECT_LINE
|
|
|
|
// MocrControl (M_SKIP_STRING_LOCATION possible values)
|
|
#define M_STRING_LOCATION_BLOB_ONLY 2L
|
|
#define M_STRING_LOCATION_SEARCH_ONLY 3L
|
|
#define M_STRING_LOCATION_BLOB_THAN_SEARCH 4L
|
|
#define M_STRING_LOCATION_SEARCH_THAN_BLOB 5L
|
|
|
|
// Parameters for output units
|
|
#define M_PIXEL 0x1000L
|
|
#define M_WORLD 0x2000L
|
|
#define M_ACCORDING_TO_CALIBRATION 1301L
|
|
|
|
// Value for M_STRING_ANGLE
|
|
#define M_ACCORDING_TO_REGION 0x40000000L
|
|
|
|
// MocrAllocFont()
|
|
#define M_DEFAULT 0x10000000L //M_USER_DEFINED+M_CONSTRAINED
|
|
#define M_SEMI_M12_92 0x1L
|
|
#define M_SEMI_M13_88 0x2L
|
|
#define M_SEMI 0x3L
|
|
#define M_USER_DEFINED 21L //already defined in Mil.h
|
|
#define M_FOREGROUND_WHITE 0x80L
|
|
#define M_FOREGROUND_BLACK 0x100L
|
|
#define M_CONSTRAINED 0x40000000L //method
|
|
#define M_GENERAL 0x20000000L //method
|
|
#define M_FLEXIBLE 0x20000000L //method
|
|
|
|
|
|
// MocrCalibrateFont()
|
|
#define M_DEFAULT 0x10000000L
|
|
#define M_FAST 0x00002000L
|
|
|
|
// MocrImportFont(), MocrRestoreFont(), MocrSaveFont()
|
|
#define M_RESTORE 0x10L
|
|
|
|
#define M_LOAD 1L
|
|
#define M_LOAD_CONSTRAINT 0x2L
|
|
#define M_LOAD_CONTROL 0x4L
|
|
#define M_LOAD_CHARACTER 0x8L
|
|
#define M_SAVE 0x100L
|
|
#define M_SAVE_CONSTRAINT 0x200L
|
|
#define M_SAVE_CONTROL 0x400L
|
|
#define M_SAVE_CHARACTER 0x800L
|
|
#define M_REPLACE 0x01000060L
|
|
//#define M_MIL 1L
|
|
#define M_MIL_TIFF 1L
|
|
#define M_RAW 2L
|
|
#define M_TIFF_LEGACY 4L
|
|
#define M_TIFF 0x1000L
|
|
#define M_FONT_MIL 0x00008000L
|
|
#define M_FONT_ASCII 0x00004000L
|
|
#define M_MIL_EXTENSIONS MIL_TEXT("*.mim") // Already defined in Mil.h
|
|
#define M_TIFF_EXTENSIONS MIL_TEXT("*.tif;*.tiff") // Already defined in Mil.h
|
|
#define M_INTERACTIVE M_NULL // Already defined in mil.h, milcal.h, milcode.h, miledge.h, milmeas.h, milpat.h, milmod.h
|
|
|
|
|
|
// MocrGetResult()
|
|
#define M_STRING_VALID_FLAG 1L
|
|
#define M_STRING_SCORE 0x00001400L
|
|
#define M_STRING (3L | M_CLIENT_ENCODING) // Already define as 3L
|
|
|
|
#define M_CHAR_VALID_FLAG 4L
|
|
#define M_CHAR_SCORE 5L
|
|
#define M_CHAR_POSITION_X 6L
|
|
#define M_CHAR_POSITION_Y 7L
|
|
#define M_GOOD_LOCATION_QUALITY_FLAG 8L
|
|
#define M_CHAR_SIZE_SCORE 9L
|
|
#define M_CHAR_MIN_OFFSET_X 10L
|
|
#define M_CHAR_MAX_OFFSET_X 11L
|
|
#define M_CHAR_MIN_OFFSET_Y 12L
|
|
#define M_CHAR_MAX_OFFSET_Y 13L
|
|
#define M_CHAR_SPACING 14L
|
|
#define M_DOCUMENT_SCORE 15L
|
|
#define M_TEXT_SCORE 15L
|
|
#define M_TEXT (16L | M_CLIENT_ENCODING)
|
|
#define M_TEXT_LENGTH 17L
|
|
#define M_STRING_ALLOC_SIZE 18L
|
|
|
|
#define M_NB_STRING M_STRING_NUMBER
|
|
#define M_STRING_NUMBER 74L
|
|
#define M_NB_STRING_FOUND M_STRING_NUMBER_FOUND
|
|
#define M_STRING_NUMBER_FOUND 86L
|
|
|
|
#define M_CHAR_SIZE_X 37L //already defined in control
|
|
#define M_CHAR_SIZE_Y 38L //already defined in control
|
|
|
|
#define M_SUM 0x00004000L
|
|
#define M_MEAN 0x08000000L //already defined in MILMEAS.H
|
|
#define M_MEDIAN 0x10000L //already defined in MIL.H
|
|
|
|
// MocrCopyFont()
|
|
#define M_COPY_TO_FONT 1L
|
|
#define M_COPY_FROM_FONT 2L
|
|
#define M_CHARACTER_PAT_MODEL 0x10000L
|
|
#define M_ALL_CHAR 0x8000L
|
|
#define M_SKIP_SEMI_STRING_UPDATE 0x4000L
|
|
#define M_AUTO_LOCALIZE 0x1000L
|
|
|
|
#define M_SORT 0x00200000L
|
|
|
|
// MocrSetConstraint()
|
|
#define M_ADD 0x0000L
|
|
#define M_CLEAR 0x00000001L
|
|
#define M_LETTER 0x00020000L
|
|
#define M_DIGIT 0x00040000L
|
|
#define M_UPPERCASE 0x00010000L
|
|
#define M_LOWERCASE 0x00008000L
|
|
#define M_LETTER_OLD 0x0002L
|
|
#define M_DIGIT_OLD 0x0003L
|
|
#define M_UPPERCASE_OLD 0x10000L
|
|
#define M_LOWERCASE_OLD 0x8000L
|
|
#define M_BLANK 0x200000L
|
|
#define M_DEFAULT 0x10000000L
|
|
#define M_ANY 0x11000000L
|
|
|
|
// MocrModifyFont()
|
|
#define M_RESIZE 1L
|
|
#define M_INVERT 2L
|
|
#define M_NORMALIZE_FONT 4L
|
|
|
|
// MocrValidateString()
|
|
#define M_TRUE 1L
|
|
#define M_STRING_SIZE MAKE_INT64(0x0000050000000000) //Same as in Milocr and Milstr
|
|
#define M_STRING_LENGTH M_STRING_SIZE // Bitwise-Combined with M_ESCAPE_SEQUENCE in Milcode
|
|
#define M_ALL 0x40000000L // Already defined in Mil.h
|
|
#if OldDefinesSupport
|
|
#define M_ALL_OLD 0L
|
|
// MIL_DEPRECATED(M_ALL_OLD, 1010)
|
|
#endif
|
|
#define M_PRESENT 2L
|
|
#define M_CHECK_VALID 3L
|
|
#define M_CHECK_VALID_FAST 4L
|
|
|
|
// MocrDraw
|
|
#define M_DRAW_STRING_BOX 0x00000004L
|
|
#define M_DRAW_STRING_CHAR_BOX 0x00000008L
|
|
#define M_DRAW_STRING_CHAR_POSITION 0x00000010L
|
|
|
|
#define M_DRAW_CHAR 907L //Operation for context
|
|
|
|
|
|
#if M_MIL_USE_64BIT
|
|
#ifdef __cplusplus
|
|
//////////////////////////////////////////////////////////////
|
|
// MocrControl function definition when compiling c++ files
|
|
//////////////////////////////////////////////////////////////
|
|
#if !M_MIL_USE_LINUX
|
|
inline void MocrControl(MIL_ID FontContextOrResultOcrId,
|
|
MIL_INT64 ControlType,
|
|
int ControlValue)
|
|
{
|
|
MocrControlInt64(FontContextOrResultOcrId, ControlType, ControlValue);
|
|
};
|
|
#endif
|
|
|
|
inline void MocrControl(MIL_ID FontContextOrResultOcrId,
|
|
MIL_INT64 ControlType,
|
|
MIL_INT32 ControlValue)
|
|
{
|
|
MocrControlInt64(FontContextOrResultOcrId, ControlType, ControlValue);
|
|
}
|
|
|
|
inline void MocrControl(MIL_ID FontContextOrResultOcrId,
|
|
MIL_INT64 ControlType,
|
|
MIL_INT64 ControlValue)
|
|
{
|
|
MocrControlInt64(FontContextOrResultOcrId, ControlType, ControlValue);
|
|
}
|
|
|
|
inline void MocrControl(MIL_ID FontContextOrResultOcrId,
|
|
MIL_INT64 ControlType,
|
|
MIL_DOUBLE ControlValue)
|
|
{
|
|
MocrControlDouble(FontContextOrResultOcrId, ControlType, ControlValue);
|
|
}
|
|
#else
|
|
//////////////////////////////////////////////////////////////
|
|
// For C file, call the default function, i.e. Int64 one
|
|
//////////////////////////////////////////////////////////////
|
|
#define MocrControl MocrControlDouble
|
|
|
|
#endif // __cplusplus
|
|
#endif // M_MIL_USE_64BIT
|
|
|
|
|
|
#if M_MIL_USE_SAFE_TYPE
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
// See milos.h for explanation about these functions.
|
|
//////////////////////////////////////////////////////////////
|
|
|
|
// ----------------------------------------------------------
|
|
// MocrInquire
|
|
|
|
inline MIL_INT MFTYPE MocrInquireSafeType(MIL_ID ContextId, MIL_INT64 InquireType, MilVoidPtr ValuePtr)
|
|
{
|
|
MIL_INT64 RequiredParamType = M_PARAM_TYPE_MIL_INT64;
|
|
if(!(M_DEFAULT_DATA_TYPE_BIT_SET(InquireType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(InquireType)))
|
|
{
|
|
MocrInquire(ContextId, InquireType | M_DEFAULT_DATA_TYPE, &RequiredParamType);
|
|
}
|
|
if(!MfuncPointerIsCompatible(RequiredParamType, ValuePtr.Type, InquireType))
|
|
{
|
|
SafeTypeError(MIL_TEXT("MocrInquire"));
|
|
}
|
|
|
|
return MocrInquire(ContextId, InquireType, ValuePtr.Ptr);
|
|
}
|
|
|
|
|
|
inline MIL_INT MFTYPE MocrInquireUnsafe(MIL_ID ContextId, MIL_INT64 InquireType, void *ValuePtr)
|
|
{
|
|
return MocrInquire(ContextId, InquireType, ValuePtr);
|
|
}
|
|
|
|
|
|
|
|
// ----------------------------------------------------------
|
|
// MocrGetResult
|
|
|
|
inline void MFTYPE MocrGetResultSafeType(MIL_ID ResultId, MIL_INT64 ResultType, MilVoidPtr ValuePtr)
|
|
{
|
|
MIL_INT64 RequiredParamType = M_PARAM_TYPE_MIL_INT64;
|
|
if(!(M_DEFAULT_DATA_TYPE_BIT_SET(ResultType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(ResultType)))
|
|
{
|
|
MocrGetResult(ResultId, ResultType | M_DEFAULT_DATA_TYPE, &RequiredParamType);
|
|
}
|
|
|
|
if(!MfuncPointerIsCompatible(RequiredParamType, ValuePtr.Type, ResultType))
|
|
{
|
|
SafeTypeError(MIL_TEXT("MocrGetResult"));
|
|
}
|
|
|
|
MocrGetResult(ResultId, ResultType, ValuePtr.Ptr);
|
|
}
|
|
|
|
|
|
inline void MFTYPE MocrGetResultUnsafe(MIL_ID ResultId, MIL_INT64 ResultType, void *ValuePtr)
|
|
{
|
|
MocrGetResult(ResultId, ResultType, ValuePtr);
|
|
}
|
|
|
|
|
|
#define MocrGetResult MocrGetResultSafeType
|
|
#define MocrInquire MocrInquireSafeType
|
|
|
|
#else // #if M_MIL_USE_SAFE_TYPE
|
|
|
|
#define MocrGetResultUnsafe MocrGetResult
|
|
#define MocrInquireUnsafe MocrInquire
|
|
|
|
#endif // #if M_MIL_USE_SAFE_TYPE
|
|
|
|
// ----------------------------------------------------------
|
|
// Overload for std::vector.
|
|
#if defined(M_MIL_USE_VECTOR) && M_MIL_USE_VECTOR
|
|
template <typename UserType>
|
|
inline void MFTYPE MocrGetResult(MIL_ID ResultId, MIL_INT64 ResultType, std::vector<UserType> &ValuePtr)
|
|
{
|
|
//! If the given MIL data type is not the same as the SrcType, change it to the correct one
|
|
//! and give a warning.
|
|
MIL_INT64 InternalTrueDataTypeForStdVector = MilTraits<UserType>::TypeFlag;
|
|
|
|
#if M_MIL_USE_SAFE_TYPE
|
|
if(M_GET_HLVLDATATYPE(ResultType) != 0)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MocrGetResult"), MIL_TEXT("Combination value for the required data type is not supported with std::vector overload."));
|
|
}
|
|
#endif
|
|
|
|
ResultType = M_STRIP_HLVLDATATYPE(ResultType) + InternalTrueDataTypeForStdVector;
|
|
|
|
MIL_INT InternalNumberOfElementsForStdVector = 0;
|
|
MocrGetResult(ResultId, M_STRIP_HLVLDATATYPE(ResultType) + M_NB_ELEMENTS + M_TYPE_MIL_INT, &InternalNumberOfElementsForStdVector);
|
|
|
|
ValuePtr.resize(InternalNumberOfElementsForStdVector);
|
|
|
|
if(InternalNumberOfElementsForStdVector > 0)
|
|
{
|
|
MocrGetResult(ResultId, ResultType, &ValuePtr[0]);
|
|
}
|
|
}
|
|
|
|
// ----------------------------------------------------------
|
|
// Overloads for std::vector in MxxxStream.
|
|
inline void MFTYPE MocrStream(std::vector<MIL_UINT8> &MemPtrOrFileName,
|
|
MIL_ID SysId,
|
|
MIL_INT64 Operation,
|
|
MIL_INT64 StreamType,
|
|
MIL_DOUBLE Version,
|
|
MIL_INT64 ControlFlag,
|
|
MIL_ID* McontextIdPtr,
|
|
MIL_INT* SizeByteVarPtr)
|
|
{
|
|
MxxxStreamForStdVector(MemPtrOrFileName,
|
|
SysId,
|
|
Operation,
|
|
StreamType,
|
|
Version,
|
|
ControlFlag,
|
|
McontextIdPtr,
|
|
SizeByteVarPtr,
|
|
MocrStream);
|
|
}
|
|
#endif // defined(M_MIL_USE_VECTOR) && M_MIL_USE_VECTOR
|
|
|
|
#if M_MIL_USE_STRING
|
|
/***************************************************************************/
|
|
/* OCR MODULE */
|
|
/***************************************************************************/
|
|
#if M_MIL_USE_UNICODE
|
|
#if M_MIL_UNICODE_API
|
|
inline void MFTYPE MocrImportFontW(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_INT64 Operation, const MIL_STRING& CharListString, MIL_ID FontContextOcrId)
|
|
{
|
|
return MocrImportFontW(FileName.c_str(), FileFormat, Operation, CharListString.c_str(), FontContextOcrId);
|
|
}
|
|
|
|
inline void MFTYPE MocrImportFontW(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_INT64 Operation, MIL_CONST_TEXT_PTR CharListString, MIL_ID FontContextOcrId)
|
|
{
|
|
return MocrImportFontW(FileName.c_str(), FileFormat, Operation, CharListString, FontContextOcrId);
|
|
}
|
|
|
|
|
|
inline MIL_ID MFTYPE MocrRestoreFontW(const MIL_STRING& FileName, MIL_INT64 Operation, MIL_ID SysId, MIL_ID *FontContextOcrIdPtr)
|
|
{
|
|
return MocrRestoreFontW(FileName.c_str(), Operation, SysId, FontContextOcrIdPtr);
|
|
}
|
|
|
|
inline void MFTYPE MocrSaveFontW(const MIL_STRING& FileName, MIL_INT64 Operation, MIL_ID FontContextOcrId)
|
|
{
|
|
return MocrSaveFontW(FileName.c_str(), Operation, FontContextOcrId);
|
|
}
|
|
|
|
inline void MFTYPE MocrCalibrateFontW(MIL_ID ImageBufId, MIL_ID FontContextOcrId, const MIL_STRING& String, MIL_DOUBLE TargetCharSizeXMin, MIL_DOUBLE TargetCharSizeXMax, MIL_DOUBLE TargetCharSizeXStep,
|
|
MIL_DOUBLE TargetCharSizeYMin, MIL_DOUBLE TargetCharSizeYMax, MIL_DOUBLE TargetCharSizeYStep, MIL_INT64 Operation)
|
|
{
|
|
return MocrCalibrateFontW(ImageBufId, FontContextOcrId, String.c_str(), TargetCharSizeXMin, TargetCharSizeXMax, TargetCharSizeXStep, TargetCharSizeYMin, TargetCharSizeYMax, TargetCharSizeYStep, Operation);
|
|
}
|
|
|
|
inline void MFTYPE MocrSetConstraintW(MIL_ID FontContextOcrId, MIL_INT CharPos, MIL_INT64 CharPosType, const MIL_STRING& CharValidString)
|
|
{
|
|
MocrSetConstraintW(FontContextOcrId, CharPos, CharPosType, CharValidString.c_str());
|
|
}
|
|
inline void MFTYPE MocrVerifyStringW(MIL_ID ImageBufId, MIL_ID FontContextOcrId, const MIL_STRING& String, MIL_ID OcrResultId)
|
|
{
|
|
return MocrVerifyStringW(ImageBufId, FontContextOcrId, String.c_str(), OcrResultId);
|
|
}
|
|
#else
|
|
inline void MFTYPE MocrImportFontA(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_INT64 Operation, const MIL_STRING& CharListString, MIL_ID FontContextOcrId)
|
|
{
|
|
return MocrImportFontA(FileName.c_str(), FileFormat, Operation, CharListString.c_str(), FontContextOcrId);
|
|
}
|
|
|
|
inline void MFTYPE MocrImportFontA(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_INT64 Operation, MIL_CONST_TEXT_PTR CharListString, MIL_ID FontContextOcrId)
|
|
{
|
|
return MocrImportFontA(FileName.c_str(), FileFormat, Operation, CharListString, FontContextOcrId);
|
|
}
|
|
|
|
inline MIL_ID MFTYPE MocrRestoreFontA(const MIL_STRING& FileName, MIL_INT64 Operation, MIL_ID SysId, MIL_ID *FontContextOcrIdPtr)
|
|
{
|
|
return MocrRestoreFontA(FileName.c_str(), Operation, SysId, FontContextOcrIdPtr);
|
|
}
|
|
|
|
inline void MFTYPE MocrSaveFontA(const MIL_STRING& FileName, MIL_INT64 Operation, MIL_ID FontContextOcrId)
|
|
{
|
|
return MocrSaveFontA(FileName.c_str(), Operation, FontContextOcrId);
|
|
}
|
|
|
|
inline void MFTYPE MocrCalibrateFontA(MIL_ID ImageBufId, MIL_ID FontContextOcrId, const MIL_STRING& String, MIL_DOUBLE TargetCharSizeXMin, MIL_DOUBLE TargetCharSizeXMax, MIL_DOUBLE TargetCharSizeXStep,
|
|
MIL_DOUBLE TargetCharSizeYMin, MIL_DOUBLE TargetCharSizeYMax, MIL_DOUBLE TargetCharSizeYStep, MIL_INT64 Operation)
|
|
{
|
|
return MocrCalibrateFontA(ImageBufId, FontContextOcrId, String.c_str(), TargetCharSizeXMin, TargetCharSizeXMax, TargetCharSizeXStep, TargetCharSizeYMin, TargetCharSizeYMax, TargetCharSizeYStep, Operation);
|
|
}
|
|
|
|
inline void MFTYPE MocrSetConstraintA(MIL_ID FontContextOcrId, MIL_INT CharPos, MIL_INT64 CharPosType, const MIL_STRING& CharValidString)
|
|
{
|
|
MocrSetConstraintA(FontContextOcrId, CharPos, CharPosType, CharValidString.c_str());
|
|
}
|
|
inline void MFTYPE MocrVerifyStringA(MIL_ID ImageBufId, MIL_ID FontContextOcrId, const MIL_STRING& String, MIL_ID OcrResultId)
|
|
{
|
|
return MocrVerifyStringA(ImageBufId, FontContextOcrId, String.c_str(), OcrResultId);
|
|
}
|
|
#endif /* M_MIL_UNICODE_API */
|
|
#else
|
|
inline void MFTYPE MocrImportFont(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_INT64 Operation, const MIL_STRING& CharListString, MIL_ID FontContextOcrId)
|
|
{
|
|
return MocrImportFont(FileName.c_str(), FileFormat, Operation, CharListString.c_str(), FontContextOcrId);
|
|
}
|
|
|
|
inline MIL_ID MFTYPE MocrRestoreFont(const MIL_STRING& FileName, MIL_INT64 Operation, MIL_ID SysId, MIL_ID *FontContextOcrIdPtr)
|
|
{
|
|
return MocrRestoreFont(FileName.c_str(), Operation, SysId, FontContextOcrIdPtr);
|
|
}
|
|
|
|
inline void MFTYPE MocrSaveFont(const MIL_STRING& FileName, MIL_INT64 Operation, MIL_ID FontContextOcrId)
|
|
{
|
|
return MocrSaveFont(FileName.c_str(), Operation, FontContextOcrId);
|
|
}
|
|
|
|
inline void MFTYPE MocrCalibrateFont(MIL_ID ImageBufId, MIL_ID FontContextOcrId, const MIL_STRING& String, MIL_DOUBLE TargetCharSizeXMin, MIL_DOUBLE TargetCharSizeXMax, MIL_DOUBLE TargetCharSizeXStep,
|
|
MIL_DOUBLE TargetCharSizeYMin, MIL_DOUBLE TargetCharSizeYMax, MIL_DOUBLE TargetCharSizeYStep, MIL_INT64 Operation)
|
|
{
|
|
return MocrCalibrateFont(ImageBufId, FontContextOcrId, String.c_str(), TargetCharSizeXMin, TargetCharSizeXMax, TargetCharSizeXStep, TargetCharSizeYMin, TargetCharSizeYMax, TargetCharSizeYStep, Operation);
|
|
}
|
|
|
|
inline void MFTYPE MocrSetConstraint(MIL_ID FontContextOcrId, MIL_INT CharPos, MIL_INT64 CharPosType, const MIL_STRING& CharValidString)
|
|
{
|
|
MocrSetConstraint(FontContextOcrId, CharPos, CharPosType, CharValidString.c_str());
|
|
}
|
|
inline void MFTYPE MocrVerifyString(MIL_ID ImageBufId, MIL_ID FontContextOcrId, const MIL_STRING& String, MIL_ID OcrResultId)
|
|
{
|
|
return MocrVerifyString(ImageBufId, FontContextOcrId, String.c_str(), OcrResultId);
|
|
}
|
|
#endif /* M_MIL_USE_UNICODE */
|
|
|
|
#if M_MIL_USE_SAFE_TYPE
|
|
inline MIL_INT MFTYPE MocrInquireSafeType(MIL_ID ContextId, MIL_INT64 InquireType, MIL_STRING &ValuePtr)
|
|
{
|
|
#if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE
|
|
if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MocrInquire"), MIL_TEXT("Inquire type not supported with MIL_STRING."));
|
|
}
|
|
MIL_INT64 RequiredType = (InquireType & M_HLVLDATATYPE_MASK);
|
|
if(RequiredType != 0 && RequiredType != M_TYPE_TEXT_CHAR)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MocrInquire"), MIL_TEXT("The specified required type is not supported for MIL_STRING overload."));
|
|
}
|
|
#endif
|
|
MIL_INT RetValue = 0;
|
|
MIL_INT InternalStringSize = 0;
|
|
MocrInquireSafeType(ContextId, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize);
|
|
|
|
if(InternalStringSize > 0)
|
|
{
|
|
ValuePtr.assign(InternalStringSize, MIL_TEXT('\0'));
|
|
RetValue = MocrInquire(ContextId, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_TYPE_TEXT_CHAR, &ValuePtr[0]);
|
|
ValuePtr.resize(InternalStringSize - 1);
|
|
|
|
}
|
|
|
|
return RetValue;
|
|
}
|
|
inline void MFTYPE MocrGetResultSafeType(MIL_ID OcrResultId, MIL_INT64 ResultType, MIL_STRING &ValuePtr)
|
|
{
|
|
#if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE
|
|
if((ResultType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MocrGetResult"), MIL_TEXT("Result Type not supported with MIL_STRING."));
|
|
}
|
|
MIL_INT64 RequiredType = (ResultType & M_HLVLDATATYPE_MASK);
|
|
if(RequiredType != 0 && RequiredType != M_TYPE_TEXT_CHAR)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MocrGetResult"), MIL_TEXT("The specified required type is not supported for MIL_STRING overload."));
|
|
}
|
|
#endif
|
|
|
|
MIL_INT64 InternalFlagForMilStringSize = M_STRING_SIZE;
|
|
|
|
if(M_STRIP_HLVLDATATYPE(ResultType) != M_TEXT)
|
|
{
|
|
MIL_INT InternalFlagForSelectedString = 0;
|
|
MocrInquireSafeType(OcrResultId, M_SELECT_STRING + M_TYPE_MIL_INT, &InternalFlagForSelectedString);
|
|
|
|
if(InternalFlagForSelectedString == M_ALL)
|
|
{
|
|
InternalFlagForMilStringSize += M_SUM;
|
|
}
|
|
}
|
|
|
|
MIL_INT InternalStringSize = 0;
|
|
MocrGetResultSafeType(OcrResultId, (ResultType & (~M_HLVLDATATYPE_MASK)) + InternalFlagForMilStringSize + M_TYPE_MIL_INT, &InternalStringSize);
|
|
|
|
if(InternalStringSize > 0)
|
|
{
|
|
ValuePtr.assign(InternalStringSize, MIL_TEXT('\0'));
|
|
#if M_MIL_UNICODE_API
|
|
MocrGetResult(OcrResultId, (ResultType & (~M_HLVLDATATYPE_MASK)) + M_TYPE_TEXT_CHAR, &ValuePtr[0]);
|
|
#else
|
|
MocrGetResult(OcrResultId, (ResultType & (~M_HLVLDATATYPE_MASK)), &ValuePtr[0]);
|
|
#endif
|
|
ValuePtr.resize(InternalStringSize - 1);
|
|
|
|
}
|
|
}
|
|
#else
|
|
inline MIL_INT MFTYPE MocrInquire(MIL_ID ContextId, MIL_INT64 InquireType, MIL_STRING &ValuePtr)
|
|
{
|
|
MIL_INT RetValue = 0;
|
|
MIL_INT InternalStringSize = 0;
|
|
MocrInquire(ContextId, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize);
|
|
|
|
if(InternalStringSize > 0)
|
|
{
|
|
ValuePtr.assign(InternalStringSize, MIL_TEXT('\0'));
|
|
RetValue = MocrInquire(ContextId, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_TYPE_TEXT_CHAR, &ValuePtr[0]);
|
|
ValuePtr.resize(InternalStringSize - 1);
|
|
|
|
}
|
|
|
|
return RetValue;
|
|
}
|
|
|
|
inline void MFTYPE MocrGetResult(MIL_ID OcrResultId, MIL_INT64 ResultType, MIL_STRING &ValuePtr)
|
|
{
|
|
MIL_INT64 InternalFlagForMilStringSize = M_STRING_SIZE;
|
|
|
|
if(M_STRIP_HLVLDATATYPE(ResultType) != M_TEXT)
|
|
{
|
|
MIL_INT InternalFlagForSelectedString = 0;
|
|
MocrInquire(OcrResultId, M_SELECT_STRING + M_TYPE_MIL_INT, &InternalFlagForSelectedString);
|
|
|
|
if(InternalFlagForSelectedString == M_ALL)
|
|
{
|
|
InternalFlagForMilStringSize += M_SUM;
|
|
}
|
|
}
|
|
|
|
MIL_INT InternalStringSize = 0;
|
|
MocrGetResult(OcrResultId, (ResultType & (~M_HLVLDATATYPE_MASK)) + InternalFlagForMilStringSize + M_TYPE_MIL_INT, &InternalStringSize);
|
|
|
|
if(InternalStringSize > 0)
|
|
{
|
|
ValuePtr.assign(InternalStringSize, MIL_TEXT('\0'));
|
|
MocrGetResult(OcrResultId, (ResultType & (~M_HLVLDATATYPE_MASK)) + M_TYPE_TEXT_CHAR, &ValuePtr[0]);
|
|
ValuePtr.resize(InternalStringSize - 1);
|
|
|
|
}
|
|
|
|
}
|
|
#endif
|
|
#endif /* M_MIL_USE_STRING*/
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// MIL_UNIQUE_ID support
|
|
|
|
#if M_MIL_USE_MIL_UNIQUE_ID
|
|
|
|
#if M_MIL_USE_SAFE_TYPE
|
|
template <> inline bool MilIsCorrectObjectType<&MocrFree>(MIL_INT64 ObjectType)
|
|
{
|
|
return (ObjectType & ~M_USER_DEFINE_LOW_ATTRIBUTE) == M_OCR_OBJECT;
|
|
}
|
|
#endif
|
|
|
|
typedef MIL_UNIQUE_ID<&MocrFree> MIL_UNIQUE_OCR_ID;
|
|
|
|
#if M_MIL_USE_MOVE_SEMANTICS
|
|
|
|
inline MIL_UNIQUE_OCR_ID MocrAllocFont(
|
|
MIL_ID SysId,
|
|
MIL_INT64 FontType,
|
|
MIL_INT CharNumber,
|
|
MIL_INT CharCellSizeX,
|
|
MIL_INT CharCellSizeY,
|
|
MIL_INT CharOffsetX,
|
|
MIL_INT CharOffsetY,
|
|
MIL_INT CharSizeX,
|
|
MIL_INT CharSizeY,
|
|
MIL_INT CharThickness,
|
|
MIL_INT StringLength,
|
|
MIL_INT64 InitFlag,
|
|
MIL_UNIQUE_ID_TAG)
|
|
{
|
|
return MIL_UNIQUE_OCR_ID(MocrAllocFont(
|
|
SysId,
|
|
FontType,
|
|
CharNumber,
|
|
CharCellSizeX,
|
|
CharCellSizeY,
|
|
CharOffsetX,
|
|
CharOffsetY,
|
|
CharSizeX,
|
|
CharSizeY,
|
|
CharThickness,
|
|
StringLength,
|
|
InitFlag,
|
|
M_NULL));
|
|
}
|
|
inline MIL_UNIQUE_OCR_ID MocrAllocResult(MIL_ID SysId, MIL_INT64 InitFlag, MIL_UNIQUE_ID_TAG)
|
|
{
|
|
return MIL_UNIQUE_OCR_ID(MocrAllocResult(SysId, InitFlag, M_NULL));
|
|
}
|
|
inline MIL_UNIQUE_OCR_ID MocrRestoreFont(MIL_CONST_TEXT_PTR FileName, MIL_INT64 Operation, MIL_ID SysId, MIL_UNIQUE_ID_TAG)
|
|
{
|
|
return MIL_UNIQUE_OCR_ID(MocrRestoreFont(FileName, Operation, SysId, M_NULL));
|
|
}
|
|
#if M_MIL_USE_STRING
|
|
inline MIL_UNIQUE_OCR_ID MocrRestoreFont(const MIL_STRING& FileName, MIL_INT64 Operation, MIL_ID SysId, MIL_UNIQUE_ID_TAG)
|
|
{
|
|
return MIL_UNIQUE_OCR_ID(MocrRestoreFont(FileName, Operation, SysId, M_NULL));
|
|
}
|
|
#endif // M_MIL_USE_STRING
|
|
template <MilFreeFuncType FreeFunc> inline void MocrFree(const MIL_UNIQUE_ID<FreeFunc>&) = delete;
|
|
|
|
inline void MocrStream(MilStreamParam MemPtrOrFileName ,
|
|
MIL_ID SysId ,
|
|
MIL_INT64 Operation ,
|
|
MIL_INT64 StreamType ,
|
|
MIL_DOUBLE Version ,
|
|
MIL_INT64 ControlFlag ,
|
|
MIL_UNIQUE_OCR_ID* FontContextOcrIdPtr,
|
|
MIL_INT* SizeByteVarPtr )
|
|
{
|
|
MxxxStreamForMilUniqueId(MemPtrOrFileName, SysId, Operation, StreamType, Version, ControlFlag, FontContextOcrIdPtr, SizeByteVarPtr, MocrStream);
|
|
}
|
|
|
|
#endif // M_MIL_USE_MOVE_SEMANTICS
|
|
#endif // M_MIL_USE_MIL_UNIQUE_ID
|
|
|
|
// End of MIL_UNIQUE_ID support
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endif // !M_MIL_LITE
|
|
#endif // __MILOCR_H__
|