439 lines
19 KiB
C
439 lines
19 KiB
C
/* *********************************************************************** */
|
|
/* * Recognition project header * */
|
|
/* *********************************************************************** */
|
|
|
|
#ifndef AMS_MG_INCLUDED
|
|
#define AMS_MG_INCLUDED
|
|
|
|
#include "bastypes.h"
|
|
#include "cgr_ver.h"
|
|
|
|
|
|
#ifdef DLLEXP
|
|
#define __cdecl
|
|
#endif
|
|
|
|
#if (defined(__PSION32__) || defined(__WINS__) || defined(__MARM__))
|
|
#include <e32def.h>
|
|
#ifdef __cdecl
|
|
#undef __cdecl
|
|
#endif
|
|
#define __cdecl GLDEF_C
|
|
#endif /* __PSION32__ */
|
|
|
|
/******* Definitions *********************************************/
|
|
|
|
#define ON 1
|
|
#define OFF 0
|
|
|
|
#ifdef PEGASUS
|
|
#define ERR_MSG_EMPMACRO
|
|
#define err_msg(s) {}
|
|
#endif
|
|
|
|
#ifdef PG_DEBUG_ON
|
|
#define PG_DEBUG ON // Moved to Compiler's params
|
|
#else
|
|
#define PG_DEBUG OFF
|
|
#endif
|
|
|
|
#ifndef PG_DEBUG_MAC
|
|
#define PG_DEBUG_MAC OFF
|
|
#endif
|
|
|
|
#define USE_ORTOGRAPH OFF
|
|
#define USE_CHUNK_PROCESSOR OFF
|
|
#define USE_POSTPROC OFF
|
|
|
|
#if !defined(FOR_GERMAN) && !defined(FOR_FRENCH) && !defined(FOR_INTERNATIONAL) && !defined(FOR_ENGLISH)
|
|
#error Languge selection error!
|
|
#endif
|
|
|
|
#if HWR_SYSTEM == MACINTOSH
|
|
#ifndef EXTERN_VOCABULARY
|
|
#define EXTERN_VOCABULARY ON
|
|
#endif
|
|
#else
|
|
#define EXTERN_VOCABULARY OFF
|
|
#endif
|
|
|
|
#if EXTERN_VOCABULARY
|
|
#define PS_VOC OFF
|
|
#define AIRUS_VOC OFF
|
|
#else
|
|
#define PS_VOC ON
|
|
#define AIRUS_VOC OFF
|
|
#endif
|
|
|
|
#define SUCCESS 0
|
|
#define UNSUCCESS 1
|
|
|
|
/******* Definitions *********************************************/
|
|
|
|
#define NUM_RW 32 /* Size of recognized str*/
|
|
#define XRINP_SIZE 160 /* Len of corr matrix */
|
|
#define w_lim 32 /* Len of char strings */
|
|
#define MAX_DICT 15
|
|
|
|
#define CS_ALPHA 0x0001 /* Letter enabled */
|
|
#define CS_NUMBER 0x0002 /* Number enabled */
|
|
#define CS_MATH 0x0004 /* Mathematic sym's en */
|
|
#define CS_LPUNCT 0x0008 /* Leading punctuation */
|
|
#define CS_EPUNCT 0x0010 /* Ending punctuation */
|
|
#define CS_OTHER 0x0020 /* Any other symbols */
|
|
|
|
#define WW_RESTRICTED 0x0001 /* Writing way -- Restricted set */
|
|
#define WW_GENERAL 0x0002 /* Writing way -- Mixed */
|
|
#define WW_BLOCK 0x0004 /* Writing way -- HandPrint */
|
|
#define WW_PALMER 0x0008 /* Writing way -- Palmer */
|
|
|
|
#define EL_ENGLISH 0x0001 /* Enabled language -- English */
|
|
#define EL_GERMAN 0x0002 /* Enabled language -- German */
|
|
#define EL_FRENCH 0x0004 /* Enabled language -- French */
|
|
|
|
#define EL_SWEDISH 0x0008 /* Enabled language -- Swedish */
|
|
#if !PG_DEBUG
|
|
#define HWR_USE_VAR(a) a
|
|
#else
|
|
#define HWR_USE_VAR(a)
|
|
#endif
|
|
|
|
/* ---- XRW_ALGS definitions -------------------------------------------- */
|
|
|
|
#define XRWALG_XRWS 1 /* Main upper level recognition algorithm */
|
|
#define XRWALG_XR_SPL 2 /* Separated letter recognition algorithm */
|
|
#define XRWALG_XRSL 3 /* Single letter recognition algorithm */
|
|
#define XRWALG_XRLWS 4 /* Combined recognition algorithm */
|
|
#define XRWALG_XRLW 5 /* Word recognition algorithm */
|
|
#define XRWALG_EXP 16 /* Experimental routines */
|
|
#define XRWALG_CMP 17 /* Get aliases for given CMP word in RC */
|
|
|
|
#define XRWM_VOC 0x0001 /* Xrws takes symbols from VOC */
|
|
#define XRWM_CS 0x0002 /* Xrws takes symbols from CharSet*/
|
|
#define XRWM_TRIAD 0x0004 /* Symbols from charset verified by triads */
|
|
#define XRWM_LD 0x0008 /* Symbols are generated by LexDB */
|
|
#define XRWM_BLOCK 0x0010 /* Fast 'BLOCK' matrix counting */
|
|
#define XRWM_MWORD 0x0020 /* Multiword dict recognition */
|
|
#define XRWM_NONUMFILTER 0x0040 /* Disable CheckPure num filter */
|
|
#define XRWM_NOSSPENL 0x0080 /* Disable Sources penalties */
|
|
|
|
#define XRCM_CACHE 0x0001 /* Use cache in counting of matrix */
|
|
#define XRCM_SEPLET 0x0002 /* Recognition of separated-letter word */
|
|
|
|
#if defined( FOR_GERMAN)
|
|
#define XCM_DEFAULT 0x0027 /* Default capitalization flags */
|
|
#else
|
|
#define XCM_DEFAULT 0x0037 /* Default capitalization flags */
|
|
#endif
|
|
#define XCM_FL_DEFSIZE 0x0001 /* First letter in accordance with voc/charset */
|
|
#define XCM_FL_TRYCAPS 0x0002 /* Use capitals vars for first letter from voc/cs*/
|
|
#define XCM_AL_DEFSIZE 0x0005 /* All letters in accordance with voc/cs */
|
|
#define XCM_AL_TRYCAPS 0x000A /* Use capitals vars for all letters from voc/cs */
|
|
#define XCM_AL_TRYS4C 0x0015 /* Try also small vars for capitals form voc/cs */
|
|
#define XCM_AL_RETC4AV 0x0020 /* Return capitalization for all answer variants */
|
|
|
|
/* ----------- Load utilities command definitions ----------------------- */
|
|
|
|
#define TR_REQUEST 1 /* Request to load beg triads */
|
|
|
|
#define DTI_DTE_REQUEST 0x0001 /* Operation on DTI requested */
|
|
#define DTI_XRT_REQUEST 0x0002 /* Operation on XRT requested */
|
|
#define DTI_PDF_REQUEST 0x0004 /* Operation on PDF requested */
|
|
#define DTI_PICT_REQUEST 0x0008 /* Operation on PICT requested*/
|
|
|
|
/* ----------- Low level modes & values --------------------------------- */
|
|
|
|
/* Possible values of the "rec_mode" field of "rc_type" structure. */
|
|
/* May be combined (using OR): */
|
|
|
|
#define RECM_TEXT 1
|
|
#define RECM_FORMULA 2
|
|
#define RECM_ALL (RECM_TEXT|RECM_FORMULA)
|
|
|
|
/*
|
|
Constants - values of the "low_mode" field in "rc_type"
|
|
structure:
|
|
Only one flag from each group (excluding
|
|
LMOD_CHECK_PUNCTN) may be set!
|
|
Flags concerning BORDER have effect only when LMOD_FREE_TEXT
|
|
is set. When LMOD_BOX_EDIT is set, the border fields in "rc"
|
|
must contain predefined value for the line borders.
|
|
Flag LMOD_CHECK_PUNCTN has no effect in LMOD_BOX_EDIT mode.
|
|
*/
|
|
|
|
#define LMOD_BOX_EDIT (_USHORT)0x0001
|
|
#define LMOD_FREE_TEXT (_USHORT)0x0002
|
|
|
|
#define LMOD_BORDER_TEXT (_USHORT)0x0010
|
|
#define LMOD_BORDER_NUMBER (_USHORT)0x0020
|
|
|
|
#define LMOD_BORDER_GENERAL (LMOD_BORDER_TEXT|LMOD_BORDER_NUMBER)
|
|
#define LMOD_NO_BORDER_DECISION (_USHORT)0
|
|
#define LMOD_BORDER_ONLY (_USHORT)0x0040
|
|
|
|
#define LMOD_SEPARATE_LET (_USHORT)0x0400
|
|
|
|
#define LMOD_SMALL_CAPS (_USHORT)0x0800
|
|
|
|
#define LMOD_CHECK_PUNCTN (_USHORT)0x8000
|
|
|
|
#define CB_NUM_VERTEX 10
|
|
|
|
/* -------------- XRinp section ----------------------------------------- */
|
|
|
|
#define XRB_ST_ELEM 0x01 /* Tail flag of starting element */
|
|
#define XRB_EN_ELEM 0x02 /* Tail flag of ending element */
|
|
|
|
/* ------- Learning info flags definitions for LearningHandleConfig field - */
|
|
#define kLDRC 0x0001 /* write RC to learning info */
|
|
#define kLDTrace 0x0002 /* write Trace to learning info */
|
|
#define kLDXRdata 0x0004 /* write XRdata to learning info */
|
|
#define kLDRWS 0x0008 /* write RWS to learning info */
|
|
#define kLDRWGPPD 0x0010 /* write RWG PDD to learning info */
|
|
#define kLDRecWrd 0x0020 /* write rec words to learning info */
|
|
#define kLDORT 0x0040 /* write poliakov's data to learning info */
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
/* ------- Learning info flags definitions for fOrto field ------------ */
|
|
#define kORTO_UPPER 0x0001 /* use ortograph in upper level */
|
|
#define kORTO_POSTP 0x0002 /* use ortograph as a postrocessing */
|
|
#define kORTO_EMPTY 0x0004 /* use an empty data base */
|
|
#define kORTO_LEARN 0x0008 /* perform learning */
|
|
/* -------------------------------------------------------------------- */
|
|
|
|
/* ----------------- Upper level defines -------------------------------- */
|
|
|
|
#define XRWG_FCASECHANGE 0x80 /* Flag of case-of-letter change in alias */
|
|
|
|
#define XRLV_DATA_SAVE 0x01 /* Save not-finished state for the word */
|
|
#define XRLV_DATA_USE 0x02 /* Use not-finished state for the word */
|
|
|
|
/* ----------- System yield function ------------------------------------- */
|
|
|
|
typedef _INT (__cdecl *RecYield_type)(p_VOID);
|
|
|
|
/********** Structure definitions *******************************/
|
|
|
|
/* ----------------- Lower level structures ----------------------------- */
|
|
|
|
typedef struct {
|
|
_SHORT x;
|
|
_SHORT y;
|
|
}PS_point_type, _PTR p_PS_point_type;
|
|
|
|
typedef p_PS_point_type _TRACE ;
|
|
|
|
typedef struct
|
|
{
|
|
_SHORT left;
|
|
_SHORT top;
|
|
_SHORT right;
|
|
_SHORT bottom;
|
|
} _RECT, _PTR p_RECT;
|
|
|
|
typedef struct {
|
|
// p_VOID trace_in; // Reserved for future use
|
|
// p_VOID trace_out;
|
|
// _SHORT num_points_in;
|
|
// _SHORT num_points_out;
|
|
|
|
_RECT box;
|
|
|
|
_SHORT extr_depth;
|
|
|
|
_SHORT size_in;
|
|
_SHORT dn_pos_in;
|
|
_SHORT size_sure_in;
|
|
_SHORT pos_sure_in;
|
|
|
|
_SHORT size_out;
|
|
_SHORT dn_pos_out;
|
|
_SHORT size_sure_out;
|
|
_SHORT pos_sure_out;
|
|
}stroka_data, _PTR p_stroka_data;
|
|
|
|
/* --------------------------------------------------------------------- */
|
|
/* Structure containing control variables for postprocessing */
|
|
/* applicability: */
|
|
|
|
typedef struct {
|
|
_SHORT nMinWeight; /* Min. weight of 1st variant */
|
|
/* for postproc. to be applied. */
|
|
_SHORT nMaxDist; /* Max. weight distance between */
|
|
/* two first variants for post- */
|
|
/* proc. to be applied. */
|
|
} POST_CONTROLS, _PTR p_POST_CONTROLS;
|
|
|
|
/* ----------------- Global Rec Context --------------------------------- */
|
|
|
|
typedef struct {
|
|
_SHORT algorithm; /* Upper level recognition algorithm */
|
|
|
|
_SHORT enabled_cs; /* Inluded parts of symbol set (anmleo) */
|
|
_SHORT enabled_ww; /* Enabled ways of writing (Handprint/Palmer/Mixed) (bpg) */
|
|
_SHORT enabled_languages; /* Allowed languages to use from DTI prototypes (egf)*/
|
|
|
|
_SHORT xrw_mode; /* Xrws mode v/c/t/b .... */
|
|
_SHORT corr_mode; /* Corr matr modes - s/c ... */
|
|
_SHORT xrw_min_wlen; /* Min Num let in word to read */
|
|
_SHORT xrw_max_wlen; /* Max Num let in word to read */
|
|
_SHORT xrw_tag_size; /* Number of TAG buffers */
|
|
_SHORT xrw_chr_size; /* Number of character buffers */
|
|
_SHORT bad_distance; /* CutOff distance of XRW modules */
|
|
|
|
_SHORT answer_level;
|
|
_SHORT sure_level;
|
|
_SHORT answer_allow;
|
|
|
|
_SHORT bad_amnesty;
|
|
|
|
_SHORT caps_mode;
|
|
_SHORT use_len_limits;
|
|
|
|
_SHORT fly_learn;
|
|
_SHORT use_vars_inf;
|
|
|
|
_SHORT lrn_class_level;
|
|
_SHORT lrn_min_class;
|
|
_SHORT lrn_learn_suff;
|
|
_SHORT lrn_vocvar_rew;
|
|
|
|
p_VOID dtiptr; /* Handle to Xr database */
|
|
p_VOID vocptr[MAX_DICT]; /* Handle to vocabularies */
|
|
p_VOID tr_ptr; /* Handle to character filters */
|
|
|
|
p_UCHAR alpha_charset;
|
|
p_UCHAR num_charset;
|
|
p_UCHAR math_charset;
|
|
p_UCHAR lpunct_charset;
|
|
p_UCHAR epunct_charset;
|
|
p_UCHAR other_charset;
|
|
|
|
_USHORT low_mode; /* See possible values above (LMOD_...).*/
|
|
_USHORT rec_mode; /* See possible values above (RECM_...).*/
|
|
_USHORT lmod_border_used; /* See possible values above (LMOD_BORDER...).*/
|
|
|
|
_SHORT ii; /* Number of points in trajectory */
|
|
_SHORT n_str; /* Number of strokes in trajectory */
|
|
_TRACE trace; /* Trajectory */
|
|
_RECT trace_rect; /* Box of the trajectory */
|
|
_SHORT slope; /* Slope of the trajectory */
|
|
|
|
_UCHAR curv_bord[CB_NUM_VERTEX*2]; /* Curved border of the trace */
|
|
|
|
_UCHAR fl_fil;
|
|
_UCHAR fl_post;
|
|
|
|
_UCHAR ws_handle;
|
|
_USHORT LearningHandleConfig;
|
|
_USHORT FakeRecognition; /* recognize just first point of a tajectory */
|
|
|
|
_UCHAR fl_chunk; // CHUNK_PROCESSOR
|
|
_UCHAR fl_chunk_let; // CHUNK_PROCESSOR
|
|
|
|
_SHORT fOrto; // ORTOGRAPH
|
|
p_VOID pDB;
|
|
|
|
_CHAR cmp_word[w_lim];
|
|
|
|
stroka_data stroka; /* new data structure for baseline */
|
|
_SHORT BoxEditSamllHeight;
|
|
_SHORT BoxEditBase;
|
|
|
|
_SHORT fReject; // REJECT
|
|
|
|
POST_CONTROLS postCtrl;
|
|
|
|
RecYield_type pFuncYield; // Callback Yield fuction
|
|
p_VOID FY_param; // Parameter for FuncYield
|
|
|
|
p_VOID p_ws_wi; // Pointer to struct with ws info for cur word
|
|
|
|
_INT f_xd_data; // Flags controlling saving of xd data
|
|
p_VOID p_xd_data; // Pointer to XRLV data structure saved for continuing recognition
|
|
|
|
p_VOID pXrc; // The Bear XRc for this context
|
|
p_VOID hSeg; // handle to multiseg data
|
|
|
|
void *pvFactoid;
|
|
unsigned char *szPrefix;
|
|
unsigned char *szSuffix;
|
|
|
|
} rc_type, _PTR p_rc_type;
|
|
|
|
/* -------------- XRinp section ----------------------------------------- */
|
|
|
|
typedef struct {
|
|
_UCHAR type; //64 direction:1b:type:2b:width:3b:
|
|
_UCHAR attrib; // bit field
|
|
_UCHAR penalty; //16 max value
|
|
_UCHAR height; //16
|
|
|
|
_UCHAR shift; //16
|
|
_UCHAR orient; //32
|
|
_UCHAR depth; //16
|
|
|
|
_UCHAR iSpc; // Spc net out
|
|
|
|
}xrinp_type, _PTR p_xrinp_type;
|
|
|
|
typedef struct {
|
|
xrinp_type xr;
|
|
_SHORT hotpoint;
|
|
_SHORT begpoint;
|
|
_SHORT endpoint;
|
|
_SHORT box_left;
|
|
_SHORT box_up;
|
|
_SHORT box_right;
|
|
_SHORT box_down;
|
|
_UCHAR location;
|
|
}xrd_el_type, _PTR p_xrd_el_type;
|
|
|
|
typedef xrd_el_type xrd_type[XRINP_SIZE];
|
|
typedef xrd_type _PTR p_xrd_type;
|
|
|
|
typedef struct {
|
|
_INT len; // Real filled length
|
|
_INT size; // Allocated size (in els)
|
|
p_xrd_type xrd; // Pointer to array of xrd_el's
|
|
}xrdata_type, _PTR p_xrdata_type;
|
|
|
|
/* ----------- Rec Words Structure --------------------------------------- */
|
|
|
|
typedef struct {
|
|
_UCHAR word[w_lim];
|
|
_UCHAR nvar[w_lim]; /* Number of variants + CapsChange falg */
|
|
_UCHAR linp[w_lim]; /* Lengths of letter-correspondent xr strings */
|
|
_SHORT weight;
|
|
_SHORT src_id;
|
|
_SHORT attr;
|
|
}rec_w_type, _PTR p_rec_w_type;
|
|
|
|
/* ----------- Symbol Graph definitions ---------------------------------- */
|
|
|
|
typedef struct { /* Type, defining base of graph */
|
|
_UCHAR type; /* Graph type (word/letter/number */
|
|
_INT size; /* Number of elements in RWS array */
|
|
p_VOID rws_mem; /* Pointer to RWS memory */
|
|
p_VOID ppd_mem; /* Pointer to PPD allocation */
|
|
_BOOL bReversePass; /* For ppd in upper level -- flag of reverse rwg */
|
|
} RWG_type, _PTR p_RWG_type;
|
|
|
|
/* --------------------- Prototypes ---------------------------- */
|
|
|
|
_INT AllocXrdata(p_xrdata_type xrdata, _INT size);
|
|
_INT FreeXrdata(p_xrdata_type xrdata);
|
|
|
|
_INT PreprocessTrajectory(p_rc_type rc);
|
|
|
|
#if !defined(ERR_MSG_EMPMACRO) && !defined(err_msg)
|
|
_VOID err_msg(_STR);
|
|
#endif
|
|
|
|
#endif /* AMS_MG_INCLUDED */
|
|
|
|
/* ************************************************************************* */
|
|
/* * End of all * */
|
|
/* ************************************************************************* */
|
|
//
|