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:
194
194
///////////////////////////////////////////////////////////////
195
RSL_FUNC(Bool32) RSL_Init(Word16 wHeightCode,HANDLE hStorage)
195
RSL_FUNC(Bool32) RSL_Init(uint16_t wHeightCode,HANDLE hStorage)
197
197
LDPUMA_Init(0,NULL);
198
198
LDPUMA_Registry(&hDebugRSL,SNAP_STUFF_RSL,NULL);
199
LDPUMA_Registry(&hPreRSL_Root, "��������������� ��������� �����", hDebugRSL);
200
LDPUMA_Registry(&hPreRSL_Debug, "������� ������ (pre)", hPreRSL_Root);
201
LDPUMA_Registry(&hPreRSL_Control, "�������� ������ (pre)", hPreRSL_Root);
203
LDPUMA_Registry(&hSkipCheckUnderlining, "��������� �������� ���������", hPreRSL_Debug);
204
LDPUMA_Registry(&hPrintUnderlineTest, "����� ����������� �������� �������������", hPreRSL_Control);
205
LDPUMA_RegistryHelp(hPrintUnderlineTest, "� Console ���������� ���������� ������ ����� (�� 1000) � ������� ����� ������ �����", FALSE);
206
LDPUMA_Registry(&hPrintUnderlines, "����� ��������� ���������", hPreRSL_Control);
207
LDPUMA_RegistryHelp(hPrintUnderlines, "� Console ���������� ���������� �����, ������������ ��� ��������", FALSE);
209
LDPUMA_Registry(&hSkipCheckRaster, "�� ��������� ����� �� ������", hPreRSL_Debug);
210
LDPUMA_RegistryHelp(hSkipCheckRaster, "���� ��������� �������� ����� �� ������, ����� ������������� �����, ���������� �� ������� ������", FALSE);
211
LDPUMA_Registry(&hPrintRasterCheck, "����� ����������� �������� ������", hPreRSL_Control);
212
LDPUMA_RegistryHelp(hPrintRasterCheck, "� Console ���������� ���������� ������ ����� (�� 1000) � ������ �����", FALSE);
214
LDPUMA_Registry(&hDebugFrag,"����� ���������� �����",hDebugRSL);
215
LDPUMA_Registry(&hDebugFragOwner,"������� ������ ���������� �����",hDebugFrag);
216
LDPUMA_Registry(&hDebugFragOwnerControl,"�������� ������ ���������� �����",hDebugFrag);
218
LDPUMA_Registry(&hDebugDrowRectForRaster,"�������� ������������� �����",hDebugFragOwnerControl);
219
LDPUMA_Registry(&hSkipCorrectPolynomia,"�� �������������� 4-��������� �����",hDebugFragOwner);
220
LDPUMA_Registry(&hPrintCorrectPolynomia,"��������� �������� 4-���������� �����",hDebugFragOwnerControl);
221
LDPUMA_RegistryHelp(hPrintCorrectPolynomia,"����� �� ������� ����������� �������� 4-���������� �����",FALSE);
222
LDPUMA_Registry(&hDebugDrowPolynomia,"�������� ������ �����",hDebugFragOwnerControl);
223
LDPUMA_Registry(&hDebugDrowCleanedRaster,"�������� ������������� ����� ����� ���������",hDebugFragOwnerControl);
224
LDPUMA_Registry(&hDebugDrowGetCorrectedLineStripesIntervals,"�������� ������������ ������������� �����",hDebugFragOwnerControl);
226
LDPUMA_Registry(&hDebugDrowVerticalLineRaster,"�������� ����� ������������ �����",hDebugFragOwnerControl);
227
LDPUMA_Registry(&hDebugDrowVerticalLineStripesIntervals,"�������� ������������ ������������� ������������ �����",hDebugFragOwnerControl);
228
LDPUMA_Registry(&hDebugDrowVerticalLineCutPoints,"�������� ����� ����������� ������������ �����",hDebugFragOwnerControl);
229
LDPUMA_Registry(&hDebugTypeIntervals,"����� �� Consol ��������� ���������� �����",hDebugFragOwnerControl);
230
LDPUMA_Registry(&hDebugTypeStripe,"����� �� Consol ������������ ������������� �����",hDebugFragOwnerControl);
231
LDPUMA_Registry(&hSkipDeleteNoiseEvents, "�� ��������� �������� ������� ����������", hDebugFragOwner);
232
LDPUMA_RegistryHelp(hSkipDeleteNoiseEvents, "�� ������� ������� ���������", FALSE);
233
LDPUMA_Registry(&hSkipDelFragLines, "�� ������� ������ ����������������� �����", hDebugFragOwner);
234
LDPUMA_RegistryHelp(hSkipDelFragLines, "�� ������� ����� � ������ ���������� ������ 5", FALSE);
235
LDPUMA_Registry(&hPrintFragLines, "������ ����������� �������� ������������", hDebugFragOwnerControl);
236
LDPUMA_RegistryHelp(hPrintFragLines, "����� �� Consol ����������� �������� ���������� �� ��������", FALSE);
237
LDPUMA_Registry(&hDebugDrawLineFragmentsOwnWindow,"�������� ��������� ����� � ��������� ����",hDebugFragOwnerControl);
238
LDPUMA_Registry(&hDebugDroweparationPoints,"�������� ����� ������� ����� � ��������� ����",hDebugFragOwnerControl);
239
LDPUMA_Registry(&hDebugDrawLineFragments,"�������� ��������� ����� � �������� ����",hDebugFragOwnerControl);
240
LDPUMA_RegistryHelp(hDebugDrawLineFragments, "��������� �������� ��� ������ ����� � �����������", FALSE);
242
LDPUMA_Registry(&hDebugAttr,"����� ��������� �����",hDebugRSL);
243
LDPUMA_Registry(&hDebugAttrOwner,"�������� ������ ��������� �����",hDebugAttr);
244
LDPUMA_Registry(&hDebugTypeWidth,"����� �� Consol ������ �����",hDebugAttrOwner);
245
LDPUMA_Registry(&hDebugTypeDegree,"����� �� Consol ���� ������� �����",hDebugAttrOwner);
199
LDPUMA_Registry(&hPreRSL_Root, "Предварительная обработка линий", hDebugRSL);
200
LDPUMA_Registry(&hPreRSL_Debug, "Отладка работы (pre)", hPreRSL_Root);
201
LDPUMA_Registry(&hPreRSL_Control, "Контроль работы (pre)", hPreRSL_Root);
203
LDPUMA_Registry(&hSkipCheckUnderlining, "Выключить проверку подчерков", hPreRSL_Debug);
204
LDPUMA_Registry(&hPrintUnderlineTest, "Вывод результатов проверки подчеркивания", hPreRSL_Control);
205
LDPUMA_RegistryHelp(hPrintUnderlineTest, "В Console печатается количество черных точек (на 1000) в верхней части растра линии", FALSE);
206
LDPUMA_Registry(&hPrintUnderlines, "Вывод координат подчерков", hPreRSL_Control);
207
LDPUMA_RegistryHelp(hPrintUnderlines, "В Console печатаются координаты линий, определенных как подчерки", FALSE);
209
LDPUMA_Registry(&hSkipCheckRaster, "Не проверять линии по растру", hPreRSL_Debug);
210
LDPUMA_RegistryHelp(hSkipCheckRaster, "Если выключить проверку линий по растру, могут подтвердиться линии, выделенные по жирному тексту", FALSE);
211
LDPUMA_Registry(&hPrintRasterCheck, "Вывод результатов проверки растра", hPreRSL_Control);
212
LDPUMA_RegistryHelp(hPrintRasterCheck, "В Console печатается количество черных точек (на 1000) в растре линии", FALSE);
214
LDPUMA_Registry(&hDebugFrag,"Поиск фрагментов линии",hDebugRSL);
215
LDPUMA_Registry(&hDebugFragOwner,"Отладка поиска фрагментов линии",hDebugFrag);
216
LDPUMA_Registry(&hDebugFragOwnerControl,"Контроль поиска фрагментов линии",hDebugFrag);
218
LDPUMA_Registry(&hDebugDrowRectForRaster,"Рисуется прямоугольник линии",hDebugFragOwnerControl);
219
LDPUMA_Registry(&hSkipCorrectPolynomia,"Не корректировать 4-хугольник линии",hDebugFragOwner);
220
LDPUMA_Registry(&hPrintCorrectPolynomia,"Результат проверки 4-хугольника линии",hDebugFragOwnerControl);
221
LDPUMA_RegistryHelp(hPrintCorrectPolynomia,"Вывод на консоль результатов проверки 4-хугольника линии",FALSE);
222
LDPUMA_Registry(&hDebugDrowPolynomia,"Рисуется контур линии",hDebugFragOwnerControl);
223
LDPUMA_Registry(&hDebugDrowCleanedRaster,"Рисуется прямоугольник линии после подчистки",hDebugFragOwnerControl);
224
LDPUMA_Registry(&hDebugDrowGetCorrectedLineStripesIntervals,"Рисуется интервальное представление линии",hDebugFragOwnerControl);
226
LDPUMA_Registry(&hDebugDrowVerticalLineRaster,"Рисуется растр вертикальной линии",hDebugFragOwnerControl);
227
LDPUMA_Registry(&hDebugDrowVerticalLineStripesIntervals,"Рисуется интервальное представление вертикальной линии",hDebugFragOwnerControl);
228
LDPUMA_Registry(&hDebugDrowVerticalLineCutPoints,"Рисуется точки пересечения вертикальной линии",hDebugFragOwnerControl);
229
LDPUMA_Registry(&hDebugTypeIntervals,"Вывод на Consol координат интервалов линии",hDebugFragOwnerControl);
230
LDPUMA_Registry(&hDebugTypeStripe,"Вывод на Consol интервальное представление линии",hDebugFragOwnerControl);
231
LDPUMA_Registry(&hSkipDeleteNoiseEvents, "Не выполнять удаление шумовых фрагментов", hDebugFragOwner);
232
LDPUMA_RegistryHelp(hSkipDeleteNoiseEvents, "Не удалять шумовые фрагменты", FALSE);
233
LDPUMA_Registry(&hSkipDelFragLines, "Не удалять сильно фрагментированную линии", hDebugFragOwner);
234
LDPUMA_RegistryHelp(hSkipDelFragLines, "Не удалять линии с числом фрагментов больше 5", FALSE);
235
LDPUMA_Registry(&hPrintFragLines, "Печать результатов проверки фрагментации", hDebugFragOwnerControl);
236
LDPUMA_RegistryHelp(hPrintFragLines, "Вывод на Consol результатов проверки кандидатов на удаление", FALSE);
237
LDPUMA_Registry(&hDebugDrawLineFragmentsOwnWindow,"Рисуются фрагменты линии в отдельном окне",hDebugFragOwnerControl);
238
LDPUMA_Registry(&hDebugDroweparationPoints,"Рисуются точки деления линии в отдельном окне",hDebugFragOwnerControl);
239
LDPUMA_Registry(&hDebugDrawLineFragments,"Рисуются фрагменты линии в основном окне",hDebugFragOwnerControl);
240
LDPUMA_RegistryHelp(hDebugDrawLineFragments, "Фрагменты рисуются для каждой линии в отдельности", FALSE);
242
LDPUMA_Registry(&hDebugAttr,"Поиск атрибутов линий",hDebugRSL);
243
LDPUMA_Registry(&hDebugAttrOwner,"Контроль поиска атрибутов линии",hDebugAttr);
244
LDPUMA_Registry(&hDebugTypeWidth,"Вывод на Consol ширины линии",hDebugAttrOwner);
245
LDPUMA_Registry(&hDebugTypeDegree,"Вывод на Consol угла наклона линии",hDebugAttrOwner);
247
247
gwHeightRC = wHeightCode;
252
void SetReturnCode_rshelllines(Word16 rc)
252
void SetReturnCode_rshelllines(uint16_t rc)
618
void CleaningRaster(DLine* pCLine, LPSTR Buffer)
622
void DrowCleanedRaster(DLine* pCLine, LPSTR Buffer, CIMAGEBITMAPINFOHEADER* image_info, Handle* HndMyWindow)
626
void DrowVerticalLineRaster(DLine* pCLine, LPSTR Buffer, CIMAGEBITMAPINFOHEADER* image_info, Handle* HndMyWindow)
630
void Transpose_bit_matrixes(PCHAR buf_in,PCHAR buf_out, Rect32* rect)
634
BOOL GetLineStripesIntervals(CLINE_handle line, DLine* pCLine, PCHAR pRaster, BOOL FlagVerticalLine)
618
void CleaningRaster(DLine* pCLine, char* Buffer)
622
void DrowCleanedRaster(DLine* pCLine, char* Buffer, CIMAGEBITMAPINFOHEADER* image_info, Handle* HndMyWindow)
626
void DrowVerticalLineRaster(DLine* pCLine, char* Buffer, CIMAGEBITMAPINFOHEADER* image_info, Handle* HndMyWindow)
630
void Transpose_bit_matrixes(pchar buf_in,pchar buf_out, Rect32* rect)
634
Bool GetLineStripesIntervals(CLINE_handle line, DLine* pCLine, pchar pRaster, Bool FlagVerticalLine)
639
void FillingStripes(CLINE_handle line, int y, INT Count, WORD* pIntervals, BOOL FlagVerticalLine, DLine* pCLine)
643
void CheckDotLines(DLine* pCLine, BOOL FlagVerticalLine)
647
void TypeIntervals(int y, INT Count, WORD* pIntervals)
639
void FillingStripes(CLINE_handle line, int y, int16_t Count, uint16_t* pIntervals, Bool FlagVerticalLine, DLine* pCLine)
643
void CheckDotLines(DLine* pCLine, Bool FlagVerticalLine)
647
void TypeIntervals(int y, int16_t Count, uint16_t* pIntervals)