~ubuntu-branches/ubuntu/precise/cuneiform/precise

« back to all changes in this revision

Viewing changes to cuneiform_src/Kern/rmarker/shortverticallinesfilter.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jakub Wilk, c-assert.diff, slovenian-slv.diff
  • Date: 2011-01-26 21:53:07 UTC
  • mfrom: (5.1.1 experimental)
  • Revision ID: james.westby@ubuntu.com-20110126215307-62x61mcesr607qb7
Tags: 1.0.0+dfsg-2
* Upload to unstable.
* Explicitly build-depend on pkg-config. Thanks to Stefano Rivera for the
  bug report.
* Add Vcs-* fields.
* Use the standard C assert() macro, rather than custom Cuneiform one.
  [c-assert.diff]
* Pass CFLAGS, CXXFLAGS and LDFLAGS (get from dpkg-buildflags) to cmake
  (closes: #608345). Thanks to Sami Liedes for the bug report.
  + Build depend on dpkg-dev (>= 1.15.7).
* Pass --parallel to dh.
  + Bump debhelper minimum version to 7.4.10.
* Update debian/copyright to the latest DEP-5 version.
* Bump year in debian/copyright.
* Explicitly link to GraphicsMagick (rather than via the ImageMagick
  compatibility layer).
* Don't ship /usr/lib/cuneiform/*.so symlinks. These libraries are
  considered private, at least until #598616 is fixed.
* Rename some private variables in debian/rules to make them lowercase.
* Update patch headers.
* Provide proper ‘build-arch’ and ‘build-indep’ targets in debian/rules.
* Document input format in the manual page (closes: #572061). Thanks to
  Janusz S. Bień for the bug report.
* Use ‘slv’ (rather than ‘slo’) as language code for Slovenian.
  [slovenian-slv.diff]
* Fix package description: Slovenian is supported, Slovak is not.
* Improve documentation of the language (-l) option (closes: #602512).
  Thanks to Jari Aalto for the bug report.
* Install reasons file for vrms.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
Copyright (c) 1993-2008, Cognitive Technologies
3
3
All rights reserved.
4
4
 
5
 
����������� ��������� ��������������� � ������������� ��� � ���� ��������� ����,
6
 
��� � � �������� �����, � ����������� ��� ���, ��� ���������� ��������� �������:
7
 
 
8
 
      * ��� ��������� ��������������� ��������� ���� ������ ���������� ���������
9
 
        ���� ����������� �� ��������� �����, ���� ������ ������� � �����������
10
 
        ����� �� ��������.
11
 
      * ��� ��������� ��������������� ��������� ���� � ������������ �/��� �
12
 
        ������ ����������, ������������ ��� ���������������, ������ �����������
13
 
        ��������� ���� ���������� �� ��������� �����, ���� ������ ������� �
14
 
        ����������� ����� �� ��������.
15
 
      * �� �������� Cognitive Technologies, �� ����� �� ����������� �� �����
16
 
        ���� ������������ � �������� �������� ��������� �/��� �����������
17
 
        ���������, ���������� �� ���� ��, ��� ���������������� �����������
18
 
        ����������.
19
 
 
20
 
��� ��������� ������������� ����������� ��������� ���� �/��� ������� ������ "���
21
 
��� ����" ��� ������-���� ���� ��������, ���������� ���� ��� ���������������,
22
 
������� �������� ������������ �������� � ����������� ��� ���������� ����, �� ��
23
 
������������� ���. �� �������� ��������� ���� � �� ���� ������ ����, �������
24
 
����� �������� �/��� �������� �������������� ���������, �� � ���� ������ ��
25
 
��Ѩ� ���������������, ������� ����� �����, ���������, ����������� ���
26
 
������������� ������, ��������� � �������������� ��� ���������� ����������
27
 
������������� ������������� ��������� (������� ������ ������, ��� ������,
28
 
������� ���������, ��� ������ �/��� ������ �������, ���������� ��-�� ��������
29
 
������� ��� �/��� ������ ��������� �������� ��������� � ������� �����������,
30
 
�� �� ������������� ����� ��������), �� �� ������������� ���, ���� ���� �����
31
 
�������� ��� ������ ���� ���� �������� � ����������� ����� ������� � ������.
 
5
Разрешается повторное распространение и использование как в виде исходного кода,
 
6
так и в двоичной форме, с изменениями или без, при соблюдении следующих условий:
 
7
 
 
8
      * При повторном распространении исходного кода должны оставаться указанное
 
9
        выше уведомление об авторском праве, этот список условий и последующий
 
10
        отказ от гарантий.
 
11
      * При повторном распространении двоичного кода в документации и/или в
 
12
        других материалах, поставляемых при распространении, должны сохраняться
 
13
        указанная выше информация об авторском праве, этот список условий и
 
14
        последующий отказ от гарантий.
 
15
      * Ни название Cognitive Technologies, ни имена ее сотрудников не могут
 
16
        быть использованы в качестве средства поддержки и/или продвижения
 
17
        продуктов, основанных на этом ПО, без предварительного письменного
 
18
        разрешения.
 
19
 
 
20
ЭТА ПРОГРАММА ПРЕДОСТАВЛЕНА ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ И/ИЛИ ДРУГИМИ ЛИЦАМИ "КАК
 
21
ОНА ЕСТЬ" БЕЗ КАКОГО-ЛИБО ВИДА ГАРАНТИЙ, ВЫРАЖЕННЫХ ЯВНО ИЛИ ПОДРАЗУМЕВАЕМЫХ,
 
22
ВКЛЮЧАЯ ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ, НО НЕ
 
23
ОГРАНИЧИВАЯСЬ ИМИ. НИ ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ И НИ ОДНО ДРУГОЕ ЛИЦО, КОТОРОЕ
 
24
МОЖЕТ ИЗМЕНЯТЬ И/ИЛИ ПОВТОРНО РАСПРОСТРАНЯТЬ ПРОГРАММУ, НИ В КОЕМ СЛУЧАЕ НЕ
 
25
НЕСЁТ ОТВЕТСТВЕННОСТИ, ВКЛЮЧАЯ ЛЮБЫЕ ОБЩИЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ ИЛИ
 
26
ПОСЛЕДОВАВШИЕ УБЫТКИ, СВЯЗАННЫЕ С ИСПОЛЬЗОВАНИЕМ ИЛИ ПОНЕСЕННЫЕ ВСЛЕДСТВИЕ
 
27
НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ (ВКЛЮЧАЯ ПОТЕРИ ДАННЫХ, ИЛИ ДАННЫЕ,
 
28
СТАВШИЕ НЕГОДНЫМИ, ИЛИ УБЫТКИ И/ИЛИ ПОТЕРИ ДОХОДОВ, ПОНЕСЕННЫЕ ИЗ-ЗА ДЕЙСТВИЙ
 
29
ТРЕТЬИХ ЛИЦ И/ИЛИ ОТКАЗА ПРОГРАММЫ РАБОТАТЬ СОВМЕСТНО С ДРУГИМИ ПРОГРАММАМИ,
 
30
НО НЕ ОГРАНИЧИВАЯСЬ ЭТИМИ СЛУЧАЯМИ), НО НЕ ОГРАНИЧИВАЯСЬ ИМИ, ДАЖЕ ЕСЛИ ТАКОЙ
 
31
ВЛАДЕЛЕЦ ИЛИ ДРУГОЕ ЛИЦО БЫЛИ ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ И ПОТЕРЬ.
32
32
 
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:
54
54
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
55
55
*/
56
56
 
57
 
/**********  ���������  ****************************************************************************/
58
 
/*  �����,                                                                                         */
59
 
/*  �����������                                                                                    */
60
 
/*  ������     :                                                                                   */
61
 
/*  ��������   :  30.08.00                                                                         */
62
 
/*  ����       :  'ShortVerticalLinesFilter.cpp'                                                   */
63
 
/*  ���������� :                                                                                   */
64
 
/*  ���������� :                                                                                   */
 
57
/**********  Заголовок  ****************************************************************************/
 
58
/*  Автор,                                                                                         */
 
59
/*  комментарии                                                                                    */
 
60
/*  правка     :                                                                                   */
 
61
/*  Редакция   :  30.08.00                                                                         */
 
62
/*  Файл       :  'ShortVerticalLinesFilter.cpp'                                                   */
 
63
/*  Содержание :                                                                                   */
 
64
/*  Назначение :                                                                                   */
65
65
/*-------------------------------------------------------------------------------------------------*/
66
66
////////////////////////////////////////////////////////////////////////////////////////////////////////
67
67
//
79
79
 
80
80
/////////////////////////////////////////////////////////////////////////////////////////////////////
81
81
//
82
 
Bool32 ShortVerticalLinesProcess ( Word32 Step, PRMPreProcessImage Image )
 
82
Bool32 ShortVerticalLinesProcess ( uint32_t Step, PRMPreProcessImage Image )
83
83
{
84
84
        Bool32 bRet = FALSE;
85
85
        Bool32 bClear = FALSE;
91
91
                //gSVLBuffer.VLinefBufferA = gSVLBuffer.LineInfoA->Ver.Lns = (LineInfo *)myAlloc(sizeof(LineInfo) * PUMAMaxNumLines);
92
92
 
93
93
                if ( gSVLBuffer.VLinefBufferA == NULL )
94
 
                        gSVLBuffer.VLinefBufferA = gSVLBuffer.LineInfoA->Ver.Lns = (LineInfo *)CFIO_DAllocMemory((sizeof(LineInfo) * PUMAMaxNumLines), MAF_GALL_GPTR, (PInt8)"puma", (PInt8)"SVL step I lines pool");
 
94
                        gSVLBuffer.VLinefBufferA = gSVLBuffer.LineInfoA->Ver.Lns = (LineInfo *)CFIO_DAllocMemory((sizeof(LineInfo) * PUMAMaxNumLines), MAF_GALL_GPTR, (pchar)"puma", (pchar)"SVL step I lines pool");
95
95
 
96
96
                bRet = ReadSVLFromPageContainer( gSVLBuffer.LineInfoA, Image );
97
97
                bClear = bRet == FALSE;
104
104
                //gSVLBuffer.VLinefBufferB = gSVLBuffer.LineInfoB->Ver.Lns = (LineInfo *)myAlloc(sizeof(LineInfo) * PUMAMaxNumLines);
105
105
 
106
106
                if ( gSVLBuffer.VLinefBufferB == NULL )
107
 
                        gSVLBuffer.VLinefBufferB = gSVLBuffer.LineInfoB->Ver.Lns = (LineInfo *)CFIO_DAllocMemory((sizeof(LineInfo) * PUMAMaxNumLines), MAF_GALL_GPTR, (PInt8)"puma", (PInt8)"SVL step II lines pool");
 
107
                        gSVLBuffer.VLinefBufferB = gSVLBuffer.LineInfoB->Ver.Lns = (LineInfo *)CFIO_DAllocMemory((sizeof(LineInfo) * PUMAMaxNumLines), MAF_GALL_GPTR, (pchar)"puma", (pchar)"SVL step II lines pool");
108
108
 
109
109
                bRet = ReadSVLFromPageContainer( gSVLBuffer.LineInfoB, Image );
110
110
                ////////////////
111
 
                // ��������� � �������� ���
 
111
                // обработка и удаление тут
112
112
                if ( bRet )
113
113
                {
114
114
                        bRet = SVLFilter(gSVLBuffer.LineInfoA, gSVLBuffer.LineInfoB, Image);
156
156
// Handle         hBlockLineHor;
157
157
// Handle         hBlockLineVer;
158
158
// Handle         hBlockLinePrev;
159
 
 Word32         nTagSize;
160
 
// Word32         nReal;
161
 
// Word32         wErr32;
 
159
 uint32_t         nTagSize;
 
160
// uint32_t         nReal;
 
161
// uint32_t         wErr32;
162
162
 
163
163
 nTagSize = sizeof (LinesTotalInfo);
164
 
 Word32 size_line_com=sizeof(LINE_COM);
 
164
 uint32_t size_line_com=sizeof(LINE_COM);
165
165
 Bool32 fl_break;
166
166
 int num=0;
167
167
 int count=0;
194
194
                   if(LTInfo->Hor.Lns)
195
195
                   {
196
196
                    num=LTInfo->Hor.Cnt;
197
 
                    LTInfo->Hor.Lns[num].A.x=(Int16)(cpdata->Line.Beg_X);
198
 
            LTInfo->Hor.Lns[num].A.y=(Int16)(cpdata->Line.Beg_Y);
199
 
                    LTInfo->Hor.Lns[num].B.x=(Int16)(cpdata->Line.End_X);
200
 
                    LTInfo->Hor.Lns[num].B.y=(Int16)(cpdata->Line.End_Y);
 
197
                    LTInfo->Hor.Lns[num].A.x=(int16_t)(cpdata->Line.Beg_X);
 
198
            LTInfo->Hor.Lns[num].A.y=(int16_t)(cpdata->Line.Beg_Y);
 
199
                    LTInfo->Hor.Lns[num].B.x=(int16_t)(cpdata->Line.End_X);
 
200
                    LTInfo->Hor.Lns[num].B.y=(int16_t)(cpdata->Line.End_Y);
201
201
                    LTInfo->Hor.Lns[num].Thickness=cpdata->Line.Wid10/10;
202
202
            LTInfo->Hor.Lns[num].Flags=cpdata->Flags;
203
203
                    (LTInfo->Hor.Cnt)++;
208
208
                   if(LTInfo->Ver.Lns)
209
209
                   {
210
210
                    num=LTInfo->Ver.Cnt;
211
 
                    LTInfo->Ver.Lns[num].A.x=(Int16)(cpdata->Line.Beg_X);
212
 
            LTInfo->Ver.Lns[num].A.y=(Int16)(cpdata->Line.Beg_Y);
213
 
                    LTInfo->Ver.Lns[num].B.x=(Int16)(cpdata->Line.End_X);
214
 
                    LTInfo->Ver.Lns[num].B.y=(Int16)(cpdata->Line.End_Y);
 
211
                    LTInfo->Ver.Lns[num].A.x=(int16_t)(cpdata->Line.Beg_X);
 
212
            LTInfo->Ver.Lns[num].A.y=(int16_t)(cpdata->Line.Beg_Y);
 
213
                    LTInfo->Ver.Lns[num].B.x=(int16_t)(cpdata->Line.End_X);
 
214
                    LTInfo->Ver.Lns[num].B.y=(int16_t)(cpdata->Line.End_Y);
215
215
                    LTInfo->Ver.Lns[num].Thickness=cpdata->Line.Wid10/10;
216
216
            LTInfo->Ver.Lns[num].Flags=cpdata->Flags;
217
217
                    (LTInfo->Ver.Cnt)++;
234
234
        hBlockLine = CPAGE_GetBlockFirst (Image->hCPAGE, RLINE_BLOCK_TYPE);
235
235
        if (!hBlockLine)
236
236
        {
237
 
                //sprintf (pStr, "����� �� ����������.");
 
237
                //sprintf (pStr, "Линии не выделялись.");
238
238
                //return RV_EMPTY;
239
239
                bRet =  FALSE;
240
240
        }
246
246
                //Error_CPage ("[GetBlockFirst]");
247
247
                bRet =  FALSE;
248
248
        }
249
 
        //�����.... ��� �����?
 
249
        //берем.... что берем?
250
250
        if ( bRet )
251
251
        {
252
252
                nReal = CPAGE_GetBlockData (Image->hCPAGE, hBlockLine, RLINE_BLOCK_TYPE, (void *)LTInfo, nTagSize);
261
261
        }
262
262
        if (LTInfo->Hor.Cnt + LTInfo->Ver.Cnt >= PUMAMaxNumLines)
263
263
        {
264
 
                //sprintf (pStr, "�� ������� ������ ��� %d �����!", LTInfo.Hor.Cnt + LTInfo.Ver.Cnt);
 
264
                //sprintf (pStr, "Не хватило памяти под %d линии!", LTInfo.Hor.Cnt + LTInfo.Ver.Cnt);
265
265
                //return RV_DOUBT;
266
266
                bRet = FALSE;
267
267
        }
268
 
        //  �������������� �����
 
268
        //  Горизонтальные линии
269
269
        if ( bRet && pLHor != NULL )
270
270
        {
271
 
                for (Int32 i=0; i<LTInfo->Hor.Cnt; i++)
 
271
                for (int32_t i=0; i<LTInfo->Hor.Cnt; i++)
272
272
                {
273
273
                        if (i==0)
274
 
                                hBlockLineHor = CPAGE_GetBlockFirst (Image->hCPAGE, (Word32)(LTInfo->Hor.Lns));
 
274
                                hBlockLineHor = CPAGE_GetBlockFirst (Image->hCPAGE, (uint32_t)(LTInfo->Hor.Lns));
275
275
                        else
276
 
                                hBlockLineHor = CPAGE_GetBlockNext (Image->hCPAGE, hBlockLinePrev, (Word32)(LTInfo->Hor.Lns));
 
276
                                hBlockLineHor = CPAGE_GetBlockNext (Image->hCPAGE, hBlockLinePrev, (uint32_t)(LTInfo->Hor.Lns));
277
277
                        wErr32 = CPAGE_GetReturnCode ();
278
278
                        if (wErr32!=0)
279
279
                        {
285
285
                                break;
286
286
                        }
287
287
                        nTagSize = sizeof (LineInfo);
288
 
                        nReal = CPAGE_GetBlockData (Image->hCPAGE, hBlockLineHor, (Word32)(LTInfo->Hor.Lns), (void *)&(pLHor[i]), nTagSize);
 
288
                        nReal = CPAGE_GetBlockData (Image->hCPAGE, hBlockLineHor, (uint32_t)(LTInfo->Hor.Lns), (void *)&(pLHor[i]), nTagSize);
289
289
                        wErr32 = CPAGE_GetReturnCode ();
290
290
                        if ((nReal!=nTagSize)||(wErr32!=0))
291
291
                        {
296
296
                        hBlockLinePrev = hBlockLineHor;
297
297
                }
298
298
        }
299
 
        // ������������ �����
 
299
        // Вертикальные линии
300
300
        if ( bRet && pLVer != NULL )
301
301
        {
302
 
                for (Int32 i=0; i<LTInfo->Ver.Cnt; i++)
 
302
                for (int32_t i=0; i<LTInfo->Ver.Cnt; i++)
303
303
                {
304
304
                        if (i==0)
305
 
                                hBlockLineVer = CPAGE_GetBlockFirst (Image->hCPAGE, (Word32)(LTInfo->Ver.Lns));
 
305
                                hBlockLineVer = CPAGE_GetBlockFirst (Image->hCPAGE, (uint32_t)(LTInfo->Ver.Lns));
306
306
                        else
307
 
                                hBlockLineVer = CPAGE_GetBlockNext (Image->hCPAGE, hBlockLinePrev, (Word32)(LTInfo->Ver.Lns));
 
307
                                hBlockLineVer = CPAGE_GetBlockNext (Image->hCPAGE, hBlockLinePrev, (uint32_t)(LTInfo->Ver.Lns));
308
308
                        wErr32 = CPAGE_GetReturnCode ();
309
309
                        if (wErr32!=0)
310
310
                        {
316
316
                                break;
317
317
                        }
318
318
                        nTagSize = sizeof (LineInfo);
319
 
                        nReal = CPAGE_GetBlockData (Image->hCPAGE, hBlockLineVer, (Word32)(LTInfo->Ver.Lns), (void *)&(pLVer[i]), nTagSize);
 
319
                        nReal = CPAGE_GetBlockData (Image->hCPAGE, hBlockLineVer, (uint32_t)(LTInfo->Ver.Lns), (void *)&(pLVer[i]), nTagSize);
320
320
                        wErr32 = CPAGE_GetReturnCode ();
321
321
                        if ((nReal!=nTagSize)||(wErr32!=0))
322
322
                        {
339
339
Bool32 SVLFilter(LinesTotalInfo *LtiA, LinesTotalInfo *LtiB, PRMPreProcessImage Image)
340
340
{
341
341
        Bool32 rc = TRUE;
342
 
        Word32 LinesTotalA;
343
 
        Word32 LinesTotalB;
 
342
        uint32_t LinesTotalA;
 
343
        uint32_t LinesTotalB;
344
344
        char str[255];
345
 
        Int32 j = 0;
346
 
        Word32 SVLCount = 0;
 
345
        int32_t j = 0;
 
346
        uint32_t SVLCount = 0;
347
347
        Rect16 ZoomRect;
348
348
 
349
349
        bShowDebug     = !LDPUMA_Skip(Image->hDebugSVLines);
361
361
 
362
362
        if ( ( bShowDebug || bShowStepDebug )&& bShowDebugData )
363
363
        {
364
 
                sprintf( str, "VSL: �� ������ ������ - %i, ����� - %i\n", LinesTotalA, LinesTotalB);
 
364
                sprintf( str, "VSL: до поиска таблиц - %i, после - %i\n", LinesTotalA, LinesTotalB);
365
365
                LDPUMA_Console(str);
366
366
        }
367
367
 
368
 
        for (Word32 i=0; i<LinesTotalB; i++)
 
368
        for (uint32_t i=0; i<LinesTotalB; i++)
369
369
        {
370
370
                if ( LtiB->Ver.Lns[i].Flags != LtiA->Ver.Lns[i].Flags )
371
371
                {
386
386
                                                                 LtiA->Ver.Lns[i].Flags,
387
387
                                                                 LtiB->Ver.Lns[i].Flags);
388
388
 
389
 
                                        j += sprintf( str + j, " - �������");
 
389
                                        j += sprintf( str + j, " - удалить");
390
390
 
391
391
                                        j += sprintf ( str + j, "\n");
392
392
 
423
423
        {
424
424
                if ( j == 0 && bShowDebugData )
425
425
                {
426
 
                        LDPUMA_Console("VSL: ������ ��������� �� �������\n");
 
426
                        LDPUMA_Console("VSL: Нужных изменений не найдено\n");
427
427
                }
428
428
                else
429
429
                {
430
 
                        LDPUMA_Console("VSL: ������� %i �����. ����� �� ��� ������ � ������ ������...\n", SVLCount);
 
430
                        LDPUMA_Console("VSL: Найдено %i линий. Нажми на что нибудь и пойдем дальше...\n", SVLCount);
431
431
                        LDPUMA_WaitUserInput( Image->hDebugSVLines, NULL );
432
432
                        LDPUMA_DeleteLines(NULL, 315);
433
433
                        LDPUMA_DeleteRects(NULL, 316);
449
449
        Bool32 GoodComp;
450
450
        Rect16 Rc;
451
451
        Rect16 Rl;
452
 
        Int32 nRc = 0;
453
 
        Int32 Filter = 0;
454
 
        Int32 j = 0;
 
452
        int32_t nRc = 0;
 
453
        int32_t Filter = 0;
 
454
        int32_t j = 0;
455
455
        char str[255];
456
 
        Int16 Thick = Line->Thickness / 2;
 
456
        int16_t Thick = Line->Thickness / 2;
457
457
        Bool32 bDieComponent = FALSE;
458
458
 
459
459
 
530
530
{
531
531
        Bool32 rc = FALSE;
532
532
 
533
 
        Int32 M1 = A->bottom >= A->top  ? A->bottom : A->top;
534
 
        Int32 M2 = A->right  >= A->left ? A->right  : A->left;
535
 
        Int32 m1 = A->bottom >= A->top  ? A->top    : A->bottom;
536
 
        Int32 m2 = A->right  >= A->left ? A->left   : A->right;
537
 
        Int32 M3 = B->bottom >= B->top  ? B->bottom : B->top;
538
 
        Int32 M4 = B->right  >= B->left ? B->right  : B->left;
539
 
        Int32 m3 = B->bottom >= B->top  ? B->top    : B->bottom;
540
 
        Int32 m4 = B->right  >= B->left ? B->left   : B->right;
 
533
        int32_t M1 = A->bottom >= A->top  ? A->bottom : A->top;
 
534
        int32_t M2 = A->right  >= A->left ? A->right  : A->left;
 
535
        int32_t m1 = A->bottom >= A->top  ? A->top    : A->bottom;
 
536
        int32_t m2 = A->right  >= A->left ? A->left   : A->right;
 
537
        int32_t M3 = B->bottom >= B->top  ? B->bottom : B->top;
 
538
        int32_t M4 = B->right  >= B->left ? B->right  : B->left;
 
539
        int32_t m3 = B->bottom >= B->top  ? B->top    : B->bottom;
 
540
        int32_t m4 = B->right  >= B->left ? B->left   : B->right;
541
541
 
542
542
        if ( ( ( ( B->top >= m1 ) && ( B->top <= M1 ) ) || ( ( B->bottom >= m1 ) && ( B->bottom <= M1 ) ) ) &&
543
543
                 ( ( ( B->left >= m2 ) && ( B->left <= M2 ) ) || ( ( B->right >= m2 ) && ( B->right <= M2 ) ) ) )
554
554
        return rc;
555
555
}
556
556
/////////////////////////////////////////////////////////////////////////////////////////////////////
557
 
// ����� � ���������. ������ ��������, ��������� ��������
558
 
Bool32 CompIsGood (CCOM_comp * pcomp, Int32 Filter)
 
557
// взято у Михайлова. лишнее выкинуто, остальное изменено
 
558
Bool32 CompIsGood (CCOM_comp * pcomp, int32_t Filter)
559
559
{
560
560
        switch (Filter)
561
561
        {