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:
80
80
#define MaxRastrHeight 33
81
81
#define MaxRastrSize 1000
82
82
/*------------extern functions-----------------------------------------------*/
83
Bool MyGetRaster (Handle hCPage, VL_I_TASK *pTask, Word8 **ppData);
83
Bool MyGetRaster (Handle hCPage, VL_I_TASK *pTask, uchar **ppData);
84
84
/*------------own functions--------------------------------------------------*/
85
85
Bool NoInvest (LineInfo *pLns, VL_I_TASK *pTask);
86
void BlackAddFromOneToOth (VL_I_TASK *pTask, Word8 *pData, Bool NormPhoto, int One, int Oth);
87
void MakeLightProfil (VL_I_TASK *pTask, int *Profil, Word8 *pData
86
void BlackAddFromOneToOth (VL_I_TASK *pTask, uchar *pData, Bool NormPhoto, int One, int Oth);
87
void MakeLightProfil (VL_I_TASK *pTask, int *Profil, uchar *pData
88
88
, Bool NormPhoto, int *Beg, int *End, Bool UseSpusk);
89
89
Bool DecisionByImage (int *Profil, int Beg, int End, int Wid, int MaxLight
316
316
int InvestShortLineWithRastr_rv_pne (Handle hCPage, LineInfo *pLns)
318
318
VL_I_TASK Task = {0};
319
Word8 Data[MaxRastrSize];
319
uchar Data[MaxRastrSize];
322
322
int i, Beg, End, Okrug;
323
323
int Profil[MaxRastrHeight];
325
325
Task.MaxHeight = MaxRastrHeight;
326
326
Task.MaxSize = MaxRastrSize;
327
327
Task.FreeHeight = 13;
328
/* 2. ���������� ������ �� �������� �� ����. */
328
/* 2. Нормальные отказы от проверки по тифу. */
329
329
if (pLns->Flags & LI_NOTWHOLE)
331
331
if (pLns->Flags & LI_COMPLEX)
333
/* 3. ������ ������ �� �������� �� ����. ���������� ������. */
333
/* 3. Плохие отказы от проверки по тифу. Подготовка задачи. */
334
334
ret = NoInvest (pLns, &Task);
337
337
if (!AM_Skip (AM_GetKeyOfRule (RU_VL_C_ContWarn)))
338
AM_Console ("����� �� �������� �� ���� ����� (%d %d) (%d %d)\n"
338
AM_Console ("Отказ от проверки по тифу линии (%d %d) (%d %d)\n"
339
339
,pLns->A.x ,pLns->A.y, pLns->B.x, pLns->B.y);
342
/* 4. ������ ����� �����������. */
342
/* 4. Чтение части изображения. */
343
343
memset (Data, 0, sizeof (Data));
345
345
ret = MyGetRaster (hCPage, &Task, &Buffer);
348
348
if (!AM_Skip (AM_GetKeyOfRule (RU_VL_C_ContWarn)))
349
AM_Console ("�� ���� ������ �� ���� ��� ����� (%d %d) (%d %d)\n"
349
AM_Console ("Не дали данные по тифу для линии (%d %d) (%d %d)\n"
350
350
,pLns->A.x ,pLns->A.y, pLns->B.x, pLns->B.y);
353
/* 5. �����������. */
353
/* 5. Гистограмма. */
354
354
MakeLightProfil (&Task, Profil, Buffer, FALSE, &Beg, &End, TRUE);
355
355
if (!AM_Skip (AM_GetKeyOfRule (RU_VL_D_InvestImage)))
357
357
Okrug = (Task.MyNormWidth + 1)/2;
358
AM_Console ("��������� ��� ������� (%d %d) (%d %d)\n"
358
AM_Console ("Результат для области (%d %d) (%d %d)\n"
359
359
, Task.MyLeft, Task.MyTop, Task.MyLeft + Task.MyNormWidth - 1, Task.MyTop + Task.MyHeight - 1);
360
360
for (i=Beg; i<=End; i++)
364
364
, (100*Profil[i] + Okrug)/(Task.MyNormWidth));
367
/* 5-1. ����������� ���� ���������, ������� ������ ���� �� ����.
367
/* 5-1. Бессмыслица ради Коноплева, который четные разы не дает.
368
368
memset (Data, 0, sizeof (Data));
370
370
ret = MyGetRaster (hCPage, &Task, &Buffer);
373
373
if (!AM_Skip (AM_GetKeyOfRule (RU_VL_C_ContWarn)))
374
AM_Console ("�� � ����! �� ���� ������ ��� (%d %d) (%d %d)\n"
374
AM_Console ("Ну и хрен! Не дали данные для (%d %d) (%d %d)\n"
375
375
,pLns->A.x ,pLns->A.y, pLns->B.x, pLns->B.y);
377
/* 6. ������� �� �����. */
377
/* 6. Решение по линии. */
378
378
// if ((Task.LineWid <= 2)&&((Task.MyNormWidth >= 300)))
379
379
if ((Task.LineWid <= 3)&&((Task.MyNormWidth >= 200))) //28.09.00
380
380
ret = DecisionByImage (Profil, Beg, End, Task.MyNormWidth, 10, 69);//70);