2
2
Copyright (c) 1993-2008, Cognitive Technologies
5
����������� ��������� ��������������� � ������������� ��� � ���� ��������� ����,
6
��� � � �������� �����, � ����������� ��� ���, ��� ���������� ��������� �������:
8
* ��� ��������� ��������������� ��������� ���� ������ ���������� ���������
9
���� ����������� �� ��������� �����, ���� ������ ������� � �����������
11
* ��� ��������� ��������������� ��������� ���� � ������������ �/��� �
12
������ ����������, ������������ ��� ���������������, ������ �����������
13
��������� ���� ���������� �� ��������� �����, ���� ������ ������� �
14
����������� ����� �� ��������.
15
* �� �������� Cognitive Technologies, �� ����� �� ����������� �� �����
16
���� ������������ � �������� �������� ��������� �/��� �����������
17
���������, ���������� �� ���� ��, ��� ���������������� �����������
20
��� ��������� ������������� ����������� ��������� ���� �/��� ������� ������ "���
21
��� ����" ��� ������-���� ���� ��������, ���������� ���� ��� ���������������,
22
������� �������� ������������ �������� � ����������� ��� ���������� ����, �� ��
23
������������� ���. �� �������� ��������� ���� � �� ���� ������ ����, �������
24
����� �������� �/��� �������� �������������� ���������, �� � ���� ������ ��
25
��Ѩ� ���������������, ������� ����� �����, ���������, ����������� ���
26
������������� ������, ��������� � �������������� ��� ���������� ����������
27
������������� ������������� ��������� (������� ������ ������, ��� ������,
28
������� ���������, ��� ������ �/��� ������ �������, ���������� ��-�� ��������
29
������� ��� �/��� ������ ��������� �������� ��������� � ������� �����������,
30
�� �� ������������� ����� ��������), �� �� ������������� ���, ���� ���� �����
31
�������� ��� ������ ���� ���� �������� � ����������� ����� ������� � ������.
5
Разрешается повторное распространение и использование как в виде исходного кода,
6
так и в двоичной форме, с изменениями или без, при соблюдении следующих условий:
8
* При повторном распространении исходного кода должны оставаться указанное
9
выше уведомление об авторском праве, этот список условий и последующий
11
* При повторном распространении двоичного кода в документации и/или в
12
других материалах, поставляемых при распространении, должны сохраняться
13
указанная выше информация об авторском праве, этот список условий и
14
последующий отказ от гарантий.
15
* Ни название Cognitive Technologies, ни имена ее сотрудников не могут
16
быть использованы в качестве средства поддержки и/или продвижения
17
продуктов, основанных на этом ПО, без предварительного письменного
20
ЭТА ПРОГРАММА ПРЕДОСТАВЛЕНА ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ И/ИЛИ ДРУГИМИ ЛИЦАМИ "КАК
21
ОНА ЕСТЬ" БЕЗ КАКОГО-ЛИБО ВИДА ГАРАНТИЙ, ВЫРАЖЕННЫХ ЯВНО ИЛИ ПОДРАЗУМЕВАЕМЫХ,
22
ВКЛЮЧАЯ ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ, НО НЕ
23
ОГРАНИЧИВАЯСЬ ИМИ. НИ ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ И НИ ОДНО ДРУГОЕ ЛИЦО, КОТОРОЕ
24
МОЖЕТ ИЗМЕНЯТЬ И/ИЛИ ПОВТОРНО РАСПРОСТРАНЯТЬ ПРОГРАММУ, НИ В КОЕМ СЛУЧАЕ НЕ
25
НЕСЁТ ОТВЕТСТВЕННОСТИ, ВКЛЮЧАЯ ЛЮБЫЕ ОБЩИЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ ИЛИ
26
ПОСЛЕДОВАВШИЕ УБЫТКИ, СВЯЗАННЫЕ С ИСПОЛЬЗОВАНИЕМ ИЛИ ПОНЕСЕННЫЕ ВСЛЕДСТВИЕ
27
НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ (ВКЛЮЧАЯ ПОТЕРИ ДАННЫХ, ИЛИ ДАННЫЕ,
28
СТАВШИЕ НЕГОДНЫМИ, ИЛИ УБЫТКИ И/ИЛИ ПОТЕРИ ДОХОДОВ, ПОНЕСЕННЫЕ ИЗ-ЗА ДЕЙСТВИЙ
29
ТРЕТЬИХ ЛИЦ И/ИЛИ ОТКАЗА ПРОГРАММЫ РАБОТАТЬ СОВМЕСТНО С ДРУГИМИ ПРОГРАММАМИ,
30
НО НЕ ОГРАНИЧИВАЯСЬ ЭТИМИ СЛУЧАЯМИ), НО НЕ ОГРАНИЧИВАЯСЬ ИМИ, ДАЖЕ ЕСЛИ ТАКОЙ
31
ВЛАДЕЛЕЦ ИЛИ ДРУГОЕ ЛИЦО БЫЛИ ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ И ПОТЕРЬ.
33
33
Redistribution and use in source and binary forms, with or without modification,
34
34
are permitted provided that the following conditions are met:
75
74
#define AVOID_PRYSCH 3
77
76
/************** all function prototypes ***********************************/
78
INT u_around_bl_corner ( s_glue * );
79
INT n_around_ur_corner ( s_glue * );
77
int16_t u_around_bl_corner ( s_glue * );
78
int16_t n_around_ur_corner ( s_glue * );
80
79
void comp_row_col( s_glue * );
81
static void comp_parms( BYTE );
82
// static INT bottom_right_corner (PBYTE, BYTE, BYTE, BYTE);
83
static INT bottom_left_corner (PBYTE, BYTE, BYTE, BYTE);
84
static INT upper_right_corner (PBYTE, BYTE, BYTE, BYTE);
85
//static INT upper_left_corner (PBYTE, BYTE, BYTE, BYTE);
86
static BOOL is_italic();
80
static void comp_parms( uchar );
81
// static int16_t bottom_right_corner (puchar, uchar, uchar, uchar);
82
static int16_t bottom_left_corner (puchar, uchar, uchar, uchar);
83
static int16_t upper_right_corner (puchar, uchar, uchar, uchar);
84
//static int16_t upper_left_corner (puchar, uchar, uchar, uchar);
85
static Bool is_italic();
87
86
static void compare_corners_mass();
88
static void make_straight_abris (s_glue *, PBYTE, PBYTE);
89
static INT func_mode_val( PBYTE func, BYTE from, BYTE to);
90
static INT left_right_dist();
87
static void make_straight_abris (s_glue *, puchar, puchar);
88
static int16_t func_mode_val( puchar func, uchar from, uchar to);
89
static int16_t left_right_dist();
91
90
/*************************************************************************/
93
92
extern servBOX SBOX;
97
BYTE l_tab_shift[128]; // the tables of shifts ( avoiding italic
98
BYTE r_tab_shift[128]; // and oblique )
96
uchar l_tab_shift[128]; // the tables of shifts ( avoiding italic
97
uchar r_tab_shift[128]; // and oblique )
100
99
#define ST_PEN_NUM 5
101
static INT pen_for_staires[ST_PEN_NUM+1] = { 0, 14, 36, 60, 72, 120 };
100
static int16_t pen_for_staires[ST_PEN_NUM+1] = { 0, 14, 36, 60, 72, 120 };
102
101
#define LRD_PEN_NUM 7
103
static INT pen_for_left_right_dist[LRD_PEN_NUM+1] =
102
static int16_t pen_for_left_right_dist[LRD_PEN_NUM+1] =
104
103
{ 0, 0, 12, 46, 80, 120, 160, 220 };
105
static BYTE comp_h, un_code;
106
static BYTE num_st, beg_zone, end_zone;
107
static INT pen_u, pen_n;
108
static INT maxrow, maxcol, minrow, mincol;
104
static uchar comp_h, un_code;
105
static uchar num_st, beg_zone, end_zone;
106
static int16_t pen_u, pen_n;
107
static int16_t maxrow, maxcol, minrow, mincol;
113
void discrim_un( cell *GC, s_glue *GL, INT cod_let )
112
void discrim_un( cell *GC, s_glue *GL, int16_t cod_let )
117
116
memset ( l_tab_shift, 0, sizeof (l_tab_shift) );
118
117
memset ( r_tab_shift, 0, sizeof (r_tab_shift) );
120
pen_u = 0; pen_n = 0; un_code = (BYTE)cod_let;
119
pen_u = 0; pen_n = 0; un_code = (uchar)cod_let;
122
121
comp_row_col( GL ); // compute coordinates of the composed box
123
122
// check italic incline of the component
409
static INT left_right_dist()
408
static int16_t left_right_dist()
410
int16_t lmd, rmd, h14;
414
413
h14 = (comp_h >> 2);
415
lmd = func_mode_val( str_left, (BYTE)h14, (BYTE)(comp_h - h14));
414
lmd = func_mode_val( str_left, (uchar)h14, (uchar)(comp_h - h14));
416
415
lmd -= CONST_PLUS;
417
rmd = func_mode_val( str_right, (BYTE)h14, (BYTE)(comp_h - h14));
416
rmd = func_mode_val( str_right, (uchar)h14, (uchar)(comp_h - h14));
418
417
j = abs(lmd - rmd);
419
418
if ( j > LRD_PEN_NUM ) j = LRD_PEN_NUM;
420
419
return pen_for_left_right_dist[j];
423
static INT func_mode_val( PBYTE func, BYTE from, BYTE to)
422
static int16_t func_mode_val( puchar func, uchar from, uchar to)
429
428
memset ( counts, 0, sizeof( counts ) );