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:
73
73
#include "skewtrip.h"
74
74
#include "compat_defs.h"
75
75
/*------------own objects----------------------------------------------------*/
76
static Word16 gwHeightRC = 0; // ���������� ����� ���������� � ����� ������
77
static Word16 gwLowRC = ER_ROUGH_NONE; // ������ � ������ ����������
78
static HANDLE ghStorage = NULL; // ��������� �� ���������
79
static HANDLE ghInst = NULL; // ��������� �� ���� ����
80
static Int8 szBuffer[512]; // ��� �������� ������
76
static uint16_t gwHeightRC = 0; // Уникальный номер библиотеки в одном сеансе
77
static uint16_t gwLowRC = ER_ROUGH_NONE; // Ошибки в работе библиотеки
78
static HANDLE ghStorage = NULL; // Указатель на хранилище
79
static HANDLE ghInst = NULL; // Указатель на свое окно
80
static char szBuffer[512]; // Для докладов наверх
81
81
/*------------own functions--------------------------------------------------*/
82
void SetReturnCode_smetric (Word16 rc);
83
Word16 GetReturnCode_smetric ();
82
void SetReturnCode_smetric (uint16_t rc);
83
uint16_t GetReturnCode_smetric ();
84
84
Bool WasInitSMetric ();
85
85
/*------------extern functions------------------------------------------------*/
86
Bool AM_InitComm (Word16 wRltOwnCode);
86
Bool AM_InitComm (uint16_t wRltOwnCode);
87
87
void AM_DoneComm ();
88
88
/*---------------------------------------------------------------------------*/
89
BOOL APIENTRY DllMain( HANDLE hModule,
90
DWORD ul_reason_for_call,
89
Bool APIENTRY DllMain( HANDLE hModule,
90
uint32_t ul_reason_for_call,
93
93
switch( ul_reason_for_call )
107
107
/*---------------------------------------------------------------------------*/
108
SMetric_FUNC(Bool32) SMetric_Init (Word16 wHeightCode, HANDLE hStorage)
108
SMetric_FUNC(Bool32) SMetric_Init (uint16_t wHeightCode, HANDLE hStorage)
112
112
if (gwHeightRC!=0)
114
err8 = (Word8)ER_ROUGH_CALL_REFUSED;
115
gwLowRC = (Word16)(err8<<8);
116
err8 = (Word8)ER_DETAIL_WAS_YET_INIT;
117
gwLowRC |= (Word16)err8;
114
err8 = (uchar)ER_ROUGH_CALL_REFUSED;
115
gwLowRC = (uint16_t)(err8<<8);
116
err8 = (uchar)ER_DETAIL_WAS_YET_INIT;
117
gwLowRC |= (uint16_t)err8;
120
120
if (wHeightCode==0)
122
err8 = (Word8)ER_ROUGH_CALL_REFUSED;
123
gwLowRC = (Word16)(err8<<8);
124
err8 = (Word8)ER_DETAIL_BAD_UNICAL_NUMBER;
125
gwLowRC |= (Word16)err8;
122
err8 = (uchar)ER_ROUGH_CALL_REFUSED;
123
gwLowRC = (uint16_t)(err8<<8);
124
err8 = (uchar)ER_DETAIL_BAD_UNICAL_NUMBER;
125
gwLowRC |= (uint16_t)err8;
128
128
ret = AM_InitComm (wHeightCode);
131
err8 = (Word8)ER_ROUGH_NORMAL;
132
gwLowRC = (Word16)(err8<<8);
133
err8 = (Word8)ER_DETAIL_FUNC_DPUMA;
134
gwLowRC |= (Word16)err8;
131
err8 = (uchar)ER_ROUGH_NORMAL;
132
gwLowRC = (uint16_t)(err8<<8);
133
err8 = (uchar)ER_DETAIL_FUNC_DPUMA;
134
gwLowRC |= (uint16_t)err8;
137
137
gwHeightRC = wHeightCode;
160
160
/*---------------------------------------------------------------------------*/
161
SMetric_FUNC(Word32) SMetric_GetReturnCode()
161
SMetric_FUNC(uint32_t) SMetric_GetReturnCode()
165
165
if (gwHeightRC==0)
168
err8 = (Word8)ER_ROUGH_CALL_REFUSED;
169
gwLowRC = (Word16)(err8<<8);
170
err8 = (Word8)ER_DETAIL_WAS_NOT_INIT;
171
gwLowRC |= (Word16)err8;
172
err32 |= (Word32)gwLowRC;
167
err32 = (uint32_t)(0);
168
err8 = (uchar)ER_ROUGH_CALL_REFUSED;
169
gwLowRC = (uint16_t)(err8<<8);
170
err8 = (uchar)ER_DETAIL_WAS_NOT_INIT;
171
gwLowRC |= (uint16_t)err8;
172
err32 |= (uint32_t)gwLowRC;
175
175
if (gwLowRC==ER_ROUGH_NONE)
177
return (Word32)(gwHeightRC<<16)|(gwLowRC);
176
return (uint32_t)(0);
177
return (uint32_t)(gwHeightRC<<16)|(gwLowRC);
179
179
/*---------------------------------------------------------------------------*/
180
SMetric_FUNC(Int8 *) SMetric_GetReturnString(Word32 dwError)
180
SMetric_FUNC(char *) SMetric_GetReturnString(uint32_t dwError)
185
185
if (gwHeightRC==0)
187
err8 = (Word8)ER_ROUGH_CALL_REFUSED;
188
gwLowRC = (Word16)(err8<<8);
189
err8 = (Word8)ER_DETAIL_WAS_NOT_INIT;
190
gwLowRC |= (Word16)err8;
187
err8 = (uchar)ER_ROUGH_CALL_REFUSED;
188
gwLowRC = (uint16_t)(err8<<8);
189
err8 = (uchar)ER_DETAIL_WAS_NOT_INIT;
190
gwLowRC |= (uint16_t)err8;
193
193
if (dwError >> 16 != gwHeightRC)
195
err8 = (Word8)ER_ROUGH_OTHER_LIBRARY;
196
gwLowRC = (Word16)(err8<<8);
197
err8 = (Word8)ER_DETAIL_NO_COMMENT;
198
gwLowRC |= (Word16)err8;
195
err8 = (uchar)ER_ROUGH_OTHER_LIBRARY;
196
gwLowRC = (uint16_t)(err8<<8);
197
err8 = (uchar)ER_DETAIL_NO_COMMENT;
198
gwLowRC |= (uint16_t)err8;
201
err16 = (Word16)(dwError & 0xFFFF);
202
err8 = (Word8)((err16/256) & 255);
203
err8_1 = (Word8)(err16 & 255);
201
err16 = (uint16_t)(dwError & 0xFFFF);
202
err8 = (uchar)((err16/256) & 255);
203
err8_1 = (uchar)(err16 & 255);
204
204
LoadString ((HINSTANCE)ghInst, err16, (char *)szBuffer, sizeof (szBuffer));
207
207
case ER_ROUGH_NONE :
208
sprintf ((char *)szBuffer, "SMetric : ������ ���.");
208
sprintf ((char *)szBuffer, "SMetric : Ошибок нет.");
210
210
case ER_ROUGH_OTHER_LIBRARY :
211
sprintf ((char *)szBuffer, "SMetric : ������ ������ ����������.");
211
sprintf ((char *)szBuffer, "SMetric : Ошибка другой библиотеки.");
213
213
case ER_ROUGH_NOT_SUCH_ERROR_CODE :
214
sprintf ((char *)szBuffer, "SMetric : ��� ������ ���� ������.");
214
sprintf ((char *)szBuffer, "SMetric : Нет такого кода ошибки.");
216
216
case ER_ROUGH_CALL_REFUSED :
217
sprintf ((char *)szBuffer, "SMetric : ������������� ������.");
217
sprintf ((char *)szBuffer, "SMetric : Игнорирование вызова.");
219
219
case ER_ROUGH_NORMAL :
220
sprintf ((char *)szBuffer, "SMetric : ������.");
220
sprintf ((char *)szBuffer, "SMetric : Ошибка.");
223
err8 = (Word8)ER_ROUGH_NOT_SUCH_ERROR_CODE;
224
gwLowRC = (Word16)(err8<<8);
225
err8 = (Word8)ER_DETAIL_NO_COMMENT;
226
gwLowRC |= (Word16)err8;
223
err8 = (uchar)ER_ROUGH_NOT_SUCH_ERROR_CODE;
224
gwLowRC = (uint16_t)(err8<<8);
225
err8 = (uchar)ER_DETAIL_NO_COMMENT;
226
gwLowRC |= (uint16_t)err8;
236
236
case ER_DETAIL_WAS_YET_INIT :
237
sprintf (Work, " ������������� ��� ����.");
237
sprintf (Work, " Инициализация уже была.");
239
239
case ER_DETAIL_WAS_NOT_INIT :
240
sprintf (Work, " ������������� ��� �� ����.");
240
sprintf (Work, " Инициализации еще не было.");
242
242
case ER_DETAIL_BAD_UNICAL_NUMBER :
243
sprintf (Work, " ������ ���������� �����.");
243
sprintf (Work, " Плохой уникальный номер.");
245
245
case ER_DETAIL_TOO_MUCH_CALLS :
246
sprintf (Work, " ������� ����� �������.");
246
sprintf (Work, " Слишком много вызовов.");
248
248
case ER_DETAIL_NOT_MADE_SUCH_DATA :
249
sprintf (Work, " �� ���������� ����� ������.");
249
sprintf (Work, " Не изготовляю такие данные.");
251
251
case ER_DETAIL_EMPTY_FUNC :
252
sprintf (Work, " �������������� ����� ������� �����������.");
252
sprintf (Work, " Содержательная часть функции отсутствует.");
254
254
case ER_DETAIL_MAKET_FUNC :
255
sprintf (Work, " �������-����� (���������� ������� ������).");
255
sprintf (Work, " Функция-макет (выдуманные входные данные).");
257
257
case ER_DETAIL_BAD_PARAMETRS :
258
sprintf (Work, " ������ ���������.");
258
sprintf (Work, " Плохие параметры.");
260
260
case ER_DETAIL_NO_MEMORY :
261
sprintf (Work, " ��� ������.");
261
sprintf (Work, " Нет памяти.");
263
263
case ER_DETAIL_FUNC_CPAGE :
264
sprintf (Work, " ������ ��������� ������� �� 'CPAGE'.");
264
sprintf (Work, " Ошибка вызванной функции из 'CPAGE'.");
266
266
case ER_DETAIL_FUNC_DPUMA :
267
sprintf (Work, " ������ ��������� ������� �� 'DPUMA'.");
267
sprintf (Work, " Ошибка вызванной функции из 'DPUMA'.");
269
269
case ER_DETAIL_NONE :
270
270
case ER_DETAIL_NO_COMMENT :
299
299
CASE_FUNCTION(SMetric_FindMainSkew);
300
300
case SMetric_ResolX:
301
*((Int32 *)pData) = SMetric_GetResolX();
301
*((int32_t *)pData) = SMetric_GetResolX();
303
303
case SMetric_ResolY:
304
*((Int32 *)pData) = SMetric_GetResolY();
304
*((int32_t *)pData) = SMetric_GetResolY();
307
307
*(Handle *)pData = NULL;
308
err8 = (Word8)ER_ROUGH_CALL_REFUSED;
309
gwLowRC = (Word16)(err8<<8);
310
err8 = (Word8)ER_DETAIL_NOT_MADE_SUCH_DATA;
311
gwLowRC |= (Word16)err8;
308
err8 = (uchar)ER_ROUGH_CALL_REFUSED;
309
gwLowRC = (uint16_t)(err8<<8);
310
err8 = (uchar)ER_DETAIL_NOT_MADE_SUCH_DATA;
311
gwLowRC |= (uint16_t)err8;
316
316
/*----------------------------------------------------------------------------*/
317
SMetric_FUNC(Bool32) SMetric_SetImportData(Word32 dwType, void *pData)
317
SMetric_FUNC(Bool32) SMetric_SetImportData(uint32_t dwType, void *pData)
320
320
if (gwHeightRC==0)
322
err8 = (Word8)ER_ROUGH_CALL_REFUSED;
323
gwLowRC = (Word16)(err8<<8);
324
err8 = (Word8)ER_DETAIL_WAS_NOT_INIT;
325
gwLowRC |= (Word16)err8;
322
err8 = (uchar)ER_ROUGH_CALL_REFUSED;
323
gwLowRC = (uint16_t)(err8<<8);
324
err8 = (uchar)ER_DETAIL_WAS_NOT_INIT;
325
gwLowRC |= (uint16_t)err8;
344
err8 = (Word8)ER_ROUGH_CALL_REFUSED;
345
gwLowRC = (Word16)(err8<<8);
346
err8 = (Word8)ER_DETAIL_BAD_PARAMETRS;
347
gwLowRC |= (Word16)err8;
344
err8 = (uchar)ER_ROUGH_CALL_REFUSED;
345
gwLowRC = (uint16_t)(err8<<8);
346
err8 = (uchar)ER_DETAIL_BAD_PARAMETRS;
347
gwLowRC |= (uint16_t)err8;
352
352
/*---------------------------------------------------------------------------*/
353
void SetReturnCode_smetric(Word16 rc)
353
void SetReturnCode_smetric(uint16_t rc)
357
357
/*---------------------------------------------------------------------------*/
358
Word16 GetReturnCode_smetric()
358
uint16_t GetReturnCode_smetric()
362
362
/*---------------------------------------------------------------------------*/
363
363
Bool WasInitSMetric ()
366
366
if (gwHeightRC==0)
368
err8 = (Word8)ER_ROUGH_CALL_REFUSED;
369
gwLowRC = (Word16)(err8<<8);
370
err8 = (Word8)ER_DETAIL_WAS_NOT_INIT;
371
gwLowRC |= (Word16)err8;
368
err8 = (uchar)ER_ROUGH_CALL_REFUSED;
369
gwLowRC = (uint16_t)(err8<<8);
370
err8 = (uchar)ER_DETAIL_WAS_NOT_INIT;
371
gwLowRC |= (uint16_t)err8;