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:
199
199
extern int nHeightesAllocated;
200
200
extern int nHeightes;
202
extern int16_t nIncline;
204
BOOL InclinesAccount (void);
204
Bool InclinesAccount (void);
205
205
void InclinesFreeData (void);
207
void IdealXY (INT x, INT y, INT *px, INT *py);
208
void RealXY (INT x, INT y, INT *px, INT *py);
207
void IdealXY (int16_t x, int16_t y, int16_t *px, int16_t *py);
208
void RealXY (int16_t x, int16_t y, int16_t *px, int16_t *py);
210
210
void RotatePageToIdeal (void);
212
// �������� ��������� � ������ �������
212
// пересчет координат с учетом наклона
213
213
# define IDEAL_XY(x, y) \
215
y = (INT) (y - (LONG) x * nIncline / INCLINE_FACTOR);\
216
x = (INT) (x + (LONG) y * nIncline / INCLINE_FACTOR);\
215
y = (int16_t) (y - (int32_t) x * nIncline / INCLINE_FACTOR);\
216
x = (int16_t) (x + (int32_t) y * nIncline / INCLINE_FACTOR);\
219
// ������� � ��������� �����������
219
// возврат к настоящим координатам
220
220
# define REAL_XY(x, y) \
222
x = (INT) (x - (LONG) y * nIncline / INCLINE_FACTOR);\
223
y = (INT) (y + (LONG) x * nIncline / INCLINE_FACTOR);\
222
x = (int16_t) (x - (int32_t) y * nIncline / INCLINE_FACTOR);\
223
y = (int16_t) (y + (int32_t) x * nIncline / INCLINE_FACTOR);\
226
226
/****************************************************************************
498
498
SEPARATOR *pLeftSep;
499
499
SEPARATOR *pRightSep;
501
int *pHorzHystogram; // (������������) ����������� ��� ����������
503
int nActualHeight; // ���� �� BlockHorzHystogramBuild() --
504
// /��������/ ����� (Rect.bottom - Rect.top)
505
int nStartColumnWidth; // ��. BlockCalculateBreakingParameters();
506
int nUnconditionalMinColumnWidth; // ���� ���� ������ �������,
507
int nConditionalMinColumnWidth; // ��� 1st>=2nd>=3rd (������ ����)
501
int *pHorzHystogram; // (вертикальная) гистограмма для разделения
503
int nActualHeight; // судя по BlockHorzHystogramBuild() --
504
// /примерно/ равно (Rect.bottom - Rect.top)
505
int nStartColumnWidth; // см. BlockCalculateBreakingParameters();
506
int nUnconditionalMinColumnWidth; // пока могу только сказать,
507
int nConditionalMinColumnWidth; // что 1st>=2nd>=3rd (сверху вниз)
509
509
int *pHystogram; // Hystogram for strings extraction
510
510
int nHystColumns;
511
int hPicture; // Pit. �������� ��������
511
int hPicture; // Pit. Описание картинки
514
514
extern BLOCK *pBlocksList;
520
520
extern BLOCK *pBottomBlocksList;
521
521
extern int nNextBlockNumber;
523
BOOL RectEq (RECTANGLE *p, RECTANGLE *q);
524
BOOL RectIsCrossed (RECTANGLE *p, RECTANGLE *q);
523
Bool RectEq (RECTANGLE *p, RECTANGLE *q);
524
Bool RectIsCrossed (RECTANGLE *p, RECTANGLE *q);
525
525
void RectAsgPlus (RECTANGLE *p, RECTANGLE *q);
526
BOOL RectIncludes (RECTANGLE *p, RECTANGLE *q);
526
Bool RectIncludes (RECTANGLE *p, RECTANGLE *q);
528
528
BLOCK *BlocksAddDescriptor (void);
529
529
void BlocksRemoveDescriptor (BLOCK *p);
704
704
* Blocks processing tools *
705
705
***************************************************************************/
707
BOOL BlockBreakOnVertical (BLOCK *p, BLOCK **pq, BLOCK **pr,
707
Bool BlockBreakOnVertical (BLOCK *p, BLOCK **pq, BLOCK **pr,
708
708
int x, int nBreakingWidth);
709
BOOL BlockBreakOnHorizontal (BLOCK *p, BLOCK **pq, BLOCK **pr,
709
Bool BlockBreakOnHorizontal (BLOCK *p, BLOCK **pq, BLOCK **pr,
711
BOOL BlockBreakByRectangle (BLOCK *p, BLOCK **pq, BLOCK **pr,
711
Bool BlockBreakByRectangle (BLOCK *p, BLOCK **pq, BLOCK **pr,
712
712
int xBegin, int yBegin, int xEnd, int yEnd);
713
713
BLOCK *BlocksGlueTwo (BLOCK *p, BLOCK *q);
714
714
void BlockRemove (BLOCK *p);
781
781
void LayoutPart2 (void);
784
extern BOOL bDebugTimeFlag;
784
extern Bool bDebugTimeFlag;
785
785
extern int LT_DebugGraphicsLevel;
786
extern BOOL bDebugOptionCalibratePictureRemovingCriteria;
787
extern BOOL bDebugOptionCalibrateDD_RemovingCriteria;
788
extern BOOL bDebugOptionCalibrateLinearRemovingCriteria;
786
extern Bool bDebugOptionCalibratePictureRemovingCriteria;
787
extern Bool bDebugOptionCalibrateDD_RemovingCriteria;
788
extern Bool bDebugOptionCalibrateLinearRemovingCriteria;
791
extern BOOL bOptionForceOneColumn;
792
extern BOOL bOptionBusinessCardsLayout;
794
extern BOOL bOptionPointSizeAnalysis;
795
extern BOOL bOptionSmartBreaking;
796
extern BOOL bOptionInitialBreakingByPageMatrix;
797
extern BOOL bOptionBlocksRemovingByPageMatrix;
798
extern BOOL bOptionBlocksRemovingByDustDistribution;
799
extern BOOL bOptionSpecialHorizontalCutting;
800
extern BOOL bOptionWhiteStripsBreaking;
803
//BOOL AddRoot(CCOM_comp * comp);// Piter
804
BOOL AddRoot(CCOM_comp * comp, Bool32 FirstTime);// Roman
791
extern Bool bOptionForceOneColumn;
792
extern Bool bOptionBusinessCardsLayout;
794
extern Bool bOptionPointSizeAnalysis;
795
extern Bool bOptionSmartBreaking;
796
extern Bool bOptionInitialBreakingByPageMatrix;
797
extern Bool bOptionBlocksRemovingByPageMatrix;
798
extern Bool bOptionBlocksRemovingByDustDistribution;
799
extern Bool bOptionSpecialHorizontalCutting;
800
extern Bool bOptionWhiteStripsBreaking;
803
//Bool AddRoot(CCOM_comp * comp);// Piter
804
Bool AddRoot(CCOM_comp * comp, Bool32 FirstTime);// Roman