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:
77
77
#include "minmax.h"
79
79
static void snap_sticks(cell *,char *);
80
/* Chops off 32 bits on 64 bit machines, but it is ok, since
81
* the result is only used informally.
83
#define pointer_to_num(x) ((unsigned int)((unsigned long)(x)))
82
86
// from module PASSE
83
BOOL _spell(PCHAR s,BYTE lang);
84
BOOL _spell_agressive(PCHAR s,BYTE lang);
85
BOOL short_spell(BYTE *wrd,BYTE language );
86
BOOL short_spell_re(BYTE *wrd,BYTE language );
87
Bool _spell(pchar s,uchar lang);
88
Bool _spell_agressive(pchar s,uchar lang);
89
Bool short_spell(uchar *wrd,uchar language );
90
Bool short_spell_re(uchar *wrd,uchar language );
89
extern INT line_number;
90
extern INT show_cut_points;
92
extern BYTE db_trace_flag, language;
93
extern int16_t line_number;
94
extern int16_t show_cut_points;
95
extern uchar db_pass ;
96
extern uchar db_trace_flag, language;
93
97
extern struct cut_elm *my_cut_points;
94
extern INT show_cut_points;
95
extern INT flag_cut_point;
96
extern INT flag_ShiftF9;
98
extern int16_t show_cut_points;
99
extern int16_t flag_cut_point;
100
extern int16_t flag_ShiftF9;
97
101
extern void Cells2CSTR(CSTR_line lin,CSTR_line lino,cell *cur,Bool32 enable_scaled);
98
102
extern void CopyAttr2CSTR(CSTR_rast_attr *attr, cell *c);
99
103
extern int cell2UniVers(UniVersions *ver, cell *c);
100
104
// from EVN32.DLL
101
extern LONG EVNGetRepresent( RecRaster *rRaster,
102
Word8 *evn, Word8 *evn_rot, Int32 font);
103
extern LONG EVNRecogCharPRN( RecRaster * rRaster,
105
extern int32_t EVNGetRepresent( RecRaster *rRaster,
106
uchar *evn, uchar *evn_rot, int32_t font);
107
extern int32_t EVNRecogCharPRN( RecRaster * rRaster,
104
108
RecVersions* EVNres );
106
110
extern void ErrorExit(int Code);
107
extern BYTE decode_ASCII_to_[256][4];
108
extern CHAR StopPoint;
109
extern BYTE CodePages[];
110
//extern INT gbCol1,gbCol2;
111
extern uchar decode_ASCII_to_[256][4];
112
extern char StopPoint;
113
extern uchar CodePages[];
114
//extern int16_t gbCol1,gbCol2;
112
static BOOL exit_enable = FALSE;
113
static BOOL cut_enable = FALSE;
114
static BOOL snap_disable = FALSE;
115
static BOOL snap_continue = FALSE;
116
BOOL snap_page_disable = FALSE;
117
static BYTE db_skip_client;
116
static Bool exit_enable = FALSE;
117
static Bool cut_enable = FALSE;
118
static Bool snap_disable = FALSE;
119
static Bool snap_continue = FALSE;
120
Bool snap_page_disable = FALSE;
121
static uchar db_skip_client;
118
122
static CSTR_line snap_line;
119
123
static cell currcell;//,*db_stopcell;
120
124
static Point32 cutpoints_show[128];
121
static Word32 numpoints_show;
125
static uint32_t numpoints_show;
122
126
static cell * cutpoints_cell=NULL;
123
static Int32 select_line=0, num_select_lines=0;
127
static int32_t select_line=0, num_select_lines=0;
124
128
cell *stopcell=NULL;
125
129
static int stop_number=0, curr_pass=-1;
127
static BYTE *snap_pass[]={
131
static uchar *snap_pass[]={
128
132
"Cut","Glue","Context","Line","Punct","Space","Lineout","(TM)(R)","Italic","Bold","Serif","Solid","Pass2","Digital","BLCut","\0"
129
133
// a b c d e f g h i j k l m n o
131
static BYTE *snap_fict[]={
135
static uchar *snap_fict[]={
132
136
"Fict0","Fict1","Fict2","Fict3","Fict4","Fict5","Fict6","Fict7","Fict8","Fict9","Fict10","Fict11","Fict12","Fict13","Fict14","\0"
133
137
// a b c d e f g h i j k l m n o
135
139
static char *snap_pass_help[]={
136
/* a */"���������� (� ���������� ��� ��������)",
137
/* b */"���������� ( ��� ����������)",
138
/* c */"�������� (+�����������)",
139
/* d */"����������� ������� ����� � �����",
142
/* g */"����� ��������� ������",
143
/* h */"������������� ��",
144
/* i */"������������� �����������",
145
/* j */"������������� ��������",
146
/* k */"������������� ����������",
147
/* l */"��������� ���������",
148
/* m */"������ ������",
149
/* n */"�������� ������",
150
/* o */"��������� ��������� ����� �� ��",
140
/* a */"разрезание (и склеивание для русского)",
141
/* b */"склеивание ( для нерусского)",
142
/* c */"контекст (+выпрямление)",
143
/* d */"определение базовых линий и диффы",
146
/* g */"показ финальной строки",
147
/* h */"распознавание ®©",
148
/* i */"распознавание курсивности",
149
/* j */"распознавание жирности",
150
/* k */"распознавание серифности",
151
/* l */"словарная валидация",
152
/* m */"второй проход",
153
/* n */"цифровые строки",
154
/* o */"запретить обрезание грязи по БЛ",
153
157
static char *snap_fict_help[100]={0};
311
315
LDPUMA_RegistryHelp(hSnapLineBL[i],snap_bl_help[i],FALSE);
314
LDPUMA_RegVariable(hSnapMain,"�����������",&db_trace_flag,"char");
318
LDPUMA_RegVariable(hSnapMain,"Трассировка",&db_trace_flag,"char");
315
319
#ifdef MATCH_WORD
316
LDPUMA_RegVariable(hSnapMain,"��������� �����",mwInput,"char *");
320
LDPUMA_RegVariable(hSnapMain,"Наложение слова",mwInput,"char *");
318
LDPUMA_Registry(&hSnapSmartCut,"��������� ���������� ����������/���������� �� 2-�� �������",hSnapMain);
319
LDPUMA_RegistryHelp(hSnapSmartCut,"��������� ���������� ����������/���������� �� 2-�� �������",FALSE);
320
snap_page_disable = snap_disable = db_skip_client = FALSE;
321
memset(internal_skip,TRUE,snap_clients*sizeof(BOOL));
329
BOOL snap_init_variables(void)
331
snap_page_disable = snap_disable = db_skip_client = FALSE;
339
BOOL snap_fictive_skip(INT i)
341
return (BOOL)LDPUMA_SkipEx(hSnapFict[i],FALSE,TRUE,1);
344
// ����� ������������� �����
322
LDPUMA_Registry(&hSnapSmartCut,"Запретить кластерное разрезание/склеивание на 2-ом проходе",hSnapMain);
323
LDPUMA_RegistryHelp(hSnapSmartCut,"Запретить кластерное разрезание/склеивание на 2-ом проходе",FALSE);
324
snap_page_disable = snap_disable = db_skip_client = FALSE;
325
memset(internal_skip,TRUE,snap_clients*sizeof(Bool));
333
Bool snap_init_variables(void)
335
snap_page_disable = snap_disable = db_skip_client = FALSE;
343
Bool snap_fictive_skip(int16_t i)
345
return (Bool)LDPUMA_SkipEx(hSnapFict[i],FALSE,TRUE,1);
348
// показ распознавания эвент
345
349
static void snap_recogEVN(CSTR_rast r,cell * cl)
348
352
RecRaster rRaster;
349
353
char evn[256], evnr[256],evnw[256], evnrw[256], buf[256];
807
811
snap_sticks(c,str);
808
812
Snap_Console(str);
809
RUS_Console("������ �������");
813
RUS_Console("анализ батонов");
813
RUS_Console("ESC - �� ����� ��� �����");
815
RUS_Console("F1 - �������");
816
RUS_Console("F2 - ����� ������");
817
RUS_Console("F3 - ������ �����");
818
RUS_Console("F4 - �������� ��������� �� 2-� �������");
819
RUS_Console("F5 - �������� �������/���������� ���������� �� 2-� �������");
820
RUS_Console("F7 - � ��������");
821
RUS_Console("F9 - ���������� ������������� (� �.�. �� 2-� �������)");
822
RUS_Console("F11 - ������ �����������");
823
RUS_Console("F12 - ������� ������ ��������");
825
RUS_Console("Shift+F1 - ������ �������");
826
RUS_Console("Shift+F2 - ������ �����");
827
RUS_Console("Shift+F3 - ������");
828
RUS_Console("Shift+F4 - ������ ���� �� 2-� �������");
829
RUS_Console("Shift+F5 - ��������� � ������");
830
RUS_Console("Shift+F6 - ����� �����������");
831
RUS_Console("Shift+F7 - ��������� �� ����");
832
RUS_Console("Shift+F9 - �� c�������� �������");
833
RUS_Console("Shift+F11 - ����� �����������");
835
RUS_Console("Alt+F2 - ��������� ����");
836
RUS_Console("Alt+F8 - ��������� ����� � CTBase");
837
RUS_Console("Alt+F - FRH ��� ������������");
838
RUS_Console("Alt+N - ��������� ������");
839
RUS_Console("Alt+P - ���������� ������");
840
RUS_Console("Alt+S - �������");
841
RUS_Console("Alt+X - ��������");
843
RUS_Console("2(3,4...)- �������� 2-�(3,4...) ������");
844
RUS_Console("Home/End - ������/����� ������");
845
RUS_Console("+/- - ���������/��������� �����");
847
LDPUMA_RasterText("F1 - ���������. ��. �������.");
817
RUS_Console("ESC - до конца без снэпа");
819
RUS_Console("F1 - справка");
820
RUS_Console("F2 - новая строка");
821
RUS_Console("F3 - встать здесь");
822
RUS_Console("F4 - просмотр кластеров на 2-м проходе");
823
RUS_Console("F5 - просмотр склейки/разрезания кластерами на 2-м проходе");
824
RUS_Console("F7 - в отладчик");
825
RUS_Console("F9 - отладочное распознавание (в т.ч. на 2-м проходе)");
826
RUS_Console("F11 - задать трассировку");
827
RUS_Console("F12 - вывести адреса структур");
829
RUS_Console("Shift+F1 - анализ батонов");
830
RUS_Console("Shift+F2 - анализ стика");
831
RUS_Console("Shift+F3 - обрить");
832
RUS_Console("Shift+F4 - анализ слов на 2-м проходе");
833
RUS_Console("Shift+F5 - выпрямить и обрить");
834
RUS_Console("Shift+F6 - снять выпярмление");
835
RUS_Console("Shift+F7 - выпрямить на брея");
836
RUS_Console("Shift+F9 - на cледующую склейку");
837
RUS_Console("Shift+F11 - снять трассировку");
839
RUS_Console("Alt+F2 - следующий этап");
840
RUS_Console("Alt+F8 - запомнить образ в CTBase");
841
RUS_Console("Alt+F - FRH для агрессивного");
842
RUS_Console("Alt+N - следующий символ");
843
RUS_Console("Alt+P - предыдущий символ");
844
RUS_Console("Alt+S - словари");
845
RUS_Console("Alt+X - прервать");
847
RUS_Console("2(3,4...)- показать 2-ю(3,4...) строку");
848
RUS_Console("Home/End - начало/конец строки");
849
RUS_Console("+/- - увеличить/уменьшить шрифт");
851
LDPUMA_RasterText("F1 - подсказка. см. консоль.");
1031
1035
{ // F11 : set tracing
1032
1036
db_trace_flag=6;
1033
RUS_Console("����������� �����������");
1037
RUS_Console("установлена трассировка");
1036
1040
{ // F11 : clear tracing
1037
1041
db_trace_flag=0;
1038
RUS_Console("����a ����������a");
1042
RUS_Console("снятa трассировкa");
1041
1045
case VK_F12: // F12 : show positions
1042
sprintf(buf,"������� %i �� %i",pos,LDPUMA_CSTR_GetLength());
1044
sprintf(buf,"����� CSTR=0x%x(cell=0x%x,env=0x%x,prevl=0x%x,nextl=0x%x,prev=0x%x,next=0x%x)",
1045
r, c,c?c->env:0,c?c->prevl:0,c?c->nextl:0,c?c->prev:0,c?c->next:0);
1047
LDPUMA_RasterText("F12 - �������. ��. �������.");
1046
sprintf(buf,"Позиция %i из %i",pos,LDPUMA_CSTR_GetLength());
1048
sprintf(buf,"растр CSTR=0x%x(cell=0x%x,env=0x%x,prevl=0x%x,nextl=0x%x,prev=0x%x,next=0x%x)",
1051
c?pointer_to_num(c->env):0,
1052
c?pointer_to_num(c->prevl):0,
1053
c?pointer_to_num(c->nextl):0,
1054
c?pointer_to_num(c->prev):0,
1055
c?pointer_to_num(c->next):0);
1057
LDPUMA_RasterText("F12 - позиция. см. консоль.");