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:
190
190
// movements ( -=, += )
191
191
#define RC_MINUS_PT { rc.left -= pt.x; rc.right -= pt.x; rc.top -= pt.y; rc.bottom-= pt.y; return rc; }
192
192
#define RC_PLUS_PT { rc.left += pt.x; rc.right += pt.x; rc.top += pt.y; rc.bottom+= pt.y; return rc; }
193
#define RC_MINUS_PT_16 { rc.left -= (Int16)pt.x; rc.right -= (Int16)pt.x; rc.top -= (Int16)pt.y; rc.bottom-= (Int16)pt.y; return rc; }
194
#define RC_PLUS_PT_16 { rc.left += (Int16)pt.x; rc.right += (Int16)pt.x; rc.top += (Int16)pt.y; rc.bottom+= (Int16)pt.y; return rc; }
193
#define RC_MINUS_PT_16 { rc.left -= (int16_t)pt.x; rc.right -= (int16_t)pt.x; rc.top -= (int16_t)pt.y; rc.bottom-= (int16_t)pt.y; return rc; }
194
#define RC_PLUS_PT_16 { rc.left += (int16_t)pt.x; rc.right += (int16_t)pt.x; rc.top += (int16_t)pt.y; rc.bottom+= (int16_t)pt.y; return rc; }
195
195
inline Rect32& operator -=(Rect32& rc, Point32 const & pt) RC_MINUS_PT
196
196
inline Rect16& operator -=(Rect16& rc, Point16 const & pt) RC_MINUS_PT_16
197
197
inline Rect32& operator -=(Rect32& rc, Point16 const & pt) RC_MINUS_PT
328
328
//////////////////////////////////////////////////
329
inline Rect32& DeskewCenter( Rect32& rc, Int32 skew1024)
331
Point32 center; GetCenter(rc, center);
332
Point32 old_center = center;
333
Deskew( center, skew1024 );
334
center -= old_center; // diff
339
inline Rect16& DeskewCenter( Rect16& rc, Int32 skew1024)
341
Point16 center; GetCenter(rc, center);
342
Point16 old_center = center;
343
Deskew( center, skew1024 );
344
center -= old_center; // diff
349
inline Rect32& DeskewCenterRel( Rect32& rc, Int32 skew1024, Point32& pt)
351
Point32 center; GetCenter(rc, center);
352
Point32 old_center = center;
353
DeskewRel( center, skew1024, pt );
354
center -= old_center; // diff
359
inline Rect16& DeskewCenterRel( Rect16& rc, Int32 skew1024, Point16& pt)
361
Point16 center; GetCenter(rc, center);
362
Point16 old_center = center;
363
DeskewRel( center, skew1024, pt );
364
center -= old_center; // diff
369
inline Rect16& Expand( Rect16& rc, Int16 delta )
329
inline Rect32& DeskewCenter( Rect32& rc, int32_t skew1024)
331
Point32 center; GetCenter(rc, center);
332
Point32 old_center = center;
333
Deskew( center, skew1024 );
334
center -= old_center; // diff
339
inline Rect16& DeskewCenter( Rect16& rc, int32_t skew1024)
341
Point16 center; GetCenter(rc, center);
342
Point16 old_center = center;
343
Deskew( center, skew1024 );
344
center -= old_center; // diff
349
inline Rect32& DeskewCenterRel( Rect32& rc, int32_t skew1024, Point32& pt)
351
Point32 center; GetCenter(rc, center);
352
Point32 old_center = center;
353
DeskewRel( center, skew1024, pt );
354
center -= old_center; // diff
359
inline Rect16& DeskewCenterRel( Rect16& rc, int32_t skew1024, Point16& pt)
361
Point16 center; GetCenter(rc, center);
362
Point16 old_center = center;
363
DeskewRel( center, skew1024, pt );
364
center -= old_center; // diff
369
inline Rect16& Expand( Rect16& rc, int16_t delta )
371
371
rc.left -= delta; rc.top -= delta;
372
372
rc.right+= delta; rc.bottom+= delta;
376
inline Rect32& Expand( Rect32& rc, Int32 delta )
376
inline Rect32& Expand( Rect32& rc, int32_t delta )
378
378
rc.left -= delta; rc.top -= delta;
379
379
rc.right+= delta; rc.bottom+= delta;