Commit d84f6a6a authored by dimitri's avatar dimitri

Release-1.2.1-20000917

parent 69ead65c
DOXYGEN Version 1.2.1-20000910 DOXYGEN Version 1.2.1-20000917
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (10 September 2000) Dimitri van Heesch (17 September 2000)
DOXYGEN Version 1.2.1-20000910 DOXYGEN Version 1.2.1-20000917
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at ...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (10 September 2000) Dimitri van Heesch (17 September 2000)
1.2.1-20000910 1.2.1-20000917
...@@ -248,9 +248,9 @@ Here is a list of the languages and their current maintainers: ...@@ -248,9 +248,9 @@ Here is a list of the languages and their current maintainers:
\hline \hline
Russian & Nickolay Semyonov & {\tt snob@int.spb.ru} \\ Russian & Nickolay Semyonov & {\tt snob@int.spb.ru} \\
\hline \hline
Korean & Richard Kim & {\\tt ryk@dspwiz.com} \\ Korean & Richard Kim & {\tt ryk@dspwiz.com} \\
\hline \hline
Hungarian & Fldvri Gyrgy & {\\tt foldvari@diatronltd.com} \\ Hungarian & Fldvri Gyrgy & {\tt foldvari@diatronltd.com} \\
\hline \hline
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} \\ Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} \\
\hline \hline
......
Name: doxygen Name: doxygen
Version: 1.2.1-20000910 Version: 1.2.1-20000917
Summary: documentation system for C, C++ and IDL Summary: documentation system for C, C++ and IDL
Release: 1 Release: 1
Source0: doxygen-%{version}.src.tar.gz Source0: doxygen-%{version}.src.tar.gz
......
...@@ -120,6 +120,8 @@ static bool g_searchingForBody; ...@@ -120,6 +120,8 @@ static bool g_searchingForBody;
static bool g_insideBody; static bool g_insideBody;
static int g_bodyCurlyCount; static int g_bodyCurlyCount;
static ClassDef * g_classVar; static ClassDef * g_classVar;
static QCString g_saveName;
static QCString g_saveType;
/*! start a new line of code, inserting a line number if g_sourceFileDef /*! start a new line of code, inserting a line number if g_sourceFileDef
* is TRUE. If a definition starts at the current line, then the line * is TRUE. If a definition starts at the current line, then the line
...@@ -574,18 +576,21 @@ static void generateMemberLink(OutputList &ol,const char *varName, ...@@ -574,18 +576,21 @@ static void generateMemberLink(OutputList &ol,const char *varName,
vn=vn.right(vn.length()-vi-2); vn=vn.right(vn.length()-vi-2);
vmn=memberNameDict[vn]; vmn=memberNameDict[vn];
//printf("Trying name `%s' scope=%s\n",vn.data(),scope.data()); //printf("Trying name `%s' scope=%s\n",vn.data(),scope.data());
MemberNameIterator vmni(*vmn); if (vmn)
MemberDef *vmd;
for (;(vmd=vmni.current());++vmni)
{ {
if ((vmd->isVariable() || vmd->isFunction()) && MemberNameIterator vmni(*vmn);
vmd->getClassDef()==jcd) MemberDef *vmd;
for (;(vmd=vmni.current());++vmni)
{ {
//printf("Found variable type=%s\n",vmd->typeString()); if ((vmd->isVariable() || vmd->isFunction()) &&
ClassDef *mcd=stripClassName(vmd->typeString()); vmd->getClassDef()==jcd)
if (mcd && mcd->isLinkable())
{ {
if (generateClassMemberLink(ol,mcd,memName)) return; //printf("Found variable type=%s\n",vmd->typeString());
ClassDef *mcd=stripClassName(vmd->typeString());
if (mcd && mcd->isLinkable())
{
if (generateClassMemberLink(ol,mcd,memName)) return;
}
} }
} }
} }
...@@ -626,7 +631,7 @@ static void generateFunctionLink(OutputList &ol,char *funcName) ...@@ -626,7 +631,7 @@ static void generateFunctionLink(OutputList &ol,char *funcName)
if (i>0) if (i>0)
{ {
locScope=locFunc.left(i); locScope=locFunc.left(i);
locFunc=locFunc.right(locFunc.length()-i-2); locFunc=locFunc.right(locFunc.length()-i-2).stripWhiteSpace();
int ts=locScope.find('<'); // start of template int ts=locScope.find('<'); // start of template
int te=locScope.findRev('>'); // end of template int te=locScope.findRev('>'); // end of template
//printf("ts=%d te=%d\n",ts,te); //printf("ts=%d te=%d\n",ts,te);
...@@ -636,7 +641,7 @@ static void generateFunctionLink(OutputList &ol,char *funcName) ...@@ -636,7 +641,7 @@ static void generateFunctionLink(OutputList &ol,char *funcName)
locScope=locScope.left(ts)+locScope.right(locScope.length()-te-1); locScope=locScope.left(ts)+locScope.right(locScope.length()-te-1);
} }
} }
//printf("generateFunctionLink(%s) classScope=%s\n",locFunc.data(),locScope.data()); //printf("generateFunctionLink(%s) classScope=`%s'\n",locFunc.data(),locScope.data());
if (!locScope.isEmpty() && (ccd=g_codeClassDict[locScope])) if (!locScope.isEmpty() && (ccd=g_codeClassDict[locScope]))
{ {
//printf("using classScope %s\n",g_classScope.data()); //printf("using classScope %s\n",g_classScope.data());
...@@ -1067,12 +1072,22 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1067,12 +1072,22 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
} }
<Body>[,=;\[] { <Body>[,=;\[] {
g_code->codify(yytext); g_code->codify(yytext);
g_saveName = g_name.copy();
g_saveType = g_name.copy();
if (!g_type.isEmpty()) if (!g_type.isEmpty())
{
addVariable(); addVariable();
g_name.resize(0); g_name.resize(0);
}
if (*yytext!=',') g_type.resize(0); if (*yytext!=',') g_type.resize(0);
g_args.resize(0); g_args.resize(0);
} }
<Body>"]" {
g_code->codify(yytext);
// TODO: nested arrays like: a[b[0]->func()]->func()
g_name = g_saveName.copy();
g_type = g_saveType.copy();
}
<Body>[0-9]+ { <Body>[0-9]+ {
g_code->codify(yytext); g_code->codify(yytext);
} }
...@@ -1121,7 +1136,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1121,7 +1136,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
<MemberCall2,FuncCall>")"[ \t\n]*[;:] { <MemberCall2,FuncCall>")"[ \t\n]*[;:] {
codifyLines(yytext); codifyLines(yytext);
g_bracketCount=0; g_bracketCount=0;
g_searchingForBody=FALSE; if (yytext[yyleng-1]==';') g_searchingForBody=FALSE;
if (!g_inClass && !g_type.isEmpty()) if (!g_inClass && !g_type.isEmpty())
addVariable(); addVariable();
g_parmType.resize(0);g_parmName.resize(0); g_parmType.resize(0);g_parmName.resize(0);
......
...@@ -1432,8 +1432,11 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") ...@@ -1432,8 +1432,11 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
if ((sec=sectionDict[secName])) if ((sec=sectionDict[secName]))
{ {
//printf("Title %s\n",sec->title.data()); //printf("Title %s\n",sec->title.data());
outDoc->writeSection(sec->label,sec->title, outDoc->startSection(sec->label,sec->title,
sec->type==SectionInfo::Subsection); sec->type==SectionInfo::Subsection);
scanString(sec->title);
outDoc->endSection(sec->label,
sec->type==SectionInfo::Subsection);
} }
} }
<DocScan>{CMD}"anchor "{ID}"\n" { <DocScan>{CMD}"anchor "{ID}"\n" {
...@@ -1510,7 +1513,6 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") ...@@ -1510,7 +1513,6 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
text=sec->title; text=sec->title;
if (sec->type==SectionInfo::Anchor) if (sec->type==SectionInfo::Anchor)
{ {
//outDoc->writeSectionRefAnchor(sec->fileName,sec->label,text);
outDoc->writeObjectLink(0,sec->fileName,sec->label,text); outDoc->writeObjectLink(0,sec->fileName,sec->label,text);
writePageRef(*outDoc,sec->label,0); writePageRef(*outDoc,sec->label,0);
} }
......
...@@ -844,7 +844,11 @@ void DotClassGraph::buildGraph(ClassDef *cd,DotNode *n,int distance,bool base) ...@@ -844,7 +844,11 @@ void DotClassGraph::buildGraph(ClassDef *cd,DotNode *n,int distance,bool base)
BaseClassDef *bcd; BaseClassDef *bcd;
for ( ; (bcd=bcli.current()) ; ++bcli ) for ( ; (bcd=bcli.current()) ; ++bcli )
{ {
addClass(bcd->classDef,n,bcd->prot,0,distance,bcd->templSpecifiers,base); //printf("addClass: base=%s this=%s templ=%s\n",bcd->classDef->name().data(),
// cd->name().data(),bcd->templSpecifiers.data());
QCString templSpec;
if (base) templSpec = bcd->templSpecifiers;
addClass(bcd->classDef,n,bcd->prot,0,distance,templSpec,base);
} }
if (m_graphType != Inheritance) if (m_graphType != Inheritance)
{ {
......
...@@ -4606,7 +4606,9 @@ static void generatePageDocs() ...@@ -4606,7 +4606,9 @@ static void generatePageDocs()
if (!pi->title.isEmpty() && !pi->name.isEmpty() && if (!pi->title.isEmpty() && !pi->name.isEmpty() &&
(si=sectionDict[pi->name])!=0) (si=sectionDict[pi->name])!=0)
{ {
outputList->writeSection(si->label,si->title,FALSE); outputList->startSection(si->label,si->title,FALSE);
outputList->docify(si->title);
outputList->endSection(si->label,FALSE);
} }
outputList->startTextBlock(); outputList->startTextBlock();
parseDoc(*outputList,pi->defFileName,pi->defLine,0,0,pi->doc); parseDoc(*outputList,pi->defFileName,pi->defLine,0,0,pi->doc);
......
...@@ -449,11 +449,14 @@ void HtmlGenerator::endGroupHeader() ...@@ -449,11 +449,14 @@ void HtmlGenerator::endGroupHeader()
t << "</h2>" << endl; t << "</h2>" << endl;
} }
void HtmlGenerator::writeSection(const char *lab,const char *title,bool sub) void HtmlGenerator::startSection(const char *lab,const char *,bool sub)
{ {
t << "<a name=\"" << lab << "\">"; t << "<a name=\"" << lab << "\">";
if (sub) t << "<h3>"; else t << "<h2>"; if (sub) t << "<h3>"; else t << "<h2>";
docify(title); }
void HtmlGenerator::endSection(const char *,bool sub)
{
if (sub) t << "</h3>"; else t << "</h2>"; if (sub) t << "</h3>"; else t << "</h2>";
t << "</a>" << endl; t << "</a>" << endl;
} }
......
...@@ -184,7 +184,8 @@ class HtmlGenerator : public OutputGenerator ...@@ -184,7 +184,8 @@ class HtmlGenerator : public OutputGenerator
void endDescTitle() {} void endDescTitle() {}
void writeDescItem() { t << "<dd>" << endl; } void writeDescItem() { t << "<dd>" << endl; }
void endDescList() { t << "</dl>"; } void endDescList() { t << "</dl>"; }
void writeSection(const char *,const char *,bool); void startSection(const char *,const char *,bool);
void endSection(const char *,bool);
void writeSectionRef(const char *,const char *,const char *); void writeSectionRef(const char *,const char *,const char *);
void writeSectionRefItem(const char *,const char *,const char *); void writeSectionRefItem(const char *,const char *,const char *);
void writeSectionRefAnchor(const char *,const char *,const char *); void writeSectionRefAnchor(const char *,const char *,const char *);
......
...@@ -972,7 +972,9 @@ void writeMemberList(OutputList &ol,bool useSections) ...@@ -972,7 +972,9 @@ void writeMemberList(OutputList &ol,bool useSections)
lastChar=cs[0]=tolower(name.at(0));cs[1]='\0'; lastChar=cs[0]=tolower(name.at(0));cs[1]='\0';
QCString anchor=(QCString)"index_"+cs; QCString anchor=(QCString)"index_"+cs;
QCString title=(QCString)"- "+cs+" -"; QCString title=(QCString)"- "+cs+" -";
ol.writeSection(anchor,title,TRUE); ol.startSection(anchor,title,TRUE);
ol.docify(title);
ol.endSection(anchor,TRUE);
ol.startItemList(); ol.startItemList();
first=FALSE; first=FALSE;
} }
...@@ -1135,7 +1137,9 @@ void writeFileMemberList(OutputList &ol,bool useSections) ...@@ -1135,7 +1137,9 @@ void writeFileMemberList(OutputList &ol,bool useSections)
lastChar=cs[0]=tolower(name.at(0));cs[1]='\0'; lastChar=cs[0]=tolower(name.at(0));cs[1]='\0';
QCString anchor=(QCString)"index_"+cs; QCString anchor=(QCString)"index_"+cs;
QCString title=(QCString)"- "+cs+" -"; QCString title=(QCString)"- "+cs+" -";
ol.writeSection(anchor,title,TRUE); ol.startSection(anchor,title,TRUE);
ol.docify(title);
ol.endSection(anchor,TRUE);
ol.startItemList(); ol.startItemList();
first=FALSE; first=FALSE;
} }
...@@ -1212,7 +1216,9 @@ void writeNamespaceMemberList(OutputList &ol,bool useSections) ...@@ -1212,7 +1216,9 @@ void writeNamespaceMemberList(OutputList &ol,bool useSections)
lastChar=cs[0]=tolower(name.at(0));cs[1]='\0'; lastChar=cs[0]=tolower(name.at(0));cs[1]='\0';
QCString anchor=(QCString)"index_"+cs; QCString anchor=(QCString)"index_"+cs;
QCString title=(QCString)"- "+cs+" -"; QCString title=(QCString)"- "+cs+" -";
ol.writeSection(anchor,title,TRUE); ol.startSection(anchor,title,TRUE);
ol.docify(title);
ol.endSection(anchor,TRUE);
ol.startItemList(); ol.startItemList();
first=FALSE; first=FALSE;
} }
...@@ -1842,7 +1848,9 @@ void writeIndex(OutputList &ol) ...@@ -1842,7 +1848,9 @@ void writeIndex(OutputList &ol)
if (!mainPage->title.isEmpty() && !mainPage->name.isEmpty() && if (!mainPage->title.isEmpty() && !mainPage->name.isEmpty() &&
(si=sectionDict[mainPage->name])!=0) (si=sectionDict[mainPage->name])!=0)
{ {
ol.writeSection(si->label,si->title,FALSE); ol.startSection(si->label,si->title,FALSE);
ol.docify(si->title);
ol.endSection(si->label,FALSE);
} }
ol.startTextBlock(); ol.startTextBlock();
parseDoc(ol,defFileName,defLine,0,0,mainPage->doc); parseDoc(ol,defFileName,defLine,0,0,mainPage->doc);
......
...@@ -166,16 +166,27 @@ void LatexGenerator::init() ...@@ -166,16 +166,27 @@ void LatexGenerator::init()
t << "\tpdflatex refman.tex" << endl << endl; t << "\tpdflatex refman.tex" << endl << endl;
} }
else // otherwise use ps2pdf: not as nice :( else // otherwise use ps2pdf: not as nice :(
// especially from the font point of view
{ {
#if defined(_MSC_VER)
// ps2pdf.bat does not work properly from a makefile using GNU make!
t << "\tgswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite "
"-sOutputFile=refman.pdf -c save pop -f refman.ps" << endl << endl;
#else
t << "\tps2pdf refman.ps refman.pdf" << endl << endl; t << "\tps2pdf refman.ps refman.pdf" << endl << endl;
#endif
} }
t << "refman_2on1.ps: refman.ps" << endl t << "refman_2on1.ps: refman.ps" << endl
<< "\tpsnup -2 refman.ps >refman_2on1.ps" << endl << "\tpsnup -2 refman.ps >refman_2on1.ps" << endl
<< endl << endl
<< "refman_2on1.pdf: refman_2on1.ps" << endl << "refman_2on1.pdf: refman_2on1.ps" << endl
#if defined(_MSC_VER)
// ps2pdf.bat does not work properly from a makefile using GNU make!
<< "\tgswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite "
"-sOutputFile=refman_2on1.pdf -c save pop -f refman_2on1.ps" << endl
#else
<< "\tps2pdf refman_2on1.ps refman_2on1.pdf" << endl << "\tps2pdf refman_2on1.ps refman_2on1.pdf" << endl
#endif
<< endl << endl
<< "refman.dvi: refman.tex doxygen.sty" << endl << "refman.dvi: refman.tex doxygen.sty" << endl
<< "\techo \"Running latex...\"" << endl << "\techo \"Running latex...\"" << endl
...@@ -1069,7 +1080,7 @@ void LatexGenerator::addToIndex(const char *s1,const char *s2) ...@@ -1069,7 +1080,7 @@ void LatexGenerator::addToIndex(const char *s1,const char *s2)
} }
} }
void LatexGenerator::writeSection(const char *lab,const char *title,bool sub) void LatexGenerator::startSection(const char *lab,const char *,bool sub)
{ {
if (Config::pdfHyperFlag) if (Config::pdfHyperFlag)
{ {
...@@ -1077,7 +1088,10 @@ void LatexGenerator::writeSection(const char *lab,const char *title,bool sub) ...@@ -1077,7 +1088,10 @@ void LatexGenerator::writeSection(const char *lab,const char *title,bool sub)
} }
t << "\\"; t << "\\";
if (sub) t << "subsection{"; else t << "section{"; if (sub) t << "subsection{"; else t << "section{";
docify(title); }
void LatexGenerator::endSection(const char *lab,bool)
{
t << "}\\label{" << lab << "}" << endl; t << "}\\label{" << lab << "}" << endl;
} }
......
...@@ -180,7 +180,8 @@ class LatexGenerator : public OutputGenerator ...@@ -180,7 +180,8 @@ class LatexGenerator : public OutputGenerator
void endDescTitle() { t << "]"; } void endDescTitle() { t << "]"; }
void writeDescItem() { t << "\\par" << endl; } void writeDescItem() { t << "\\par" << endl; }
void endDescList() { t << "\\end{Desc}" << endl; } void endDescList() { t << "\\end{Desc}" << endl; }
void writeSection(const char *,const char *,bool); void startSection(const char *,const char *,bool);
void endSection(const char *,bool);
void writeSectionRef(const char *,const char *,const char *); void writeSectionRef(const char *,const char *,const char *);
void writeSectionRefItem(const char *,const char *,const char *); void writeSectionRefItem(const char *,const char *,const char *);
void writeSectionRefAnchor(const char *,const char *,const char *); void writeSectionRefAnchor(const char *,const char *,const char *);
......
...@@ -170,7 +170,8 @@ class ManGenerator : public OutputGenerator ...@@ -170,7 +170,8 @@ class ManGenerator : public OutputGenerator
void endDescTitle(); void endDescTitle();
void writeDescItem(); void writeDescItem();
void endDescList() {} void endDescList() {}
void writeSection(const char *,const char *,bool) {} void startSection(const char *,const char *,bool) {}
void endSection(const char *,bool) {}
void writeSectionRef(const char *,const char *,const char *) {} void writeSectionRef(const char *,const char *,const char *) {}
void writeSectionRefItem(const char *,const char *,const char *) {} void writeSectionRefItem(const char *,const char *,const char *) {}
void writeSectionRefAnchor(const char *,const char *,const char *) {} void writeSectionRefAnchor(const char *,const char *,const char *) {}
......
...@@ -170,7 +170,8 @@ class OutputGenerator ...@@ -170,7 +170,8 @@ class OutputGenerator
virtual void endDescTitle() = 0; virtual void endDescTitle() = 0;
virtual void writeDescItem() = 0; virtual void writeDescItem() = 0;
virtual void endDescList() = 0; virtual void endDescList() = 0;
virtual void writeSection(const char *,const char *,bool) = 0; virtual void startSection(const char *,const char *,bool) = 0;
virtual void endSection(const char *,bool) = 0;
virtual void writeSectionRef(const char *,const char *,const char *) = 0; virtual void writeSectionRef(const char *,const char *,const char *) = 0;
virtual void writeSectionRefItem(const char *,const char *,const char *) = 0; virtual void writeSectionRefItem(const char *,const char *,const char *) = 0;
virtual void writeSectionRefAnchor(const char *,const char *,const char *) = 0; virtual void writeSectionRefAnchor(const char *,const char *,const char *) = 0;
......
...@@ -268,6 +268,7 @@ FORALL2(bool a1,bool a2,a1,a2) ...@@ -268,6 +268,7 @@ FORALL2(bool a1,bool a2,a1,a2)
FORALL2(int a1,bool a2,a1,a2) FORALL2(int a1,bool a2,a1,a2)
FORALL1(IndexSections a1,a1) FORALL1(IndexSections a1,a1)
FORALL2(const char *a1,const char *a2,a1,a2) FORALL2(const char *a1,const char *a2,a1,a2)
FORALL2(const char *a1,bool a2,a1,a2)
FORALL3(ClassDiagram &a1,const char *a2,const char *a3,a1,a2,a3) FORALL3(ClassDiagram &a1,const char *a2,const char *a3,a1,a2,a3)
FORALL3(const char *a1,const char *a2,const char *a3,a1,a2,a3) FORALL3(const char *a1,const char *a2,const char *a3,a1,a2,a3)
FORALL3(const char *a1,const char *a2,bool a3,a1,a2,a3) FORALL3(const char *a1,const char *a2,bool a3,a1,a2,a3)
......
...@@ -303,8 +303,10 @@ class OutputList ...@@ -303,8 +303,10 @@ class OutputList
{ forall(&OutputGenerator::startIndent); } { forall(&OutputGenerator::startIndent); }
void endIndent() void endIndent()
{ forall(&OutputGenerator::endIndent); } { forall(&OutputGenerator::endIndent); }
void writeSection(const char *lab,const char *title,bool sub) void startSection(const char *lab,const char *title,bool sub)
{ forall(&OutputGenerator::writeSection,lab,title,sub); } { forall(&OutputGenerator::startSection,lab,title,sub); }
void endSection(const char *lab,bool sub)
{ forall(&OutputGenerator::endSection,lab,sub); }
void writeSectionRef(const char *page,const char *lab, const char *title) void writeSectionRef(const char *page,const char *lab, const char *title)
{ forall(&OutputGenerator::writeSectionRef,page,lab,title); } { forall(&OutputGenerator::writeSectionRef,page,lab,title); }
void writeSectionRefItem(const char *page,const char *lab, const char *title) void writeSectionRefItem(const char *page,const char *lab, const char *title)
...@@ -406,6 +408,7 @@ class OutputList ...@@ -406,6 +408,7 @@ class OutputList
#endif #endif
FORALLPROTO2(int,bool); FORALLPROTO2(int,bool);
FORALLPROTO2(const char *,const char *); FORALLPROTO2(const char *,const char *);
FORALLPROTO2(const char *,bool);
FORALLPROTO3(const char *,const char *,bool); FORALLPROTO3(const char *,const char *,bool);
FORALLPROTO3(uchar,uchar,uchar); FORALLPROTO3(uchar,uchar,uchar);
FORALLPROTO3(const char *,const char *,const char *); FORALLPROTO3(const char *,const char *,const char *);
......
...@@ -119,235 +119,307 @@ OutputGenerator *RTFGenerator::copy() ...@@ -119,235 +119,307 @@ OutputGenerator *RTFGenerator::copy()
return result; return result;
} }
static const struct static const char Rtf_Style_Reset[] = "\\pard\\plain ";
struct Rtf_Style_Default
{ {
const char *name; const char *name;
const char *value; const char *reference;
} Rtf_Style_Default[] = const char *definition;
};
static const struct Rtf_Style_Default Rtf_Style_Default[] =
{ {
{ "Reset",
"\\pard\\plain "
},
{ "Heading1", { "Heading1",
"\\s1\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs36\\kerning36\\cgrid " "\\s1\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs36\\kerning36\\cgrid ",
"\\sbasedon0 \\snext0 heading 1"
}, },
{ "Heading2", { "Heading2",
"\\s2\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs28\\kerning28\\cgrid " "\\s2\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs28\\kerning28\\cgrid ",
"\\sbasedon0 \\snext0 heading 2"
}, },
{ "Heading3", { "Heading3",
"\\s3\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\cgrid " "\\s3\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\cgrid ",
"\\sbasedon0 \\snext0 heading 3"
}, },
{ "Heading4", { "Heading4",
"\\s4\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid " "\\s4\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid ",
"\\sbasedon0 \\snext0 heading 4;}{\\*\\cs10 \\additive Default Paragraph Font"
}, },
{ "Title", { "Title",
"\\s15\\qc\\sb240\\sa60\\widctlpar\\outlinelevel0\\adjustright \\b\\f1\\fs32\\kerning28\\cgrid " "\\s15\\qc\\sb240\\sa60\\widctlpar\\outlinelevel0\\adjustright \\b\\f1\\fs32\\kerning28\\cgrid ",
"\\sbasedon0 \\snext15 Title"
}, },
{ "SubTitle", { "SubTitle",
"\\s16\\qc\\sa60\\widctlpar\\outlinelevel1\\adjustright \\f1\\cgrid " "\\s16\\qc\\sa60\\widctlpar\\outlinelevel1\\adjustright \\f1\\cgrid ",
"\\sbasedon0 \\snext16 Subtitle"
}, },
{ "BodyText", { "BodyText",
"\\s17\\sa60\\sb30\\widctlpar\\qj \\fs22\\cgrid " "\\s17\\sa60\\sb30\\widctlpar\\qj \\fs22\\cgrid ",
"\\sbasedon0 \\snext17 BodyText"
}, },
{ "DenseText", { "DenseText",
"\\s18\\widctlpar\\fs22\\cgrid " "\\s18\\widctlpar\\fs22\\cgrid ",
"\\sbasedon0 \\snext18 DenseText"
}, },
{ "Header", { "Header",
"\\s28\\widctlpar\\tqc\\tx4320\\tqr\\tx8640\\adjustright \\fs20\\cgrid " "\\s28\\widctlpar\\tqc\\tx4320\\tqr\\tx8640\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext28 header"
}, },
{ "Footer", { "Footer",
"\\s29\\widctlpar\\tqc\\tx4320\\tqr\\tx8640\\qr\\adjustright \\fs20\\cgrid " "\\s29\\widctlpar\\tqc\\tx4320\\tqr\\tx8640\\qr\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext29 footer"
}, },
{ "GroupHeader", { "GroupHeader",
"\\s30\\li360\\sa60\\sb120\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid " "\\s30\\li360\\sa60\\sb120\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid ",
"\\sbasedon0 \\snext30 GroupHeader"
}, },
{ "CodeExample0", { "CodeExample0",
"\\s40\\li0\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid " "\\s40\\li0\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\sbasedon0 \\snext41 Code Example 0"
}, },
{ "CodeExample1", { "CodeExample1",
"\\s41\\li360\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid " "\\s41\\li360\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\sbasedon0 \\snext42 Code Example 1"
}, },
{ "CodeExample2", { "CodeExample2",
"\\s42\\li720\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid " "\\s42\\li720\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\sbasedon0 \\snext43 Code Example 2"
}, },
{ "CodeExample3", { "CodeExample3",
"\\s43\\li1080\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid " "\\s43\\li1080\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\sbasedon0 \\snext44 Code Example 3"
}, },
{ "CodeExample4", { "CodeExample4",
"\\s44\\li1440\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid " "\\s44\\li1440\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\sbasedon0 \\snext45 Code Example 4"
}, },
{ "CodeExample5", { "CodeExample5",
"\\s45\\li1800\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid " "\\s45\\li1800\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\sbasedon0 \\snext46 Code Example 5"
}, },
{ "CodeExample6", { "CodeExample6",
"\\s46\\li2160\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid " "\\s46\\li2160\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\sbasedon0 \\snext47 Code Example 6"
}, },
{ "CodeExample7", { "CodeExample7",
"\\s47\\li2520\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid " "\\s47\\li2520\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\sbasedon0 \\snext48 Code Example 7"
}, },
{ "CodeExample8", { "CodeExample8",
"\\s48\\li2880\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid " "\\s48\\li2880\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\sbasedon0 \\snext49 Code Example 8"
}, },
{ "CodeExample9", { "CodeExample9",
"\\s49\\li3240\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid " "\\s49\\li3240\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\sbasedon0 \\snext49 Code Example 9"
}, },
{ "ListContinue0", { "ListContinue0",
"\\s50\\li0\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid " "\\s50\\li0\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext51 List Continue 0"
}, },
{ "ListContinue1", { "ListContinue1",
"\\s51\\li360\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid " "\\s51\\li360\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext52 List Continue 1"
}, },
{ "ListContinue2", { "ListContinue2",
"\\s52\\li720\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid " "\\s52\\li720\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext53 List Continue 2"
}, },
{ "ListContinue3", { "ListContinue3",
"\\s53\\li1080\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid " "\\s53\\li1080\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext54 List Continue 3"
}, },
{ "ListContinue4", { "ListContinue4",
"\\s54\\li1440\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid " "\\s54\\li1440\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext55 List Continue 4"
}, },
{ "ListContinue5", { "ListContinue5",
"\\s55\\li1800\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid " "\\s55\\li1800\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext56 List Continue 5"
}, },
{ "ListContinue6", { "ListContinue6",
"\\s56\\li2160\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid " "\\s56\\li2160\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext57 List Continue 6"
}, },
{ "ListContinue7", { "ListContinue7",
"\\s57\\li2520\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid " "\\s57\\li2520\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext58 List Continue 7"
}, },
{ "ListContinue8", { "ListContinue8",
"\\s58\\li2880\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid " "\\s58\\li2880\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext59 List Continue 8"
}, },
{ "ListContinue9", { "ListContinue9",
"\\s59\\li3240\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid " "\\s59\\li3240\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext59 List Continue 9"
}, },
{ "DescContinue0", { "DescContinue0",
"\\s60\\li0\\widctlpar\\ql\\adjustright \\fs20\\cgrid " "\\s60\\li0\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext61 DescContinue 0"
}, },
{ "DescContinue1", { "DescContinue1",
"\\s61\\li360\\widctlpar\\ql\\adjustright \\fs20\\cgrid " "\\s61\\li360\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext62 DescContinue 1"
}, },
{ "DescContinue2", { "DescContinue2",
"\\s62\\li720\\widctlpar\\ql\\adjustright \\fs20\\cgrid " "\\s62\\li720\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext63 DescContinue 2"
}, },
{ "DescContinue3", { "DescContinue3",
"\\s63\\li1080\\widctlpar\\ql\\adjustright \\fs20\\cgrid " "\\s63\\li1080\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext64 DescContinue 3"
}, },
{ "DescContinue4", { "DescContinue4",
"\\s64\\li1440\\widctlpar\\ql\\adjustright \\fs20\\cgrid " "\\s64\\li1440\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext65 DescContinue 4"
}, },
{ "DescContinue5", { "DescContinue5",
"\\s65\\li1800\\widctlpar\\ql\\adjustright \\fs20\\cgrid " "\\s65\\li1800\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext66 DescContinue 5"
}, },
{ "DescContinue6", { "DescContinue6",
"\\s66\\li2160\\widctlpar\\ql\\adjustright \\fs20\\cgrid " "\\s66\\li2160\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext67 DescContinue 6"
}, },
{ "DescContinue7", { "DescContinue7",
"\\s67\\li2520\\widctlpar\\ql\\adjustright \\fs20\\cgrid " "\\s67\\li2520\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext68 DescContinue 7"
}, },
{ "DescContinue8", { "DescContinue8",
"\\s68\\li2880\\widctlpar\\ql\\adjustright \\fs20\\cgrid " "\\s68\\li2880\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext69 DescContinue 8"
}, },
{ "DescContinue9", { "DescContinue9",
"\\s69\\li3240\\widctlpar\\ql\\adjustright \\fs20\\cgrid " "\\s69\\li3240\\widctlpar\\ql\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext69 DescContinue 9"
}, },
{ "LatexTOC0", { "LatexTOC0",
"\\s70\\li0\\sa30\\sb30\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid " "\\s70\\li0\\sa30\\sb30\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext81 LatexTOC 0"
}, },
{ "LatexTOC1", { "LatexTOC1",
"\\s71\\li360\\sa27\\sb27\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid " "\\s71\\li360\\sa27\\sb27\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext82 LatexTOC 1"
}, },
{ "LatexTOC2", { "LatexTOC2",
"\\s72\\li720\\sa24\\sb24\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid " "\\s72\\li720\\sa24\\sb24\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext83 LatexTOC 2"
}, },
{ "LatexTOC3", { "LatexTOC3",
"\\s73\\li1080\\sa21\\sb21\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid " "\\s73\\li1080\\sa21\\sb21\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext84 LatexTOC 3"
}, },
{ "LatexTOC4", { "LatexTOC4",
"\\s74\\li1440\\sa18\\sb18\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid " "\\s74\\li1440\\sa18\\sb18\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext85 LatexTOC 4"
}, },
{ "LatexTOC5", { "LatexTOC5",
"\\s75\\li1800\\sa15\\sb15\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid " "\\s75\\li1800\\sa15\\sb15\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext86 LatexTOC 5"
}, },
{ "LatexTOC6", { "LatexTOC6",
"\\s76\\li2160\\sa12\\sb12\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid " "\\s76\\li2160\\sa12\\sb12\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext87 LatexTOC 6"
}, },
{ "LatexTOC7", { "LatexTOC7",
"\\s77\\li2520\\sa9\\sb9\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid " "\\s77\\li2520\\sa9\\sb9\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext88 LatexTOC 7"
}, },
{ "LatexTOC8", { "LatexTOC8",
"\\s78\\li2880\\sa6\\sb6\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid " "\\s78\\li2880\\sa6\\sb6\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext89 LatexTOC 8"
}, },
{ "LatexTOC9", { "LatexTOC9",
"\\s79\\li3240\\sa3\\sb3\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid " "\\s79\\li3240\\sa3\\sb3\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext89 LatexTOC 9"
}, },
{ "ListBullet0", { "ListBullet0",
"\\s80\\fi-360\\li360\\widctlpar\\jclisttab\\tx360{\\*\\pn \\pnlvlbody\\ilvl0\\ls1\\pnrnot0\\pndec }\\ls1\\adjustright \\fs20\\cgrid " "\\s80\\fi-360\\li360\\widctlpar\\jclisttab\\tx360{\\*\\pn \\pnlvlbody\\ilvl0\\ls1\\pnrnot0\\pndec }\\ls1\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext81 \\sautoupd List Bullet 0"
}, },
{ "ListBullet1", { "ListBullet1",
"\\s81\\fi-360\\li720\\widctlpar\\jclisttab\\tx720{\\*\\pn \\pnlvlbody\\ilvl0\\ls2\\pnrnot0\\pndec }\\ls2\\adjustright \\fs20\\cgrid " "\\s81\\fi-360\\li720\\widctlpar\\jclisttab\\tx720{\\*\\pn \\pnlvlbody\\ilvl0\\ls2\\pnrnot0\\pndec }\\ls2\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext82 \\sautoupd List Bullet 1"
}, },
{ "ListBullet2", { "ListBullet2",
"\\s82\\fi-360\\li1080\\widctlpar\\jclisttab\\tx1080{\\*\\pn \\pnlvlbody\\ilvl0\\ls3\\pnrnot0\\pndec }\\ls3\\adjustright \\fs20\\cgrid " "\\s82\\fi-360\\li1080\\widctlpar\\jclisttab\\tx1080{\\*\\pn \\pnlvlbody\\ilvl0\\ls3\\pnrnot0\\pndec }\\ls3\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext83 \\sautoupd List Bullet 2"
}, },
{ "ListBullet3", { "ListBullet3",
"\\s83\\fi-360\\li1440\\widctlpar\\jclisttab\\tx1440{\\*\\pn \\pnlvlbody\\ilvl0\\ls4\\pnrnot0\\pndec }\\ls4\\adjustright \\fs20\\cgrid " "\\s83\\fi-360\\li1440\\widctlpar\\jclisttab\\tx1440{\\*\\pn \\pnlvlbody\\ilvl0\\ls4\\pnrnot0\\pndec }\\ls4\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext84 \\sautoupd List Bullet 3"
}, },
{ "ListBullet4", { "ListBullet4",
"\\s84\\fi-360\\li1800\\widctlpar\\jclisttab\\tx1800{\\*\\pn \\pnlvlbody\\ilvl0\\ls5\\pnrnot0\\pndec }\\ls5\\adjustright \\fs20\\cgrid " "\\s84\\fi-360\\li1800\\widctlpar\\jclisttab\\tx1800{\\*\\pn \\pnlvlbody\\ilvl0\\ls5\\pnrnot0\\pndec }\\ls5\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext85 \\sautoupd List Bullet 4"
}, },
{ "ListBullet5", { "ListBullet5",
"\\s85\\fi-360\\li2160\\widctlpar\\jclisttab\\tx2160{\\*\\pn \\pnlvlbody\\ilvl0\\ls6\\pnrnot0\\pndec }\\ls6\\adjustright \\fs20\\cgrid " "\\s85\\fi-360\\li2160\\widctlpar\\jclisttab\\tx2160{\\*\\pn \\pnlvlbody\\ilvl0\\ls6\\pnrnot0\\pndec }\\ls6\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext86 \\sautoupd List Bullet 5"
}, },
{ "ListBullet6", { "ListBullet6",
"\\s86\\fi-360\\li2520\\widctlpar\\jclisttab\\tx2520{\\*\\pn \\pnlvlbody\\ilvl0\\ls7\\pnrnot0\\pndec }\\ls7\\adjustright \\fs20\\cgrid " "\\s86\\fi-360\\li2520\\widctlpar\\jclisttab\\tx2520{\\*\\pn \\pnlvlbody\\ilvl0\\ls7\\pnrnot0\\pndec }\\ls7\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext87 \\sautoupd List Bullet 6"
}, },
{ "ListBullet7", { "ListBullet7",
"\\s87\\fi-360\\li2880\\widctlpar\\jclisttab\\tx2880{\\*\\pn \\pnlvlbody\\ilvl0\\ls8\\pnrnot0\\pndec }\\ls8\\adjustright \\fs20\\cgrid " "\\s87\\fi-360\\li2880\\widctlpar\\jclisttab\\tx2880{\\*\\pn \\pnlvlbody\\ilvl0\\ls8\\pnrnot0\\pndec }\\ls8\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext88 \\sautoupd List Bullet 7"
}, },
{ "ListBullet8", { "ListBullet8",
"\\s88\\fi-360\\li3240\\widctlpar\\jclisttab\\tx3240{\\*\\pn \\pnlvlbody\\ilvl0\\ls9\\pnrnot0\\pndec }\\ls9\\adjustright \\fs20\\cgrid " "\\s88\\fi-360\\li3240\\widctlpar\\jclisttab\\tx3240{\\*\\pn \\pnlvlbody\\ilvl0\\ls9\\pnrnot0\\pndec }\\ls9\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext89 \\sautoupd List Bullet 8"
}, },
{ "ListBullet9", { "ListBullet9",
"\\s89\\fi-360\\li3600\\widctlpar\\jclisttab\\tx3600{\\*\\pn \\pnlvlbody\\ilvl0\\ls10\\pnrnot0\\pndec }\\ls10\\adjustright \\fs20\\cgrid " "\\s89\\fi-360\\li3600\\widctlpar\\jclisttab\\tx3600{\\*\\pn \\pnlvlbody\\ilvl0\\ls10\\pnrnot0\\pndec }\\ls10\\adjustright \\fs20\\cgrid ",
"\\sbasedon0 \\snext89 \\sautoupd List Bullet 9"
}, },
{ "ListEnum0", { "ListEnum0",
"\\s90\\fi-360\\li360\\widctlpar\\fs20\\cgrid " "\\s90\\fi-360\\li360\\widctlpar\\fs20\\cgrid ",
"\\sbasedon0 \\snext91 \\sautoupd List Enum 0"
}, },
{ "ListEnum1", { "ListEnum1",
"\\s91\\fi-360\\li720\\widctlpar\\fs20\\cgrid " "\\s91\\fi-360\\li720\\widctlpar\\fs20\\cgrid ",
"\\sbasedon0 \\snext92 \\sautoupd List Enum 1"
}, },
{ "ListEnum2", { "ListEnum2",
"\\s92\\fi-360\\li1080\\widctlpar\\fs20\\cgrid " "\\s92\\fi-360\\li1080\\widctlpar\\fs20\\cgrid ",
"\\sbasedon0 \\snext93 \\sautoupd List Enum 2"
}, },
{ "ListEnum3", { "ListEnum3",
"\\s93\\fi-360\\li1440\\widctlpar\\fs20\\cgrid " "\\s93\\fi-360\\li1440\\widctlpar\\fs20\\cgrid ",
"\\sbasedon0 \\snext94 \\sautoupd List Enum 3"
}, },
{ "ListEnum4", { "ListEnum4",
"\\s94\\fi-360\\li1800\\widctlpar\\fs20\\cgrid " "\\s94\\fi-360\\li1800\\widctlpar\\fs20\\cgrid ",
"\\sbasedon0 \\snext95 \\sautoupd List Enum 4"
}, },
{ "ListEnum5", { "ListEnum5",
"\\s95\\fi-360\\li2160\\widctlpar\\fs20\\cgrid " "\\s95\\fi-360\\li2160\\widctlpar\\fs20\\cgrid ",
"\\sbasedon0 \\snext96 \\sautoupd List Enum 5"
}, },
{ "ListEnum6", { "ListEnum6",
"\\s96\\fi-360\\li2520\\widctlpar\\fs20\\cgrid " "\\s96\\fi-360\\li2520\\widctlpar\\fs20\\cgrid ",
"\\sbasedon0 \\snext96 \\sautoupd List Enum 5"
}, },
{ "ListEnum7", { "ListEnum7",
"\\s97\\fi-360\\li2880\\widctlpar\\fs20\\cgrid " "\\s97\\fi-360\\li2880\\widctlpar\\fs20\\cgrid ",
"\\sbasedon0 \\snext98 \\sautoupd List Enum 7"
}, },
{ "ListEnum8", { "ListEnum8",
"\\s98\\fi-360\\li3240\\widctlpar\\fs20\\cgrid " "\\s98\\fi-360\\li3240\\widctlpar\\fs20\\cgrid ",
"\\sbasedon0 \\snext99 \\sautoupd List Enum 8"
}, },
{ "ListEnum9", { "ListEnum9",
"\\s99\\fi-360\\li3600\\widctlpar\\fs20\\cgrid " "\\s99\\fi-360\\li3600\\widctlpar\\fs20\\cgrid ",
"\\sbasedon0 \\snext99 \\sautoupd List Enum 9"
}, },
{ 0, { 0,
0 0,
0
} }
}; };
static QDict<char> Rtf_Style(257);
void RTFGenerator::writeStyleSheetFile(QFile &file) void RTFGenerator::writeStyleSheetFile(QFile &file)
{ {
QTextStream t(&file); QTextStream t(&file);
...@@ -357,14 +429,115 @@ void RTFGenerator::writeStyleSheetFile(QFile &file) ...@@ -357,14 +429,115 @@ void RTFGenerator::writeStyleSheetFile(QFile &file)
t << "# Remove a hash to activate a line.\n\n"; t << "# Remove a hash to activate a line.\n\n";
int i; int i;
for (i=0;Rtf_Style_Default[i].name!=0;i++) for (i=0;Rtf_Style_Default[i].reference!=0;i++)
{ {
t << "# " << Rtf_Style_Default[i].name << " = " t << "# " << Rtf_Style_Default[i].name << " = "
<< Rtf_Style_Default[i].value << endl; << Rtf_Style_Default[i].reference
<< Rtf_Style_Default[i].definition << endl;
}
}
struct StyleData
{
// elements of this type are stored in dictionary Rtf_Style
//
// to define a tag in the header reference + definition is required
// to use a tag in the body of the document only reference is required
unsigned index; // index in style-sheet, i.e. number in s-clause
char* reference; // everything required to apply the style
char* definition; // aditional tags like \snext and style name
StyleData(const char* reference, const char* definition);
~StyleData();
bool setStyle(const char* s, const char* styleName);
static const QRegExp s_clause;
};
const QRegExp StyleData::s_clause("\\\\s[0-9]+\\s*");
StyleData::StyleData(const char* reference, const char* definition)
{
int start = s_clause.match(reference); ASSERT(start >= 0);
reference += start;
index = (int)atol(reference + 2); ASSERT(index > 0);
ASSERT(reference != 0);
size_t size = 1 + strlen(reference);
memcpy(this->reference = new char[size], reference, size);
ASSERT(definition != 0);
size = 1 + strlen(definition);
memcpy(this->definition = new char[size], definition, size);
}
StyleData::~StyleData()
{
delete[] reference;
delete[] definition;
}
bool StyleData::setStyle(const char* s, const char* styleName)
{
static const QRegExp subgroup("^{[^}]*}\\s*");
static const QRegExp any_clause("^\\\\[a-z][a-z0-9-]*\\s*");
int len;
int start = s_clause.match(s, 0, &len);
if (start < 0)
{
err("Style sheet '%s' contains no '\\s' clause.\n{%s}\n", styleName, s);
return false;
}
s += start;
index = (int)atol(s + 2); ASSERT(index > 0);
// search for the end of pure formatting codes
const char* end = s + len;
bool haveNewDefinition = true;
for(;;)
{
if (*end == '{')
{
// subgroups are used for \\additive
if (0 != subgroup.match(end, 0, &len))
break;
else
end += len;
}
else if (*end == '\\')
{
if (0 == strncmp(end, "\\snext", 6))
break;
if (0 == strncmp(end, "\\sbasedon", 9))
break;
if (0 != any_clause.match(end, 0, &len))
break;
end += len;
}
else if (*end == 0)
{ // no style-definition part, keep default value
haveNewDefinition = false;
break;
}
else // plain name without leading \\snext
break;
}
delete[] reference;
reference = new char[len + 1];
memcpy(reference, s, len); reference[len] = 0;
if (haveNewDefinition)
{
delete[] definition;
size_t size = 1 + strlen(end);
definition = new char[size];
memcpy(definition, end, size);
} }
return true;
} }
static void loadStylesheet(const char *name) static void loadStylesheet(const char *name, QDict<StyleData>& dict)
{ {
QFile file(name); QFile file(name);
if (!file.open(IO_ReadOnly)) if (!file.open(IO_ReadOnly))
...@@ -390,21 +563,24 @@ static void loadStylesheet(const char *name) ...@@ -390,21 +563,24 @@ static void loadStylesheet(const char *name)
continue; continue;
} }
QCString key=s.left(sepStart); QCString key=s.left(sepStart);
if (Rtf_Style[key]==0) // not a valid style sheet name if (dict[key]==0) // not a valid style sheet name
{ {
warn(name,lineNr,"Invalid style sheet name %s ignored.\n",key.data()); warn(name,lineNr,"Invalid style sheet name %s ignored.\n",key.data());
continue; continue;
} }
StyleData* styleData = dict.find(key);
if (styleData == 0)
{
warn(name,lineNr,"Unknown style sheet name %s ignored.\n",key.data());
continue;
}
s+=" "; // add command separator s+=" "; // add command separator
Rtf_Style.remove(key); // remove old key styleData->setStyle(s.data() + sepStart + sepLength, key.data());
int l = strlen(s.data()+sepStart+sepLength);
char *value = new char[l+1];
strcpy(value,s.data()+sepStart+sepLength);
Rtf_Style.insert(key,value); // insert new key
lineNr++; lineNr++;
} }
} }
static QDict<StyleData> Rtf_Style(257);
void RTFGenerator::init() void RTFGenerator::init()
{ {
...@@ -415,25 +591,24 @@ void RTFGenerator::init() ...@@ -415,25 +591,24 @@ void RTFGenerator::init()
err("Could not create output directory %s\n",dir.data()); err("Could not create output directory %s\n",dir.data());
exit(1); exit(1);
} }
Rtf_Style.setAutoDelete(true);
Rtf_Style.setAutoDelete(TRUE); // first duplicate strings of Rtf_Style_Default
int i=0; const struct Rtf_Style_Default* def = Rtf_Style_Default;
while (Rtf_Style_Default[i].name!=0) while(def->reference != 0)
{ {
int l = strlen(Rtf_Style_Default[i].value); if (def->definition == 0)
char *value = new char[l+1]; err("Internal error: Rtf_Style_Default[%s] has no definition.\n", def->name);
strcpy(value,Rtf_Style_Default[i].value); StyleData* styleData = new StyleData(def->reference, def->definition);
Rtf_Style.insert(Rtf_Style_Default[i].name,value); Rtf_Style.insert(def->name, styleData);
i++; def++;
} }
// overwrite some (or all) definitions from file
if (!Config::rtfStylesheetFile.isEmpty()) if (!Config::rtfStylesheetFile.isEmpty())
{ loadStylesheet(Config::rtfStylesheetFile, Rtf_Style);
loadStylesheet(Config::rtfStylesheetFile);
}
} }
static QCString makeIndexName(const char *s,int i) static QCString makeIndexName(const char *s,int i)
{ {
QCString result=s; QCString result=s;
...@@ -443,7 +618,6 @@ static QCString makeIndexName(const char *s,int i) ...@@ -443,7 +618,6 @@ static QCString makeIndexName(const char *s,int i)
void RTFGenerator::beginRTFDocument() void RTFGenerator::beginRTFDocument()
{ {
int i;
/* all the included RTF files should begin with the /* all the included RTF files should begin with the
* same header * same header
*/ */
...@@ -475,58 +649,40 @@ void RTFGenerator::beginRTFDocument() ...@@ -475,58 +649,40 @@ void RTFGenerator::beginRTFDocument()
t <<"\\red128\\green128\\blue128;"; t <<"\\red128\\green128\\blue128;";
t <<"\\red192\\green192\\blue192;}" << endl; t <<"\\red192\\green192\\blue192;}" << endl;
DBG_RTF(t <<"{\\comment Begining style list}\n") DBG_RTF(t <<"{\\comment Beginning style list}\n")
t <<"{\\stylesheet\n"; t <<"{\\stylesheet\n";
t <<"{\\widctlpar\\adjustright \\fs20\\cgrid \\snext0 Normal;}\n"; t <<"{\\widctlpar\\adjustright \\fs20\\cgrid \\snext0 Normal;}\n";
t <<"{" << Rtf_Style["Heading1"] <<"\\sbasedon0 \\snext0 heading 1;}\n";
t <<"{" << Rtf_Style["Heading2"] <<"\\sbasedon0 \\snext0 heading 2;}\n"; // sort styles ascending by \s-number via an intermediate QArray
t <<"{" << Rtf_Style["Heading3"] <<"\\sbasedon0 \\snext0 heading 3;}\n"; QArray<const StyleData*> array(128);
t <<"{" << Rtf_Style["Heading4"] <<"\\sbasedon0 \\snext0 heading 4;}\n"; array.fill(0);
t <<"{\\*\\cs10 \\additive Default Paragraph Font;}\n"; QDictIterator<StyleData> iter(Rtf_Style);
t <<"{" << Rtf_Style["Title"] << "\\sbasedon0 \\snext15 Title;}\n"; const StyleData* style;
t <<"{" << Rtf_Style["SubTitle"] << "\\sbasedon0 \\snext16 Subtitle;}\n"; for(; (style = iter.current()); ++iter)
t <<"{" << Rtf_Style["BodyText"] << "\\sbasedon0 \\snext17 BodyText;}\n";
t <<"{" << Rtf_Style["DenseText"] << "\\sbasedon0 \\snext18 DenseText;}\n";
t <<"{" << Rtf_Style["Header"] << "\\sbasedon0 \\snext28 header;}\n";
t <<"{" << Rtf_Style["Footer"] << "\\sbasedon0 \\snext29 footer;}\n";
t <<"{" << Rtf_Style["GroupHeader"] << "\\sbasedon0 \\snext30 GroupHeader}\n";
for (i=0;i<indentLevels;i++)
{
QCString n=makeIndexName("CodeExample",i);
t <<"{" << Rtf_Style[n] <<"\\sbasedon0 \\snext4"
<< (QMIN(i+1,indentLevels-1)) << " Code Example " << i << ";}\n";
}
for (i=0;i<indentLevels;i++)
{
QCString n=makeIndexName("ListContinue",i);
t <<"{" << Rtf_Style[n] << "\\sbasedon0 \\snext5"
<< (QMIN(i+1,indentLevels-1)) << " List Continue " << i << ";}\n";
}
for (i=0;i<indentLevels;i++)
{
QCString n=makeIndexName("DescContinue",i);
t <<"{" << Rtf_Style[n] << "\\sbasedon0 \\snext6"
<< (QMIN(i+1,indentLevels-1)) << " DescContinue " << i << ";}\n";
}
for (i=0;i<indentLevels;i++)
{
QCString n=makeIndexName("LatexTOC",i);
t <<"{" << Rtf_Style[n] << "\\sbasedon50 \\snext7"
<< (QMIN(i+1,indentLevels-1)) << " LatexTOC " << i << ";}\n";
}
for (i=0;i<indentLevels;i++)
{ {
QCString n=makeIndexName("ListBullet",i); unsigned index = style->index;
t <<"{" << Rtf_Style[n] << "\\sbasedon0 \\snext8" unsigned size = array.size();
<< (QMIN(i+1,indentLevels-1)) << " \\sautoupd List Bullet " << i << ";}\n"; if (index >= size)
{
// +1 to add at least one element, then align up to multiple of 8
array.resize((index + 1 + 7) & ~7);
array.fill(0, size);
ASSERT(index < array.size());
}
if (array.at(index) != 0)
msg("Style '%s' redefines \\s%d.\n", iter.currentKey(), index);
array.at(index) = style;
} }
for (i=0;i<indentLevels;i++)
// write array elements
unsigned size = array.size();
for(unsigned i = 0; i < size; i++)
{ {
QCString n=makeIndexName("ListEnum",i); const StyleData* style = array.at(i);
t <<"{" << Rtf_Style[n] << "\\sbasedon0 \\snext9" if (style != 0)
<< (QMIN(i+1,indentLevels-1)) << " \\sautoupd List Enum " << i << ";}\n"; t <<"{" << style->reference << style->definition << ";}\n";
} }
t <<"}" << endl; t <<"}" << endl;
// this comment is needed for postprocessing! // this comment is needed for postprocessing!
t <<"{\\comment begin body}" << endl; t <<"{\\comment begin body}" << endl;
...@@ -537,7 +693,7 @@ void RTFGenerator::beginRTFChapter() ...@@ -537,7 +693,7 @@ void RTFGenerator::beginRTFChapter()
{ {
t <<"\n"; t <<"\n";
DBG_RTF(t << "{\\comment Begin Chapter}\n") DBG_RTF(t << "{\\comment Begin Chapter}\n")
t << Rtf_Style["Reset"]; t << Rtf_Style_Reset;
// if we are compact, no extra page breaks... // if we are compact, no extra page breaks...
if (Config::compactRTFFlag) if (Config::compactRTFFlag)
...@@ -550,14 +706,14 @@ void RTFGenerator::beginRTFChapter() ...@@ -550,14 +706,14 @@ void RTFGenerator::beginRTFChapter()
t <<"\\sect\\sbkpage\n"; t <<"\\sect\\sbkpage\n";
//t <<"\\sect\\sectd\\sbkpage\n"; //t <<"\\sect\\sectd\\sbkpage\n";
t << Rtf_Style["Heading1"] << "\n"; t << Rtf_Style["Heading1"]->reference << "\n";
} }
void RTFGenerator::beginRTFSection() void RTFGenerator::beginRTFSection()
{ {
t <<"\n"; t <<"\n";
DBG_RTF(t << "{\\comment Begin Section}\n") DBG_RTF(t << "{\\comment Begin Section}\n")
t << Rtf_Style["Reset"]; t << Rtf_Style_Reset;
// if we are compact, no extra page breaks... // if we are compact, no extra page breaks...
if (Config::compactRTFFlag) if (Config::compactRTFFlag)
...@@ -570,7 +726,7 @@ void RTFGenerator::beginRTFSection() ...@@ -570,7 +726,7 @@ void RTFGenerator::beginRTFSection()
t <<"\\sect\\sbkpage\n"; t <<"\\sect\\sbkpage\n";
//t <<"\\sect\\sectd\\sbkpage\n"; //t <<"\\sect\\sectd\\sbkpage\n";
t << Rtf_Style["Heading2"] << "\n"; t << Rtf_Style["Heading2"]->reference << "\n";
} }
void RTFGenerator::startFile(const char *name,const char *, bool ) void RTFGenerator::startFile(const char *name,const char *, bool )
...@@ -747,14 +903,14 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -747,14 +903,14 @@ void RTFGenerator::endIndexSection(IndexSections is)
"}"; "}";
DBG_RTF(t << "{\\comment end of infoblock}\n") DBG_RTF(t << "{\\comment end of infoblock}\n")
// setup for this section // setup for this section
t << Rtf_Style["Reset"] <<"\n"; t << Rtf_Style_Reset <<"\n";
t <<"\\sectd\\pgnlcrm\n"; t <<"\\sectd\\pgnlcrm\n";
t <<"{\\footer "<<Rtf_Style["Footer"] << "{\\chpgn}}\n"; t <<"{\\footer "<<Rtf_Style["Footer"]->reference << "{\\chpgn}}\n";
// the title entry // the title entry
DBG_RTF(t << "{\\comment begin title page}\n") DBG_RTF(t << "{\\comment begin title page}\n")
t << Rtf_Style["Reset"] << Rtf_Style["Title"] << endl; // set to title style t << Rtf_Style_Reset << Rtf_Style["Title"]->reference << endl; // set to title style
t << "{\\field\\fldedit {\\*\\fldinst TITLE \\\\*MERGEFORMAT}{\\fldrslt TITLE}}\\par" << endl; t << "{\\field\\fldedit {\\*\\fldinst TITLE \\\\*MERGEFORMAT}{\\fldrslt TITLE}}\\par" << endl;
t << Rtf_Style["Reset"] << Rtf_Style["SubTitle"] << endl; // set to subtitle style t << Rtf_Style_Reset << Rtf_Style["SubTitle"]->reference << endl; // set to subtitle style
t << "{\\field\\fldedit {\\*\\fldinst AUTHOR \\\\*MERGEFORMAT}{\\fldrslt AUTHOR}}\\par" << endl; t << "{\\field\\fldedit {\\*\\fldinst AUTHOR \\\\*MERGEFORMAT}{\\fldrslt AUTHOR}}\\par" << endl;
t << "{\\field\\fldedit {\\*\\fldinst CREATEDATE \\\\*MERGEFORMAT}" t << "{\\field\\fldedit {\\*\\fldinst CREATEDATE \\\\*MERGEFORMAT}"
"{\\fldrslt CREATEDATE}}\\par"<<endl; "{\\fldrslt CREATEDATE}}\\par"<<endl;
...@@ -762,44 +918,44 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -762,44 +918,44 @@ void RTFGenerator::endIndexSection(IndexSections is)
// table of contents section // table of contents section
DBG_RTF(t << "{\\comment Table of contents}\n") DBG_RTF(t << "{\\comment Table of contents}\n")
t << Rtf_Style["Reset"] << endl; t << Rtf_Style_Reset << endl;
t << "{\\field\\fldedit {\\*\\fldinst TOC \\\\f \\\\*MERGEFORMAT}{\\fldrslt Table of contents}}\\par\n"; t << "{\\field\\fldedit {\\*\\fldinst TOC \\\\f \\\\*MERGEFORMAT}{\\fldrslt Table of contents}}\\par\n";
t << Rtf_Style["Reset"] << endl; t << Rtf_Style_Reset << endl;
} }
break; break;
case isMainPage: case isMainPage:
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
t << "{\\tc \\v " << theTranslator->trMainPage() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trMainPage() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"index.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"index.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break; break;
case isModuleIndex: case isModuleIndex:
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
t << "{\\tc \\v " << theTranslator->trModuleIndex() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trModuleIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"modules.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"modules.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break; break;
case isNamespaceIndex: case isNamespaceIndex:
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
t << "{\\tc \\v " << theTranslator->trNamespaceIndex() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trNamespaceIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"namespaces.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"namespaces.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break; break;
case isClassHierarchyIndex: case isClassHierarchyIndex:
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
t << "{\\tc \\v " << theTranslator->trHierarchicalIndex() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trHierarchicalIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"hierarchy.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"hierarchy.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break; break;
case isCompoundIndex: case isCompoundIndex:
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
t << "{\\tc \\v " << theTranslator->trCompoundIndex() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trCompoundIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"annotated.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"annotated.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break; break;
case isFileIndex: case isFileIndex:
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
t << "{\\tc \\v " << theTranslator->trFileIndex() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trFileIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"files.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"files.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break; break;
case isPageIndex: case isPageIndex:
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
t << "{\\tc \\v " << theTranslator->trPageIndex() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trPageIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"pages.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"pages.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break; break;
...@@ -812,7 +968,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -812,7 +968,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
{ {
if (gd->countMembers()>0) if (gd->countMembers()>0)
{ {
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << gd->getOutputFileBase(); t << gd->getOutputFileBase();
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
...@@ -825,7 +981,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -825,7 +981,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
{ {
if (gd->countMembers()>0) if (gd->countMembers()>0)
{ {
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
beginRTFSection(); beginRTFSection();
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << gd->getOutputFileBase(); t << gd->getOutputFileBase();
...@@ -843,7 +999,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -843,7 +999,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
{ {
if (nd->isLinkableInProject()) if (nd->isLinkableInProject())
{ {
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << nd->getOutputFileBase(); t << nd->getOutputFileBase();
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
...@@ -855,7 +1011,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -855,7 +1011,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
{ {
if (nd->isLinkableInProject()) if (nd->isLinkableInProject())
{ {
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
beginRTFSection(); beginRTFSection();
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << nd->getOutputFileBase(); t << nd->getOutputFileBase();
...@@ -875,7 +1031,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -875,7 +1031,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
{ {
if (cd->isLinkableInProject()) if (cd->isLinkableInProject())
{ {
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << cd->getOutputFileBase(); t << cd->getOutputFileBase();
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
...@@ -887,7 +1043,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -887,7 +1043,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
{ {
if (cd->isLinkableInProject()) if (cd->isLinkableInProject())
{ {
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
beginRTFSection(); beginRTFSection();
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << cd->getOutputFileBase(); t << cd->getOutputFileBase();
...@@ -912,7 +1068,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -912,7 +1068,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
{ {
if (isFirst) if (isFirst)
{ {
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << fd->getOutputFileBase(); t << fd->getOutputFileBase();
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
...@@ -920,7 +1076,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -920,7 +1076,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
} }
else else
{ {
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
beginRTFSection(); beginRTFSection();
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << fd->getOutputFileBase(); t << fd->getOutputFileBase();
...@@ -941,14 +1097,14 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -941,14 +1097,14 @@ void RTFGenerator::endIndexSection(IndexSections is)
PageInfo *pi=pdi.toFirst(); PageInfo *pi=pdi.toFirst();
if (pi) if (pi)
{ {
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << convertFileName(pi->name); t << convertFileName(pi->name);
t << "-example.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "-example.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
} }
for (++pdi;(pi=pdi.current());++pdi) for (++pdi;(pi=pdi.current());++pdi)
{ {
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
beginRTFSection(); beginRTFSection();
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << convertFileName(pi->name); t << convertFileName(pi->name);
...@@ -968,7 +1124,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -968,7 +1124,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
pageName=pi->name.copy(); pageName=pi->name.copy();
else else
pageName=pi->name.lower(); pageName=pi->name.lower();
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << pageName; t << pageName;
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
...@@ -980,7 +1136,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -980,7 +1136,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
pageName=pi->name.copy(); pageName=pi->name.copy();
else else
pageName=pi->name.lower(); pageName=pi->name.lower();
//t << "\\par " << Rtf_Style["Reset"] << endl; //t << "\\par " << Rtf_Style_Reset << endl;
//beginRTFSection(); //beginRTFSection();
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << pageName; t << pageName;
...@@ -990,9 +1146,9 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -990,9 +1146,9 @@ void RTFGenerator::endIndexSection(IndexSections is)
break; break;
case isEndIndex: case isEndIndex:
beginRTFChapter(); beginRTFChapter();
t << Rtf_Style["Heading1"]; t << Rtf_Style["Heading1"]->reference;
t << "Index\\par "<< endl; t << "Index\\par "<< endl;
t << Rtf_Style["Reset"] << endl; t << Rtf_Style_Reset << endl;
t << "{\\tc \\v Index}" << endl; t << "{\\tc \\v Index}" << endl;
t << "{\\field\\fldedit {\\*\\fldinst INDEX \\\\c2 \\\\*MERGEFORMAT}{\\fldrslt INDEX}}\n"; t << "{\\field\\fldedit {\\*\\fldinst INDEX \\\\c2 \\\\*MERGEFORMAT}{\\fldrslt INDEX}}\n";
...@@ -1008,8 +1164,8 @@ void RTFGenerator::lastIndexPage() ...@@ -1008,8 +1164,8 @@ void RTFGenerator::lastIndexPage()
t <<"\\sect \\sectd \\sbknone \\pgndec\n"; t <<"\\sect \\sectd \\sbknone \\pgndec\n";
// set footer // set footer
t <<"{\\footer "<< Rtf_Style["Footer"] << "{\\chpgn}}\n"; t <<"{\\footer "<< Rtf_Style["Footer"]->reference << "{\\chpgn}}\n";
//t << Rtf_Style["Heading1"] << "\n"; //t << Rtf_Style["Heading1"]->reference << "\n";
} }
...@@ -1034,7 +1190,7 @@ void RTFGenerator::startIndexList() ...@@ -1034,7 +1190,7 @@ void RTFGenerator::startIndexList()
DBG_RTF(t << "{\\comment (startIndexList)}" << endl) DBG_RTF(t << "{\\comment (startIndexList)}" << endl)
t << "{" << endl; t << "{" << endl;
incrementIndentLevel(); incrementIndentLevel();
t << Rtf_Style["Reset"] << Rtf_LCList_DepthStyle() << endl; t << Rtf_Style_Reset << Rtf_LCList_DepthStyle() << endl;
newParagraph(); newParagraph();
m_omitParagraph=TRUE; m_omitParagraph=TRUE;
} }
...@@ -1055,7 +1211,7 @@ void RTFGenerator::startItemList() ...@@ -1055,7 +1211,7 @@ void RTFGenerator::startItemList()
t << "{"; t << "{";
incrementIndentLevel(); incrementIndentLevel();
listItemInfo[m_listLevel].isEnum = FALSE; listItemInfo[m_listLevel].isEnum = FALSE;
//t << Rtf_Style["Reset"] << Rtf_BList_DepthStyle(); //t << Rtf_Style_Reset << Rtf_BList_DepthStyle();
} }
/*! end bullet list */ /*! end bullet list */
...@@ -1066,7 +1222,7 @@ void RTFGenerator::endItemList() ...@@ -1066,7 +1222,7 @@ void RTFGenerator::endItemList()
t << "}"; t << "}";
decrementIndentLevel(); decrementIndentLevel();
m_omitParagraph=TRUE; m_omitParagraph=TRUE;
//t << Rtf_Style["Reset"] << styleStack.top() << endl; //t << Rtf_Style_Reset << styleStack.top() << endl;
//printf("RTFGenerator::endItemList() `%s'\n",styleStack.top()); //printf("RTFGenerator::endItemList() `%s'\n",styleStack.top());
//newParagraph(); //newParagraph();
} }
...@@ -1079,7 +1235,7 @@ void RTFGenerator::startEnumList() // starts an enumeration list ...@@ -1079,7 +1235,7 @@ void RTFGenerator::startEnumList() // starts an enumeration list
incrementIndentLevel(); incrementIndentLevel();
listItemInfo[m_listLevel].isEnum = TRUE; listItemInfo[m_listLevel].isEnum = TRUE;
listItemInfo[m_listLevel].number = 1; listItemInfo[m_listLevel].number = 1;
//t << Rtf_Style["Reset"] << Rtf_EList_DepthStyle() << endl; //t << Rtf_Style_Reset << Rtf_EList_DepthStyle() << endl;
//newParagraph(); //newParagraph();
//m_omitParagraph=TRUE; //m_omitParagraph=TRUE;
...@@ -1100,7 +1256,7 @@ void RTFGenerator::writeListItem() ...@@ -1100,7 +1256,7 @@ void RTFGenerator::writeListItem()
{ {
DBG_RTF(t << "{\\comment (writeListItem)}" << endl) DBG_RTF(t << "{\\comment (writeListItem)}" << endl)
newParagraph(); newParagraph();
t << Rtf_Style["Reset"]; t << Rtf_Style_Reset;
if (listItemInfo[m_listLevel].isEnum) if (listItemInfo[m_listLevel].isEnum)
{ {
t << Rtf_EList_DepthStyle() << endl; t << Rtf_EList_DepthStyle() << endl;
...@@ -1218,14 +1374,14 @@ void RTFGenerator::startSubsection() ...@@ -1218,14 +1374,14 @@ void RTFGenerator::startSubsection()
//beginRTFSubSection(); //beginRTFSubSection();
t <<"\n"; t <<"\n";
DBG_RTF(t << "{\\comment Begin SubSection}\n") DBG_RTF(t << "{\\comment Begin SubSection}\n")
t << Rtf_Style["Reset"]; t << Rtf_Style_Reset;
t << Rtf_Style["Heading3"] << "\n"; t << Rtf_Style["Heading3"]->reference << "\n";
} }
void RTFGenerator::endSubsection() void RTFGenerator::endSubsection()
{ {
newParagraph(); newParagraph();
t << Rtf_Style["Reset"] << endl; t << Rtf_Style_Reset << endl;
} }
void RTFGenerator::startSubsubsection() void RTFGenerator::startSubsubsection()
...@@ -1234,7 +1390,7 @@ void RTFGenerator::startSubsubsection() ...@@ -1234,7 +1390,7 @@ void RTFGenerator::startSubsubsection()
t << "\n"; t << "\n";
DBG_RTF(t << "{\\comment Begin SubSubSection}\n") DBG_RTF(t << "{\\comment Begin SubSubSection}\n")
t << "{" << endl; t << "{" << endl;
t << Rtf_Style["Reset"] << Rtf_Style["Heading4"] << "\n"; t << Rtf_Style_Reset << Rtf_Style["Heading4"]->reference << "\n";
} }
void RTFGenerator::endSubsubsection() void RTFGenerator::endSubsubsection()
...@@ -1374,13 +1530,13 @@ void RTFGenerator::startTitleHead(const char *) ...@@ -1374,13 +1530,13 @@ void RTFGenerator::startTitleHead(const char *)
DBG_RTF(t <<"{\\comment startTitleHead}" << endl) DBG_RTF(t <<"{\\comment startTitleHead}" << endl)
// beginRTFSection(); // beginRTFSection();
t << Rtf_Style["Reset"] << Rtf_Style["Heading2"] << endl; t << Rtf_Style_Reset << Rtf_Style["Heading2"]->reference << endl;
} }
void RTFGenerator::endTitleHead(const char *fileName,const char *name) void RTFGenerator::endTitleHead(const char *fileName,const char *name)
{ {
DBG_RTF(t <<"{\\comment endTitleHead}" << endl) DBG_RTF(t <<"{\\comment endTitleHead}" << endl)
t << "\\par " << Rtf_Style["Reset"] << endl; t << "\\par " << Rtf_Style_Reset << endl;
if (name) if (name)
{ {
// make table of contents entry // make table of contents entry
...@@ -1416,8 +1572,8 @@ void RTFGenerator::startGroupHeader() ...@@ -1416,8 +1572,8 @@ void RTFGenerator::startGroupHeader()
{ {
DBG_RTF(t <<"{\\comment startGroupHeader}" << endl) DBG_RTF(t <<"{\\comment startGroupHeader}" << endl)
newParagraph(); newParagraph();
t << Rtf_Style["Reset"]; t << Rtf_Style_Reset;
t << Rtf_Style["Heading3"]; t << Rtf_Style["Heading3"]->reference;
t << endl; t << endl;
} }
...@@ -1425,7 +1581,7 @@ void RTFGenerator::endGroupHeader() ...@@ -1425,7 +1581,7 @@ void RTFGenerator::endGroupHeader()
{ {
DBG_RTF(t <<"{\\comment endGroupHeader}" << endl) DBG_RTF(t <<"{\\comment endGroupHeader}" << endl)
newParagraph(); newParagraph();
t << Rtf_Style["Reset"] << endl; t << Rtf_Style_Reset << endl;
} }
void RTFGenerator::startMemberDoc(const char *clname, void RTFGenerator::startMemberDoc(const char *clname,
...@@ -1439,10 +1595,10 @@ void RTFGenerator::startMemberDoc(const char *clname, ...@@ -1439,10 +1595,10 @@ void RTFGenerator::startMemberDoc(const char *clname,
addToIndex(memname,clname); addToIndex(memname,clname);
addToIndex(clname,memname); addToIndex(clname,memname);
} }
t << Rtf_Style["Reset"] << Rtf_Style["Heading4"]; t << Rtf_Style_Reset << Rtf_Style["Heading4"]->reference;
//styleStack.push(Rtf_Style_Heading4); //styleStack.push(Rtf_Style_Heading4);
t << "{" << endl; t << "{" << endl;
//printf("RTFGenerator::startMemberDoc() `%s'\n",Rtf_Style["Heading4"]); //printf("RTFGenerator::startMemberDoc() `%s'\n",Rtf_Style["Heading4"]->reference);
startBold(); startBold();
t << endl; t << endl;
} }
...@@ -1453,7 +1609,7 @@ void RTFGenerator::endMemberDoc() ...@@ -1453,7 +1609,7 @@ void RTFGenerator::endMemberDoc()
t << "}" << endl; t << "}" << endl;
//const char *style = styleStack.pop(); //const char *style = styleStack.pop();
//printf("RTFGenerator::endMemberDoc() `%s'\n",style); //printf("RTFGenerator::endMemberDoc() `%s'\n",style);
//ASSERT(style==Rtf_Style["Heading4"]); //ASSERT(style==Rtf_Style["Heading4"]->reference);
endBold(); endBold();
newParagraph(); newParagraph();
} }
...@@ -1509,7 +1665,7 @@ void RTFGenerator::startIndent() ...@@ -1509,7 +1665,7 @@ void RTFGenerator::startIndent()
incrementIndentLevel(); incrementIndentLevel();
DBG_RTF(t << "{\\comment (startIndent) }" << endl) DBG_RTF(t << "{\\comment (startIndent) }" << endl)
t << "{" << endl; t << "{" << endl;
t << Rtf_Style["Reset"] << Rtf_CList_DepthStyle() << endl; t << Rtf_Style_Reset << Rtf_CList_DepthStyle() << endl;
//styleStack.push(style); //styleStack.push(style);
} }
...@@ -1525,7 +1681,7 @@ void RTFGenerator::startDescription() ...@@ -1525,7 +1681,7 @@ void RTFGenerator::startDescription()
{ {
DBG_RTF(t << "{\\comment (startDescription)}" << endl) DBG_RTF(t << "{\\comment (startDescription)}" << endl)
t << "{" << endl; t << "{" << endl;
t << Rtf_Style["Reset"] << Rtf_CList_DepthStyle(); t << Rtf_Style_Reset << Rtf_CList_DepthStyle();
} }
void RTFGenerator::endDescription() void RTFGenerator::endDescription()
...@@ -1554,7 +1710,7 @@ void RTFGenerator::startMemberDescription() ...@@ -1554,7 +1710,7 @@ void RTFGenerator::startMemberDescription()
DBG_RTF(t << "{\\comment (startMemberDescription)}" << endl) DBG_RTF(t << "{\\comment (startMemberDescription)}" << endl)
t << "{" << endl; t << "{" << endl;
incrementIndentLevel(); incrementIndentLevel();
t << Rtf_Style["Reset"] << Rtf_CList_DepthStyle(); t << Rtf_Style_Reset << Rtf_CList_DepthStyle();
startEmphasis(); startEmphasis();
} }
...@@ -1578,16 +1734,16 @@ void RTFGenerator::endDescTitle() ...@@ -1578,16 +1734,16 @@ void RTFGenerator::endDescTitle()
{ {
DBG_RTF(t << "{\\comment (endDescTitle) }" << endl) DBG_RTF(t << "{\\comment (endDescTitle) }" << endl)
newParagraph(); newParagraph();
//t << Rtf_Style["Reset"] << styleStack.top(); //t << Rtf_Style_Reset << styleStack.top();
incrementIndentLevel(); incrementIndentLevel();
t << Rtf_Style["Reset"] << Rtf_DList_DepthStyle(); t << Rtf_Style_Reset << Rtf_DList_DepthStyle();
} }
void RTFGenerator::writeDescItem() void RTFGenerator::writeDescItem()
{ {
DBG_RTF(t << "{\\comment (writeDescItem) }" << endl) DBG_RTF(t << "{\\comment (writeDescItem) }" << endl)
// incrementIndentLevel(); // incrementIndentLevel();
//t << Rtf_Style["Reset"] << Rtf_CList_DepthStyle(); //t << Rtf_Style_Reset << Rtf_CList_DepthStyle();
} }
void RTFGenerator::endDescList() void RTFGenerator::endDescList()
...@@ -1597,18 +1753,18 @@ void RTFGenerator::endDescList() ...@@ -1597,18 +1753,18 @@ void RTFGenerator::endDescList()
t << "}"; t << "}";
decrementIndentLevel(); decrementIndentLevel();
m_omitParagraph = TRUE; m_omitParagraph = TRUE;
//t << Rtf_Style["Reset"] << styleStack.top() << endl; //t << Rtf_Style_Reset << styleStack.top() << endl;
} }
void RTFGenerator::writeSection(const char *lab,const char *title,bool sub) void RTFGenerator::startSection(const char *,const char *title,bool sub)
{ {
DBG_RTF(t << "{\\comment (writeSection)}" << endl) DBG_RTF(t << "{\\comment (startSection)}" << endl)
t << "{"; t << "{";
t<< Rtf_Style["Reset"]; t<< Rtf_Style_Reset;
if (sub) if (sub)
{ {
// set style // set style
t << Rtf_Style["Heading3"]; t << Rtf_Style["Heading3"]->reference;
// make table of contents entry // make table of contents entry
t << "{\\tc\\tcl3 \\v "; t << "{\\tc\\tcl3 \\v ";
docify(title); docify(title);
...@@ -1617,16 +1773,16 @@ void RTFGenerator::writeSection(const char *lab,const char *title,bool sub) ...@@ -1617,16 +1773,16 @@ void RTFGenerator::writeSection(const char *lab,const char *title,bool sub)
else else
{ {
// set style // set style
t << Rtf_Style["Heading2"]; t << Rtf_Style["Heading2"]->reference;
// make table of contents entry // make table of contents entry
t << "{\\tc\\tcl2 \\v "; t << "{\\tc\\tcl2 \\v ";
docify(title); docify(title);
t << "}" << endl; t << "}" << endl;
} }
}
// write out actual title void RTFGenerator::endSection(const char *lab,bool)
docify(title); {
newParagraph(); newParagraph();
// make bookmark // make bookmark
writeAnchor(0,lab); writeAnchor(0,lab);
...@@ -1741,7 +1897,7 @@ void RTFGenerator::endClassDiagram(ClassDiagram &d, ...@@ -1741,7 +1897,7 @@ void RTFGenerator::endClassDiagram(ClassDiagram &d,
// display the file // display the file
t << "{" << endl; t << "{" << endl;
t << Rtf_Style["Reset"] << endl; t << Rtf_Style_Reset << endl;
t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE ";
t << fileName << ".gif"; t << fileName << ".gif";
t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
...@@ -1756,7 +1912,7 @@ void RTFGenerator::writeFormula(const char *,const char *text) ...@@ -1756,7 +1912,7 @@ void RTFGenerator::writeFormula(const char *,const char *text)
void RTFGenerator::startMemberItem(int) void RTFGenerator::startMemberItem(int)
{ {
DBG_RTF(t <<"{\\comment startMemberItem }" << endl) DBG_RTF(t <<"{\\comment startMemberItem }" << endl)
t << Rtf_Style["Reset"] << Rtf_BList_DepthStyle() << endl; // set style to apropriate depth t << Rtf_Style_Reset << Rtf_BList_DepthStyle() << endl; // set style to apropriate depth
} }
void RTFGenerator::endMemberItem(bool) void RTFGenerator::endMemberItem(bool)
...@@ -1786,7 +1942,7 @@ void RTFGenerator::startCodeFragment() ...@@ -1786,7 +1942,7 @@ void RTFGenerator::startCodeFragment()
{ {
t << "{" << endl; t << "{" << endl;
newParagraph(); newParagraph();
t << Rtf_Style["Reset"] << Rtf_Code_DepthStyle(); t << Rtf_Style_Reset << Rtf_Code_DepthStyle();
//styleStack.push(Rtf_Style_CodeExample); //styleStack.push(Rtf_Style_CodeExample);
} }
...@@ -1795,7 +1951,7 @@ void RTFGenerator::endCodeFragment() ...@@ -1795,7 +1951,7 @@ void RTFGenerator::endCodeFragment()
newParagraph(); newParagraph();
//styleStack.pop(); //styleStack.pop();
//printf("RTFGenerator::endCodeFrament() top=%s\n",styleStack.top()); //printf("RTFGenerator::endCodeFrament() top=%s\n",styleStack.top());
//t << Rtf_Style["Reset"] << styleStack.top() << endl; //t << Rtf_Style_Reset << styleStack.top() << endl;
t << "}" << endl; t << "}" << endl;
m_omitParagraph = TRUE; m_omitParagraph = TRUE;
} }
...@@ -1842,7 +1998,7 @@ void RTFGenerator::startDescTable() ...@@ -1842,7 +1998,7 @@ void RTFGenerator::startDescTable()
DBG_RTF(t << "{\\comment (startDescTable) }" << endl) DBG_RTF(t << "{\\comment (startDescTable) }" << endl)
t << "{" << endl; t << "{" << endl;
//incrementIndentLevel(); //incrementIndentLevel();
//t << Rtf_Style["Reset"] << Rtf_CList_DepthStyle(); //t << Rtf_Style_Reset << Rtf_CList_DepthStyle();
} }
void RTFGenerator::endDescTable() void RTFGenerator::endDescTable()
...@@ -1850,7 +2006,7 @@ void RTFGenerator::endDescTable() ...@@ -1850,7 +2006,7 @@ void RTFGenerator::endDescTable()
//decrementIndentLevel(); //decrementIndentLevel();
DBG_RTF(t << "{\\comment (endDescTable)}" << endl) DBG_RTF(t << "{\\comment (endDescTable)}" << endl)
t << "}" << endl; t << "}" << endl;
//t << Rtf_Style["Reset"] << styleStack.top(); //t << Rtf_Style_Reset << styleStack.top();
} }
void RTFGenerator::startDescTableTitle() void RTFGenerator::startDescTableTitle()
...@@ -1904,54 +2060,54 @@ void RTFGenerator::decrementIndentLevel() ...@@ -1904,54 +2060,54 @@ void RTFGenerator::decrementIndentLevel()
const char * RTFGenerator::Rtf_CList_DepthStyle() const char * RTFGenerator::Rtf_CList_DepthStyle()
{ {
QCString n=makeIndexName("ListContinue",m_listLevel); QCString n=makeIndexName("ListContinue",m_listLevel);
return Rtf_Style[n]; return Rtf_Style[n]->reference;
} }
// a style for list formatted as a "latext style" table of contents // a style for list formatted as a "latext style" table of contents
const char * RTFGenerator::Rtf_LCList_DepthStyle() const char * RTFGenerator::Rtf_LCList_DepthStyle()
{ {
QCString n=makeIndexName("LatexTOC",m_listLevel); QCString n=makeIndexName("LatexTOC",m_listLevel);
return Rtf_Style[n]; return Rtf_Style[n]->reference;
} }
// a style for list formatted as a "bullet" style // a style for list formatted as a "bullet" style
const char * RTFGenerator::Rtf_BList_DepthStyle() const char * RTFGenerator::Rtf_BList_DepthStyle()
{ {
QCString n=makeIndexName("ListBullet",m_listLevel); QCString n=makeIndexName("ListBullet",m_listLevel);
return Rtf_Style[n]; return Rtf_Style[n]->reference;
} }
// a style for list formatted as a "enumeration" style // a style for list formatted as a "enumeration" style
const char * RTFGenerator::Rtf_EList_DepthStyle() const char * RTFGenerator::Rtf_EList_DepthStyle()
{ {
QCString n=makeIndexName("ListEnum",m_listLevel); QCString n=makeIndexName("ListEnum",m_listLevel);
return Rtf_Style[n]; return Rtf_Style[n]->reference;
} }
const char * RTFGenerator::Rtf_DList_DepthStyle() const char * RTFGenerator::Rtf_DList_DepthStyle()
{ {
QCString n=makeIndexName("DescContinue",m_listLevel); QCString n=makeIndexName("DescContinue",m_listLevel);
return Rtf_Style[n]; return Rtf_Style[n]->reference;
} }
const char * RTFGenerator::Rtf_Code_DepthStyle() const char * RTFGenerator::Rtf_Code_DepthStyle()
{ {
QCString n=makeIndexName("CodeExample",m_listLevel); QCString n=makeIndexName("CodeExample",m_listLevel);
return Rtf_Style[n]; return Rtf_Style[n]->reference;
} }
void RTFGenerator::startTextBlock(bool dense) void RTFGenerator::startTextBlock(bool dense)
{ {
DBG_RTF(t << "{\\comment Start TextBlock}" << endl) DBG_RTF(t << "{\\comment Start TextBlock}" << endl)
t << "{" << endl; t << "{" << endl;
t << Rtf_Style["Reset"]; t << Rtf_Style_Reset;
if (dense) // no spacing between "paragraphs" if (dense) // no spacing between "paragraphs"
{ {
t << Rtf_Style["DenseText"]; t << Rtf_Style["DenseText"]->reference;
} }
else // some spacing else // some spacing
{ {
t << Rtf_Style["BodyText"]; t << Rtf_Style["BodyText"]->reference;
} }
} }
...@@ -1972,7 +2128,7 @@ void RTFGenerator::newParagraph() ...@@ -1972,7 +2128,7 @@ void RTFGenerator::newParagraph()
void RTFGenerator::startMemberSubtitle() void RTFGenerator::startMemberSubtitle()
{ {
t << "{" << endl; t << "{" << endl;
t << Rtf_Style["Reset"] << Rtf_CList_DepthStyle() << endl; t << Rtf_Style_Reset << Rtf_CList_DepthStyle() << endl;
} }
void RTFGenerator::endMemberSubtitle() void RTFGenerator::endMemberSubtitle()
...@@ -2165,7 +2321,7 @@ void RTFGenerator::endDotGraph(DotClassGraph &g) ...@@ -2165,7 +2321,7 @@ void RTFGenerator::endDotGraph(DotClassGraph &g)
// display the file // display the file
t << "{" << endl; t << "{" << endl;
t << Rtf_Style["Reset"] << endl; t << Rtf_Style_Reset << endl;
t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE ";
t << g.diskName() << ".gif"; t << g.diskName() << ".gif";
t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
...@@ -2186,7 +2342,7 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g) ...@@ -2186,7 +2342,7 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g)
// display the file // display the file
t << "{" << endl; t << "{" << endl;
t << Rtf_Style["Reset"] << endl; t << Rtf_Style_Reset << endl;
t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE ";
t << g.diskName() << ".gif"; t << g.diskName() << ".gif";
t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
...@@ -2246,14 +2402,14 @@ void RTFGenerator::startMemberGroupHeader(bool hasHeader) ...@@ -2246,14 +2402,14 @@ void RTFGenerator::startMemberGroupHeader(bool hasHeader)
DBG_RTF(t << "{\\comment startMemberGroupHeader}" << endl) DBG_RTF(t << "{\\comment startMemberGroupHeader}" << endl)
t << "{" << endl; t << "{" << endl;
if (hasHeader) incrementIndentLevel(); if (hasHeader) incrementIndentLevel();
t << Rtf_Style["Reset"] << Rtf_Style["GroupHeader"]; t << Rtf_Style_Reset << Rtf_Style["GroupHeader"]->reference;
} }
void RTFGenerator::endMemberGroupHeader() void RTFGenerator::endMemberGroupHeader()
{ {
DBG_RTF(t << "{\\comment endMemberGroupHeader}" << endl) DBG_RTF(t << "{\\comment endMemberGroupHeader}" << endl)
newParagraph(); newParagraph();
t << Rtf_Style["Reset"] << Rtf_CList_DepthStyle(); t << Rtf_Style_Reset << Rtf_CList_DepthStyle();
} }
void RTFGenerator::startMemberGroupDocs() void RTFGenerator::startMemberGroupDocs()
...@@ -2272,7 +2428,7 @@ void RTFGenerator::endMemberGroupDocs() ...@@ -2272,7 +2428,7 @@ void RTFGenerator::endMemberGroupDocs()
void RTFGenerator::startMemberGroup() void RTFGenerator::startMemberGroup()
{ {
DBG_RTF(t << "{\\comment startMemberGroup}" << endl) DBG_RTF(t << "{\\comment startMemberGroup}" << endl)
t << Rtf_Style["Reset"] << Rtf_BList_DepthStyle() << endl; t << Rtf_Style_Reset << Rtf_BList_DepthStyle() << endl;
} }
void RTFGenerator::endMemberGroup(bool hasHeader) void RTFGenerator::endMemberGroup(bool hasHeader)
......
...@@ -166,7 +166,8 @@ class RTFGenerator : public OutputGenerator ...@@ -166,7 +166,8 @@ class RTFGenerator : public OutputGenerator
void endDescTitle(); void endDescTitle();
void writeDescItem(); void writeDescItem();
void endDescList(); void endDescList();
void writeSection(const char *,const char *,bool); void startSection(const char *,const char *,bool);
void endSection(const char *,bool);
void writeSectionRef(const char *,const char *,const char *); void writeSectionRef(const char *,const char *,const char *);
void writeSectionRefItem(const char *,const char *,const char *); void writeSectionRefItem(const char *,const char *,const char *);
void writeSectionRefAnchor(const char *,const char *,const char *); void writeSectionRefAnchor(const char *,const char *,const char *);
......
...@@ -309,7 +309,7 @@ static int yyread(char *buf,int max_size) ...@@ -309,7 +309,7 @@ static int yyread(char *buf,int max_size)
%} %}
CMD ("\\"|"@") CMD ("\\"|"@")
SECTIONCMD {CMD}("image"|"author"|"internal"|"version"|"date"|"deprecated"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see"|"pre"|"post"|"invariant"|"note"|"remark"[s]?|"todo"|"test"|"ingroup") SECTIONCMD {CMD}("image"|"author"|"internal"|"version"|"date"|"deprecated"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see"|"pre"|"post"|"invariant"|"note"|"remark"[s]?|"todo"|"test"|"ingroup"|"latexonly"|"htmlonly")
BN [ \t\n\r] BN [ \t\n\r]
BL [ \t\r]*"\n" BL [ \t\r]*"\n"
B [ \t] B [ \t]
...@@ -1901,7 +1901,10 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -1901,7 +1901,10 @@ TITLE [tT][iI][tT][lL][eE]
<Function>"#" { lastCPPContext = YY_START; <Function>"#" { lastCPPContext = YY_START;
BEGIN(SkipCPP); BEGIN(SkipCPP);
} }
<Function>[:;{] { <Function>":" {
BEGIN(SkipInits);
}
<Function>[;{] {
current->name=current->name.simplifyWhiteSpace(); current->name=current->name.simplifyWhiteSpace();
current->type=current->type.simplifyWhiteSpace(); current->type=current->type.simplifyWhiteSpace();
current->args=current->args.simplifyWhiteSpace(); current->args=current->args.simplifyWhiteSpace();
...@@ -1983,11 +1986,11 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -1983,11 +1986,11 @@ TITLE [tT][iI][tT][lL][eE]
curlyCount=0; curlyCount=0;
BEGIN( SkipCurly ) ; BEGIN( SkipCurly ) ;
} }
else if( *yytext == ':' ) //else if( *yytext == ':' )
{ //{
//addToBody(yytext); // //addToBody(yytext);
BEGIN( SkipInits ) ; // BEGIN( SkipInits ) ;
} //}
else else
{ {
if (previous->section!=Entry::VARIABLE_SEC) if (previous->section!=Entry::VARIABLE_SEC)
...@@ -1998,9 +2001,11 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -1998,9 +2001,11 @@ TITLE [tT][iI][tT][lL][eE]
<SkipInits>"{" { <SkipInits>"{" {
//addToBody(yytext); //addToBody(yytext);
lastCurlyContext = FindMembers; //lastCurlyContext = FindMembers;
curlyCount=0; //curlyCount=0;
BEGIN( SkipCurly ) ; //BEGIN( SkipCurly ) ;
unput('{');
BEGIN( Function );
} }
<SkipCurly>"{" { <SkipCurly>"{" {
//addToBody(yytext); //addToBody(yytext);
...@@ -2186,7 +2191,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2186,7 +2191,7 @@ TITLE [tT][iI][tT][lL][eE]
} }
<ClassVar>":" { <ClassVar>":" {
current->type.resize(0); current->type.resize(0);
if (current->section == Entry::INTERFACE_SEC) if (current->section == Entry::INTERFACE_SEC || current->section == Entry::STRUCT_SEC)
baseProt=Public; baseProt=Public;
else else
baseProt=Private; baseProt=Private;
...@@ -2311,7 +2316,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2311,7 +2316,7 @@ TITLE [tT][iI][tT][lL][eE]
} }
<Comment>. { current->program += *yytext ; } <Comment>. { current->program += *yytext ; }
<FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar>("//"{B}*)?"/*!" { <FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar,SkipInits>("//"{B}*)?"/*!" {
//printf("Start doc block at %d\n",yyLineNr); //printf("Start doc block at %d\n",yyLineNr);
removeSlashes=(yytext[1]=='/'); removeSlashes=(yytext[1]=='/');
tmpDocType=-1; tmpDocType=-1;
...@@ -2324,7 +2329,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2324,7 +2329,7 @@ TITLE [tT][iI][tT][lL][eE]
current->inside = current_root->name+"::"; current->inside = current_root->name+"::";
BEGIN( Doc ); BEGIN( Doc );
} }
<FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar>("//"{B}*)?"/**"/[^/*] { <FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar,SkipInits>("//"{B}*)?"/**"/[^/*] {
removeSlashes=(yytext[1]=='/'); removeSlashes=(yytext[1]=='/');
lastDocContext = YY_START; lastDocContext = YY_START;
if (current_root->section & Entry::SCOPE_MASK) if (current_root->section & Entry::SCOPE_MASK)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment