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:
86
86
#include "minmax.h"
88
88
#include "resource.h"
89
//static Word8* lnOcrPath;
89
//static uchar* lnOcrPath;
90
90
static Rect16 merge_frame;
91
91
static Bool32 is_merge_frame=FALSE;
92
92
static CCOM_handle NumContainer =0;
93
static Int32 curr_line=0, original_density;
94
static Word8 original_begends;
95
static Word8 * rasterDIB4=NULL;
96
static Int32 DIB_Hei, DIB_Wid,
93
static int32_t curr_line=0, original_density;
94
static uchar original_begends;
95
static uchar * rasterDIB4=NULL;
96
static int32_t DIB_Hei, DIB_Wid,
97
97
DIB_HRes, DIB_VRes,
98
98
DIB_TCol, DIB_TRow,
100
100
DIB_TWid, DIB_THei ;
101
101
static Bool32 EnableTemplate=FALSE;
102
static Word8 mask_l[] =
102
static uchar mask_l[] =
103
103
{255, 127, 63, 31, 15, 7, 3, 1};
104
static Word8 mask_r[] =
104
static uchar mask_r[] =
105
105
{ 128, 192, 224, 240, 248, 252, 254, 255};
106
106
static FNREXC_ProgressStart fnProgressStart_exc =NULL;
107
107
static FNREXC_ProgressStep fnProgressStep_exc =NULL;
108
108
static FNREXC_ProgressFinish fnProgressFinish_exc=NULL;
109
109
//=========== Progress Monitor
110
static Word32 progress_vol=0, progress_rel=0;
111
void progress_start (Word32 volume)
110
static uint32_t progress_vol=0, progress_rel=0;
111
void progress_start (uint32_t volume)
113
113
progress_vol=volume;
114
114
if( fnProgressStart_exc )
138
138
//------------------ Image attributes ---------------------
139
Word16 image_disp_byte, image_disp_end;
140
Word8 image_disp_mask;
141
Int16 image_blth ; // pixels per line
142
Int16 image_height ; // lines in file number
143
Int16 image_lth ; // bytes per line
144
Word8 image_black ; // mask for black pixels adding
145
Word8 image_white ; // mask for wite pixels adding
139
uint16_t image_disp_byte, image_disp_end;
140
uchar image_disp_mask;
141
int16_t image_blth ; // pixels per line
142
int16_t image_height ; // lines in file number
143
int16_t image_lth ; // bytes per line
144
uchar image_black ; // mask for black pixels adding
145
uchar image_white ; // mask for wite pixels adding
147
static Int8 image_file_status = -1;
148
static Word8 image_invert = 0;
147
static char image_file_status = -1;
148
static uchar image_invert = 0;
149
149
//========== Global func ==========
150
150
void extrcomp(void);
151
151
void save_component(ExtComponent *c, version *vs, version *ve,
152
Word8 *lp, Word16 lpl);
153
void invert_tiff (Word8 *p, Word16 lth);
152
uchar *lp, uint16_t lpl);
153
void invert_tiff (uchar *p, uint16_t lth);
154
154
void image_file_close(void);
155
155
Bool image_file_open (void);
156
Int16 source_read(Word8 *start, Word8 *ptr, Word8 *end);
156
int16_t source_read(uchar *start, uchar *ptr, uchar *end);
158
158
//========= Import func =========
159
159
// from GRA_REC.c
161
161
//--------------------------------------------------------------
162
162
extern void exc_ori_init(void);
163
163
extern void exc_ori_add(void);
164
extern Word8 exc_ori_result(void);
164
extern uchar exc_ori_result(void);
166
166
// from COMPKIT.C
167
extern Int16 MN_to_line(MN * mn);
168
//-extern Word8 * make_raster();
167
extern int16_t MN_to_line(MN * mn);
168
//-extern uchar * make_raster();
169
169
// from ALPHABET.C
170
170
/*-Andrey: moved to RRecCom (recognition) and RNorm (autorotate)
171
171
//--------------------------------------------------------------
172
extern Bool16 rexc_set_alpha(Word8 language, Word8 *alphabet);
173
extern Bool16 rexc_load_tables(Word8 language);
174
extern Bool16 rexc_is_language(Word8 language);
175
extern Int32 rexc_gra_type_ori(Word8 lang);
176
extern Int32 rexc_gra_type_rec(Word8 lang);
172
extern Bool16 rexc_set_alpha(uchar language, uchar *alphabet);
173
extern Bool16 rexc_load_tables(uchar language);
174
extern Bool16 rexc_is_language(uchar language);
175
extern int32_t rexc_gra_type_ori(uchar lang);
176
extern int32_t rexc_gra_type_rec(uchar lang);
177
177
extern void exc_ori_recog(RecVersions *v);
180
extern Int16 matrix_read(Word8 *buff, Word16 lth);
180
extern int16_t matrix_read(uchar *buff, uint16_t lth);
181
181
extern void matrix_open ();
182
182
extern void matrix_close();
183
183
extern void matrix_reset();
184
184
//========== Local func ==========
185
185
static void save_gcomp(ExtComponent *c);
186
static Bool process_comp(void * pool,Word32 size);
186
static Bool process_comp(void * pool,uint32_t size);
187
187
static Bool flush_cache(void);
188
188
static void reset_cache(void);
189
189
static Bool init_dump_file(void);
190
static Bool write_dump(void * pool,Int32 size);
190
static Bool write_dump(void * pool,int32_t size);
191
191
static Bool extrcomp_setup_memory(void);
193
193
//========== Import data
194
194
extern struct main_memory_str Q;
195
195
extern ExtComponent wcomp;
196
extern Word16 lpool_lth;
197
extern Word8 lpool[];
198
extern Word8 work_raster[];
199
extern Int32 sz_work_raster, sz_work_raster_1;
196
extern uint16_t lpool_lth;
197
extern uchar lpool[];
198
extern uchar work_raster[];
199
extern int32_t sz_work_raster, sz_work_raster_1;
200
200
extern BOX *dl_last_in_chain;
201
201
//========== Global data
203
Int32 gra_type_ori =-1;
204
Int32 gra_type_rec =-1;
203
int32_t gra_type_ori =-1;
204
int32_t gra_type_rec =-1;
205
205
TImageOpen Tiger_ImageOpen;
206
206
TImageRead Tiger_ImageRead;
207
207
TImageClose Tiger_ImageClose;
208
208
Tiger_ProcComp Tiger_ProcessComp;
209
Int32 box_number=BOX_NUMBER;
210
Word8 fax1x2=0,matrix=0;
211
Word16 actual_resolution;
212
Word16 comp_max_h, comp_max_w, comp_min_h, comp_min_w;
214
Int16 nBlack,nAll,nWid;
209
int32_t box_number=BOX_NUMBER;
210
uchar fax1x2=0,matrix=0;
211
uint16_t actual_resolution;
212
uint16_t comp_max_h, comp_max_w, comp_min_h, comp_min_w;
214
int16_t nBlack,nAll,nWid;
216
216
//========== Local data
218
218
#define CACHESIZE (64*1024)
220
static Word8 cache[CACHESIZE],*cache_end,*cache_curr;
220
static uchar cache[CACHESIZE],*cache_end,*cache_curr;
221
221
static char dumpfile[]= EXC_DUMP_FILE;
222
static Int16 MaxScale;
222
static int16_t MaxScale;
223
223
static jmp_buf jumper;
224
static Word16 wHeightRC = 0;
225
static Word16 wLowRC = REXC_ERR_NO;;
224
static uint16_t wHeightRC = 0;
225
static uint16_t wLowRC = REXC_ERR_NO;;
227
227
//============= Source CODE =============
229
229
EXC_FUNC(Bool32) ExtrcompInit( void )
231
231
FNCCOM_MakeLP MLP=(FNCCOM_MakeLP)REXCMakeLP;
232
Int32 ccom_vers, vers=REXC_VERSION_CODE;
232
int32_t ccom_vers, vers=REXC_VERSION_CODE;
408
408
if( !rasterDIB4 )
410
410
memset(lpImageInfo,0,sizeof(Tiger_ImageInfo));
411
lpImageInfo -> wImageHeight = (Word16)DIB_Hei;
412
lpImageInfo -> wImageWidth = (Word16)DIB_Wid;
411
lpImageInfo -> wImageHeight = (uint16_t)DIB_Hei;
412
lpImageInfo -> wImageWidth = (uint16_t)DIB_Wid;
414
414
lpImageInfo -> wImageByteWidth = (lpImageInfo -> wImageWidth + 7) / 8;
415
lpImageInfo -> wResolutionX = (Word16)DIB_HRes;
416
lpImageInfo -> wResolutionY = (Word16)DIB_VRes;
417
lpImageInfo -> bFotoMetrics = (Word8)DIB_FM; // inverted tiff image
415
lpImageInfo -> wResolutionX = (uint16_t)DIB_HRes;
416
lpImageInfo -> wResolutionY = (uint16_t)DIB_VRes;
417
lpImageInfo -> bFotoMetrics = (uchar)DIB_FM; // inverted tiff image
422
Int16 EXC_DIBRead(Word8 *lpImage, Word16 wMaxSize)
422
int16_t EXC_DIBRead(uchar *lpImage, uint16_t wMaxSize)
424
424
int d = (DIB_Wid+7)/8, len;
626
626
Bool32 REXCExtra(ExcControl ExCW,
627
Word8 *lpRaster, Int32 BWid, Bool32 ReverseOrder,
628
Int32 Wid, Int32 Hei, Int32 HRes, Int32 VRes,
629
Int32 TemplCol, Int32 TemplRow, Int32 TemplWid, Int32 TemplHei, Bool32 FotoMetr )
627
uchar *lpRaster, int32_t BWid, Bool32 ReverseOrder,
628
int32_t Wid, int32_t Hei, int32_t HRes, int32_t VRes,
629
int32_t TemplCol, int32_t TemplRow, int32_t TemplWid, int32_t TemplHei, Bool32 FotoMetr )
633
633
if( Wid<=0 || BWid<=0 || Hei<=0 ||
634
634
HRes<WORLD_MIN_RESOLUTION || VRes<WORLD_MIN_RESOLUTION )
1181
1181
wLowRC = REXC_ERR_NO;
1184
CASE_DATA(REXC_Word8_Matrix ,Word8,matrix);
1185
CASE_DATA(REXC_Word8_Fax1x2 ,Word8,fax1x2);
1186
CASE_DATA(REXC_Word16_ActualResolution ,Word16,actual_resolution);
1184
CASE_DATA(REXC_Word8_Matrix ,uchar,matrix);
1185
CASE_DATA(REXC_Word8_Fax1x2 ,uchar,fax1x2);
1186
CASE_DATA(REXC_Word16_ActualResolution ,uint16_t,actual_resolution);
1187
1187
/*-Andrey: moved to RRecCom (recognition) and RNorm (autorotate)
1188
1188
//--------------------------------------------------------------
1189
1189
case REXC_FNEVNPROPERT:
1190
*(Word32*)pData = (Word32)REXC_SetEVNProperties;
1190
*(uint32_t*)pData = (uint32_t)REXC_SetEVNProperties;
1193
1193
case REXC_FNEXTRACOMP :
1194
*(Word32*)pData = (Word32)REXCExtracomp;
1194
*(uint32_t*)pData = (uint32_t)REXCExtracomp;
1196
1196
case REXC_FNEXTRA :
1197
*(Word32*)pData = (Word32)REXCExtra;
1197
*(uint32_t*)pData = (uint32_t)REXCExtra;
1199
1199
case REXC_FNEXTRADIB:
1200
*(Word32*)pData = (Word32)REXCExtraDIB;
1200
*(uint32_t*)pData = (uint32_t)REXCExtraDIB;
1203
1203
case REXC_FNGETCONTAINER:
1204
*(Word32*)pData = (Word32)REXCGetContainer;
1204
*(uint32_t*)pData = (uint32_t)REXCGetContainer;
1207
1207
case REXC_FNGETLENEREP:
1208
*(Word32*)pData = (Word32)REXCMakeLP;
1208
*(uint32_t*)pData = (uint32_t)REXCMakeLP;
1210
1210
case REXC_FNVERSION:
1211
*(Word32*)pData = (Word32)REXC_VERSION_CODE;
1211
*(uint32_t*)pData = (uint32_t)REXC_VERSION_CODE;
1213
1213
/*-Andrey: moved to RRecCom (recognition) and RNorm (autorotate)
1214
1214
//--------------------------------------------------------------
1215
1215
case REXC_FNREX_ISLANGUAGE:
1216
*(Word32*)pData = (Word32)REXC_IsLanguage;
1216
*(uint32_t*)pData = (uint32_t)REXC_IsLanguage;
1218
1218
case REXC_FNGETORIENT:
1219
*(Word32*)pData = (Word32)REXC_GetOrient;
1219
*(uint32_t*)pData = (uint32_t)REXC_GetOrient;
1222
1222
case REXC_FNMN2CCOM:
1223
*(Word32*)pData = (Word32)REXC_MN2CCOM;
1223
*(uint32_t*)pData = (uint32_t)REXC_MN2CCOM;
1225
1225
case REXC_FNGETINVERTION:
1226
*(Word32*)pData = (Word32)REXC_GetInvertion;
1226
*(uint32_t*)pData = (uint32_t)REXC_GetInvertion;
1228
1228
/*-Andrey: moved to RRecCom (recognition) and RNorm (autorotate)
1229
1229
//--------------------------------------------------------------
1230
case REXC_FNEVNALPHABET: // ��������� �������� ��� �����
1231
*(Word32*)pData = (Word32)REXC_SetEVNAlphabet;
1230
case REXC_FNEVNALPHABET: // установка алфавита для евент
1231
*(uint32_t*)pData = (uint32_t)REXC_SetEVNAlphabet;
1234
case REXC_FNEXTRACOMP3CB: // 3 ��������
1235
*(Word32*)pData = (Word32)REXCExtracomp3CB;
1234
case REXC_FNEXTRACOMP3CB: // 3 коллбэка
1235
*(uint32_t*)pData = (uint32_t)REXCExtracomp3CB;
1237
1237
/*-Andrey: moved to RRecCom (recognition) and RNorm (autorotate)
1238
1238
//--------------------------------------------------------------
1239
case REXC_FNEXTGETRECRASTERORIENT: // ���������� �������� ������
1240
*(Word32*)pData = (Word32)exc_get_rec_raster_orient;
1239
case REXC_FNEXTGETRECRASTERORIENT: // ориентация рабочего растра
1240
*(uint32_t*)pData = (uint32_t)exc_get_rec_raster_orient;
1242
case REXC_FNSETALLALPHAGRA: // ������� ��������� ����
1243
*(Word32*)pData = (Word32)exc_set_all_alphabet_gra;
1242
case REXC_FNSETALLALPHAGRA: // алфавит нейронной сети
1243
*(uint32_t*)pData = (uint32_t)exc_set_all_alphabet_gra;
1254
EXC_FUNC(Bool32) REXC_SetImportData(Word32 dwType, void * pData)
1254
EXC_FUNC(Bool32) REXC_SetImportData(uint32_t dwType, void * pData)
1256
1256
#define CASE_DATA(a,b,c) case a: c = *(b *)pData; break
1257
1257
#define CASE_PDATA(a,b,c) case a: c = (b)pData; break
1258
1258
wLowRC = REXC_ERR_NO;
1261
CASE_DATA(REXC_Word8_Matrix ,Word8,matrix);
1262
CASE_DATA(REXC_Word8_Fax1x2 ,Word8,fax1x2);
1263
CASE_DATA(REXC_Word16_ActualResolution,Word16,actual_resolution);
1261
CASE_DATA(REXC_Word8_Matrix ,uchar,matrix);
1262
CASE_DATA(REXC_Word8_Fax1x2 ,uchar,fax1x2);
1263
CASE_DATA(REXC_Word16_ActualResolution,uint16_t,actual_resolution);
1264
1264
CASE_PDATA(REXC_ProgressStart, FNREXC_ProgressStart, fnProgressStart_exc);
1265
1265
CASE_PDATA(REXC_ProgressStep, FNREXC_ProgressStep, fnProgressStep_exc);
1266
1266
CASE_PDATA(REXC_ProgressFinish, FNREXC_ProgressFinish,fnProgressFinish_exc);
1267
// CASE_PDATA(REXC_OcrPath, Word8*, lnOcrPath);
1267
// CASE_PDATA(REXC_OcrPath, uchar*, lnOcrPath);
1269
1269
wLowRC = REXC_ERR_NOTIMPLEMENT;
1347
1347
static void frame_hist (MN *mn);
1348
Word8* frame_cut_MN(Int16, Int16);
1348
uchar* frame_cut_MN(int16_t, int16_t);
1349
1349
static Bool32 frame_cut_points();
1350
1350
static void frame_select();
1351
1351
static Bool16 frame_check();
1352
static Int32 frame_cut(MN *mn);
1352
static int32_t frame_cut(MN *mn);
1353
1353
static Bool16 save_picture_scale (MN *mn);
1355
static Int16 big_merge(MN *mn)
1355
static int16_t big_merge(MN *mn)
1358
1358
if ((wcomp.h > comp_max_h) || (wcomp.w >= sizeof (W.eh)))
1360
//Andrey: ����������� ����� ���������� �������� � ������ RCutP - �����
1360
//Andrey: определение точек разрезания вынесено в модуль RCutP - откат
1362
1362
frame_hist (mn);
1363
1363
if (!frame_check())
1623
1623
return work_raster;
1625
static Word8 start_shift[] = {255, 127, 63, 31, 15, 7, 3 ,1};
1626
static Word8 end_shift[] = {0,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};
1627
static void frame_put (Word8* p, Int16 x, Int16 l, Int16 from, Int16 to)
1625
static uchar start_shift[] = {255, 127, 63, 31, 15, 7, 3 ,1};
1626
static uchar end_shift[] = {0,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};
1627
static void frame_put (uchar* p, int16_t x, int16_t l, int16_t from, int16_t to)
1630
1630
x -= l + from; if (x < 0) { if ((l+=x) < 0) return; x = 0; }
1631
1631
if ( x >= to) return; if (to - x < l) l = to - x;
1632
1632
p += x >> 3; b = start_shift [x & 7]; l+= x&7;
1634
1634
b &= end_shift[l]; *p |= b;
1637
static Bool16 exclude_one_piece(Int16 xl, Int16 xr, Int16 x0, Int16 y0, Int16 xmax, Int16 h)
1637
static Bool16 exclude_one_piece(int16_t xl, int16_t xr, int16_t x0, int16_t y0, int16_t xmax, int16_t h)
1639
1639
#ifdef _USE_LOC_
1644
1644
raster = frame_cut_MN(xl,xr);
1645
wm = LOC_CLocomp (raster, (xr - xl + 7)>>3, h, y0, (Int16)(x0 + xl));
1645
wm = LOC_CLocomp (raster, (xr - xl + 7)>>3, h, y0, (int16_t)(x0 + xl));
1647
1647
while (wm && wm->mnfirstbox)
1686
1686
else if( xr - xl>=comp_max_w && xr - xl < 2*comp_max_w)
1688
if( !exclude_one_piece(xl, (Int16)((xl+xr)/2), x0, y0, xmax, h) )
1688
if( !exclude_one_piece(xl, (int16_t)((xl+xr)/2), x0, y0, xmax, h) )
1690
if( !exclude_one_piece((Int16)((xl+xr)/2), xr, x0, y0, xmax, h) )
1690
if( !exclude_one_piece((int16_t)((xl+xr)/2), xr, x0, y0, xmax, h) )
1807
1807
if( y>hmax ) hmax=y;
1808
1808
xBeg = MAX(xEnd - pLine -> l,0);
1809
1809
WriteOneInterval ( y, xBeg, MIN(xEnd,right) ,wcomp.rw,scale_2);
1810
pInts = (BOXINT *) ((Word8 *) pBox + sizeof (BOX) + sizeof (LNSTRT));
1810
pInts = (BOXINT *) ((uchar *) pBox + sizeof (BOX) + sizeof (LNSTRT));
1813
1813
{ // continue BOX
1814
pInts = (BOXINT *) ((Word8 *) pBox + sizeof (BOX));
1814
pInts = (BOXINT *) ((uchar *) pBox + sizeof (BOX));
1817
pAfterInts = (BOXINT *) ((Word8 *) pBox + pBox -> boxptr);
1817
pAfterInts = (BOXINT *) ((uchar *) pBox + pBox -> boxptr);
1819
1819
for (pInt = pInts; ; pInt++)
1821
int s=(Word8 *) pAfterInts - (Word8 *) pInt;
1821
int s=(uchar *) pAfterInts - (uchar *) pInt;
1822
1822
if( s<sizeof (BOXINT) )
1824
1824
xEnd += pInt -> d;
1916
1916
if (pBox -> boxflag & BOXBEG)
1918
pLine = (LNSTRT *) ((Word8 *) pBox + sizeof (BOX));
1918
pLine = (LNSTRT *) ((uchar *) pBox + sizeof (BOX));
1920
1920
xEnd = pLine -> x-wcomp.left;
1921
1921
if( (xEnd>>scale_2)>255 || (pLine->l>>scale_2)>255 )
1923
pInts = (BOXINT *) ((Word8 *) pBox + sizeof (BOX) + sizeof (LNSTRT));
1923
pInts = (BOXINT *) ((uchar *) pBox + sizeof (BOX) + sizeof (LNSTRT));
1926
1926
{ // continue BOX
1927
pInts = (BOXINT *) ((Word8 *) pBox + sizeof (BOX));
1927
pInts = (BOXINT *) ((uchar *) pBox + sizeof (BOX));
1930
pAfterInts = (BOXINT *) ((Word8 *) pBox + pBox -> boxptr);
1930
pAfterInts = (BOXINT *) ((uchar *) pBox + pBox -> boxptr);
1932
1932
for (pInt = pInts; ; pInt++)
1934
int s=(Word8 *) pAfterInts - (Word8 *) pInt;
1934
int s=(uchar *) pAfterInts - (uchar *) pInt;
1935
1935
if( s<sizeof (BOXINT) )
1937
1937
xEnd += pInt -> d;
2040
2040
lnh->h =0; // store actual line header
2042
2042
lnh->flg =pBox->boxflag;
2043
CCOM_LargeNewInterval(cmp,(Int16)xEnd,(Int16)pLine -> l);
2044
pInts = (BOXINT *) ((Word8 *) pBox + sizeof (BOX) + sizeof (LNSTRT));
2043
CCOM_LargeNewInterval(cmp,(int16_t)xEnd,(int16_t)pLine -> l);
2044
pInts = (BOXINT *) ((uchar *) pBox + sizeof (BOX) + sizeof (LNSTRT));
2047
2047
{ // continue BOX
2048
2048
lnh->flg |=pBox->boxflag;
2049
pInts = (BOXINT *) ((Word8 *) pBox + sizeof (BOX));
2049
pInts = (BOXINT *) ((uchar *) pBox + sizeof (BOX));
2052
pAfterInts = (BOXINT *) ((Word8 *) pBox + pBox -> boxptr);
2052
pAfterInts = (BOXINT *) ((uchar *) pBox + pBox -> boxptr);
2054
2054
for (pInt = pInts; ; pInt++)
2056
int s=(Word8 *) pAfterInts - (Word8 *) pInt;
2056
int s=(uchar *) pAfterInts - (uchar *) pInt;
2057
2057
if( s<sizeof (BOXINT) )
2059
2059
xEnd += pInt -> d;
2062
CCOM_LargeNewInterval(cmp,(Int16)xEnd,(Int16)pInt -> l);
2062
CCOM_LargeNewInterval(cmp,(int16_t)xEnd,(int16_t)pInt -> l);
2066
CCOM_LargeNewInterval(cmp,(Int16)0,(Int16)0); // fictive interval
2066
CCOM_LargeNewInterval(cmp,(int16_t)0,(int16_t)0); // fictive interval
2067
2067
lnh->lth=4*2+4*(hh+1); // header + intervals + fictive interval
2068
2068
lnh->h =hh; // store actual line header
2069
2069
CCOM_LargeClose(cmp);