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:
61
// ��������� �������� - ����������� ������ �������.��������� ����
63
// ��������� �������� ������ �������
64
// ( �������� �������,��������� ����)
61
// Получение размеров - стандартная высота больших.маленьких букв
63
// Получение размеров любого символа
64
// ( размеров большой,маленькой букв)
66
// ClearStat(); ������ ������, ��������� ������,
67
// �������� ����������,���������� ������
66
// ClearStat(); начать работу, закончить работу,
67
// очистить статистику,освободить память
69
69
// AddStat(int name,int width,int height,int valid);
70
// �������� ������ � ������ name,���������,�����������
72
// return - ������� ����� �������� �����
70
// добавить символ с именем name,размерами,валидностью
72
// return - сколько всего символов стало
74
74
// GetCommonStat(int *sizes,int *probs);
75
// �������� ����������
76
// sizes[0] >0 - ������ ������� �����
77
// probs[0] - "�������" (0-255) (������ ����������)
78
// sizes[1] >0 - ������ ��������� �����
79
// probs[1] - "�������" (0-255) (������ ����������)
80
// sizes[2] >0 - ������
81
// probs[2] - "�������" (0-255) (������ ����������)
75
// получить статистику
76
// sizes[0] >0 - высота большой буквы
77
// probs[0] - "процент" (0-255) (оценка надежности)
78
// sizes[1] >0 - высота маленькой буквы
79
// probs[1] - "процент" (0-255) (оценка надежности)
80
// sizes[2] >0 - ширина
81
// probs[2] - "процент" (0-255) (оценка надежности)
83
83
// AddStatLetter(int name,int width,int height,int valid);
84
// �������� ������ � ������ name,���������,�����������
85
// � ���������� ��� ������� name
86
// return - ������� ����� �������� name �����
84
// добавить символ с именем name,размерами,валидностью
85
// в статистику для символа name
86
// return - сколько всего символов name стало
88
88
// GetLetStat(int name,int *sizes,int *probs);
89
// �������� ���������� ��� �������
89
// получить статистику для символа
90
90
// return < 0 - error ( no memory )
91
// >=0 - ������� �������� � ������ name ��������������
93
// sizes[0] >0 - ������ ������� �����
94
// sizes[1] >0 - ������ ������� �����
95
// probs[0] - "�������" (0-255) (������ ����������)
96
// sizes[2] >0 - ������ ��������� �����
97
// sizes[3] >0 - ������ ��������� �����
98
// probs[1] - "�������" (0-255) (������ ����������)
101
// ������ �������������
91
// >=0 - сколько символов с именем name использовалось
93
// sizes[0] >0 - высота большой буквы
94
// sizes[1] >0 - ширина большой буквы
95
// probs[0] - "процент" (0-255) (оценка надежности)
96
// sizes[2] >0 - высота маленькой буквы
97
// sizes[3] >0 - ширина маленькой буквы
98
// probs[1] - "процент" (0-255) (оценка надежности)
101
// Пример использования
103
103
int comSize[4],prob[4];
105
ClearStat(); // ������ ������, �������� ����������
105
ClearStat(); // начать работу, очистить статистику
108
if(NextSymbol(&name,&width,&height,&valid) == 0) break; // �������
108
if(NextSymbol(&name,&width,&height,&valid) == 0) break; // условно
109
109
NumAll=AddStat(int name,int width,int height,int valid);
110
110
// if(NumAll > ... ) break;
111
111
NumLet=AddStatLetter(int name,int width,int height,int valid);
115
115
GetCommonStat(comSize,prob);
116
if( comSize[0] == 0) printf("���� ������");
117
else if( comSize[1] == 0) printf("������ =%d,������=%d\n",
116
if( comSize[0] == 0) printf("Мало данных");
117
else if( comSize[1] == 0) printf("Высота =%d,ширина=%d\n",
118
118
comSize[0],comSize[2]);
119
else printf("������ �������=%d,������ ���������=%d,������=%d\n",
119
else printf("Высота большой=%d,высота маленькой=%d,ширина=%d\n",
120
120
comSize[0],comSize[1],comSize[2]);
122
122
for(i=1;i<256;i++)
124
printf("\n������ %c ",(char)i);
124
printf("\nСимвол %c ",(char)i);
125
125
j=GetLetStat(i,comSize,prob);
126
126
if( j< 0) printf("Error %d",j);
127
if( comSize[0] == 0) printf("���� ������");
128
else if( comSize[2] == 0) printf("������ =%d,������=%d\n",
127
if( comSize[0] == 0) printf("Мало данных");
128
else if( comSize[2] == 0) printf("Высота =%d,ширина=%d\n",
129
129
comSize[0],comSize[1]);
130
else printf("������ �������=%d,������ ������� %d;������ ���������=%d,������=%d",
130
else printf("Высота большой=%d,ширина большой %d;Высота маленькой=%d,ширина=%d",
131
131
comSize[0],comSize[1],comSize[2],comSize[3]);
134
// ����� ��������� ��� �������
134
// можно повторять при желании
137
137
NumLet=AddStatLetter(int name,int width,int height,int valid);
308
308
///////////////////
309
LEO_FUNC(Int32) LEO_GetCommonStat(Int32 *sizes,Int32 *ocenka)
309
LEO_FUNC(int32_t) LEO_GetCommonStat(int32_t *sizes,int32_t *ocenka)
311
311
return GetStat(sizes,allCount,allWidthes,allHeights,ocenka);
313
313
////////////////////
316
LEO_FUNC(Int32) LEO_AddStatLetter(Int32 name,Int32 width,Int32 height,Int32 valid)
316
LEO_FUNC(int32_t) LEO_AddStatLetter(int32_t name,int32_t width,int32_t height,int32_t valid)
319
319
if(name < 0 || name > 255 ) return 0;
320
//name = stdAnsiToAscii((Word8)name);
320
//name = stdAnsiToAscii((uchar)name);
322
322
if( ( valid & LEO_VALID_FINAL ) == 0)
323
323
return letCount[name];
666
33, 71,// � jurnal 7 kegl
667
28, 74,// � futuris 10 kegl
677
33, 75,// � 81 kudryash 14 kegl cursiv
680
33, 72,// � bodoni halfbold 12 kegl
683
35, 69,// � lower bound corr from UFA stend
684
32, 78,// � UFA : �뫮 39,78
706
41, 82,// � changed 45,82 26-12-1994 for RUS_ENG
730
51,100,// � serbian - n
732
51,110,// � serbian - l
739
51,100,// � serbian - N
741
51,110,// � serbian - L
763
28, 79,// � lazurski small kegl
764
32, 68,// � changed cune17/18 & UKRAINIAN PAPERS
769
45, 88,// � jurnal 7 kegl
772
33, 75,// � lower bound up & ERECT
774
34, 93,// � lower bound up
777
36, 57,// � cursiv d tail down & ERECT
666
33, 71,// ‚ jurnal 7 kegl
667
28, 74,// ѓ futuris 10 kegl
677
33, 75,// Ќ 81 kudryash 14 kegl cursiv
680
33, 72,// ђ bodoni halfbold 12 kegl
683
35, 69,// “ lower bound corr from UFA stend
684
32, 78,// ” UFA : Ўл«® 39,78
706
41, 82,// Є changed 45,82 26-12-1994 for RUS_ENG
730
51,100,// В serbian - n
732
51,110,// Д serbian - l
739
51,100,// Л serbian - N
741
51,110,// Н serbian - L
763
28, 79,// г lazurski small kegl
764
32, 68,// д changed cune17/18 & UKRAINIAN PAPERS
769
45, 88,// й jurnal 7 kegl
772
33, 75,// м lower bound up & ERECT
774
34, 93,// о lower bound up
777
36, 57,// с cursiv d tail down & ERECT
781
781
77, 94,// cursiv m
784
28, 56,// � cursiv ee
784
28, 56,// ш cursiv ee
794
Int32 leo_narrow, leo_narrow_pen;
795
extern Word8 leo_alpha_type;
794
int32_t leo_narrow, leo_narrow_pen;
795
extern uchar leo_alpha_type;
796
796
#include "alphaset.h"
798
798
void leo_sizes_init_stat(void)
804
Word8 leo_proport_penalty(Word8 let,Word8 prolet, Int32 w, Int32 h)
804
uchar leo_proport_penalty(uchar let,uchar prolet, int32_t w, int32_t h)
806
Int32 comSizes[4], prob[4], wid, hei, pr, pr1, prop, prp;
808
Int32 pmin=0, pmax=255;
806
int32_t comSizes[4], prob[4], wid, hei, pr, pr1, prop, prp;
808
int32_t pmin=0, pmax=255;
871
if( pr<pmin ) // ���� const 255,255-75 ,const 0, 60-255, const 255
871
if( pr<pmin ) // было const 255,255-75 ,const 0, 60-255, const 255
873
873
if( leo_narrow>5 && leo_narrow_pen>1 || leo_narrow>10 )
875
875
return 128*(256-(256*pr)/pmin)/256;
876
876
//return 255-255*((2*256*pr)/pmin-256)/256;
878
if( pr>pmax ) // ����� const 255, 255-0, const 0 ,0-255, const 255
878
if( pr>pmax ) // стало const 255, 255-0, const 0 ,0-255, const 255
879
879
return 10+255*2*((256*pr)/pmax-256)/256;