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:
106
106
static void punctsign(cell **,cell **);
107
107
static void intval (cell *,cell *);
108
108
static void no_cut(cell *);
109
static INT dustpos(INT,cell *);
109
static int16_t dustpos(int16_t,cell *);
110
110
#ifdef PUNCT_CORRECTION
111
//static INT exist_prev_next(cell *c,INT *dif1,INT *dif2);
112
//static INT get_dust_status(cell *c,BYTE *dust_st);
113
//static INT dust_pos_new(cell *);
114
INT is_dash(cell *c);
115
INT is_dust_2(cell *c);
117
INT is_point_stop(cell *c);
111
//static int16_t exist_prev_next(cell *c,int16_t *dif1,int16_t *dif2);
112
//static int16_t get_dust_status(cell *c,uchar *dust_st);
113
//static int16_t dust_pos_new(cell *);
114
int16_t is_dash(cell *c);
115
int16_t is_dust_2(cell *c);
116
int16_t is_dust(cell *);
117
int16_t is_point_stop(cell *c);
119
static INT chkquot(INT,INT,cell *);
120
static INT chkstar(INT,INT,cell *);
121
static INT chkdotcom(INT,INT,cell *);
122
static INT chkdash(INT,INT,cell *);
123
static INT chkplus(INT,INT,cell *);
124
static INT chkslash(INT,INT,cell *);
125
static INT chkcircle(INT,INT,cell *);
126
static INT chkquock(INT,INT,cell *);
127
static INT chkquocks(INT,INT,cell *);
128
static INT contain(cell *new, cell *old);
119
static int16_t chkquot(int16_t,int16_t,cell *);
120
static int16_t chkstar(int16_t,int16_t,cell *);
121
static int16_t chkdotcom(int16_t,int16_t,cell *);
122
static int16_t chkdash(int16_t,int16_t,cell *);
123
static int16_t chkplus(int16_t,int16_t,cell *);
124
static int16_t chkslash(int16_t,int16_t,cell *);
125
static int16_t chkcircle(int16_t,int16_t,cell *);
126
static int16_t chkquock(int16_t,int16_t,cell *);
127
static int16_t chkquocks(int16_t,int16_t,cell *);
128
static int16_t contain(cell *new, cell *old);
129
129
cell *hide(cell *C);
131
131
static void czech_dt_glue_apostroph(); // 07.09.2000 E.P.
134
INT check_shevron(cell *c,INT flag_qual); //Alik
134
int16_t check_shevron(cell *c,int16_t flag_qual); //Alik
137
137
// kill temporary twin flags BAD+DUST for pass4
215
215
if (((c1->font|c1->font_new)&c_fp_it || italic) && memchr("dlEHIJMNSUZ1t6",l,14))
217
// Interference i_left_accent ~ �
217
// Interference i_left_accent ~ м
219
// ����������� ��� 07.09.2000 E.P.
219
// Конфликтный код 07.09.2000 E.P.
220
220
!is_baltic_language(language) && // 17.07.2001 E.P.
221
221
!is_turkish_language(language) && ( // 30.05.2002 E.P.
222
222
!is_cen_language(language) && l==i_left_accent ||
223
223
l==i_right_accent ) ||
225
// ���������� �����. 10.07.2001 E.P.
225
// Балтийские палки. 10.07.2001 E.P.
226
226
is_baltic_language(language) &&
228
228
l==II_bottom_accent || l==i_bottom_accent ||
229
229
l==l_bottom_accent
231
// �������� �����. 30.05.2002 E.P.
231
// Турецкие палки. 30.05.2002 E.P.
232
232
is_turkish_palka(l)
238
// if (memchr("���",(l=c1->vers[0].let),5)) Paul 10-14-96
239
if (memchr("����",(l=c1->vers[0].let),4))
238
// if (memchr("Ј’ђ",(l=c1->vers[0].let),5)) Paul 10-14-96
239
if (memchr("ѓЈ’ђ",(l=c1->vers[0].let),4))
241
if (memchr("�7",l,7))
241
if (memchr("г“7",l,7))
243
// if ((c1->font&c_fp_it || italic) && memchr("���16�",l,14))Paul 10-14-96
243
// if ((c1->font&c_fp_it || italic) && memchr("€ЌЏ16Ў",l,14))Paul 10-14-96
244
244
if (((c1->font|c1->font_new)&c_fp_it || italic) &&
245
!(memchr("����������",l,10) &&
245
!(memchr("Ђ„†Љ•–™љ›њ",l,10) &&
246
246
!is_russian_turkish_conflict(l) // 21.05.2002 E.P.
250
// Interference i_left_accent ~ �
250
// Interference i_left_accent ~ м
252
// ����������� ��� 07.09.2000 E.P.
252
// Конфликтный код 07.09.2000 E.P.
253
253
!is_baltic_language(language) && // 17.07.2001 E.P.
254
254
!is_turkish_language(language) && ( // 30.05.2002 E.P.
255
255
!is_cen_language(language) && l==i_left_accent
256
256
|| l==i_right_accent
259
// ���������� �����. 10.07.2001 E.P.
259
// Балтийские палки. 10.07.2001 E.P.
260
260
is_baltic_language(language) &&
262
262
l==II_bottom_accent || l==i_bottom_accent ||
263
263
l==l_bottom_accent
265
// �������� �����. 30.05.2002 E.P.
265
// Турецкие палки. 30.05.2002 E.P.
266
266
is_turkish_palka(l)
418
418
(c->flg&c_f_bad ||
419
419
c->vers[0].prob<PROBOK || // Oleg
420
420
memchr("ceo<>",c->vers[0].let,4) && c->vers[0].prob<PROBOK_ceo ||
421
language==LANG_RUSSIAN && memchr("������",c->vers[0].let,6) &&
421
language==LANG_RUSSIAN && memchr("Єўбэкн",c->vers[0].let,6) &&
422
422
c->vers[0].prob<PROBOK_ceo ||
423
language==LANG_RUSSIAN && memchr("��",c->vers[0].let,2) &&
423
language==LANG_RUSSIAN && memchr("ўн",c->vers[0].let,2) &&
424
424
c->stick_inc>300 && c->vers[0].prob<PROBOK_ceo+10 ||
425
language==LANG_RUSSIAN && memchr("���",c->vers[0].let,3) &&
425
language==LANG_RUSSIAN && memchr("ЁҐ®",c->vers[0].let,3) &&
426
426
c->vers[0].prob<PROBOK_ceo-20
427
427
) && c->h<=bl.ps && c->row+2>=bl.b2 && c->row+c->h-2<=bl.b3 &&
428
428
(r=chkquocks(bl.ps,2,c))!=0 && check_shevron(c,1)>=3)
1188
1188
///////////////////
1189
static INT chkdotcom(INT h,INT dp,cell *c)
1189
static int16_t chkdotcom(int16_t h,int16_t dp,cell *c)
1191
INT x,y,dt,cm,hc,wc,wm,i,j,k,ls,s;
1191
int16_t x,y,dt,cm,hc,wc,wm,i,j,k,ls,s;
1195
1195
if (snap_activity('e'))
1362
static INT chkquot(INT h,INT dp,cell *c)
1362
static int16_t chkquot(int16_t h,int16_t dp,cell *c)
1364
WORD ls,i,j,k,i1,j1,k1,min,l,s,r,lu,ru,ld,rd;
1364
uint16_t ls,i,j,k,i1,j1,k1,min,l,s,r,lu,ru,ld,rd;
1367
1367
if (snap_activity('e'))
1512
static INT chkplus(INT h,INT dp,cell *c)
1512
static int16_t chkplus(int16_t h,int16_t dp,cell *c)
1514
INT ls,i,j,l,r,x,y,lu,ru,ld,rd;
1514
int16_t ls,i,j,l,r,x,y,lu,ru,ld,rd;
1517
1517
if (snap_activity('e'))
1680
INT chkquocks2(cell*c,PBYTE r,INT h,INT w,INT d);
1681
static INT chkquocks(INT h,INT dp,cell *c)
1680
int16_t chkquocks2(cell*c,puchar r,int16_t h,int16_t w,int16_t d);
1681
static int16_t chkquocks(int16_t h,int16_t dp,cell *c)
1683
INT i,di,i1,i2,j,j1,j2,l,d,r;
1683
int16_t i,di,i1,i2,j,j1,j2,l,d,r;
1687
1687
if (dp==2 && 11*c->h>=4*h && 3*c->w>=2*c->h &&