#ifndef STROKA1_H_INC #define STROKA1_H_INC #include "hwr_sys.h" #include "ams_mg.h" #include "lowlevel.h" #include "calcmacr.h" #include "def.h" #include "low_dbg.h" #if PG_DEBUG #include "pg_debug.h" #endif #define MAX_NUM_EXTR 100 #define NUM_EXTR_IN_SHOULD 10 #define MIN_STR_HEIGHT 12 #define NORM 1 #define HOR_STR 2 #define T_MIN 3 #define PNT 4 #define I_MIN 5 #define S_MIN 6 #define O_MAX 61 #define E_MAX 62 #define E_MIN 63 #define UML 7 #define PUNC 8 #define BEG_MAX 9 #define END_MIN 10 #define BEG_MIN 11 #define END_MAX 12 #define TAIL_MIN 13 #define GAP_LEFT_UP 15 #define GAP_LEFT_DOWN 16 #define GAP_RIGHT_UP 17 #define GAP_RIGHT_DOWN 18 #define GLITCH_UP 20 #define GLITCH_DOWN 30 #define DBL_GLITCH_UP 40 #define DBL_GLITCH_DOWN 50 #define TRP_GLITCH_UP 60 #define TRP_GLITCH_DOWN 70 #define ON_LINE 100 #define SUB_SCRIPT 101 #define SUPER_SCRIPT 102 #define INSIDE_LINE 103 #define NARROW_LINE 104 #define RET_ON_LINE 110 #define NOT_ON_LINE 111 #define TOO_WIDE 1 #define STR_TOO_NARROW -1 #define COM 201 #define STRT 202 #define HOR 203 #define OPER 204 #define FOUR_TYPE 205 #define SLASH 206 #define L_BRKT 207 #define R_BRKT 208 #define NOT_BRKT 10 #define UP 0 #define DOWN 1 #define USE_WORDSPLIT_PARMS 1 #ifdef FOR_GERMAN ROM_DATA_EXTERNAL _SCHAR TG1[3][2][2]; ROM_DATA_EXTERNAL _SCHAR TG2[3][2][2]; ROM_DATA_EXTERNAL _SCHAR H1[3][2][2]; ROM_DATA_EXTERNAL _SCHAR H2[3][2][2]; #else ROM_DATA_EXTERNAL _SCHAR TG1[3][2][2]; ROM_DATA_EXTERNAL _SCHAR TG2[3][2][2]; ROM_DATA_EXTERNAL _SCHAR H1[3][2][2]; ROM_DATA_EXTERNAL _SCHAR H2[3][2][2]; #endif //const static _LONG TG1=45/*50*/; //01_31 //const static _LONG TGB=35;//50; 02_24 //const static _LONG TGE1=50; //const static _LONG TGE2=35;//40; 02_17 //const static _LONG H1=32/*40*/; //01_25b //const static _LONG HB1=34;//48; 02_17 //const static _LONG HB2=37;//48; 02_23 //const static _LONG HB3=48; //const static _LONG HE1=50; //const static _LONG HE2=47; //const static _LONG D1=57;///*55*/ //01_31 //const static _LONG DB=75; ///*45 40*/ //01_24b //const static _LONG DB2=55; //const static _LONG DE1=35; //const static _LONG DE2=73;///*62 60*/ /*57*/ //02_01 //const static _LONG H2=10; ROM_DATA_EXTERNAL _SCHAR CS; typedef struct { _SHORT susp; _SHORT x; _SHORT y; _SHORT i; _SHORT shift; p_SPECL pspecl; } EXTR, _PTR p_EXTR ; _INT extract_all_extr(low_type _PTR D, _UCHAR TYPE, p_EXTR line_extr, p_INT pn_all_extr,p_INT pn_extr,p_SHORT pshift); _INT extract_num_extr(low_type _PTR D, _UCHAR TYPE, p_EXTR line_extr, p_INT p_all_extr); _INT classify_strokes(low_type _PTR D,_INT med_ampl,_INT max_ampl, _INT n_ampl,p_INT pt_height,p_INT pft_height,p_BOOL psep_let); _INT classify_num_strokes(low_type _PTR D, p_INT pmed_ampl); _INT extract_ampl(low_type _PTR D,p_SHORT ampl,p_INT pn_ampl); _INT calc_mediana(p_SHORT array, _INT n_arg); _BOOL hor_stroke(p_SPECL cur, p_SHORT x, p_SHORT y, _INT n_str); _BOOL is_i_point(low_type _PTR D,p_SPECL cur,_RECT stroke_box, _INT med_ampl); _BOOL is_umlyut(p_SPECL cur, _RECT stroke_box, _INT ibeg_str, _INT iend_str, p_SHORT x, p_SHORT y,_INT med_ampl); _INT curve_com_or_brkt(low_type _PTR D,p_SPECL pend,_INT ibeg_str, _INT iend_str,_INT C_str,_USHORT lmod); _BOOL com(low_type _PTR D,p_SPECL pend,_INT ibeg_str,_INT iend_str, _INT C_str); _BOOL str_com(_INT ibeg_str,_INT iend_str,p_SHORT x,p_SHORT y,_INT C_str); _BOOL pnt(_RECT box,_INT med_ampl); _UCHAR end_punct(low_type _PTR D,p_SPECL cur,_INT med_ampl); _UCHAR lead_punct(low_type _PTR D); _VOID sort_extr(p_EXTR extr,_INT n_extr); _VOID find_gaps_in_line(p_EXTR extr,_INT n_extr,_INT n_allextr, _INT med_ampl,_UCHAR type,_INT x_left,_INT x_right, p_SHORT bord_d,p_SHORT y,_BOOL sl,_BOOL strict); _VOID find_glitches_in_line(p_EXTR line_extr, _INT n_extr, _INT med_ampl, _UCHAR type, _INT x_left, _INT x_right, p_SHORT bord_d, p_SHORT x,p_SHORT y,_INT MAX_SHIFT,_BOOL sl,_BOOL strict); _VOID glitch_to_sub_max(low_type _PTR D,p_EXTR line_max, _INT n_line_max, _INT mid_ampl,_BOOL gl_down_left); _VOID glitch_to_inside(p_EXTR extr, _INT n_extr, _UCHAR type, p_SHORT y, _INT mid_ampl,_INT x_left,_INT x_right); _VOID glitch_to_super_min(p_EXTR line_min, _INT n_line_min,p_SHORT bord_d, _INT max_height,p_SHORT x,p_SHORT y,_BOOL gl_up_left); _BOOL sub_max_to_line(low_type _PTR D,p_EXTR line_max,p_INT pn_line_max, p_SHORT bord_d,_INT max_dist); _VOID super_min_to_line(p_EXTR line_min, _INT n_line_min, p_SHORT bord_d, _INT max_line_height,_INT mid_line_height, p_INT pn_super); _INT neibour_susp_extr(p_EXTR extr,_INT n_extr,_UCHAR type,p_SHORT bord_d, _INT ft_height); _VOID all_susp_extr(p_EXTR extr,_INT n_extr,_INT n_allextr,_UCHAR type,p_SHORT y, _INT base_ampl,_INT base_ampl_sure,_INT max_ampl, p_SHORT bord_d,_INT ft_height); _INT calc_ampl(EXTR extr, p_SHORT y,_UCHAR type); _VOID spec_neibour_extr(p_EXTR extr,_INT n_extr,_UCHAR type,_INT LINE_POS); _VOID ret_to_line(p_EXTR extr,_INT n_extr,_INT i,_INT ind); _BOOL delete_line_extr(p_EXTR line_extr, p_INT pn_extr,_INT MARK); _BOOL insert_line_extr(low_type _PTR D, p_SPECL cur, p_EXTR extr, p_INT pn_extr); _INT calc_average(p_SHORT array, _INT N); _SHORT point_of_smooth_bord(_INT cur_point,_INT n_extr,p_EXTR extr, low_type _PTR D,_INT should); _VOID smooth_d_bord(p_EXTR line_max,_INT n_line_max,low_type _PTR D, _INT should,p_SHORT bord_d); _VOID smooth_u_bord(p_EXTR line_min,_INT n_line_min,low_type _PTR D, _INT should,p_SHORT bord_u,p_SHORT bord_d); _BOOL straight_stroke(_INT ibeg, _INT iend, p_SHORT x, p_SHORT y,_INT C); _INT mid_other(p_EXTR extr,_INT n_extr,_INT i); _INT sign(_INT a, _INT b); _BOOL num_bord_correction(p_EXTR extr,p_INT pn_extr,_INT n_allextr, _UCHAR type,_INT med_ampl,p_SHORT bord_d,p_SHORT y); _BOOL bord_correction(low_type _PTR D,p_EXTR extr,p_INT pn_extr,_INT n_allextr, _UCHAR type,_INT step,_INT med_ampl,_INT mid_ampl, _INT max_ampl,_INT x_left,_INT x_right,_INT LINE_POS, _UCHAR pass,p_SHORT bord_d,_INT max_height,_INT ft_height, _BOOL gl_up_left,_BOOL gl_down_left #if PG_DEBUG ,p_UCHAR pn_call1 #endif ); _VOID del_tail_min(p_EXTR line_min,p_INT pn_line_min,p_SHORT y, p_SHORT bord_d,_UCHAR pass); _INT line_pos_mist(low_type _PTR D,_INT med_u_bord,_INT med_d_bord, _INT med_height,_INT n_line_min,_INT n_line_max, p_EXTR line_max,p_INT pUP_LINE_POS,p_INT pDOWN_LINE_POS, p_SHORT bord_u, p_SHORT bord_d, _UCHAR pass); _BOOL extrs_open(low_type _PTR D,p_SPECL cur,_UCHAR type,_INT num); _BOOL numbers_in_text(low_type _PTR D,p_SHORT bord_u,p_SHORT bord_d); _INT fill_i_point(p_SHORT i_point, low_type _PTR D); _INT calc_med_heights(low_type _PTR D,p_EXTR line_min,p_EXTR line_max, p_SHORT bord_u,p_SHORT bord_d,p_SHORT i_point, _INT n_line_min,_INT n_line_max,_INT n_x, p_INT pmed_height,p_INT pmed_u_bord,p_INT pmed_d_bord); _BOOL correct_narrow_segments(p_EXTR extr,p_INT pn_extr,p_SHORT bord_opp, _UCHAR type,_INT med_height,_INT max_height); _BOOL correct_narrow_ends(p_EXTR extr,p_INT pn_extr,p_EXTR extr_opp, _INT n_extr_opp,_INT height,_UCHAR type); #if PG_DEBUG _VOID DBG_picture1(p_EXTR line_extr, _INT n_line_extr, _RECT box, _INT step, _INT yd, p_UCHAR pn_call); _VOID DBG_picture2(p_EXTR extr, _INT n_extr, _INT MARK); _VOID DBG_picture3(low_type _PTR D, p_SHORT bord, p_UCHAR pn_call); //_VOID save_par(p_EXTR extr,_INT n_extr,_UCHAR type,_INT med_ampl, // p_SHORT bord_d); #endif _BOOL is_defis(low_type _PTR D,_INT n_str); _VOID SpecBord(low_type _PTR D,p_SHORT bord_d,p_SHORT bord_u, p_INT pmed_d_bord,p_INT pmed_u_bord,p_INT pmed_height, #if PG_DEBUG p_UCHAR pn_call3_u,p_UCHAR pn_call3_d, #endif p_INT pn_x,_BOOL defis,p_EXTR line_max,_INT n_line_max); /*********** AVP functions for filling border values in "rc" **********/ typedef _UCHAR cb_type[CB_NUM_VERTEX*2]; _INT FillRCNB(p_SHORT ip, _INT nip, low_type _PTR D, /* AVP */ p_SHORT bord_u, p_SHORT bord_d); _INT FillRCSpec( cb_type _PTR cb, low_type _PTR D ); #endif // #ifndef STROKA1_H_INC