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

« back to all changes in this revision

Viewing changes to cuneiform_src/Kern/rstr/src/dms.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:
55
55
*/
56
56
 
57
57
/*
58
 
  ������������������������������������������������������������������
59
 
  ��                                                              ��
60
 
  ��     Copyright (C) 1990 Cognitive Technology Corporation.     ��
61
 
  ��     All rights reserved. This program is proprietary and     ��
62
 
  ��     a trade secret of Cognitive Technology Corporation.      ��
63
 
  ��                                                              ��
64
 
  ������������������������������������������������������������������
 
58
  ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ
 
59
  ЫЫ                                                              ЫЫ
 
60
  ЫЫ     Copyright (C) 1990 Cognitive Technology Corporation.     ЫЫ
 
61
  ЫЫ     All rights reserved. This program is proprietary and     ЫЫ
 
62
  ЫЫ     a trade secret of Cognitive Technology Corporation.      ЫЫ
 
63
  ЫЫ                                                              ЫЫ
 
64
  ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ
65
65
*/
66
66
 
67
67
/*********************************************************************/
72
72
 
73
73
#include <stdlib.h>
74
74
#include <string.h>
75
 
#include "nt_types.h"
76
75
#include "struct.h"
77
76
#include "cuthdr.h"
78
77
#include "dmconst.h"
79
78
#include "func.h"
80
79
 
81
80
extern servBOX SBOX;
82
 
extern INT best_answer_BOX;
 
81
extern int16_t best_answer_BOX;
83
82
 
84
 
void min3(v_val *a, BYTE b, v_val *c)
 
83
void min3(v_val *a, uchar b, v_val *c)
85
84
 {
86
85
Z = &string;
87
86
// insert value 'b' in proper place of vector 'a'; vector 'c' -- target
97
96
 c->v1 = a->v1;
98
97
 }
99
98
 
100
 
INT compare_vect(v_val *a, v_val *b)
 
99
int16_t compare_vect(v_val *a, v_val *b)
101
100
 {
102
 
 INT x;
103
 
 INT a1;
104
 
 INT a2, a3;
105
 
 INT b1;
106
 
 INT b2, b3;
 
101
 int16_t x;
 
102
 int16_t a1;
 
103
 int16_t a2, a3;
 
104
 int16_t b1;
 
105
 int16_t b2, b3;
107
106
 
108
107
 x = (a3 = a->v3)-(b3=b->v3);
109
108
 if (x)
136
135
 
137
136
void save_vers(cell *C, SVERS *S)
138
137
 {
139
 
 INT i, nn;
 
138
 int16_t i, nn;
140
139
 version *s, *d;
141
140
 S->nvers  = C->nvers;
142
141
 S->source = C->recsource;
143
142
 S->pos = C->cpos;
144
 
 S->flg = (CHAR)C->flg;
 
143
 S->flg = (char)C->flg;
145
144
 S->broken_II = C->broken_II;
146
145
 S->cg_flag_fine  = C->cg_flag_fine;
147
146
 S->accent_leader = C->accent_leader;
152
151
 S->nClust        = C->nClust;   // Nick
153
152
 nn=S->nvers;
154
153
 if (nn==0)  nn = 1;
155
 
 for (i=0, s=&(C->vers), d=&(S->vers); i<nn; i++, d++, s++) //AK 04.03.97 ? for address
 
154
 for (i=0, s=(version*)&(C->vers), d=(version*)&(S->vers); i<nn; i++, d++, s++) //AK 04.03.97 ? for address
156
155
 {
157
156
   d->let = s->let;
158
157
   d->prob = s->prob;
165
164
 
166
165
void rest_vers(cell *C, SVERS *S)
167
166
{
168
 
 INT i, nn;
 
167
 int16_t i, nn;
169
168
 version *s, *d;
170
169
 C->nvers = S->nvers;
171
170
 C->flg   = S->flg;
182
181
 
183
182
 nn=S->nvers;
184
183
 if (nn==0) nn=1;
185
 
 for (i=0, d=&(C->vers), s=&(S->vers); i<nn; i++, d++, s++)  //AK 04.03.97 ? for address
 
184
 for (i=0, d=(version*)&(C->vers), s=(version*)&(S->vers); i<nn; i++, d++, s++)  //AK 04.03.97 ? for address
186
185
 {
187
186
  d->let = s->let;
188
187
  d->prob = s->prob;
194
193
 adjust_links(C);
195
194
}
196
195
 
197
 
INT signif_line_count (cell *a)
 
196
int16_t signif_line_count (cell *a)
198
197
{
199
198
 lnhead *Lp1, *Lp2;
200
199
 c_comp *cp1;
201
200
 
202
 
 INT  nl, lc1, Lc1;
 
201
 int16_t  nl, lc1, Lc1;
203
202
 
204
203
  if (a->env == NULL) return 0;
205
204
  nl = 0;
206
205
  cp1 = a->env;
207
206
  Lc1=cp1->nl;      // number of lines in component
208
 
  Lp1=(lnhead *) ( (CHAR *)cp1 + cp1->lines + 2); // beginning of first line
 
207
  Lp1=(lnhead *) ( (char *)cp1 + cp1->lines + 2); // beginning of first line
209
208
  Lp2=Lp1;
210
209
  for (lc1=0; lc1 < Lc1; lc1++)
211
210
  {
212
211
    if (Lp1->h > 1)  nl++;
213
 
    Lp2=Lp1=(lnhead *) ((CHAR *)Lp2+Lp2->lth);
 
212
    Lp2=Lp1=(lnhead *) ((char *)Lp2+Lp2->lth);
214
213
  }
215
214
 return nl;
216
215
}
217
216
/////////////////////////
218
 
INT cell_is_BOX_solid (cell  *B1)
 
217
int16_t cell_is_BOX_solid (cell  *B1)
219
218
{
220
219
 SVERS svers;
221
220
 if (!tenv(B1))
234
233
 if ((SBOX.matrBOX.isq_rt = long_sqrt((*scalar)(mBOX,mBOX)))==0)
235
234
   SBOX.matrBOX.isq_rt=1;
236
235
 
237
 
 embBOX(&SBOX,&svers, (BOOL)((B1->pos_inc&erect_rot)!=0));      // BOX estimate
 
236
 embBOX(&SBOX,&svers, (Bool)((B1->pos_inc&erect_rot)!=0));      // BOX estimate
238
237
 return best_answer_BOX;
239
238
 
240
239
}
243
242
// for BAL - new version 6.02.2001
244
243
void save_rast_vers(CSTR_rast C, SVERS *S)
245
244
 {
246
 
 INT i, nn;
247
 
// version *s, *d;
 
245
 int16_t i, nn;
248
246
 UniVersions vers;
249
247
 CSTR_rast_attr attr;
250
248
 version *d;
252
250
 CSTR_GetCollectionUni(C,&vers);
253
251
 CSTR_GetAttr(C,&attr);
254
252
 
255
 
 S->nvers  = (Int16)vers.lnAltCnt;
 
253
 S->nvers  = (int16_t)vers.lnAltCnt;
256
254
 S->source = attr.recsource;
257
255
 S->pos = attr.cpos;
258
 
 S->flg = (CHAR)attr.flg;
 
256
 S->flg = (char)attr.flg;
259
257
 S->broken_II = attr.broken_II;
260
258
 S->cg_flag_fine  = attr.cg_flag_fine;
261
259
 S->accent_leader = attr.accent_leader;
262
260
 
263
 
// S->bottom_accent = attr.bottom_accent; - � CSTR ���
 
261
// S->bottom_accent = attr.bottom_accent; - у CSTR нет
264
262
 S->bottom_accent = 0;
265
263
 
266
 
 S->history       = (Word8)attr.RecogHistory; // Nick
 
264
 S->history       = (uchar)attr.RecogHistory; // Nick
267
265
 S->clink         = attr.clink;   // Nick
268
266
 S->clu_attr      = attr.clu_attr;   // Nick
269
267
 S->nClust        = attr.nClust;   // Nick
270
268
 
271
269
 nn=S->nvers;
272
270
// if (nn==0)  nn = 1;
273
 
 for (i=0, d=&(S->vers); i<nn; i++, d++ ) //AK 04.03.97 ? for address
 
271
 for (i=0, d=(version*)&(S->vers); i<nn; i++, d++ ) //AK 04.03.97 ? for address
274
272
 {
275
273
   d->let  = vers.Alt[i].Liga;
276
274
   d->prob =  vers.Alt[i].Prob;
282
280
 S->pr_vers= S->vers[0];
283
281
}
284
282
////////////////
285
 
Bool32 p2_accept_Cell( cell *c,CSTR_rast_attr *rst, CCOM_comp *cmp, INT scale);
 
283
Bool32 p2_accept_Cell( cell *c,CSTR_rast_attr *rst, CCOM_comp *cmp, int16_t scale);
286
284
///////////////////
287
 
INT rast_is_BOX_solid (CSTR_rast B1,Int16 scale)
 
285
int16_t rast_is_BOX_solid (CSTR_rast B1,int16_t scale)
288
286
{
289
287
 SVERS svers;
290
288
 CCOM_comp *cmp;
291
289
 CSTR_rast_attr attr;
292
290
 c_comp *env;
293
291
 
294
 
 extern PBYTE kit_curr;
 
292
 extern puchar kit_curr;
295
293
 
296
294
 cmp = CSTR_GetComp(B1);
297
295
 CSTR_GetAttr(B1,&attr);
313
311
 SBOX.up_row = attr.r_row>>scale;
314
312
 SBOX.left_col = attr.r_col>>scale;
315
313
 
316
 
 // ��������� CCOM_comp -> c_comp
 
314
 // переведем CCOM_comp -> c_comp
317
315
 if ( !p2_accept_Cell(NULL,&attr,cmp,scale) )
318
316
         return 0;
319
317
 
320
 
  // ������ - �������� ��� p2_accept_Cell()
 
318
  // вернем - добавили при p2_accept_Cell()
321
319
 kit_curr -= sizeof(c_comp)+cmp->size_linerep+2;
322
320
 env = (c_comp *)kit_curr;
323
321
 // change to real !
335
333
   SBOX.matrBOX.isq_rt=1;
336
334
 
337
335
      // BOX estimate
338
 
 embBOX(&SBOX,&svers, (BOOL)((attr.pos_inc&erect_rot)!=0));
 
336
 embBOX(&SBOX,&svers, (Bool)((attr.pos_inc&erect_rot)!=0));
339
337
 
340
338
 
341
339
 return best_answer_BOX;