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

« back to all changes in this revision

Viewing changes to cuneiform_src/Kern/hhh/tabl.h

  • 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:
68
68
  typedef struct {int i;} STAT_STR;
69
69
  typedef struct {STAT_STR *stat_str; int dx_col,dy_col,dsym_col,dy_Low,dy_Upp;} STAT_COL;
70
70
  typedef int (*FUN_POMP)(void);
71
 
  typedef void (*FUN_MESS)(WORD wPar,DWORD lPar);
 
71
  typedef void (*FUN_MESS)(uint16_t wPar,DWORD lPar);
72
72
  typedef struct hSTRET
73
73
  { short xn,xk,yn,yk;
74
74
    float k;
75
75
    short thickness;
76
76
    float angle;
77
 
    BYTE FeatOrient;
78
 
    BYTE TypeLine;
 
77
    uchar FeatOrient;
 
78
    uchar TypeLine;
79
79
    short LenShadow;
80
80
  } STRET;
81
81
  typedef struct { KNOT ***beg_as; KNOT *beg_free;
85
85
#define SUB_TREE
86
86
typedef struct hSUB_ALLOC
87
87
{
88
 
        char **Ptr;//[NumPtr][SizePtr[i]]������ ���������� (���������.�����.������-��)
89
 
  int NumPtr,CurrPtr;//����� ����������, ������ �����. ��������
90
 
  long *SizePtr,Size;//[NumPtr]������ ���� ��������� � ����� ����� ������-��
91
 
  long CurrPos;      //������� � �����.��������
 
88
        char **Ptr;//[NumPtr][SizePtr[i]]Массив указателей (сегментир.адрес.простр-во)
 
89
  int NumPtr,CurrPtr;//Число указателей, индекс текущ. сегмента
 
90
  long *SizePtr,Size;//[NumPtr]Массив длин сегментов и общей длины простр-ва
 
91
  long CurrPos;      //позиция в текущ.сегменте
92
92
 
93
93
} SUB_ALLOC;
94
94
 
95
95
#define SIZE_SEGL 65500L
96
96
 
97
 
//������� ��������� ���������� � ��������� ������
98
 
//---�������� �����(=> � ������) �� ����� �����
 
97
//Задание априорной информации о структуре таблиц
 
98
//---Иерархия линий(=> и бланка) по типам линий
99
99
typedef struct hHIER_LINE
100
100
{
101
 
        int NumLev;    //����� V- ��� H-�������
102
 
  BYTE *TypeLine;//[NumLev] ���� ����� �� V- ��� H-�������
 
101
        int NumLev;    //Число V- или H-уровней
 
102
  uchar *TypeLine;//[NumLev] Типы линий на V- или H-уровнях
103
103
} HIER_LINE;
104
104
 
105
 
//---�������� �����/�������� ������� (�����������, ��������� ��������
106
 
//�������� ��������. ����/����� �������)
 
105
//---Иерархия шапки/боковика таблицы (фиксирована, полностью задается
 
106
//номерами терминал. граф/строк таблицы)
107
107
typedef struct hKNOT_TABL
108
108
{
109
 
        int beg,end;//������. ������ ��������. ���� ����
110
 
  char *Name;   //��� ���� | NULL | "NO_OCR" => ����� ����� ���� �� ���� OCR-��
 
109
        int beg,end;//Гранич. номера терминал. граф узла
 
110
  char *Name;   //Имя узла | NULL | "NO_OCR" => нутро этого узла не надо OCR-ть
111
111
} KNOT_TABL;
112
112
typedef struct hCAPTION_TABLE
113
113
{
114
 
        int NumLev;  //����� ������� �����/��������
115
 
  int *NumCol; //[NumLev] ����� ���� �������
116
 
  KNOT_TABL **TreeCapt; //[NumLev][NumCol[NumLev]] ���� ������ �� �������
 
114
        int NumLev;  //Число уровней шапки/боковика
 
115
  int *NumCol; //[NumLev] Числа граф уровней
 
116
  KNOT_TABL **TreeCapt; //[NumLev][NumCol[NumLev]] Узлы дерева по уровням
117
117
} CAPTION_TABLE;
118
 
//--- V- ��� H-��������, ������������ �� ��������� ������ � �������
 
118
//--- V- или H-иерархия, определяемая по геометрии текста в ячейках
119
119
typedef struct hHIER_CELL_TXT
120
120
{
121
 
        int NumCol; //����� ����(H|V), ������ ������� ������ ���������. ��������
122
 
  int *IndCol;//[NumCol] ������� ���������������� ����
 
121
        int NumCol; //Число граф(H|V), ячейки которых задают ортогонал. иерархию
 
122
  int *IndCol;//[NumCol] индексы классообразующих граф
123
123
} HIER_CELL_TXT;
124
 
//---������.���-��� � ������������ �����
 
124
//---Априор.инф-ция о расположении линий
125
125
typedef struct hLINE_INTRVL
126
126
{
127
 
        int Interval,sko;//�������� �� ����.������-����� � ��� �.�.�
128
 
  BYTE TypeLine;
129
 
  BYTE Align;
 
127
        int Interval,sko;//интервал до след.соседа-линии и его с.к.о
 
128
  uchar TypeLine;
 
129
  uchar Align;
130
130
} LINE_INTRVL;
131
131
typedef struct hLINE_APRIOR
132
132
{
133
 
        int Num;          //����� V- ��� H-�����
134
 
  LINE_INTRVL *Line;//[Num] - ������� ���������� V- ��� H-�����
 
133
        int Num;          //Числа V- или H-линий
 
134
  LINE_INTRVL *Line;//[Num] - массивы интервалов V- или H-линий
135
135
} LINE_APRIOR;
136
 
//---����� �������� �����!!!ADD XOR � �.�.!!!
 
136
//---Набор символов графы!!!ADD XOR и т.п.!!!
137
137
#ifndef DEMO
138
138
typedef struct hCONTENT
139
139
{
140
 
        uint Digit:1,      //�����
141
 
  Letter:1,          //�����
142
 
  LowerCase:1,       //��������� �� ����� �����
143
 
  UpperCase:1,       //--//-- �������
144
 
  PunctuationMarks:1,//����� ����������
145
 
  MultiPoints:1,     //����������
146
 
  Indice:1,          //�������
147
 
  Fraction:1,        //�����
148
 
  ProperName:1,      //������ ����� ������ - ��� �����������
149
 
  All:1,             //����� ������
150
 
  buf:6;             //������
151
 
  BYTE *SpecSymb;    //����� ����������� � ����� �-������ ��������� ���������
152
 
                     //���� ��� NULL
 
140
        uint Digit:1,      //цифра
 
141
  Letter:1,          //буква
 
142
  LowerCase:1,       //допустимы ли малые буквы
 
143
  UpperCase:1,       //--//-- большие
 
144
  PunctuationMarks:1,//знаки препинания
 
145
  MultiPoints:1,     //многоточие
 
146
  Indice:1,          //индексы
 
147
  Fraction:1,        //дроби
 
148
  ProperName:1,      //первое слово ячейки - имя собственное
 
149
  All:1,             //любой символ
 
150
  buf:6;             //резерв
 
151
  uchar *SpecSymb;    //здесь перечислены в форме С-строки возможные отдельные
 
152
                     //коды или NULL
153
153
} CONTENT;
154
154
#endif
155
155
#define IN_NO -30000
156
 
//���������� �����
 
156
//Содержимое графы
157
157
#define ALG_BEG 0
158
158
#define ALG_END 1
159
159
#define ALG_CENTER 2
160
160
#define TRUEinBLOCK 2
161
 
//���� �����
 
161
//Типы узлов
162
162
#define ROOT 0
163
163
#define TXT  1
164
164
#define CELL 2
172
172
typedef struct hINF_CELL
173
173
{
174
174
        CONTENT Content;
175
 
  uint JustH:2,   //�����.������������(LEFT/RIGHT/CENTER)
176
 
  JustV:2,        //����. ������������(TOP/BOTTOM/CENTER)
177
 
  FontSizeConst:1,//���������� ������ ������ � �������
178
 
  FontStyle:3,    //���������� ���.������ Normal|Bold|Italic
179
 
  MultiStr:1,     //������������� ������
180
 
  MultiWord:1,    //������������ ������
181
 
  TreeCell:1,     //�������� �� ����������� ��������� ������
182
 
  SortedNumber:2, //���� �� ������� �� ������� ���� �����(TRUE),
183
 
                  //���� � �������� ��������� �����(TRUEinBLOCK)
184
 
                  //���� ��� ������� (FALSE) (����� ����� ������ ���
185
 
                  //����, CONTENT �������=DIGIT
186
 
  buf:3;          //������
 
175
  uint JustH:2,   //гориз.выравнивание(LEFT/RIGHT/CENTER)
 
176
  JustV:2,        //верт. выравнивание(TOP/BOTTOM/CENTER)
 
177
  FontSizeConst:1,//постоянный размер шрифта в колонке
 
178
  FontStyle:3,    //комбинация бит.флагов Normal|Bold|Italic
 
179
  MultiStr:1,     //многострочная ячейка
 
180
  MultiWord:1,    //многословная ячейка
 
181
  TreeCell:1,     //возможна ли древовидная структура ячейки
 
182
  SortedNumber:2, //есть ли порядок на ячейках всей графы(TRUE),
 
183
                  //либо в пределах строчного блока(TRUEinBLOCK)
 
184
                  //либо нет порядка (FALSE) (имеет смысл только для
 
185
                  //граф, CONTENT которых=DIGIT
 
186
  buf:3;          //резерв
187
187
} INF_CELL;
188
188
#endif
189
189
 
199
199
} PAR_TABL;
200
200
typedef struct hSMP_LINE
201
201
{
202
 
        int Coor,Interval,sko;//����-�� ��� �����,�������� �� ������ ,�.�.�. ���������
203
 
  BYTE TypeLine; //��� �����
204
 
  BYTE Align;
205
 
  int Num;       //����� ���������, ������������ � ���� ��������
206
 
  int LenShad;   //����� �����.���������
207
 
  int Ave;       //����������� ����-�� ���������
208
 
  int AveThick;  //����������� ������� �����
 
202
        int Coor,Interval,sko;//Коор-та оси линии,интервал до соседа ,с.к.о. интервала
 
203
  uchar TypeLine; //Тип линии
 
204
  uchar Align;
 
205
  int Num;       //Число измерений, соотнесенных с этим эталоном
 
206
  int LenShad;   //Длина взаим.затенения
 
207
  int Ave;       //Усредненная коор-та измерений
 
208
  int AveThick;  //Усредненная толщина линии
209
209
} SMP_LINE;
210
210
typedef struct hCOOR_IDENT
211
211
{
212
212
        short Coor,Thick;
213
 
  BYTE Id; //TRUE ��� FALSE, ���� ����� �� ������������� �������� �����,
214
 
  BYTE TypeLine;
 
213
  uchar Id; //TRUE или FALSE, если линия не соответствует реальной линии,
 
214
  uchar TypeLine;
215
215
} COOR_IDENT;
216
216
typedef struct hKNOTT
217
217
{
218
218
        struct hKNOTT *next,*back,*up,*down;
219
 
  RECT Rect;//������./�����. ����� ���� ���� ������� ������.�����
220
 
  int InBegFrm,NumFrm;//������ �����.����� � ����� ����� ����
221
 
  int InColA;         //������ ������.�����(ParTabl.InfCell[InColA])
222
 
  //int InTerm;       //������ ��������.������(sym[InTerm][nstr][ncomp])
223
 
  //���� InTerm �.�. ��������� � ����� InBegFrm
 
219
  RECT Rect;//Пиксел./текст. рамка узла либо индексы гранич.линий
 
220
  int InBegFrm,NumFrm;//Индекс начал.рамки и число рамок узла
 
221
  int InColA;         //Индекс априор.графы(ParTabl.InfCell[InColA])
 
222
  //int InTerm;       //Индекс терминал.ячейки(sym[InTerm][nstr][ncomp])
 
223
  //поле InTerm м.б. совмещено с полем InBegFrm
224
224
  uint OrderChild:4,  //UNSORT,VER,HOR,MATR,TABL,FORMUL,TERM
225
225
       Type:4,        //TXT,TITLE,CELL,CELL_TITLE,CELL_CAPT,HIER_V,HIER_H
226
 
       AllowOCR:1,    //TRUE/FALSE - ������ �� ���� ���� �� ������-��� ��������
227
 
       JustH:2,       //�����.������������: ALG_BEG/ALG_END/ALG_CENTER
228
 
       JustV:2,       //����. ������������: --/--
 
226
       AllowOCR:1,    //TRUE/FALSE - должен ли узел идти на распоз-ние символов
 
227
       JustH:2,       //Гориз.выравнивание: ALG_BEG/ALG_END/ALG_CENTER
 
228
       JustV:2,       //Верт. выравнивание: --/--
229
229
       dummi:3;
230
 
  //� ������ AllowOCR=FALSE �.�. ������ �� ������ ������ ������� ����
231
 
  //��� ������ �.�. ������ ����. �������:
232
 
  //--������.�������--
233
 
  //1. InBegFrm - ������ ������ � �������. ������� �����
 
230
  //В случае AllowOCR=FALSE м.б. ссылка на строку текста данного узла
 
231
  //Эта ссылка м.б. задана след. образом:
 
232
  //--Эконом.способы--
 
233
  //1. InBegFrm - индекс строки в одномер. массиве строк
234
234
  //2. union {int InBegFrm,NumFrm; char *str;}
235
235
  //3. InBegFrm,NumFrm - ParTabl.CaptionV.TreeCapt[InBegFrm][NumFrm]
236
 
  //4. ������ ����� ���� char *str;
237
 
  //������ 3 ������������ ����, ���. �� ���� OCR-��, ���� ����. ������ => �� ���
238
 
  //������ 1 ��������, ���� �������� ����. �������. ������ ��� ����� => �� ���
239
 
  //����� �/��������� 2 � 4:
240
 
  //(2) �� ������ ���, ��� �����. ��������. ������� � ����� ���-���� ���� �����
241
 
  //����� ������ � ����������� ����, ���. �� ���� ��������
 
236
  //4. Просто новое поле char *str;
 
237
  //Способ 3 ограничивает поля, кот. не надо OCR-ть, лишь верт. шапкой => не ага
 
238
  //Способ 1 пригоден, если заводить спец. одномер. массив для строк => не ага
 
239
  //Выбор м/способами 2 и 4:
 
240
  //(2) не удобно тем, что появл. дополнит. уровень и вдруг все-таки надо будет
 
241
  //иметь доступ к компонентам узла, кот. не надо узнавать
242
242
  char *Name;
243
 
  struct hKNOTT *RefOrt; //������ �� ���� ����� ���������. ��������
244
 
  struct hKNOTT *RefH;   //������������.������ �� V-�����
245
 
  //�������: ���� ���� ��� ��������.�����, �� �� ����� ���������� � down,
246
 
  //����� �����. ������ (? � ������ �� ���������� ���� str � ReferOrt?)
247
 
  //??� ����� �� ������ ������ �/���������.����������, �.�. InTerm - ���
248
 
  //������ ������������� ����.������ � ������ �.�. �� �����������
249
 
  //��� ���������� ������ � �������������� �� ���� ������������� �� �����.TREE
 
243
  struct hKNOTT *RefOrt; //Ссылка на узел куста ортогонал. иерархии
 
244
  struct hKNOTT *RefH;   //Эквигоризонт.ссылка на V-узлах
 
245
  //Способы: если лишь для терминал.узлов, то ее можно совместить с down,
 
246
  //иначе отдел. ссылка (? а нельзя ли совместить поля str и ReferOrt?)
 
247
  //??А нужны ли вообще ссылки м/ортогонал.иерархиями, т.к. InTerm - уже
 
248
  //задает идентификатор терм.ячейки и вообще м.б. не понадобится
 
249
  //при построении дерева и форматировании по нему перескакивать на ортог.TREE
250
250
} KNOTT;
251
251
typedef struct hTREE2
252
252
{
253
 
        KNOTT *Root,*free; //������ � ������ ������ ������. ��������� ������
254
 
  int NumKnot;       //����� ����� ����� � �����. ������������
255
 
  int NumSeg;KNOT **ArrSeg; //���������. ������
 
253
        KNOTT *Root,*free; //Корень и голова списка свобод. элементов дерева
 
254
  int NumKnot;       //Общее число узлов в списк. пространстве
 
255
  int NumSeg;KNOT **ArrSeg; //Сегментир. массив
256
256
} TREE2;
257
257
typedef struct hSEG_ARR
258
258
{
259
 
        KNOT3 *free; //������ ������ ������. ��������� ������
260
 
  int NumKnot;//����� ����� ����� � �����. ������������
261
 
  int NumSeg;KNOT **ArrSeg; //���������. ������
 
259
        KNOT3 *free; //голова списка свобод. элементов дерева
 
260
  int NumKnot;//Общее число узлов в списк. пространстве
 
261
  int NumSeg;KNOT **ArrSeg; //Сегментир. массив
262
262
} SEG_ARR;
263
 
typedef struct hLINE_KNOT //�������� ����� ��� ����� ������
 
263
typedef struct hLINE_KNOT //Описание линии для узлов дерева
264
264
{
265
 
        int beg;       //��� V-Line ��� ����� ������� ������� �����
266
 
  int BegTxt;    //��������� ����-��
267
 
  BYTE Thick;    //�������
268
 
  BYTE TypeLine; //���
 
265
        int beg;       //Для V-Line это левая граница толстой линии
 
266
  int BegTxt;    //Текстовая коор-та
 
267
  uchar Thick;    //Толщина
 
268
  uchar TypeLine; //Тип
269
269
} LINE_KNOT;
270
270
typedef struct hKNOT_TMP {KNOTT *Knot; int in;} KNOT_TMP;
271
271
 
272
 
typedef struct hSTAT_CELL //���������� �� ������
 
272
typedef struct hSTAT_CELL //Статистика по ячейке
273
273
{
274
 
        int dx,   //��������.������
275
 
      dyLow,//-/- ������ �����.
276
 
      dyUpp,//-/- ������ ������.
277
 
      dsym, //-/- ���������.��������
278
 
      dstr, //-/- ��������. ��������
279
 
      HeiStr;//������ ������ � ��������.����������
 
274
        int dx,   //стандарт.ширина
 
275
      dyLow,//-/- высота строч.
 
276
      dyUpp,//-/- высота пропис.
 
277
      dsym, //-/- межсимвол.интервал
 
278
      dstr, //-/- межстроч. интервал
 
279
      HeiStr;//высота строки с межстроч.интервалом
280
280
} STAT_CELL;
281
281
typedef struct hINDEX_SORT {int ind,value;} INDEX_SORT;
282
282
 
283
283
typedef struct hINF_TREE
284
284
{
285
 
         int       TypeDoc; //�������: PLAIN - PlainText, ...
286
 
  TREE2     Tree;//������
287
 
  KNOTT     *Table,*HierV,*HierH;//��������� ���� ������
288
 
  KNOTT     **TermV;//[NumTV] - ��������. V-�����
 
285
         int       TypeDoc; //Признак: PLAIN - PlainText, ...
 
286
  TREE2     Tree;//Дерево
 
287
  KNOTT     *Table,*HierV,*HierH;//Некоторые узлы дерева
 
288
  KNOTT     **TermV;//[NumTV] - терминал. V-графы
289
289
  int       NumTV;
290
 
  STAT_CELL *StatCell;////[NumTV] - ����-�� �� ����. V-������
 
290
  STAT_CELL *StatCell;////[NumTV] - Стат-ка по терм. V-графам
291
291
  PAR_TABL  ParTabl;
292
292
  PAR       *ParStr;
293
 
  LINE_KNOT *LineVK,*LineHK;//[nH],[nV]-��������� ������ ������������� � ���-��
 
293
  LINE_KNOT *LineVK,*LineHK;//[nH],[nV]-разграфка дерева горизонталями и вер-ми
294
294
  int       nH,nV;
295
 
  //++������� �������� �����
 
295
  //++Индексы ключевых линий
296
296
  int       InLineBotTabl;
297
 
  //++���-�� ����. �����
298
 
  KNOTT     **ColT;//[NumT] - ��������. ������
 
297
  //++Стр-ра терм. ячеек
 
298
  KNOTT     **ColT;//[NumT] - терминал. ячейки
299
299
  int       NumT;
300
 
  //++�������� �����
 
300
  //++Описание листа
301
301
  float     slope;
302
 
  int       DislocationX,DislocationY;//��������� ������
303
 
  int       MonoSpace,MonoSpaceTrue; //������� ������ � �����.���������
 
302
  int       DislocationX,DislocationY;//параметры сдвига
 
303
  int       MonoSpace,MonoSpaceTrue; //толщина штриха и истин.моноспейс
304
304
  int       SizeXGlob,SizeYGlob;
305
305
  int       NumFrm;
306
 
  //++�������� ��������.�����
 
306
  //++Описания терминал.ячеек
307
307
  BOUND     bnd_page,*bnd_col,**bnd_str;
308
308
  FRAME     ***sym;
309
309
  int       k_colt,**k_sym;
310
 
  Int16         *k_str;
 
310
  int16_t       *k_str;
311
311
  STAT_COL  *StatCol;
312
312
  POS_STR   **PosStr;
313
 
  char      FilePrc[255];//��� ����� ��������.���������
 
313
  char      FilePrc[255];//имя файла извлечен.компонент
314
314
  SUB_ALLOC SubTree;
315
315
  FUN_POMP  pump;
316
316
  FUN_MESS  FunMessage;
355
355
 
356
356
typedef struct hSTACK
357
357
{
358
 
        KNOTT **arr;//[size] ������ ����������
359
 
  int pos;//������ �����.������.�������
360
 
  int size;//������
 
358
        KNOTT **arr;//[size] массив указателей
 
359
  int pos;//индекс текущ.свобод.позиция
 
360
  int size;//размер
361
361
} STACK;
362
362
int NewStack(int size,STACK *St);
363
363
void DelStack(STACK *St);
378
378
 
379
379
KNOTT *NextKnot(KNOTT *Curr,STACK *St);
380
380
 
381
 
//*********�������� SubAllocator***********
 
381
//*********Эмулятор SubAllocator***********
382
382
int InitSubAlloc(long Size,SUB_ALLOC *Sub);
383
383
char *Submalloc(uint size,SUB_ALLOC *s);
384
384
void DeleteSubAlloc(SUB_ALLOC *s);
385
385
void ClearSubAlloc(SUB_ALLOC *s);
386
386
 
387
 
//*********Plain Text ����������� � ����� �������� ������ ���-��*********
 
387
//*********Plain Text колонизация с новым форматом дерева стр-ры*********
388
388
int SearchInterval(FRAME **frm,int k_frm,int **beg1,int **end1,
389
389
    int *k_int1,BOUND *bnd,int ave_dir,int ave_ort,int reg,int *NumMax);
390
390
int SearchColHist(FRAME **frm,int k_frm,BOUND *bnd,int ave_x,int ave_y,int reg,