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:
63
63
extern c_comp wcomp;
64
64
extern MN * main_number_ptr;
65
65
extern BOX * boxchain, *dl_last_in_chain;
67
extern Word16 lpool_lth;
68
extern Word8 work_raster[];
67
extern uint16_t lpool_lth;
68
extern uchar work_raster[];
69
69
extern version * start_rec, * rec_ptr;
70
extern Word8 records_change;
71
extern Word16 comp_max_h, comp_max_w, comp_min_h, comp_min_w; // defined in extrcomp.c
70
extern uchar records_change;
71
extern uint16_t comp_max_h, comp_max_w, comp_min_h, comp_min_w; // defined in extrcomp.c
73
73
static void boxes_to_line();
156
156
ip->e = 0; // Vald for compability with asm prototype
158
lnp->lth = (Word8*)ip - (Word8*)lnp;
158
lnp->lth = (uchar*)ip - (uchar*)lnp;
159
159
lnp->h = (lnp->lth - sizeof(*lnp) - sizeof(*ip))/sizeof(*ip);
160
160
lnp->flg |= bp->boxflag; lnp = (lnhead *)ip;
161
161
if (bp != dl_last_in_chain) goto next_line;
163
lpool_lth = (Word8*)lnp - lpool + sizeof (lnp->lth);
163
lpool_lth = (uchar*)lnp - lpool + sizeof (lnp->lth);
167
static Word8 make_fill[] = {0, 1, 3, 7, 15, 31, 63, 127, 255};
168
void WriteInterval ( Word8 *p, int end , int len)
167
static uchar make_fill[] = {0, 1, 3, 7, 15, 31, 63, 127, 255};
168
void WriteInterval ( uchar *p, int end , int len)
172
172
p = p + (end>>3);
174
174
while (len > 8) { w = 0xff00 >> sh;*p |= w & 0xff; *(--p) |= w>>8; len-=8; }
249
void save_component(c_comp *,version *,version *,Word8*,Word16);
249
void save_component(c_comp *,version *,version *,uchar*,uint16_t);
250
250
void save_wcomp()
252
252
save_component(&wcomp,start_rec,rec_ptr,lpool,lpool_lth);
255
Word16 length_table[] = {0x100, 0x300, 0x700,0xf00,0x1f00,0x3f00,0x7f00,0xff00};
255
uint16_t length_table[] = {0x100, 0x300, 0x700,0xf00,0x1f00,0x3f00,0x7f00,0xff00};
257
void save_dust_comp (dust_comp * dp, c_comp *cp, Word8 *lp)
257
void save_dust_comp (dust_comp * dp, c_comp *cp, uchar *lp)
261
261
dp->size = 1; dp->upper = cp->upper; dp->left = cp->left;
262
dp->h = (Word8)cp->h; dp->w = (Word8)cp->w;
262
dp->h = (uchar)cp->h; dp->w = (uchar)cp->w;
263
263
memset ((p=dp->raster),0,sizeof(dp->raster));
264
264
ip =(interval *)(lp + sizeof(lnhead));
265
265
while (ip->l) { *p++ = (length_table [ip->l - 1]) >> (ip->e); ip++; }
268
Word8 byte_seg_size[256] = {
268
uchar byte_seg_size[256] = {
269
269
// 0 1 2 3 4 5 6 7 8 9 a b c d e f
270
270
0x00,0x18,0x17,0x28,0x16,0x00,0x27,0x38,0x15,0x00,0x00,0x00,0x26,0x00,0x37,0x48, // 0
271
271
0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x36,0x00,0x47,0x58, // 1
285
285
0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x00,0x00,0x00,0x66,0x00,0x77,0x88 // f
288
Int16 read_dust_comp (dust_comp *cp, Word8 *p)
288
int16_t read_dust_comp (dust_comp *cp, uchar *p)
295
295
lp = (lnhead *)p;
296
296
lp->row = 0; lp->flg = l_fbeg+l_fend;
297
297
n = lp->h = cp->h; lp->lth = lth = sizeof(lnhead) + (n+1) * sizeof(interval);