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:
96
96
"Can't saved to CTB with different version"
98
static Word32 mask_r[]={ 255, 128, 192, 224, 240, 248, 252, 254, 255};
98
static uint32_t mask_r[]={ 255, 128, 192, 224, 240, 248, 252, 254, 255};
99
99
// 0 1 2 3 4 5 6 7 8
100
100
//********************************************************************
101
101
//********************* static function : ****************************
102
102
//********************************************************************
103
static Int32 CTB_volume_true(char *file_name );
104
static Bool32 CTB_type(Int16 wid, Int16 hei, Int16 dpb);
105
static void xor_lines(Word8 *bin,Int32 wb,Int32 len);
106
static void xor_lines_rest(Word8 *bin,Int32 wb,Int32 len,Word8 mask);
107
static void xor_one_line(Word8 *bin,Word8 *bin1,Int32 wb);
103
static int32_t CTB_volume_true(char *file_name );
104
static Bool32 CTB_type(int16_t wid, int16_t hei, int16_t dpb);
105
static void xor_lines(uchar *bin,int32_t wb,int32_t len);
106
static void xor_lines_rest(uchar *bin,int32_t wb,int32_t len,uchar mask);
107
static void xor_one_line(uchar *bin,uchar *bin1,int32_t wb);
108
108
//********************************************************************
109
109
//************ global functions : ************************************
110
110
//********************************************************************
111
111
char * ctb_last_punct(char *word);
112
Bool32 CTB_files_init(char *file_name,Word8 *data,Int16 maxX,Int16 maxY,
113
Int16 dpb,Word8 signums, Word8 attr_size);
112
Bool32 CTB_files_init(char *file_name,uchar *data,int16_t maxX,int16_t maxY,
113
int16_t dpb,uchar signums, uchar attr_size);
114
114
//********************************************************************
115
115
//************ global data : *****************************************
116
116
//********************************************************************
117
Int32 ctb_err_code = CTB_ERR_NONE; // error code
117
int32_t ctb_err_code = CTB_ERR_NONE; // error code
118
118
char * ctb_tmp_dir=NULL;
119
119
CTB_FUNC(char) local_grey_ctb[256] = "page6666";
120
120
CTB_FUNC(char) local_ctb_name[256] = "ct666666";
121
121
//********************************************************************
122
122
//*********** EXPORT functions from CTB_pack ************************
123
123
//********************************************************************
124
Int16 decLine(Word8 *inB, Int16 inLen, Word8 *outBuffer);
125
Int16 encLine(Word8 *inBuff, Int16 inLen,Word8 *save_p, Int16 outLen);
126
Int16 encput( Word8 byt, Word8 cnt,Word8 *save);
124
int16_t decLine(uchar *inB, int16_t inLen, uchar *outBuffer);
125
int16_t encLine(uchar *inBuff, int16_t inLen,uchar *save_p, int16_t outLen);
126
int16_t encput( uchar byt, uchar cnt,uchar *save);
127
127
//********************************************************************
128
128
//*********** EXPORT functions from CTB_cnvm ************************
129
129
//********************************************************************
130
Bool32 conv_bytes_to_bits( Int16 colors, Word8 *text,Word8 *bin, Int16 len);
131
Bool32 conv_bits_to_bytes( Int16 colors, Word8 *text,Word8 *bin, Int16 len);
130
Bool32 conv_bytes_to_bits( int16_t colors, uchar *text,uchar *bin, int16_t len);
131
Bool32 conv_bits_to_bytes( int16_t colors, uchar *text,uchar *bin, int16_t len);
133
133
//********************************************************************
134
134
//**************** open/close CTB-files ******************************
393
393
//********************************************************************
394
394
//**************** subroutines to read data from *********************
395
395
//********************************************************************
396
CTB_FUNC(Int32) CTB_read( CTB_handle *hnd,Int32 num , Word8 *save_bin, Word8 *data)
396
CTB_FUNC(int32_t) CTB_read( CTB_handle *hnd,int32_t num , uchar *save_bin, uchar *data)
399
Int32 l_seek,f_seek,l, len, w,h, sign, wb, datalen;
399
int32_t l_seek,f_seek,l, len, w,h, sign, wb, datalen;
400
400
Bool32 gray=(hnd->signums&CTB_GRAY_SCALE),
401
401
plane=(hnd->signums&CTB_PLANE);
696
696
//********************************************************************
697
697
// ************** subroutines to write data to a file ***************** //
698
698
//********************************************************************
699
CTB_FUNC(Bool32) CTB_write_mark( CTB_handle *hnd, Int32 num,Word8 *bin, Word8 *data , Bool32 mark)
699
CTB_FUNC(Bool32) CTB_write_mark( CTB_handle *hnd, int32_t num,uchar *bin, uchar *data , Bool32 mark)
701
Int16 sp,n=(Int16)hnd->len;
701
int16_t sp,n=(int16_t)hnd->len;
703
Int32 pos, datalen, wb;
703
int32_t pos, datalen, wb;
706
706
Bool32 gray=(hnd->signums&CTB_GRAY_SCALE),
707
707
plane=(hnd->signums&CTB_PLANE);
1387
1387
return NULL; // i==4 //
1390
Bool32 CTB_files_init(char *filename,Word8 *data,Int16 maxX, Int16 maxY,
1391
Int16 dpb, Word8 signums, Word8 attr_size)
1390
Bool32 CTB_files_init(char *filename,uchar *data,int16_t maxX, int16_t maxY,
1391
int16_t dpb, uchar signums, uchar attr_size)
1393
1393
H_CTB_file H_CTB={{'C','T'},0,0,0,0,0,0,0,0,{0}}; // signatura only //
1394
1394
char s[MAXPATH],file_name[MAXPATH],*p;
1398
1398
strcpy(file_name,filename);
1399
1399
p=ctb_last_punct(file_name);