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:
880
880
Write the character formatting info when the attributes change from
881
881
the previsous font selection
882
882
******************************************************************************/
883
BOOL WriteRtfCharFmt(struct StrRtfOut far *rtf,CEDChar* curChar)
883
Bool WriteRtfCharFmt(struct StrRtfOut far *rtf,CEDChar* curChar)
885
// BYTE CurTypeFace[32],PrevTypeFace[32];
886
BYTE CurFamily,PrevFamily;
887
UINT CurStyle,PrevStyle;
885
// uchar CurTypeFace[32],PrevTypeFace[32];
886
uchar CurFamily,PrevFamily;
887
uint CurStyle,PrevStyle;
888
888
// int CurCharSID,PrevCharSID;
889
889
int /*i,*/CurPointSize,PrevPointSize/*,CurFieldId,PrevFieldId*/;
891
891
COLORREF PrevTextColor,CurTextColor;
892
892
COLORREF PrevTextBkColor,CurTextBkColor;
893
// BYTE CurCharSet,PrevCharSet;
893
// uchar CurCharSet,PrevCharSet;
895
895
CEDChar* prevChar=&(rtf->PrevChar);//curChar->prev;
896
896
if (curChar==0) return TRUE;
1143
1143
Write the paragraph formatting info when the attributes change from
1144
1144
the previsous paragraph selection
1145
1145
******************************************************************************/
1146
BOOL WriteRtfParaFmt(struct StrRtfOut far *rtf,CEDParagraph* NewPfmt,CEDParagraph* PrevPfmt/*, int NewCell, int PrevCell, int NewFID, int PrevFID*/)
1146
Bool WriteRtfParaFmt(struct StrRtfOut far *rtf,CEDParagraph* NewPfmt,CEDParagraph* PrevPfmt/*, int NewCell, int PrevCell, int NewFID, int PrevFID*/)
1148
1148
int CurLeftIndent,PrevLeftIndent=0;
1149
1149
int CurRightIndent,PrevRightIndent=0;
1150
1150
int CurFirstIndent,PrevFirstIndent=0;
1151
1151
// int CurTabId,PrevTabId=0;
1152
// UINT CurFlags,PrevFlags=0,NoValueFlags;
1152
// uint CurFlags,PrevFlags=0,NoValueFlags;
1153
1153
// int CurCellId,PrevCellId=0;
1154
1154
// int CurRowId,PrevRowId=0;
1155
1155
int CurShading,PrevShading=0;
1918
1918
//remove old file - it is similar to rtf
1919
rtf->hFile=Open(0, (PInt8)name,OSF_CREATE|OSF_BINARY);
1919
rtf->hFile=Open(0, (pchar)name,OSF_CREATE|OSF_BINARY);
1920
1920
if (!rtf->hFile) goto END_HDR;
1922
if (HFILE_ERROR==(HFILE)Write(rtf->hFile,(Int8*)rtf->oldFile,rtf->TextIndex-1)) goto END_HDR;
1922
if (HFILE_ERROR==(HFILE)Write(rtf->hFile,(char*)rtf->oldFile,rtf->TextIndex-1)) goto END_HDR;
1923
1923
if (!WriteRtfFont(rtf,FALSE)) goto END_HDR;
1924
1924
if (!FlushRtfLine(rtf)) goto END_HDR; // flush the rtf line to the output
1947
1947
rtf->TextIndex++;
1950
if (HFILE_ERROR==(HFILE)Write(rtf->hFile,((Int8*)rtf->oldFile)+oldIndex-1,rtf->TextIndex-oldIndex)) goto END_HDR;
1950
if (HFILE_ERROR==(HFILE)Write(rtf->hFile,((char*)rtf->oldFile)+oldIndex-1,rtf->TextIndex-oldIndex)) goto END_HDR;
1951
1951
if (!WriteRtfColor(rtf,head)) goto END_HDR;
1952
1952
if (!FlushRtfLine(rtf)) goto END_HDR; // flush the rtf line to the output
1954
if (HFILE_ERROR==(HFILE)Write(rtf->hFile,((Int8*)rtf->oldFile)+rtf->TextIndex-1,rtf->oldFileLen-(rtf->TextIndex+2))) goto END_HDR;
1954
if (HFILE_ERROR==(HFILE)Write(rtf->hFile,((char*)rtf->oldFile)+rtf->TextIndex-1,rtf->oldFileLen-(rtf->TextIndex+2))) goto END_HDR;
1956
1956
// end the previous section
1957
1957
if (!WriteRtfControl(rtf,"sect",PARAM_NONE,0)) goto END_HDR;
2127
BOOL GetRtfChar(struct StrRtfOut far *rtf);
2128
BOOL PushRtfChar(struct StrRtfOut far *rtf);
2127
Bool GetRtfChar(struct StrRtfOut far *rtf);
2128
Bool PushRtfChar(struct StrRtfOut far *rtf);
2129
2129
/*****************************************************************************
2131
2131
Reads the next word from the input file or the input buffer.
2132
2132
******************************************************************************/
2133
BOOL GetRtfWord(struct StrRtfOut far *rtf)
2133
Bool GetRtfWord(struct StrRtfOut far *rtf)
2135
BYTE CurChar,TempChar;
2136
BYTE line[MAX_WIDTH+1];
2135
uchar CurChar,TempChar;
2136
uchar line[MAX_WIDTH+1];
2137
2137
char TempString[MAX_WIDTH+1];
2138
2138
int len,i,j,k,temp,GroupLevel;
2139
BOOL SpecialChar,NumParamFound,NumFound;
2140
// BOOL IgnoreSlash=rtf->flags&RFLAG_IGNORE_SLASH;
2139
Bool SpecialChar,NumParamFound,NumFound;
2140
// Bool IgnoreSlash=rtf->flags&RFLAG_IGNORE_SLASH;
2661
2661
green=GetGValue(color[CurColor].color);
2662
2662
blue=GetBValue(color[CurColor].color);
2664
if (lstrcmpi(rtf->CurWord,"red")==0) red=(BYTE)(rtf->IntParam);
2665
else if (lstrcmpi(rtf->CurWord,"green")==0) green=(BYTE)(rtf->IntParam);
2666
else if (lstrcmpi(rtf->CurWord,"blue")==0) blue=(BYTE)(rtf->IntParam);
2664
if (lstrcmpi(rtf->CurWord,"red")==0) red=(uchar)(rtf->IntParam);
2665
else if (lstrcmpi(rtf->CurWord,"green")==0) green=(uchar)(rtf->IntParam);
2666
else if (lstrcmpi(rtf->CurWord,"blue")==0) blue=(uchar)(rtf->IntParam);
2667
2667
color[CurColor].color=RGB(red,green,blue); // extracted color