windows-nt/Source/XPSP1/NT/drivers/tpg/hwx/bear/inc/dti.h
2020-09-26 16:20:57 +08:00

629 lines
28 KiB
C

/* ***************************************************************************** */
/* * DTI header file Created 12/3/1993 AVP Last modified 3/30/1998 * */
/* ***************************************************************************** */
#ifndef DTI_H_INCLUDED
#define DTI_H_INCLUDED
#include "ams_mg.h"
/* -------------------------- Defines for DTI ---------------------------------- */
#ifdef DTI_COMPRESSED_ON
#define DTI_COMPRESSED 1 /* Define to enable use of DTI in compr form */
#else
#define DTI_COMPRESSED 0 /* Define to enable use of DTI in compr form */
#endif
#if defined PEGASUS && !defined PSR_DLL
#define DTI_LRN_SUPPORTFUNC 1 /* Enables functions supporting DTI learning */
#define DTI_LOAD_FROM_ROM 1 /* Initialize DTI from linked-in resource */
#define DTILRN_FLY_LEARN 0 /* Enable Fly Learn functions */
#else
#ifndef DTI_LRN_SUPPORTFUNC
#define DTI_LRN_SUPPORTFUNC 1 /* Enables functions supporting DTI learning */
#endif
#ifndef DTI_LOAD_FROM_ROM
#define DTI_LOAD_FROM_ROM 0 /* Initialize DTI from linked-in resource */
#endif
#ifndef DTILRN_FLY_LEARN
#define DTILRN_FLY_LEARN 1 /* Enable Fly Learn functions */
#endif
#endif
/* -------------------------- Defines for DTI -------------------------------- */
#define XT_COUNT 64 /* Number of Type elements */
#define XZ_COUNT 16 /* Number of sizes */
#define XH_COUNT 16 /* Number of Height values */
#define XS_COUNT 16 /* Number of Shift values */
#define XO_COUNT 32 /* Number of Orientation values */
#define XR_COUNT XT_COUNT
#define DTI_XTB_SIZE (XT_COUNT/2) /* Size of dti buffer for XR */
#define DTI_XZB_SIZE (XZ_COUNT/2) /* Size of dti buffer for XZ */
#define DTI_XHB_SIZE (XH_COUNT/2) /* Size of dti buffer for H values */
#define DTI_XSB_SIZE (XS_COUNT/2) /* Size of dti buffer for S values */
#define DTI_XOB_SIZE (XO_COUNT/2) /* Size of dti buffer for O values */
#define DTI_MAXVARSPERLET 16 /* How many vars each letter has */
#define DTI_FIRSTSYM 32 /* First definable DTI sym */
#define DTI_XR_SIZE 12 /* Max length of DTI prototype*/
#define DTI_XT_PALETTE_SIZE 256 /* Number of vectors in 'type' palette */
#define DTI_XZ_PALETTE_SIZE 256 /* Number of vectors in 'size' palette */
#define DTI_XH_PALETTE_SIZE 256 /* Number of vectors in 'height' palette */
#define DTI_XS_PALETTE_SIZE 256 /* Number of vectors in 'shift' palette */
#define DTI_XO_PALETTE_SIZE 256 /* Number of vectors in 'orient' palette */
#define DTI_XT_LSB 0x01 /* LSB bit of pallete num (select of upper/lower half) */
#define DTI_XH_LSB 0x02 /* LSB bit of pallete num (select of upper/lower half) */
#define DTI_XS_LSB 0x04 /* LSB bit of pallete num (select of upper/lower half) */
#define DTI_XZ_LSB 0x08 /* LSB bit of pallete num (select of upper/lower half) */
#define DTI_XO_LSB 0x10 /* LSB bit of pallete num (select of upper/lower half) */
#define ST_CONV_RANGE 128
#define DTI_NUMSYMBOLS (128+72-DTI_FIRSTSYM) /* How many letters in DTI */
#if DTI_COMPRESSED
#define DTI_DTI_OBJTYPE "DTI5" /* Object type of current DTI */
#define DTI_DTI_VER "1.02" /* Version of current DTI */
#else
#define DTI_DTI_OBJTYPE "DTI4" /* Object type of current DTI */
#define DTI_DTI_VER "2.00" /* Version of current DTI */
#endif
#define DTI_DTI_TYPE "EngM" /* Object type of current DTI */
#define DTI_ID_LEN 4 /* LEngth of ID string in DTI */
#define DTI_FNAME_LEN 32 /* Pathname of dti len */
#define DTI_CAP_BIT 0x01 /* Var capitalization flagiting */
#define DTI_PICT_OFS 1 /* Offset from right of picture group */
#define DTI_OFS_WW 4 /* Offset from right of WritingWay field in var_veis */
#define DTI_RESTRICTED_SET 0x10 /* Veis flag of restricted prototype set */
#define DTI_VEX_MASK 0xF0 /* Vex mask */
#define DTI_VEX_OFFS 4 /* Offset of vex in var header */
#define DTI_NXR_MASK 0x0F /* Mask of num var field */
#define DTI_XRTYPE_OFFS 4 /* Offset of XR type high bits in xrp->penl field*/
#define DTI_PENL_MASK 0x0F /* Mask of penl ion xrp->penl field*/
#define DTI_SIZEOFVEXT (DTI_NUMSYMBOLS*DTI_MAXVARSPERLET*sizeof(_UCHAR)) // Size of learn vex table
#define DTI_SIZEOFCAPT (DTI_NUMSYMBOLS*DTI_MAXVARSPERLET/8) // Size of capitalization table
/* ---------------- Definitions for OS to REC conversions ------------------ */
#define REC_BritishPound ((_UCHAR)0x7f)
#define REC_A_umlaut ((_UCHAR)0x80)
#define REC_a_umlaut ((_UCHAR)0x81)
#define REC_O_umlaut ((_UCHAR)0x82)
#define REC_o_umlaut ((_UCHAR)0x83)
#define REC_U_umlaut ((_UCHAR)0x84)
#define REC_u_umlaut ((_UCHAR)0x85)
#define REC_ESZET ((_UCHAR)0x86)
#define REC_A_grave ((_UCHAR)0x87)
#define REC_a_grave ((_UCHAR)0x88)
#define REC_A_circumflex ((_UCHAR)0x89)
#define REC_a_circumflex ((_UCHAR)0x8a)
#define REC_C_cedilla ((_UCHAR)0x8b)
#define REC_c_cedilla ((_UCHAR)0x8c)
#define REC_E_grave ((_UCHAR)0x8d)
#define REC_e_grave ((_UCHAR)0x8e)
#define REC_E_acute ((_UCHAR)0x8f)
#define REC_e_acute ((_UCHAR)0x90)
#define REC_E_circumflex ((_UCHAR)0x91)
#define REC_e_circumflex ((_UCHAR)0x92)
#define REC_I_circumflex ((_UCHAR)0x93)
#define REC_i_circumflex ((_UCHAR)0x94)
#define REC_I_umlaut ((_UCHAR)0x95)
#define REC_i_umlaut ((_UCHAR)0x96)
#define REC_O_circumflex ((_UCHAR)0x97)
#define REC_o_circumflex ((_UCHAR)0x98)
#define REC_U_grave ((_UCHAR)0x99)
#define REC_u_grave ((_UCHAR)0x9a)
#define REC_U_circumflex ((_UCHAR)0x9b)
#define REC_u_circumflex ((_UCHAR)0x9c)
#define REC_e_umlaut ((_UCHAR)0x9d)
#define REC_DIV_sign ((_UCHAR)0x9e)
#define REC_n_numero ((_UCHAR)0x9f)
#define REC_A_angstrem ((_UCHAR)0xa0)
#define REC_a_angstrem ((_UCHAR)0xa1)
#define REC_Yenn_sign ((_UCHAR)0xa2)
#define REC_DblBrace_left ((_UCHAR)0xa3)
#define REC_DblBrace_right ((_UCHAR)0xa4)
//#define REC_Paragraph_sign ((_UCHAR)0xa5)
#define REC_Copyright_sign ((_UCHAR)0xa5)
#define REC_Y_umlaut ((_UCHAR)0xa6)
#define REC_y_umlaut ((_UCHAR)0xa7)
#define REC_N_tilda ((_UCHAR)0xa8)
#define REC_n_tilda ((_UCHAR)0xa9)
//#define REC_Cent_sign ((_UCHAR)0xaa)
#define REC_TradeName_sign ((_UCHAR)0xaa)
#define REC_Question_inv ((_UCHAR)0xab)
#define REC_Exclamation_inv ((_UCHAR)0xac)
#define REC_A_acute ((_UCHAR)0xad)
#define REC_a_acute ((_UCHAR)0xae)
#define REC_I_acute ((_UCHAR)0xaf)
#define REC_i_acute ((_UCHAR)0xb0)
#define REC_I_grave ((_UCHAR)0xb1)
#define REC_i_grave ((_UCHAR)0xb2)
#define REC_O_acute ((_UCHAR)0xb3)
#define REC_o_acute ((_UCHAR)0xb4)
#define REC_O_grave ((_UCHAR)0xb5)
#define REC_o_grave ((_UCHAR)0xb6)
#define REC_U_acute ((_UCHAR)0xb7)
#define REC_u_acute ((_UCHAR)0xb8)
#define REC_A_tilda ((_UCHAR)0xb9)
#define REC_a_tilda ((_UCHAR)0xba)
#define REC_O_tilda ((_UCHAR)0xbb)
#define REC_o_tilda ((_UCHAR)0xbc)
#define REC_E_umlaut ((_UCHAR)0xbd)
#define REC_oe_letter ((_UCHAR)0xbe)
#define REC_OE_letter ((_UCHAR)0xbf)
#define REC_euro_currency ((unsigned char)0xc0)
/* These definitions are for Windows OS: */
#define OS_euro_currency ((unsigned char)0x80)
#define OS_BritishPound ((unsigned char)0xa3)
#define OS_A_umlaut ((unsigned char)0xc4)
#define OS_a_umlaut ((unsigned char)0xe4)
#define OS_O_umlaut ((unsigned char)0xd6)
#define OS_o_umlaut ((unsigned char)0xf6)
#define OS_U_umlaut ((unsigned char)0xdc)
#define OS_u_umlaut ((unsigned char)0xfc)
#define OS_ESZET ((unsigned char)0xdf)
#define OS_A_grave ((unsigned char)0xc0)
#define OS_a_grave ((unsigned char)0xe0)
#define OS_A_circumflex ((unsigned char)0xc2)
#define OS_a_circumflex ((unsigned char)0xe2)
#define OS_C_cedilla ((unsigned char)0xc7)
#define OS_c_cedilla ((unsigned char)0xe7)
#define OS_E_grave ((unsigned char)0xc8)
#define OS_e_grave ((unsigned char)0xe8)
#define OS_E_acute ((unsigned char)0xc9)
#define OS_e_acute ((unsigned char)0xe9)
#define OS_E_circumflex ((unsigned char)0xca)
#define OS_e_circumflex ((unsigned char)0xea)
#define OS_I_circumflex ((unsigned char)0xce)
#define OS_i_circumflex ((unsigned char)0xee)
#define OS_I_umlaut ((unsigned char)0xcf)
#define OS_i_umlaut ((unsigned char)0xef)
#define OS_O_circumflex ((unsigned char)0xd4)
#define OS_o_circumflex ((unsigned char)0xf4)
#define OS_U_grave ((unsigned char)0xd9)
#define OS_u_grave ((unsigned char)0xf9)
#define OS_U_circumflex ((unsigned char)0xdb)
#define OS_u_circumflex ((unsigned char)0xfb)
#define OS_e_umlaut ((unsigned char)0xeb)
//#define OS_N_numero ((unsigned char)0xaa)
//#define OS_n_numero ((unsigned char)0xba)
#define OS_A_angstrem ((unsigned char)0xc5)
#define OS_a_angstrem ((unsigned char)0xe5)
#define OS_Yenn_sign ((unsigned char)0xa5)
#define OS_DblBrace_left ((unsigned char)0xab)
#define OS_DblBrace_right ((unsigned char)0xbb)
//#define OS_Paragraph_sign ((unsigned char)0xb6)
#define OS_Copyright_sign ((unsigned char)0xa9)
#define OS_Y_umlaut ((unsigned char)0x9f)
#define OS_y_umlaut ((unsigned char)0xff)
#define OS_N_tilda ((unsigned char)0xd1)
#define OS_n_tilda ((unsigned char)0xf1)
//#define OS_Cent_sign ((unsigned char)0xa2)
#define OS_TradeName_sign ((unsigned char)0xae)
#define OS_Question_inv ((unsigned char)0xbf)
#define OS_Exclamation_inv ((unsigned char)0xa1)
#define OS_A_acute ((unsigned char)0xc1)
#define OS_a_acute ((unsigned char)0xe1)
#define OS_I_acute ((unsigned char)0xcd)
#define OS_i_acute ((unsigned char)0xed)
#define OS_I_grave ((unsigned char)0xcc)
#define OS_i_grave ((unsigned char)0xec)
#define OS_O_acute ((unsigned char)0xd3)
#define OS_o_acute ((unsigned char)0xf3)
#define OS_O_grave ((unsigned char)0xd2)
#define OS_o_grave ((unsigned char)0xf2)
#define OS_U_acute ((unsigned char)0xda)
#define OS_u_acute ((unsigned char)0xfa)
#define OS_A_tilda ((unsigned char)0xc3)
#define OS_a_tilda ((unsigned char)0xe3)
#define OS_O_tilda ((unsigned char)0xd5)
#define OS_o_tilda ((unsigned char)0xf5)
#define OS_E_umlaut ((unsigned char)0xcb)
#define OS_oe_letter ((unsigned char)0x9c)
#define OS_OE_letter ((unsigned char)0x8c)
#define OS_ae_letter ((unsigned char)198)
#define OS_AE_letter ((unsigned char)230)
#define OS_MUL_sign ((unsigned char)215)
#define OS_DIV_sign ((unsigned char)247)
#define OS_O_crossed ((unsigned char)216)
#define OS_o_crossed ((unsigned char)248)
#define OS_Y_acute ((unsigned char)221)
#define OS_y_acute ((unsigned char)253)
//#if 0 /*Macintosh definitions - don't use them for now */
/* Definitions for OS (Macintosh Roman) FOR_INTERNATIONAL characters */
#define MAC_euro_currency ((_UCHAR)0xf0) // FIXME or do we care ??? MR, april 2000
#define MAC_BritishPound ((_UCHAR)0xa3)
#define MAC_A_umlaut ((_UCHAR)0x80)
#define MAC_a_umlaut ((_UCHAR)0x8a)
#define MAC_O_umlaut ((_UCHAR)0x85)
#define MAC_o_umlaut ((_UCHAR)0x9a)
#define MAC_U_umlaut ((_UCHAR)0x86)
#define MAC_u_umlaut ((_UCHAR)0x9f)
#define MAC_ESZET ((_UCHAR)0xa7)
#define MAC_A_grave ((_UCHAR)0xcb)
#define MAC_a_grave ((_UCHAR)0x88)
#define MAC_A_circumflex ((_UCHAR)0xe5)
#define MAC_a_circumflex ((_UCHAR)0x89)
#define MAC_C_cedilla ((_UCHAR)0x82)
#define MAC_c_cedilla ((_UCHAR)0x8d)
#define MAC_E_grave ((_UCHAR)0xe9)
#define MAC_e_grave ((_UCHAR)0x8f)
#define MAC_E_acute ((_UCHAR)0x83)
#define MAC_e_acute ((_UCHAR)0x8e)
#define MAC_E_circumflex ((_UCHAR)0xe6)
#define MAC_e_circumflex ((_UCHAR)0x90)
#define MAC_I_circumflex ((_UCHAR)0xeb)
#define MAC_i_circumflex ((_UCHAR)0x94)
#define MAC_I_umlaut ((_UCHAR)0xec)
#define MAC_i_umlaut ((_UCHAR)0x95)
#define MAC_O_circumflex ((_UCHAR)0xef)
#define MAC_o_circumflex ((_UCHAR)0x99)
#define MAC_U_grave ((_UCHAR)0xf4)
#define MAC_u_grave ((_UCHAR)0x9d)
#define MAC_U_circumflex ((_UCHAR)0xf3)
#define MAC_u_circumflex ((_UCHAR)0x9e)
#define MAC_e_umlaut ((_UCHAR)0x91)
#define MAC_N_numero ((_UCHAR)0xbb)
#define MAC_n_numero ((_UCHAR)0xbc)
#define MAC_A_angstrem ((_UCHAR)0x81)
#define MAC_a_angstrem ((_UCHAR)0x8c)
#define MAC_Yenn_sign ((_UCHAR)0xb4)
#define MAC_DblBrace_left ((_UCHAR)0xc7)
#define MAC_DblBrace_right ((_UCHAR)0xc8)
//#define MAC_Paragraph_sign ((_UCHAR)0xa6)
#define MAC_Y_umlaut ((_UCHAR)0xd9)
#define MAC_y_umlaut ((_UCHAR)0xd8)
#define MAC_N_tilda ((_UCHAR)0x84)
#define MAC_n_tilda ((_UCHAR)0x96)
//#define MAC_Cent_sign ((_UCHAR)0xa2)
#define MAC_Question_inv ((_UCHAR)0xc0)
#define MAC_Exclamation_inv ((_UCHAR)0xc1)
#define MAC_A_acute ((_UCHAR)0xe7)
#define MAC_a_acute ((_UCHAR)0x87)
#define MAC_I_acute ((_UCHAR)0xea)
#define MAC_i_acute ((_UCHAR)0x92)
#define MAC_I_grave ((_UCHAR)0xed)
#define MAC_i_grave ((_UCHAR)0x93)
#define MAC_O_acute ((_UCHAR)0xee)
#define MAC_o_acute ((_UCHAR)0x97)
#define MAC_O_grave ((_UCHAR)0xf1)
#define MAC_o_grave ((_UCHAR)0x98)
#define MAC_U_acute ((_UCHAR)0xf2)
#define MAC_u_acute ((_UCHAR)0x9c)
#define MAC_A_tilda ((_UCHAR)0xcc)
#define MAC_a_tilda ((_UCHAR)0x8b)
#define MAC_O_tilda ((_UCHAR)0xcd)
#define MAC_o_tilda ((_UCHAR)0x9b)
#define MAC_E_umlaut ((_UCHAR)0xe8)
#define MAC_oe_letter ((_UCHAR)0xcf)
#define MAC_OE_letter ((_UCHAR)0xce)
#define MAC_Copyright_sign ((_UCHAR)0xa9)
#define MAC_TradeName_sign ((_UCHAR)0xa8)
#define MAC_Y_acute ((_UCHAR)0)
#define MAC_y_acute ((_UCHAR)0)
//#endif /*Macintosh definitions - don't use them for now */
/* ------------------- Defines for ROM tables -------------------------------- */
#if defined (FOR_FRENCH)
#define CAP_TABLE_NUM_LET 1
#define CAP_TABLE_NUM_VAR 1
#elif defined (FOR_GERMAN)
#define CAP_TABLE_NUM_LET 30
#define CAP_TABLE_NUM_VAR 9
#elif defined (FOR_INTERNATIONAL)
#define CAP_TABLE_NUM_LET 1
#define CAP_TABLE_NUM_VAR 1
#elif defined (FOR_SWED)
#define CAP_TABLE_NUM_LET 29
#define CAP_TABLE_NUM_VAR 9
#else
#define CAP_TABLE_NUM_LET 26
#define CAP_TABLE_NUM_VAR 9
#endif
/* -------------------------- Types definitions ------------------------------ */
typedef _UCHAR cap_table_type[CAP_TABLE_NUM_LET][CAP_TABLE_NUM_VAR];
typedef _UCHAR dti_xrt_type[XT_COUNT][XT_COUNT/2];/* Reference XR Corr table */
typedef dti_xrt_type _PTR p_dti_xrt_type;
typedef struct { /* Header of DTI file */
_CHAR object_type[DTI_ID_LEN]; /* Type file (now DTI1) */
_CHAR type[DTI_ID_LEN]; /* Type of DTI (EngM, EngP..) */
_CHAR version[DTI_ID_LEN]; /* Version number */
_ULONG dte_offset; /* File offset of DTE part */
_ULONG dte_len; /* Length of DTE part of data */
_ULONG dte_chsum; /* Checksum of DTE part */
_ULONG xrt_offset; /* File offset of XRT part */
_ULONG xrt_len; /* Length of XRT part of data */
_ULONG xrt_chsum; /* Checksum of XRT part */
_ULONG pdf_offset; /* Start of PDF part in DTI */
_ULONG pdf_len; /* Length of PDF part */
_ULONG pdf_chsum; /* ChekSum of PDF part */
_ULONG pict_offset; /* Offset of pictures from the beg of DTI file */
_ULONG pict_len; /* Length of pictures */
_ULONG pict_chsum; /* CheckSum of pictures */
} dti_header_type, _PTR p_dti_header_type;
typedef struct { /* DTI memory descriptor */
_CHAR dti_fname[DTI_FNAME_LEN]; /* File name of loaded DTI */
_CHAR object_type[DTI_ID_LEN]; /* Type file (now DTI1) */
_CHAR type[DTI_ID_LEN]; /* Type of DTI (EngM, EngP..) */
_CHAR version[DTI_ID_LEN]; /* Version number */
_ULONG h_dte; /* Handle of dte memory */
p_UCHAR p_dte; /* Pointer to locked dte mem */
_ULONG h_ram_dte; /* Handle of dte memory */
p_UCHAR p_ram_dte; /* Pointer to RAM dte addresses */
_ULONG dte_chsum; /* CheckSum of dte memory */
_ULONG h_vex; /* Handle of vex learning buffer */
p_UCHAR p_vex; /* Pointer of vex learning buffer */
_ULONG h_xrt; /* Handle of reference xrtabl */
p_UCHAR p_xrt; /* Pointer to locked xrtabl */
_ULONG xrt_chsum; /* CheckSum of xrtabl memory */
_ULONG h_pdf; /* Same for pdf */
p_UCHAR p_pdf;
p_UCHAR p_ram_pdf;
_ULONG pdf_chsum;
_ULONG h_pict; /* Same for pictures */
p_UCHAR p_pict;
p_UCHAR p_ram_pict;
_ULONG pict_chsum;
// #if HWR_SYSTEM != MACINTOSH
// #define LRM_FNAME_LEN 128
//
// _CHAR szLrmName[LRM_FNAME_LEN];
// _BOOL bLoadLRM;
// _BOOL bSaveLRM;
// #endif /*HWR_SYSTEM != MACINTOSH*/
} dti_descr_type, _PTR p_dti_descr_type;
#if DTI_COMPRESSED // ------------- Compressed DTI header -____--------------
typedef struct {
_ULONG len;
_USHORT sym_index[256];
_UCHAR xt_palette[DTI_XT_PALETTE_SIZE][XT_COUNT];
_UCHAR xz_palette[DTI_XZ_PALETTE_SIZE][XZ_COUNT];
_UCHAR xh_palette[DTI_XH_PALETTE_SIZE][XH_COUNT];
_UCHAR xs_palette[DTI_XS_PALETTE_SIZE][XS_COUNT];
_UCHAR xo_palette[DTI_XO_PALETTE_SIZE][XO_COUNT];
} dte_index_type, _PTR p_dte_index_type;
typedef struct { /* Prototype XR element definition */
_UCHAR type; /* Temp: main type definition */
// _UCHAR height; /* Temp: main h of xr */
_UCHAR attr; /* Attributes (flag bits) */
_UCHAR penl; /* Penalty value for element */
_UCHAR xtc; /* Type(64) Line of XR corr vaues */
_UCHAR xhc; /* Height(16) Line of H corr values */
_UCHAR xsc; /* Shift(16) Line of S corr values */
_UCHAR xzc; /* Size(16) Line of Z corr vaues */
_UCHAR xoc; /* Orientation(16) of O corr values */
} xrp_type, _PTR p_xrp_type;
typedef struct { /* Header of prototype in DTI */
_UCHAR nx_and_vex; /* Num xrs and VarExtraInfo */
_UCHAR veis; /* Additional VEXs */
_UCHAR pos; /* Box relative position */
_UCHAR size; /* Box relative size */
xrp_type xrs[1]; /* Prototype XRs */
} dte_var_header_type, _PTR p_dte_var_header_type;
typedef struct { /* Header of symbol in DTI */
_UCHAR num_vars; /* Number of variants of sym */
_UCHAR loc_vs_border; /* Sym location vs border */
_UCHAR let; /* Temp: symbol itself */
_UCHAR language; /* Temp: language of symbol */
} dte_sym_header_type, _PTR p_dte_sym_header_type;
#else // ------------- Not compressed DTI header ----------------------------
typedef _ULONG let_table_type[256]; /* Header of DTE (sym loc table) */
typedef let_table_type _PTR p_let_table_type;
typedef struct { /* Header of symbol in DTI */
_UCHAR num_vars; /* Number of variants of sym */
_UCHAR loc_vs_border; /* Sym location vs border */
_UCHAR let; /* Temp: symbol itself */
_UCHAR language; /* Temp: language of symbol */
_UCHAR var_lens[DTI_MAXVARSPERLET]; /* Array of var lens */
_UCHAR var_vexs[DTI_MAXVARSPERLET]; /* Array of VarExtraInfo's */
_UCHAR var_veis[DTI_MAXVARSPERLET]; /* Array of Additional VEXs */
_UCHAR var_pos[DTI_MAXVARSPERLET]; /* Array of Additional VEXs */
_UCHAR var_size[DTI_MAXVARSPERLET]; /* Array of Additional VEXs */
} dte_sym_header_type, _PTR p_dte_sym_header_type;
typedef struct { /* Prototype XR element definition */
_UCHAR type; /* Temp: main type definition */
_UCHAR height; /* Temp: main h of xr */
_UCHAR attr; /* Attributes (flag bits) */
_UCHAR penl; /* Penalty value for element */
_UCHAR xtc[DTI_XTB_SIZE]; /* Type(64) Line of XR corr vaues */
_UCHAR xhc[DTI_XHB_SIZE]; /* Height(16) Line of H corr values */
_UCHAR xsc[DTI_XSB_SIZE]; /* Shift(16) Line of S corr values */
_UCHAR xzc[DTI_XZB_SIZE]; /* Size(16) Line of Z corr vaues */
_UCHAR xoc[DTI_XOB_SIZE]; /* Orientation(16) of O corr values */
} xrp_type, _PTR p_xrp_type;
#endif // ------------- Not compressed DTI header ----------------------------
typedef struct {
_USHORT len; /* length of groups' descriptions */
_UCHAR symbol; /* ASCII code of symbol */
_UCHAR num_groups; /* number of groups */
/* groups are placed after this header */
} pict_symb_header_type, _PTR p_pict_symb_header_type;
typedef struct {
_USHORT len; /* length of pictures' descriptions */
_UCHAR groupno; /* number of group */
_UCHAR num_pictures; /* number of groups */
/* pictures are placed after this header */
} pict_group_header_type, _PTR p_pict_group_header_type;
typedef struct {
_USHORT len; /* length of pictures' descriptions */
/* traces are placed after this header */
} pict_picture_header_type, _PTR p_pict_picture_header_type;
typedef struct {
_UCHAR x;
_UCHAR y;
} pict_point_type, _PTR p_pict_point_type;
typedef _UCHAR dte_vex_type[DTI_NUMSYMBOLS][DTI_MAXVARSPERLET];/* Type for learning vex buffer */
typedef dte_vex_type _PTR p_dte_vex_type; /* Type for learning vex buffer */
/* -------------------------- Prototypes ------------------------------------- */
#ifdef DTE_CONVERTER
#define dti_load dti_load_2
#define dti_unload dti_unload_2
#define dti_save dti_save_2
#define dti_lock dti_lock_2
#define dti_unlock dti_unlock_2
#define LetXrLength LetXrLength_2
#define GetNumVarsOfChar GetNumVarsOfChar_2
#define GetVarOfChar GetVarOfChar_2
#define GetVarLenOfChar GetVarLenOfChar_2
#define GetVarVex GetVarVex_2
#define GetVarExtra GetVarExtra_2
#define SetVarVex SetVarVex_2
#define SetDefVexes SetDefVexes_2
#define SetVarCounter SetVarCounter_2
#define GetVarGroup GetVarGroup_2
#define OSToRec OSToRec_2
#define RecToOS RecToOS_2
#endif // DTE_CONVERTER
_INT dti_load(p_CHAR dtiname, _INT what_to_load, p_VOID _PTR dp);
_INT dti_unload(p_VOID _PTR dp);
_INT dti_save(p_CHAR fname, _INT what_to_save, p_VOID dp);
_INT dti_lock(p_VOID dti_ptr);
_INT dti_unlock(p_VOID dti_ptr);
//#if PG_DEBUG
//_VOID LoadLRMIfAny( p_dti_descr_type dti_descr,
// _CHAR szLrmName[LRM_FNAME_LEN],
// _BOOL bLoadLRM, _BOOL bSaveLRM );
//#endif /*PG_DEBUG*/
_VOID LetXrLength(p_UCHAR min, p_UCHAR max, _SHORT let, _VALUE hdte);
_INT CheckVarActive(_UCHAR chIn, _UCHAR nv, _UCHAR ww, p_VOID dtp);
_INT GetNumVarsOfChar(_UCHAR chIn, p_VOID dtp);
_INT GetVarOfChar(_UCHAR chIn, _UCHAR nv, p_xrp_type xvb, p_VOID dtp);
_INT GetVarLenOfChar(_UCHAR chIn, _UCHAR nv, p_VOID dtp);
_INT GetVarVex(_UCHAR chIn, _UCHAR nv, p_VOID dtp);
_INT GetVarExtra(_UCHAR chIn, _UCHAR nv, p_VOID dtp);
_INT SetVarVex(_UCHAR chIn, _UCHAR nv, _UCHAR vex, p_VOID dtp);
_INT SetDefVexes(p_VOID dtp);
_INT SetVarCounter(_UCHAR chIn, _UCHAR nv, _UCHAR cnt, p_VOID dtp);
_INT GetVarGroup(_UCHAR chIn, _UCHAR nv, p_VOID dtp);
_INT GetPairCapGroup(_UCHAR let, _UCHAR groupNum, _UCHAR EnableVariantSet);
_INT SetDefCaps(p_VOID dtp);
_INT SetVarCap(_UCHAR chIn, _UCHAR nv, _UCHAR cap, p_VOID dtp);
_INT GetVarCap(_UCHAR chIn, _UCHAR nv, p_VOID dtp);
_INT GetVarRewcapAllow(_UCHAR chIn, _UCHAR nv, p_VOID dtp);
_INT GetAutoCorr(_UCHAR chIn, _UCHAR nv, p_VOID dtp);
_INT GetShiftCorr(_UCHAR chIn, _UCHAR nv,_UCHAR nXr, _UCHAR nIn, p_VOID dtp);
_INT GetSymDescriptor(_UCHAR sym, _UCHAR numv, p_dte_sym_header_type _PTR psfc, p_VOID dtp);
_INT GetVarPosSize(_UCHAR chIn, _UCHAR nv, p_VOID dtp);
#if DTI_COMPRESSED
_INT GetSymIndexTable(_UCHAR sym, _UCHAR numv, p_dte_index_type _PTR pi, p_VOID dtp);
_INT GetVarHeader(_UCHAR sym, _UCHAR var_num, p_dte_var_header_type _PTR ppvh, p_VOID dtp);
#endif
/* ---------------- Definitions for OS to REC conversions ------------------ */
#ifdef __cplusplus
extern "C" {
#endif
_INT OSToRec(_INT sym);
_INT RecToOS(_INT sym);
_INT MacToOS(_INT sym);
_INT OSToMac(_INT sym);
#ifdef __cplusplus
}
#endif
/* ------------------------------------------------------------------------- */
/* For FOR_INTERNATIONAL versions: changes the os-rec table */
/* and charset used: */
#define TBL_AMERICAN 0
#define TBL_FOR_INTERNATIONAL 1
#define TBL_INTER_NODIACR 2
_VOID SetOsRecTableAndCharSet( _INT interTable );
_INT SetFOR_INTERNATIONALCharSet( _INT interTable, p_VOID rcv, p_VOID xrd );
/* --------------------------------------------------------------------------- */
#endif
/* ************************************************************************ */
/* * End Of All ... * */
/* ************************************************************************ */