~ubuntu-branches/ubuntu/precise/cuneiform/precise

« back to all changes in this revision

Viewing changes to cuneiform_src/Kern/evn32/src/v0comprq.c

  • Committer: Bazaar Package Importer
  • Author(s): Jakub Wilk
  • Date: 2010-09-14 15:53:54 UTC
  • mto: (5.1.1 experimental)
  • mto: This revision was merged to the branch mainline in revision 6.
  • Revision ID: james.westby@ubuntu.com-20100914155354-i3uu2woc5aucphax
Tags: upstream-1.0.0+dfsg
Import upstream version 1.0.0+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
Copyright (c) 1993-2008, Cognitive Technologies
3
3
All rights reserved.
4
4
 
5
 
����������� ��������� ��������������� � ������������� ��� � ���� ��������� ����,
6
 
��� � � �������� �����, � ����������� ��� ���, ��� ���������� ��������� �������:
7
 
 
8
 
      * ��� ��������� ��������������� ��������� ���� ������ ���������� ���������
9
 
        ���� ����������� �� ��������� �����, ���� ������ ������� � �����������
10
 
        ����� �� ��������.
11
 
      * ��� ��������� ��������������� ��������� ���� � ������������ �/��� �
12
 
        ������ ����������, ������������ ��� ���������������, ������ �����������
13
 
        ��������� ���� ���������� �� ��������� �����, ���� ������ ������� �
14
 
        ����������� ����� �� ��������.
15
 
      * �� �������� Cognitive Technologies, �� ����� �� ����������� �� �����
16
 
        ���� ������������ � �������� �������� ��������� �/��� �����������
17
 
        ���������, ���������� �� ���� ��, ��� ���������������� �����������
18
 
        ����������.
19
 
 
20
 
��� ��������� ������������� ����������� ��������� ���� �/��� ������� ������ "���
21
 
��� ����" ��� ������-���� ���� ��������, ���������� ���� ��� ���������������,
22
 
������� �������� ������������ �������� � ����������� ��� ���������� ����, �� ��
23
 
������������� ���. �� �������� ��������� ���� � �� ���� ������ ����, �������
24
 
����� �������� �/��� �������� �������������� ���������, �� � ���� ������ ��
25
 
��Ѩ� ���������������, ������� ����� �����, ���������, ����������� ���
26
 
������������� ������, ��������� � �������������� ��� ���������� ����������
27
 
������������� ������������� ��������� (������� ������ ������, ��� ������,
28
 
������� ���������, ��� ������ �/��� ������ �������, ���������� ��-�� ��������
29
 
������� ��� �/��� ������ ��������� �������� ��������� � ������� �����������,
30
 
�� �� ������������� ����� ��������), �� �� ������������� ���, ���� ���� �����
31
 
�������� ��� ������ ���� ���� �������� � ����������� ����� ������� � ������.
 
5
Разрешается повторное распространение и использование как в виде исходного кода,
 
6
так и в двоичной форме, с изменениями или без, при соблюдении следующих условий:
 
7
 
 
8
      * При повторном распространении исходного кода должны оставаться указанное
 
9
        выше уведомление об авторском праве, этот список условий и последующий
 
10
        отказ от гарантий.
 
11
      * При повторном распространении двоичного кода в документации и/или в
 
12
        других материалах, поставляемых при распространении, должны сохраняться
 
13
        указанная выше информация об авторском праве, этот список условий и
 
14
        последующий отказ от гарантий.
 
15
      * Ни название Cognitive Technologies, ни имена ее сотрудников не могут
 
16
        быть использованы в качестве средства поддержки и/или продвижения
 
17
        продуктов, основанных на этом ПО, без предварительного письменного
 
18
        разрешения.
 
19
 
 
20
ЭТА ПРОГРАММА ПРЕДОСТАВЛЕНА ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ И/ИЛИ ДРУГИМИ ЛИЦАМИ "КАК
 
21
ОНА ЕСТЬ" БЕЗ КАКОГО-ЛИБО ВИДА ГАРАНТИЙ, ВЫРАЖЕННЫХ ЯВНО ИЛИ ПОДРАЗУМЕВАЕМЫХ,
 
22
ВКЛЮЧАЯ ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ, НО НЕ
 
23
ОГРАНИЧИВАЯСЬ ИМИ. НИ ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ И НИ ОДНО ДРУГОЕ ЛИЦО, КОТОРОЕ
 
24
МОЖЕТ ИЗМЕНЯТЬ И/ИЛИ ПОВТОРНО РАСПРОСТРАНЯТЬ ПРОГРАММУ, НИ В КОЕМ СЛУЧАЕ НЕ
 
25
НЕСЁТ ОТВЕТСТВЕННОСТИ, ВКЛЮЧАЯ ЛЮБЫЕ ОБЩИЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ ИЛИ
 
26
ПОСЛЕДОВАВШИЕ УБЫТКИ, СВЯЗАННЫЕ С ИСПОЛЬЗОВАНИЕМ ИЛИ ПОНЕСЕННЫЕ ВСЛЕДСТВИЕ
 
27
НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ (ВКЛЮЧАЯ ПОТЕРИ ДАННЫХ, ИЛИ ДАННЫЕ,
 
28
СТАВШИЕ НЕГОДНЫМИ, ИЛИ УБЫТКИ И/ИЛИ ПОТЕРИ ДОХОДОВ, ПОНЕСЕННЫЕ ИЗ-ЗА ДЕЙСТВИЙ
 
29
ТРЕТЬИХ ЛИЦ И/ИЛИ ОТКАЗА ПРОГРАММЫ РАБОТАТЬ СОВМЕСТНО С ДРУГИМИ ПРОГРАММАМИ,
 
30
НО НЕ ОГРАНИЧИВАЯСЬ ЭТИМИ СЛУЧАЯМИ), НО НЕ ОГРАНИЧИВАЯСЬ ИМИ, ДАЖЕ ЕСЛИ ТАКОЙ
 
31
ВЛАДЕЛЕЦ ИЛИ ДРУГОЕ ЛИЦО БЫЛИ ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ И ПОТЕРЬ.
32
32
 
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:
57
57
 
58
58
#include "struct.h"
59
59
#include "recdefs.h"
60
 
extern Word8 lpool[];
61
 
extern Word16 lpool_lth;
 
60
extern uchar lpool[];
 
61
extern uint16_t lpool_lth;
62
62
#include<string.h>
63
63
//#include"excdefs.h"
64
64
#include"lang_def.h"
65
65
#include "ligas.h"      // 04.06.2002 E.P.
66
66
#include "ccomdefs.h"
67
67
//------------------ FROM DIF.DLL
68
 
extern Word16 DIF_typ_thin_stick(Word8 *lin,Int16 dy,Int16 dx);
 
68
extern uint16_t DIF_typ_thin_stick(uchar *lin,int16_t dy,int16_t dx);
69
69
//------------------ Common working fields
70
70
extern c_comp wcomp;
71
 
extern Word8 records_change;
72
 
extern Int16 evfulln;
 
71
extern uchar records_change;
 
72
extern int16_t evfulln;
73
73
extern version *start_rec, *rec_ptr;
74
74
static version records[128];
75
 
extern Word8 work_raster[];
76
 
extern  Word8 language;
 
75
extern uchar work_raster[];
 
76
extern  uchar language;
77
77
 
78
78
//------------------ Common definitions
79
79
#define PURE_DUST_HEIGHT 3
80
80
#define PURE_DUST_WIDTH  3
81
81
 
82
82
//------------------ Common functions definitions
83
 
Word16 events_recog();
84
 
Word16 events_recog_rt();
85
 
Word16 sort_events_vers();
 
83
uint16_t events_recog();
 
84
uint16_t events_recog_rt();
 
85
uint16_t sort_events_vers();
86
86
void pidx_crit();
87
87
void save_wcomp();
88
 
//void sort_events_box(version *p, Word16 n);
89
 
Int16 stick_w_4();
 
88
//void sort_events_box(version *p, uint16_t n);
 
89
int16_t stick_w_4();
90
90
 
91
91
//------------------ Internal functions
92
 
static void setvers (Word8* p);
 
92
static void setvers (uchar* p);
93
93
void recog_one();
94
94
 
95
95
//------------------ Recognition cases
121
121
#define cs_comma_dot            38      // determined as comma or dot by
122
122
                                        // comma_dot criterium
123
123
 
124
 
static Word8 v_dash_defis[] = {ch_punct,cs_dash_defis_size,0};
125
 
static Word8 v_side_punct[] = {ch_punct,cs_punct_sw_size,0};
126
 
static Word8 v_up_punct[] = {ch_punct,cs_punct_up_size,0};
127
 
static Word8 v_sq_punct[] = {ch_punct,cs_punct_sq_size,0};
128
 
//static BYTE v_small_stick[] = {ch_letter,cs_stick_by_size,
 
124
static uchar v_dash_defis[] = {ch_punct,cs_dash_defis_size,0};
 
125
static uchar v_side_punct[] = {ch_punct,cs_punct_sw_size,0};
 
126
static uchar v_up_punct[] = {ch_punct,cs_punct_up_size,0};
 
127
static uchar v_sq_punct[] = {ch_punct,cs_punct_sq_size,0};
 
128
//static uchar v_small_stick[] = {ch_letter,cs_stick_by_size,
129
129
//              'l','i','I','!','j','f','t',0};
130
 
//static BYTE v_stick_by_size[] = {ch_letter,cs_stick_by_size,
 
130
//static uchar v_stick_by_size[] = {ch_letter,cs_stick_by_size,
131
131
//              'l','i','I','!','j',0};
132
 
//static BYTE v_temp_one_line[] = {ch_stick,cs_one_line_ltr,0};
133
 
//static BYTE v_comma_dot[] = {ch_punct,cs_comma_dot,0};
 
132
//static uchar v_temp_one_line[] = {ch_stick,cs_one_line_ltr,0};
 
133
//static uchar v_comma_dot[] = {ch_punct,cs_comma_dot,0};
134
134
 
135
 
static Word32 check_iIl1();     // 04.06.2002 E.P.
136
 
static Word32 check_letter(Word8 let); // 18.06.2002 E.P.
 
135
static uint32_t check_iIl1();   // 04.06.2002 E.P.
 
136
static uint32_t check_letter(uchar let); // 18.06.2002 E.P.
137
137
 
138
138
 
139
139
void recog_save_maden()
150
150
}
151
151
 
152
152
#define s_ans(a) { rec_ptr->let = a; rec_ptr->prob = 254; rec_ptr++; }
153
 
Int16 stick_w_4()
 
153
int16_t stick_w_4()
154
154
{
155
 
 Int16 answ;
 
155
 int16_t answ;
156
156
 answ = DIF_typ_thin_stick(lpool,wcomp.h,wcomp.w);
157
157
 rec_ptr = start_rec;
158
158
 if (answ == 0) goto ret;
169
169
 if (rec_ptr - start_rec < 7)   s_ans('j');
170
170
 s_ans('l'); s_ans('i'); s_ans('I');
171
171
 
172
 
 // ���������� �������� �����. 04.06.2002 E.P.
 
172
 // Добавление турецких палок. 04.06.2002 E.P.
173
173
 if(language==LANG_TURKISH)
174
174
         {
175
175
         // 18.06.2002 E.P.
192
192
extern Bool32  enable_save_stat;
193
193
void recog_one()
194
194
{
195
 
 Int16 nvers;
 
195
 int16_t nvers;
196
196
 
197
197
 //// Reset     /////
198
198
 wcomp.cs = 0;
243
243
    goto not_letter;
244
244
 if (nvers == 1) goto perfect_letter;
245
245
 
246
 
 // ���������� �������� �����. 04.06.2002 E.P.
 
246
 // Добавление турецких палок. 04.06.2002 E.P.
247
247
 if(language==LANG_TURKISH &&
248
248
                nvers < VERS_IN_CELL - 2 &&
249
249
                check_iIl1() >= 3
275
275
 wcomp.type = ch_merge; wcomp.cs = cs_net_cut; return;
276
276
}
277
277
 
278
 
static void setvers(Word8* p)
 
278
static void setvers(uchar* p)
279
279
{
280
280
 version *v = start_rec;
281
281
 wcomp.type = *p++; wcomp.cs = *p++;
283
283
 wcomp.nvers = (rec_ptr = v) - start_rec;
284
284
}
285
285
 
286
 
Word32 recog_letter()
 
286
uint32_t recog_letter()
287
287
{
288
288
 recog_one();
289
289
 return wcomp.nvers;
290
290
}
291
291
 
292
292
 
293
 
Word32 recog_letter_lp(/*ExtComponent*/CCOM_comp *ec, Word8 * lp,Word16 lth)
 
293
uint32_t recog_letter_lp(/*ExtComponent*/CCOM_comp *ec, uchar * lp,uint16_t lth)
294
294
{
295
295
memset(&wcomp,0,sizeof(wcomp));
296
296
wcomp.h=      ec->h;
309
309
}
310
310
 
311
311
 
312
 
Word32 check_iIl1()
 
312
uint32_t check_iIl1()
313
313
{
314
 
// ������ ���������� �������� ������ iIl1
 
314
// Выдает количество палочных версий iIl1
315
315
version *p = start_rec;
316
316
long n=0;
317
317
 
326
326
return n;
327
327
}
328
328
 
329
 
Word32 check_letter(Word8 let)
 
329
uint32_t check_letter(uchar let)
330
330
{
331
 
// ��������� ������� ������. 18.06.2002 E.P.
 
331
// Проверяет наличие версии. 18.06.2002 E.P.
332
332
version *p = start_rec;
333
333
 
334
334
while ( p < rec_ptr )