summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2014-06-20 18:53:53 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2014-06-20 18:53:53 (GMT)
commit12f5ee8a8c3a287f6bcfe81f79ff4332b3987c7e (patch)
tree678956eeee36083508d67cc4003e63ca60d3f0b4 /src
parent21178ab40160abf011fa084a10892b5b7821e44c (diff)
downloadDoxygen-12f5ee8a8c3a287f6bcfe81f79ff4332b3987c7e.zip
Doxygen-12f5ee8a8c3a287f6bcfe81f79ff4332b3987c7e.tar.gz
Doxygen-12f5ee8a8c3a287f6bcfe81f79ff4332b3987c7e.tar.bz2
Docbook output improvements
1. New Feature: Adapted Class Graph generation for DOCBOOK 2. Fixed DOCBOOK Code documentation formatting 3. Fixed Doxygen to handle FULL_PATH_NAMES for DOCBOOK generation
Diffstat (limited to 'src')
-rw-r--r--src/config.xml10
-rw-r--r--src/context.cpp12
-rw-r--r--src/docbookgen.cpp155
-rw-r--r--src/docbookvisitor.cpp109
-rw-r--r--src/docparser.cpp15
-rw-r--r--src/docparser.h2
-rw-r--r--src/dot.cpp209
-rw-r--r--src/dot.h16
-rw-r--r--src/htmldocvisitor.cpp2
-rw-r--r--src/htmlgen.cpp10
-rw-r--r--src/latexdocvisitor.cpp2
-rw-r--r--src/latexgen.cpp10
-rw-r--r--src/printdocvisitor.h7
-rw-r--r--src/rtfdocvisitor.cpp2
-rw-r--r--src/rtfgen.cpp8
-rw-r--r--src/xmldocvisitor.cpp7
16 files changed, 390 insertions, 186 deletions
diff --git a/src/config.xml b/src/config.xml
index f228ca4..eed486e 100644
--- a/src/config.xml
+++ b/src/config.xml
@@ -2763,6 +2763,16 @@ front of it.
]]>
</docs>
</option>
+ <option type='bool' id='DOCBOOK_PROGRAMLISTING' defval='0' depends='GENERATE_DOCBOOK'>
+ <docs>
+<![CDATA[
+ If the \c DOCBOOK_PROGRAMLISTING tag is set to \c YES doxygen will
+ include the program listings (including syntax highlighting
+ and cross-referencing information) to the DOCBOOK output. Note that
+ enabling this will significantly increase the size of the DOCBOOK output.
+]]>
+ </docs>
+ </option>
</group>
<group name='AutoGen' docs='Configuration options for the AutoGen Definitions output'>
<option type='bool' id='GENERATE_AUTOGEN_DEF' defval='0'>
diff --git a/src/context.cpp b/src/context.cpp
index 850f8e8..05e2a7f 100644
--- a/src/context.cpp
+++ b/src/context.cpp
@@ -1471,7 +1471,7 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
{
DotClassGraph *cg = getClassGraph();
FTextStream t(&result);
- cg->writeGraph(t,BITMAP,
+ cg->writeGraph(t,GOF_BITMAP,EOF_Html,
g_globals.outputDir,
g_globals.outputDir+portable_pathSeparator()+m_classDef->getOutputFileBase()+Doxygen::htmlFileExtension,
relPathAsString(),TRUE,TRUE,g_globals.dynSectionId
@@ -1516,7 +1516,7 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
{
DotClassGraph *cg = getCollaborationGraph();
FTextStream t(&result);
- cg->writeGraph(t,BITMAP,
+ cg->writeGraph(t,GOF_BITMAP,EOF_Html,
g_globals.outputDir,
g_globals.outputDir+portable_pathSeparator()+m_classDef->getOutputFileBase()+Doxygen::htmlFileExtension,
relPathAsString(),TRUE,TRUE,g_globals.dynSectionId
@@ -2197,7 +2197,7 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
{
DotInclDepGraph *cg = getIncludeGraph();
FTextStream t(&result);
- cg->writeGraph(t,BITMAP,
+ cg->writeGraph(t,GOF_BITMAP,EOF_Html,
g_globals.outputDir,
g_globals.outputDir+portable_pathSeparator()+m_fileDef->getOutputFileBase()+Doxygen::htmlFileExtension,
relPathAsString(),TRUE,g_globals.dynSectionId
@@ -2228,7 +2228,7 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
{
DotInclDepGraph *cg = getIncludedByGraph();
FTextStream t(&result);
- cg->writeGraph(t,BITMAP,
+ cg->writeGraph(t,GOF_BITMAP,EOF_Html,
g_globals.outputDir,
g_globals.outputDir+portable_pathSeparator()+m_fileDef->getOutputFileBase()+Doxygen::htmlFileExtension,
relPathAsString(),TRUE,g_globals.dynSectionId
@@ -3634,7 +3634,7 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
DotCallGraph *cg = getCallGraph();
QGString result;
FTextStream t(&result);
- cg->writeGraph(t,BITMAP,
+ cg->writeGraph(t,GOF_BITMAP,EOF_Html,
g_globals.outputDir,
g_globals.outputDir+portable_pathSeparator()+m_memberDef->getOutputFileBase()+Doxygen::htmlFileExtension,
relPathAsString(),TRUE,g_globals.dynSectionId
@@ -3674,7 +3674,7 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
DotCallGraph *cg = getCallerGraph();
QGString result;
FTextStream t(&result);
- cg->writeGraph(t,BITMAP,
+ cg->writeGraph(t,GOF_BITMAP,EOF_Html,
g_globals.outputDir,
g_globals.outputDir+portable_pathSeparator()+m_memberDef->getOutputFileBase()+Doxygen::htmlFileExtension,
relPathAsString(),TRUE,g_globals.dynSectionId
diff --git a/src/docbookgen.cpp b/src/docbookgen.cpp
index 2011333..cabb7ad 100644
--- a/src/docbookgen.cpp
+++ b/src/docbookgen.cpp
@@ -210,7 +210,7 @@ class DocbookCodeGenerator : public CodeOutputInterface
{
m_t << "<link linkend=\"" << m_refId << "\">";
}
- m_t << m_lineNumber;
+ m_t << m_lineNumber << " ";
if (!m_refId.isEmpty())
{
m_t << "</link>";
@@ -228,10 +228,10 @@ class DocbookCodeGenerator : public CodeOutputInterface
m_external.resize(0);
m_insideCodeLine=FALSE;
}
- void startFontClass(const char * /*colorClass*/)
+ void startFontClass(const char *colorClass)
{
Docbook_DB(("(startFontClass)\n"));
- m_t << "<emphasis>"; // non DocBook
+ m_t << "<emphasis class=\"" << colorClass << "\">";
m_insideSpecialHL=TRUE;
}
void endFontClass()
@@ -453,7 +453,7 @@ static void generateDocbookForMember(MemberDef *md,FTextStream &t,Definition *de
if (md->memberType()==MemberType_Enumeration)
{
MemberList *enumFields = md->enumFieldList();
- t << " <para>" << memType << " <link linkend=\"";
+ t << " <para><literallayout>" << memType << " <link linkend=\"";
if (md->getGroupDef() && def->definitionType()==Definition::TypeGroup)
{
t << md->getGroupDef()->getOutputFileBase();
@@ -467,25 +467,25 @@ static void generateDocbookForMember(MemberDef *md,FTextStream &t,Definition *de
{
MemberListIterator emli(*enumFields);
MemberDef *emd;
- t << "{";
+ t << " {" << endl;
int cnt=0;
for (emli.toFirst();(emd=emli.current());++emli)
{
if (cnt!=0)
{
- t << ", ";
+ t << "," << endl;
}
t << "<link linkend=\"" << memberOutputFileBase(emd) << "_1" << emd->anchor() << "\">";
writeDocbookString(t,emd->name());
t << "</link>";
if (!emd->initializer().isEmpty())
{
- t << "=";
writeDocbookString(t,emd->initializer());
}
cnt++;
}
- t << "}";
+ t << endl << "}";
+ t << "</literallayout>" << endl;
}
}
else if (md->memberType()==MemberType_Define)
@@ -608,10 +608,10 @@ static void generateDocbookForMember(MemberDef *md,FTextStream &t,Definition *de
t << " </listitem>" << endl;
t << " </itemizedlist>" << endl;
t << " </para>" << endl;
- }
- else
+ }
+ else
{
- if (md->memberType()==MemberType_Enumeration)
+ if (md->memberType()==MemberType_Enumeration)
{
MemberList *enumFields = md->enumFieldList();
t << " <section xml:id=\"";
@@ -653,20 +653,19 @@ static void generateDocbookForMember(MemberDef *md,FTextStream &t,Definition *de
t << " </formalpara>" << endl;
t << " <para>";
t << "Definition at line " << md->getDefLine() << " of file " << stripPath(md->getDefFileName()) << endl;
- t << " <programlisting>" << endl;
+ t << " <computeroutput><literallayout>" << endl;
t << "{" << endl;
for (emli.toFirst();(emd=emli.current());++emli)
{
writeDocbookString(t,emd->name());
if (!emd->initializer().isEmpty())
{
- t << "=";
writeDocbookString(t,emd->initializer());
}
t << ", " << endl;
}
t << "}" << convertToXML(md->name()) << ";" << endl;
- t << " </programlisting>" << endl;
+ t << " </literallayout></computeroutput>" << endl;
t << " </para>" << endl;
t << " </section>" << endl;
}
@@ -1127,6 +1126,7 @@ static void generateDocbookForClass(ClassDef *cd,FTextStream &ti)
QCString outputDirectory = Config_getString("DOCBOOK_OUTPUT");
QCString fileName=outputDirectory+"/"+ classOutputFileBase(cd)+".xml";
+ QCString relPath = relativePathToRoot(fileName);
QFile f(fileName);
if (!f.open(IO_WriteOnly))
{
@@ -1181,6 +1181,20 @@ static void generateDocbookForClass(ClassDef *cd,FTextStream &ti)
}
}
+ if (Config_getBool("HAVE_DOT") && (Config_getBool("CLASS_DIAGRAMS") || Config_getBool("CLASS_GRAPH")))
+ {
+ t << "<para>Inheritance diagram for " << convertToXML(cd->name()) << "</para>" << endl;
+ DotClassGraph inheritanceGraph(cd,DotNode::Inheritance);
+ inheritanceGraph.writeGraph(t,GOF_BITMAP,EOF_DocBook,Config_getString("DOCBOOK_OUTPUT"),fileName,relPath,TRUE,FALSE);
+ }
+
+ if (Config_getBool("HAVE_DOT") && Config_getBool("COLLABORATION_GRAPH"))
+ {
+ t << "<para>Collaboration diagram for " << convertToXML(cd->name()) << "</para>" << endl;
+ DotClassGraph collaborationGraph(cd,DotNode::Collaboration);
+ collaborationGraph.writeGraph(t,GOF_BITMAP,EOF_DocBook,Config_getString("DOCBOOK_OUTPUT"),fileName,relPath,TRUE,FALSE);
+ }
+
writeInnerClasses(cd->getClassSDict(),t);
writeTemplateList(cd,t);
@@ -1369,6 +1383,7 @@ static void generateDocbookForFile(FileDef *fd,FTextStream &ti)
QCString outputDirectory = Config_getString("DOCBOOK_OUTPUT");
QCString fileName=outputDirectory+"/"+fd->getOutputFileBase()+".xml";
+ QCString relPath = relativePathToRoot(fileName);
QFile f(fileName);
if (!f.open(IO_WriteOnly))
@@ -1413,6 +1428,21 @@ static void generateDocbookForFile(FileDef *fd,FTextStream &ti)
t << "</programlisting>" << endl;
}
}
+ if (Config_getBool("HAVE_DOT"))
+ {
+ if (Config_getBool("INCLUDE_GRAPH"))
+ {
+ t << "<para>Include dependency diagram for " << convertToXML(fd->name()) << "</para>" << endl;
+ DotInclDepGraph idepGraph(fd, FALSE);
+ idepGraph.writeGraph(t,GOF_BITMAP,EOF_DocBook,Config_getString("DOCBOOK_OUTPUT"),fileName,relPath,FALSE);
+ }
+ if (Config_getBool("INCLUDED_BY_GRAPH"))
+ {
+ t << "<para>Included by dependency diagram for " << convertToXML(fd->name()) << "</para>" << endl;
+ DotInclDepGraph ibdepGraph(fd, TRUE);
+ ibdepGraph.writeGraph(t,GOF_BITMAP,EOF_DocBook,Config_getString("DOCBOOK_OUTPUT"),fileName,relPath,FALSE);
+ }
+ }
if (fd->getClassSDict())
{
@@ -1448,20 +1478,24 @@ static void generateDocbookForFile(FileDef *fd,FTextStream &ti)
t << " <title>Detailed Description</title>" << endl;
writeDocbookDocBlock(t,fd->briefFile(),fd->briefLine(),fd,0,fd->briefDescription());
writeDocbookDocBlock(t,fd->docFile(),fd->docLine(),fd,0,fd->documentation());
- t << " <para>Definition in file " << fd->getDefFileName() << "</para>" << endl;
+ if (Config_getBool("FULL_PATH_NAMES"))
+ {
+ t << " <para>Definition in file " << fd->getDefFileName() << "</para>" << endl;
+ }
+ else
+ {
+ t << " <para>Definition in file " << stripPath(fd->getDefFileName()) << "</para>" << endl;
+ }
t << " </simplesect>" << endl;
- /*// TODO: Handling of Program listing for Docbook to be implemented
- if (Config_getBool("DOCBOOK_PROGRAMLISTING"))
- {
- t << " <programlisting>" << endl;
+ if (Config_getBool("DOCBOOK_PROGRAMLISTING"))
+ {
+ t << " <literallayout><computeroutput>" << endl;
writeDocbookCodeBlock(t,fd);
- t << " </programlisting>" << endl;
- }
- */
+ t << " </computeroutput></literallayout>" << endl;
+ }
t << "</section>" << endl;
-
}
static void generateDocbookForGroup(GroupDef *gd,FTextStream &ti)
@@ -1489,6 +1523,7 @@ static void generateDocbookForGroup(GroupDef *gd,FTextStream &ti)
QCString outputDirectory = Config_getString("DOCBOOK_OUTPUT");
QCString fileName=outputDirectory+"/"+gd->getOutputFileBase()+".xml";
+ QCString relPath = relativePathToRoot(fileName);
QFile f(fileName);
if (!f.open(IO_WriteOnly))
@@ -1503,6 +1538,13 @@ static void generateDocbookForGroup(GroupDef *gd,FTextStream &ti)
t << " <title>" << convertToXML(gd->groupTitle()) << "</title>" << endl;
+ if (Config_getBool("GROUP_GRAPHS") && Config_getBool("HAVE_DOT"))
+ {
+ t << "<para>Collaboration diagram for " << convertToXML(gd->groupTitle()) << "</para>" << endl;
+ DotGroupCollaboration collaborationGraph(gd);
+ collaborationGraph.writeGraph(t,GOF_BITMAP,EOF_DocBook,Config_getString("DOCBOOK_OUTPUT"),fileName,relPath,FALSE);
+ }
+
if (gd->briefDescription())
{
t << " <simplesect>" << endl;
@@ -1570,6 +1612,8 @@ static void generateDocbookForDir(DirDef *dd,FTextStream &ti)
QCString outputDirectory = Config_getString("DOCBOOK_OUTPUT");
QCString fileName=outputDirectory+"/"+dd->getOutputFileBase()+".xml";
QFile f(fileName);
+ QCString relPath = relativePathToRoot(fileName);
+
if (!f.open(IO_WriteOnly))
{
err("Cannot open file %s for writing!\n",fileName.data());
@@ -1584,6 +1628,12 @@ static void generateDocbookForDir(DirDef *dd,FTextStream &ti)
writeDocbookString(t, dd->displayName());
t << " Directory Reference";
t << "</title>" << endl;
+ if (Config_getBool("DIRECTORY_GRAPH") && Config_getBool("HAVE_DOT"))
+ {
+ t << "<para>Directory dependency diagram for " << convertToXML(dd->displayName()) << "</para>" << endl;
+ DotDirDeps dirdepGraph(dd);
+ dirdepGraph.writeGraph(t,GOF_BITMAP,EOF_DocBook,Config_getString("DOCBOOK_OUTPUT"),fileName,relPath,FALSE);
+ }
writeInnerDirs(&dd->subDirs(),t);
writeInnerFiles(dd->getFiles(),t);
@@ -1628,7 +1678,13 @@ static void generateDocbookForPage(PageDef *pd,FTextStream &ti,bool isExample)
FTextStream t(&f);
//t.setEncoding(FTextStream::UnicodeUTF8);
- if (!pd->hasParentPage())
+ if(isExample)
+ {
+ QCString fileDocbook=pageName+".xml";
+ ti << " <xi:include href=\"" << fileDocbook << "\" xmlns:xi=\"http://www.w3.org/2001/XInclude\"/>" << endl;
+ }
+
+ if (!pd->hasParentPage() && !isExample)
{
QCString fileDocbook=pageName+".xml";
//Add the file Documentation info to index file
@@ -1654,7 +1710,7 @@ static void generateDocbookForPage(PageDef *pd,FTextStream &ti,bool isExample)
if (isExample)
{
writeDocbookDocBlock(t,pd->docFile(),pd->docLine(),pd,0,
- pd->documentation()+"\n&lt;include "+pd->name()+"&gt;");
+ pd->documentation()+"\n\\include "+pd->name());
}
else
{
@@ -1663,7 +1719,7 @@ static void generateDocbookForPage(PageDef *pd,FTextStream &ti,bool isExample)
}
writeInnerPages(pd->getSubPages(),t);
- if (!pd->hasParentPage())
+ if (!pd->hasParentPage() && !isExample)
{
t << endl << "</chapter>" << endl;
}
@@ -1744,7 +1800,6 @@ void generateDocbook()
t << " </info>" << endl;
// NAMESPACE DOCUMENTATION
-
NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict);
NamespaceDef *nd;
@@ -1838,35 +1893,39 @@ void generateDocbook()
// FILE DOCUMENTATION
- FileNameListIterator fnli(*Doxygen::inputNameList);
- FileName *fn;
-
- //File Documentation index header
- if (fnli.toFirst())
+ static bool showFiles = Config_getBool("SHOW_FILES");
+ if (showFiles)
{
- t << " <chapter>" << endl;
- t << " <title>File Documentation</title>" << endl;
- }
+ FileNameListIterator fnli(*Doxygen::inputNameList);
+ FileName *fn;
- for (;(fn=fnli.current());++fnli)
- {
- FileNameIterator fni(*fn);
- FileDef *fd;
- for (;(fd=fni.current());++fni)
+ //File Documentation index header
+ if (fnli.toFirst())
{
- msg("Generating Docbook output for file %s\n",fd->name().data());
- generateDocbookForFile(fd,t);
+ t << " <chapter>" << endl;
+ t << " <title>File Documentation</title>" << endl;
}
- }
- //File Documentation index footer
- if (fnli.toFirst())
- {
- t << " </chapter>" << endl;
+ for (;(fn=fnli.current());++fnli)
+ {
+ FileNameIterator fni(*fn);
+ FileDef *fd;
+ for (;(fd=fni.current());++fni)
+ {
+ msg("Generating Docbook output for file %s\n",fd->name().data());
+ generateDocbookForFile(fd,t);
+ }
+ }
+
+ //File Documentation index footer
+ if (fnli.toFirst())
+ {
+ t << " </chapter>" << endl;
+ }
}
// DIRECTORY DOCUMENTATION
-
+ if (Config_getBool("DIRECTORY_GRAPH") && Config_getBool("HAVE_DOT"))
{
DirDef *dir;
DirSDict::Iterator sdi(*Doxygen::directories);
diff --git a/src/docbookvisitor.cpp b/src/docbookvisitor.cpp
index 6867dce..cf235da 100644
--- a/src/docbookvisitor.cpp
+++ b/src/docbookvisitor.cpp
@@ -160,16 +160,16 @@ void DocbookDocVisitor::visit(DocVerbatim *s)
switch(s->type())
{
case DocVerbatim::Code: // fall though
- m_t << "<programlisting>";
+ m_t << "<literallayout><computeroutput>";
Doxygen::parserManager->getParser(m_langExt)
->parseCode(m_ci,s->context(),s->text(),langExt,
s->isExample(),s->exampleFile());
- m_t << "</programlisting>";
+ m_t << "</computeroutput></literallayout>";
break;
case DocVerbatim::Verbatim:
- m_t << "<programlisting><literallayout>";
+ m_t << "<literallayout>";
filter(s->text());
- m_t << "</literallayout></programlisting>";
+ m_t << "</literallayout>";
break;
case DocVerbatim::HtmlOnly:
break;
@@ -189,8 +189,10 @@ void DocbookDocVisitor::visit(DocVerbatim *s)
{
static int dotindex = 1;
QCString baseName(4096);
+ QCString name;
QCString stext = s->text();
m_t << "<para>" << endl;
+ name.sprintf("%s%d", "dot_inline_dotgraph_", dotindex);
baseName.sprintf("%s%d",
(Config_getString("DOCBOOK_OUTPUT")+"/inline_dotgraph_").data(),
dotindex++
@@ -203,7 +205,7 @@ void DocbookDocVisitor::visit(DocVerbatim *s)
file.writeBlock( stext, stext.length() );
file.close();
m_t << " <figure>" << endl;
- m_t << " <title></title>" << endl;
+ m_t << " <title>" << name << "</title>" << endl;
m_t << " <mediaobject>" << endl;
m_t << " <imageobject>" << endl;
writeDotFile(baseName);
@@ -216,8 +218,10 @@ void DocbookDocVisitor::visit(DocVerbatim *s)
case DocVerbatim::Msc:
static int mscindex = 1;
QCString baseName(4096);
+ QCString name;
QCString stext = s->text();
m_t << "<para>" << endl;
+ name.sprintf("%s%d", "msc_inline_mscgraph_", mscindex);
baseName.sprintf("%s%d",
(Config_getString("DOCBOOK_OUTPUT")+"/inline_mscgraph_").data(),
mscindex++
@@ -233,7 +237,7 @@ void DocbookDocVisitor::visit(DocVerbatim *s)
file.writeBlock( text, text.length() );
file.close();
m_t << " <figure>" << endl;
- m_t << " <title></title>" << endl;
+ m_t << " <title>" << name << "</title>" << endl;
m_t << " <mediaobject>" << endl;
m_t << " <imageobject>" << endl;
writeMscFile(baseName);
@@ -259,7 +263,7 @@ void DocbookDocVisitor::visit(DocInclude *inc)
{
case DocInclude::IncWithLines:
{
- m_t << "<programlisting>";
+ m_t << "<literallayout><computeroutput>";
QFileInfo cfi( inc->file() );
FileDef fd( cfi.dirPath().utf8(), cfi.fileName().utf8() );
Doxygen::parserManager->getParser(inc->extension())
@@ -268,18 +272,18 @@ void DocbookDocVisitor::visit(DocInclude *inc)
langExt,
inc->isExample(),
inc->exampleFile(), &fd);
- m_t << "</programlisting>";
+ m_t << "</computeroutput></literallayout>";
}
break;
case DocInclude::Include:
- m_t << "<programlisting>";
+ m_t << "<literallayout><computeroutput>";
Doxygen::parserManager->getParser(inc->extension())
->parseCode(m_ci,inc->context(),
inc->text(),
langExt,
inc->isExample(),
inc->exampleFile());
- m_t << "</programlisting>";
+ m_t << "</computeroutput></literallayout>";
break;
case DocInclude::DontInclude:
break;
@@ -293,7 +297,7 @@ void DocbookDocVisitor::visit(DocInclude *inc)
m_t << "</verbatim>";
break;
case DocInclude::Snippet:
- m_t << "<programlisting>";
+ m_t << "<literallayout><computeroutput>";
Doxygen::parserManager->getParser(inc->extension())
->parseCode(m_ci,
inc->context(),
@@ -302,7 +306,7 @@ void DocbookDocVisitor::visit(DocInclude *inc)
inc->isExample(),
inc->exampleFile()
);
- m_t << "</programlisting>";
+ m_t << "</computeroutput></literallayout>";
break;
}
}
@@ -361,7 +365,7 @@ void DocbookDocVisitor::visit(DocIndexEntry *ie)
void DocbookDocVisitor::visit(DocSimpleSectSep *)
{
- m_t << "<simplesectsep/>";
+ m_t << "<simplesect/>";
}
void DocbookDocVisitor::visit(DocCite *cite)
@@ -818,14 +822,14 @@ void DocbookDocVisitor::visitPost(DocHtmlHeader *)
void DocbookDocVisitor::visitPre(DocImage *img)
{
- if (img->type()==DocImage::Latex)
+ if (img->type()==DocImage::DocBook)
{
if (m_hide) return;
m_t << endl;
m_t << " <figure>" << endl;
m_t << " <title>";
- }
- else
+ }
+ else
{
pushEnabled();
m_hide=TRUE;
@@ -834,7 +838,7 @@ void DocbookDocVisitor::visitPre(DocImage *img)
void DocbookDocVisitor::visitPost(DocImage *img)
{
- if (img->type()==DocImage::Latex)
+ if (img->type()==DocImage::DocBook)
{
if (m_hide) return;
QCString typevar;
@@ -854,13 +858,17 @@ void DocbookDocVisitor::visitPost(DocImage *img)
filter(img->width());
m_t << "\"";
}
- else if (!img->height().isEmpty())
+ else
+ {
+ m_t << " width=\"50%\"";
+ }
+ if (!img->height().isEmpty())
{
m_t << " depth=\"";
filter(img->height());
m_t << "\"";
}
- m_t << " align=\"center\" fileref=\"" << baseName << "\">";
+ m_t << " align=\"center\" valign=\"middle\" scalefit=\"1\" fileref=\"" << baseName << "\">";
m_t << "</imagedata>" << endl;
m_t << " </imageobject>" << endl;
m_t << " </mediaobject>" << endl;
@@ -988,7 +996,7 @@ void DocbookDocVisitor::visitPre(DocParamSect *s)
m_t << " <formalpara>" << endl;
m_t << " <title/>" << endl;
m_t << " <table frame=\"all\">" << endl;
- m_t << " <title>Parameters</title>" << endl;
+ m_t << " <title>param</title>" << endl;
m_t << " <tgroup cols=\"2\" align=\"left\" colsep=\"1\" rowsep=\"1\">" << endl;
m_t << " <tbody>" << endl;
break;
@@ -999,15 +1007,33 @@ void DocbookDocVisitor::visitPre(DocParamSect *s)
m_t << " <formalpara>" << endl;
m_t << " <title/>" << endl;
m_t << " <table frame=\"all\">" << endl;
- m_t << " <title>Parameters</title>" << endl;
+ m_t << " <title>retval</title>" << endl;
m_t << " <tgroup cols=\"2\" align=\"left\" colsep=\"1\" rowsep=\"1\">" << endl;
m_t << " <tbody>" << endl;
break;
}
case DocParamSect::Exception:
- m_t << "exception"; break;
+ {
+ m_t << endl;
+ m_t << " <formalpara>" << endl;
+ m_t << " <title/>" << endl;
+ m_t << " <table frame=\"all\">" << endl;
+ m_t << " <title>exception</title>" << endl;
+ m_t << " <tgroup cols=\"2\" align=\"left\" colsep=\"1\" rowsep=\"1\">" << endl;
+ m_t << " <tbody>" << endl;
+ break;
+ }
case DocParamSect::TemplateParam:
- m_t << "templateparam"; break;
+ {
+ m_t << endl;
+ m_t << " <formalpara>" << endl;
+ m_t << " <title/>" << endl;
+ m_t << " <table frame=\"all\">" << endl;
+ m_t << " <title>templateparam</title>" << endl;
+ m_t << " <tgroup cols=\"2\" align=\"left\" colsep=\"1\" rowsep=\"1\">" << endl;
+ m_t << " <tbody>" << endl;
+ break;
+ }
default:
ASSERT(0);
}
@@ -1029,17 +1055,17 @@ void DocbookDocVisitor::visitPre(DocParamList *pl)
QListIterator<DocNode> li(pl->parameters());
DocNode *param;
m_t << " <row>" << endl;
- if (!li.toFirst())
+ if (!li.toFirst())
{
m_t << " <entry></entry>" << endl;
- }
- else
+ }
+ else
{
m_t << " <entry>";
int cnt = 0;
for (li.toFirst();(param=li.current());++li)
{
- if (cnt)
+ if (cnt)
{
m_t << ", ";
}
@@ -1196,7 +1222,8 @@ void DocbookDocVisitor::writeMscFile(const QCString &baseName)
QCString outDir = Config_getString("DOCBOOK_OUTPUT");
writeMscGraphFromFile(baseName+".msc",outDir,shortName,MSC_BITMAP);
m_t << " <imagedata";
- m_t << " align=\"center\" fileref=\"" << shortName << ".png" << "\">";
+ m_t << " width=\"50%\"";
+ m_t << " align=\"center\" valign=\"middle\" scalefit=\"1\" fileref=\"" << shortName << ".png" << "\">";
m_t << "</imagedata>" << endl;
}
@@ -1231,13 +1258,17 @@ void DocbookDocVisitor::startMscFile(const QCString &fileName,
m_t << width;
m_t << "\"";
}
- else if (!height.isEmpty())
+ else
+ {
+ m_t << " width=\"50%\"";
+ }
+ if (!height.isEmpty())
{
m_t << " depth=\"";
m_t << height;
m_t << "\"";
}
- m_t << " align=\"center\" fileref=\"" << baseName << ".png" << "\">";
+ m_t << " align=\"center\" valign=\"middle\" scalefit=\"1\" fileref=\"" << baseName << ".png" << "\">";
m_t << "</imagedata>" << endl;
m_t << " </imageobject>" << endl;
if (hasCaption)
@@ -1342,9 +1373,12 @@ void DocbookDocVisitor::writeDotFile(const QCString &baseName)
shortName=shortName.right(shortName.length()-i-1);
}
QCString outDir = Config_getString("DOCBOOK_OUTPUT");
- writeDotGraphFromFile(baseName+".dot",outDir,shortName,BITMAP);
+ QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
+ writeDotGraphFromFile(baseName+".dot",outDir,shortName,GOF_BITMAP);
m_t << " <imagedata";
- m_t << " align=\"center\" fileref=\"" << shortName << ".png" << "\">";
+ //If no width is specified use default value for PDF rendering
+ m_t << " width=\"50%\"";
+ m_t << " align=\"center\" valign=\"middle\" scalefit=\"1\" fileref=\"" << shortName << "." << imgExt << "\">";
m_t << "</imagedata>" << endl;
}
@@ -1366,7 +1400,8 @@ void DocbookDocVisitor::startDotFile(const QCString &fileName,
}
baseName.prepend("dot_");
QCString outDir = Config_getString("DOCBOOK_OUTPUT");
- writeDotGraphFromFile(fileName,outDir,baseName,BITMAP);
+ QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
+ writeDotGraphFromFile(fileName,outDir,baseName,GOF_BITMAP);
m_t << "<para>" << endl;
m_t << " <figure>" << endl;
m_t << " <title></title>" << endl;
@@ -1379,13 +1414,17 @@ void DocbookDocVisitor::startDotFile(const QCString &fileName,
m_t << width;
m_t << "\"";
}
- else if (!height.isEmpty())
+ else
+ {
+ m_t << " width=\"50%\"";
+ }
+ if (!height.isEmpty())
{
m_t << " depth=\"";
m_t << height;
m_t << "\"";
}
- m_t << " align=\"center\" fileref=\"" << baseName << ".png" << "\">";
+ m_t << " align=\"center\" valign=\"middle\" scalefit=\"1\" fileref=\"" << baseName << "." << imgExt << "\">";
m_t << "</imagedata>" << endl;
m_t << " </imageobject>" << endl;
if (hasCaption)
diff --git a/src/docparser.cpp b/src/docparser.cpp
index 66a890f..13d333f 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -257,14 +257,18 @@ static QCString findAndCopyImage(const char *fileName,DocImage::Type type)
QCString outputDir;
switch(type)
{
- case DocImage::Html:
+ case DocImage::Html:
if (!Config_getBool("GENERATE_HTML")) return result;
outputDir = Config_getString("HTML_OUTPUT");
break;
- case DocImage::Latex:
+ case DocImage::Latex:
if (!Config_getBool("GENERATE_LATEX")) return result;
outputDir = Config_getString("LATEX_OUTPUT");
break;
+ case DocImage::DocBook:
+ if (!Config_getBool("GENERATE_DOCBOOK")) return result;
+ outputDir = Config_getString("DOCBOOK_OUTPUT");
+ break;
case DocImage::Rtf:
if (!Config_getBool("GENERATE_RTF")) return result;
outputDir = Config_getString("RTF_OUTPUT");
@@ -5025,9 +5029,10 @@ void DocPara::handleImage(const QCString &cmdName)
}
DocImage::Type t;
QCString imgType = g_token->name.lower();
- if (imgType=="html") t=DocImage::Html;
- else if (imgType=="latex") t=DocImage::Latex;
- else if (imgType=="rtf") t=DocImage::Rtf;
+ if (imgType=="html") t=DocImage::Html;
+ else if (imgType=="latex") t=DocImage::Latex;
+ else if (imgType=="docbook") t=DocImage::DocBook;
+ else if (imgType=="rtf") t=DocImage::Rtf;
else
{
warn_doc_error(g_fileName,doctokenizerYYlineno,"image type %s specified as the first argument of "
diff --git a/src/docparser.h b/src/docparser.h
index fb4f084..17f296b 100644
--- a/src/docparser.h
+++ b/src/docparser.h
@@ -668,7 +668,7 @@ class DocXRefItem : public CompAccept<DocXRefItem>, public DocNode
class DocImage : public CompAccept<DocImage>, public DocNode
{
public:
- enum Type { Html, Latex, Rtf };
+ enum Type { Html, Latex, Rtf, DocBook };
DocImage(DocNode *parent,const HtmlAttribList &attribs,
const QCString &name,Type t,const QCString &url=QCString());
Kind kind() const { return Kind_Image; }
diff --git a/src/dot.cpp b/src/dot.cpp
index 051a438..e873034 100644
--- a/src/dot.cpp
+++ b/src/dot.cpp
@@ -16,11 +16,6 @@
*
*/
-#ifdef _WIN32
-#include <windows.h>
-#define BITMAP W_BITMAP
-#endif
-
#include <stdlib.h>
#include <qdir.h>
@@ -1896,7 +1891,7 @@ void DotNode::writeArrow(FTextStream &t,
t << ",arrowhead=\"" << eProps->arrowStyleMap[ei->m_color] << "\"";
}
- if (format==BITMAP) t << ",fontname=\"" << FONTNAME << "\"";
+ if (format==GOF_BITMAP) t << ",fontname=\"" << FONTNAME << "\"";
t << "];" << endl;
}
@@ -2313,7 +2308,7 @@ void DotGfxHierarchyTable::writeGraph(FTextStream &out,
{
if (node->m_subgraphId==n->m_subgraphId)
{
- node->write(md5stream,DotNode::Hierarchy,BITMAP,FALSE,TRUE,TRUE,TRUE);
+ node->write(md5stream,DotNode::Hierarchy,GOF_BITMAP,FALSE,TRUE,TRUE,TRUE);
}
}
writeGraphFooter(md5stream);
@@ -3080,7 +3075,8 @@ QCString DotClassGraph::diskName() const
}
QCString DotClassGraph::writeGraph(FTextStream &out,
- GraphOutputFormat format,
+ GraphOutputFormat graphFormat,
+ EmbeddedOutputFormat textFormat,
const char *path,
const char *fileName,
const char *relPath,
@@ -3128,19 +3124,19 @@ QCString DotClassGraph::writeGraph(FTextStream &out,
if (updateDotGraph(m_startNode,
m_graphType,
absBaseName,
- format,
+ graphFormat,
m_lrRank,
m_graphType==DotNode::Inheritance,
TRUE,
m_startNode->label()
) ||
- !checkDeliverables(format==BITMAP ? absImgName :
+ !checkDeliverables(graphFormat==GOF_BITMAP ? absImgName :
usePDFLatex ? absPdfName : absEpsName,
- format==BITMAP && generateImageMap ? absMapName : QCString())
+ graphFormat==GOF_BITMAP && generateImageMap ? absMapName : QCString())
)
{
regenerate=TRUE;
- if (format==BITMAP) // run dot to create a bitmap image
+ if (graphFormat==GOF_BITMAP) // run dot to create a bitmap image
{
QCString dotArgs(maxCmdLine);
@@ -3151,7 +3147,7 @@ QCString DotClassGraph::writeGraph(FTextStream &out,
DotManager::instance()->addRun(dotRun);
}
- else if (format==EPS) // run dot to create a .eps image
+ else if (graphFormat==GOF_EPS) // run dot to create a .eps image
{
DotRunner *dotRun = new DotRunner(absDotName,d.absPath().data(),FALSE);
if (usePDFLatex)
@@ -3167,7 +3163,35 @@ QCString DotClassGraph::writeGraph(FTextStream &out,
}
Doxygen::indexList->addImageFile(baseName+"."+imgExt);
- if (format==BITMAP && generateImageMap) // produce HTML to include the image
+ if (graphFormat==GOF_BITMAP && textFormat==EOF_DocBook)
+ {
+ out << "<para>" << endl;
+ out << " <figure>" << endl;
+ out << " <title>";
+ switch (m_graphType)
+ {
+ case DotNode::Collaboration:
+ out << "Collaboration graph";
+ break;
+ case DotNode::Inheritance:
+ out << "Inheritance graph";
+ break;
+ default:
+ ASSERT(0);
+ break;
+ }
+ out << "</title>" << endl;
+ out << " <mediaobject>" << endl;
+ out << " <imageobject>" << endl;
+ out << " <imagedata";
+ out << " width=\"50%\" align=\"center\" valign=\"middle\" scalefit=\"1\" fileref=\"" << relPath << baseName << "." << imgExt << "\">";
+ out << "</imagedata>" << endl;
+ out << " </imageobject>" << endl;
+ out << " </mediaobject>" << endl;
+ out << " </figure>" << endl;
+ out << "</para>" << endl;
+ }
+ else if (graphFormat==GOF_BITMAP && generateImageMap) // produce HTML to include the image
{
QCString mapLabel = escapeCharsInString(m_startNode->m_label,FALSE)+"_"+
escapeCharsInString(mapName,FALSE);
@@ -3189,7 +3213,7 @@ QCString DotClassGraph::writeGraph(FTextStream &out,
{
out << "<div class=\"center\">";
out << "<img src=\"" << relPath << baseName << "."
- << imgExt << "\" border=\"0\" usemap=\"#"
+ << imgExt << "\" border=\"0\" usemap=\"#"
<< mapLabel << "\" alt=\"";
switch (m_graphType)
{
@@ -3202,10 +3226,9 @@ QCString DotClassGraph::writeGraph(FTextStream &out,
default:
ASSERT(0);
break;
- }
+ }
out << "\"/>";
out << "</div>" << endl;
-
if (regenerate || !insertMapFile(out,absMapName,relPath,mapLabel))
{
int mapId = DotManager::instance()->addMap(fileName,absMapName,relPath,
@@ -3214,7 +3237,7 @@ QCString DotClassGraph::writeGraph(FTextStream &out,
}
}
}
- else if (format==EPS) // produce tex to include the .eps image
+ else if (graphFormat==GOF_EPS) // produce tex to include the .eps image
{
if (regenerate || !writeVecGfxFigure(out,baseName,absBaseName))
{
@@ -3423,7 +3446,8 @@ QCString DotInclDepGraph::diskName() const
}
QCString DotInclDepGraph::writeGraph(FTextStream &out,
- GraphOutputFormat format,
+ GraphOutputFormat graphFormat,
+ EmbeddedOutputFormat textFormat,
const char *path,
const char *fileName,
const char *relPath,
@@ -3458,19 +3482,19 @@ QCString DotInclDepGraph::writeGraph(FTextStream &out,
if (updateDotGraph(m_startNode,
DotNode::Dependency,
absBaseName,
- format,
+ graphFormat,
FALSE, // lrRank
FALSE, // renderParents
m_inverse, // backArrows
m_startNode->label()
) ||
- !checkDeliverables(format==BITMAP ? absImgName :
+ !checkDeliverables(graphFormat==GOF_BITMAP ? absImgName :
usePDFLatex ? absPdfName : absEpsName,
- format==BITMAP && generateImageMap ? absMapName : QCString())
+ graphFormat==GOF_BITMAP && generateImageMap ? absMapName : QCString())
)
{
regenerate=TRUE;
- if (format==BITMAP)
+ if (graphFormat==GOF_BITMAP)
{
// run dot to create a bitmap image
QCString dotArgs(maxCmdLine);
@@ -3479,7 +3503,7 @@ QCString DotInclDepGraph::writeGraph(FTextStream &out,
if (generateImageMap) dotRun->addJob(MAP_CMD,absMapName);
DotManager::instance()->addRun(dotRun);
}
- else if (format==EPS)
+ else if (graphFormat==GOF_EPS)
{
DotRunner *dotRun = new DotRunner(absDotName,d.absPath().data(),FALSE);
if (usePDFLatex)
@@ -3491,12 +3515,27 @@ QCString DotInclDepGraph::writeGraph(FTextStream &out,
dotRun->addJob("ps",absEpsName);
}
DotManager::instance()->addRun(dotRun);
-
- }
+ }
}
Doxygen::indexList->addImageFile(baseName+"."+imgExt);
- if (format==BITMAP && generateImageMap)
+ if (graphFormat==GOF_BITMAP && textFormat==EOF_DocBook)
+ {
+ out << "<para>" << endl;
+ out << " <figure>" << endl;
+ out << " <title>Dependency diagram";
+ out << "</title>" << endl;
+ out << " <mediaobject>" << endl;
+ out << " <imageobject>" << endl;
+ out << " <imagedata";
+ out << " width=\"50%\" align=\"center\" valign=\"middle\" scalefit=\"1\" fileref=\"" << relPath << baseName << "." << imgExt << "\">";
+ out << "</imagedata>" << endl;
+ out << " </imageobject>" << endl;
+ out << " </mediaobject>" << endl;
+ out << " </figure>" << endl;
+ out << "</para>" << endl;
+ }
+ else if (graphFormat==GOF_BITMAP && generateImageMap)
{
if (imgExt=="svg") // Scalable vector graphics
{
@@ -3514,9 +3553,7 @@ QCString DotInclDepGraph::writeGraph(FTextStream &out,
}
else // bitmap graphics
{
- out << "<div class=\"center\"><img src=\"" << relPath << baseName << "."
- << imgExt << "\" border=\"0\" usemap=\"#"
- << mapName << "\" alt=\"\"/>";
+ out << "<div class=\"center\"><img src=\"" << relPath << baseName << "." << imgExt << "\" border=\"0\" usemap=\"#" << mapName << "\" alt=\"\"/>";
out << "</div>" << endl;
QCString absMapName = absBaseName+".map";
@@ -3528,7 +3565,7 @@ QCString DotInclDepGraph::writeGraph(FTextStream &out,
}
}
}
- else if (format==EPS) // encapsulated postscript
+ else if (graphFormat==GOF_EPS) // encapsulated postscript
{
if (regenerate || !writeVecGfxFigure(out,baseName,absBaseName))
{
@@ -3729,7 +3766,8 @@ DotCallGraph::~DotCallGraph()
delete m_usedNodes;
}
-QCString DotCallGraph::writeGraph(FTextStream &out, GraphOutputFormat format,
+QCString DotCallGraph::writeGraph(FTextStream &out, GraphOutputFormat graphFormat,
+ EmbeddedOutputFormat textFormat,
const char *path,const char *fileName,
const char *relPath,bool generateImageMap,int
graphId) const
@@ -3757,19 +3795,19 @@ QCString DotCallGraph::writeGraph(FTextStream &out, GraphOutputFormat format,
if (updateDotGraph(m_startNode,
DotNode::CallGraph,
absBaseName,
- format,
+ graphFormat,
TRUE, // lrRank
FALSE, // renderParents
m_inverse, // backArrows
m_startNode->label()
) ||
- !checkDeliverables(format==BITMAP ? absImgName :
+ !checkDeliverables(graphFormat==GOF_BITMAP ? absImgName :
usePDFLatex ? absPdfName : absEpsName,
- format==BITMAP && generateImageMap ? absMapName : QCString())
+ graphFormat==GOF_BITMAP && generateImageMap ? absMapName : QCString())
)
{
regenerate=TRUE;
- if (format==BITMAP)
+ if (graphFormat==GOF_BITMAP)
{
// run dot to create a bitmap image
QCString dotArgs(maxCmdLine);
@@ -3779,7 +3817,7 @@ QCString DotCallGraph::writeGraph(FTextStream &out, GraphOutputFormat format,
DotManager::instance()->addRun(dotRun);
}
- else if (format==EPS)
+ else if (graphFormat==GOF_EPS)
{
// run dot to create a .eps image
DotRunner *dotRun = new DotRunner(absDotName,d.absPath().data(),FALSE);
@@ -3797,7 +3835,23 @@ QCString DotCallGraph::writeGraph(FTextStream &out, GraphOutputFormat format,
}
Doxygen::indexList->addImageFile(baseName+"."+imgExt);
- if (format==BITMAP && generateImageMap)
+ if (graphFormat==GOF_BITMAP && textFormat==EOF_DocBook)
+ {
+ out << "<para>" << endl;
+ out << " <figure>" << endl;
+ out << " <title>Call diagram";
+ out << "</title>" << endl;
+ out << " <mediaobject>" << endl;
+ out << " <imageobject>" << endl;
+ out << " <imagedata";
+ out << " width=\"50%\" align=\"center\" valign=\"middle\" scalefit=\"1\" fileref=\"" << relPath << baseName << "." << imgExt << "\">";
+ out << "</imagedata>" << endl;
+ out << " </imageobject>" << endl;
+ out << " </mediaobject>" << endl;
+ out << " </figure>" << endl;
+ out << "</para>" << endl;
+ }
+ else if (graphFormat==GOF_BITMAP && generateImageMap)
{
if (imgExt=="svg") // Scalable vector graphics
{
@@ -3815,7 +3869,7 @@ QCString DotCallGraph::writeGraph(FTextStream &out, GraphOutputFormat format,
}
else // bitmap graphics
{
- out << "<div class=\"center\"><img src=\"" << relPath << baseName << "."
+ out << "<div class=\"center\"><img src=\"" << relPath << baseName << "."
<< imgExt << "\" border=\"0\" usemap=\"#"
<< mapName << "\" alt=\"";
out << "\"/>";
@@ -3829,7 +3883,7 @@ QCString DotCallGraph::writeGraph(FTextStream &out, GraphOutputFormat format,
}
}
}
- else if (format==EPS) // encapsulated postscript
+ else if (graphFormat==GOF_EPS) // encapsulated postscript
{
if (regenerate || !writeVecGfxFigure(out,baseName,absBaseName))
{
@@ -3865,7 +3919,8 @@ DotDirDeps::~DotDirDeps()
}
QCString DotDirDeps::writeGraph(FTextStream &out,
- GraphOutputFormat format,
+ GraphOutputFormat graphFormat,
+ EmbeddedOutputFormat textFormat,
const char *path,
const char *fileName,
const char *relPath,
@@ -3901,9 +3956,9 @@ QCString DotDirDeps::writeGraph(FTextStream &out,
MD5SigToString(md5_sig,sigStr.data(),33);
bool regenerate=FALSE;
if (checkAndUpdateMd5Signature(absBaseName,sigStr) ||
- !checkDeliverables(format==BITMAP ? absImgName :
+ !checkDeliverables(graphFormat==GOF_BITMAP ? absImgName :
usePDFLatex ? absPdfName : absEpsName,
- format==BITMAP && generateImageMap ? absMapName : QCString())
+ graphFormat==GOF_BITMAP && generateImageMap ? absMapName : QCString())
)
{
regenerate=TRUE;
@@ -3917,7 +3972,7 @@ QCString DotDirDeps::writeGraph(FTextStream &out,
t << theGraph.data();
f.close();
- if (format==BITMAP)
+ if (graphFormat==GOF_BITMAP)
{
// run dot to create a bitmap image
QCString dotArgs(maxCmdLine);
@@ -3926,7 +3981,7 @@ QCString DotDirDeps::writeGraph(FTextStream &out,
if (generateImageMap) dotRun->addJob(MAP_CMD,absMapName);
DotManager::instance()->addRun(dotRun);
}
- else if (format==EPS)
+ else if (graphFormat==GOF_EPS)
{
DotRunner *dotRun = new DotRunner(absDotName,d.absPath().data(),FALSE);
if (usePDFLatex)
@@ -3942,7 +3997,23 @@ QCString DotDirDeps::writeGraph(FTextStream &out,
}
Doxygen::indexList->addImageFile(baseName+"."+imgExt);
- if (format==BITMAP && generateImageMap)
+ if (graphFormat==GOF_BITMAP && textFormat==EOF_DocBook)
+ {
+ out << "<para>" << endl;
+ out << " <figure>" << endl;
+ out << " <title>Directory Dependency diagram";
+ out << "</title>" << endl;
+ out << " <mediaobject>" << endl;
+ out << " <imageobject>" << endl;
+ out << " <imagedata";
+ out << " width=\"50%\" align=\"center\" valign=\"middle\" scalefit=\"1\" fileref=\"" << relPath << baseName << "." << imgExt << "\">";
+ out << "</imagedata>" << endl;
+ out << " </imageobject>" << endl;
+ out << " </mediaobject>" << endl;
+ out << " </figure>" << endl;
+ out << "</para>" << endl;
+ }
+ else if (graphFormat==GOF_BITMAP && generateImageMap)
{
if (imgExt=="svg") // Scalable vector graphics
{
@@ -3960,7 +4031,7 @@ QCString DotDirDeps::writeGraph(FTextStream &out,
}
else // bitmap graphics
{
- out << "<div class=\"center\"><img src=\"" << relPath << baseName << "."
+ out << "<div class=\"center\"><img src=\"" << relPath << baseName << "."
<< imgExt << "\" border=\"0\" usemap=\"#"
<< mapName << "\" alt=\"";
out << convertToXML(m_dir->displayName());
@@ -3975,7 +4046,7 @@ QCString DotDirDeps::writeGraph(FTextStream &out,
}
}
}
- else if (format==EPS)
+ else if (graphFormat==GOF_EPS)
{
if (regenerate || !writeVecGfxFigure(out,baseName,absBaseName))
{
@@ -4085,9 +4156,9 @@ void writeDotGraphFromFile(const char *inFile,const char *outDir,
QCString absOutFile = d.absPath().utf8()+"/"+outFile;
DotRunner dotRun(inFile,d.absPath().data(),FALSE,absImgName);
- if (format==BITMAP)
+ if (format==GOF_BITMAP)
dotRun.addJob(imgExt,absImgName);
- else // format==EPS
+ else // format==GOF_EPS
{
if (Config_getBool("USE_PDFLATEX"))
{
@@ -4105,7 +4176,7 @@ void writeDotGraphFromFile(const char *inFile,const char *outDir,
return;
}
- if (format==BITMAP) checkDotResult(absImgName);
+ if (format==GOF_BITMAP) checkDotResult(absImgName);
Doxygen::indexList->addImageFile(imgName);
@@ -4384,7 +4455,8 @@ void DotGroupCollaboration::addCollaborationMember(
}
-QCString DotGroupCollaboration::writeGraph( FTextStream &t, GraphOutputFormat format,
+QCString DotGroupCollaboration::writeGraph( FTextStream &t,
+ GraphOutputFormat graphFormat, EmbeddedOutputFormat textFormat,
const char *path, const char *fileName, const char *relPath,
bool writeImageMap,int graphId) const
{
@@ -4411,7 +4483,7 @@ QCString DotGroupCollaboration::writeGraph( FTextStream &t, GraphOutputFormat fo
// write other nodes.
for (dni.toFirst();(pn=dni.current());++dni)
{
- pn->write(md5stream,DotNode::Inheritance,format,TRUE,FALSE,FALSE,FALSE);
+ pn->write(md5stream,DotNode::Inheritance,graphFormat,TRUE,FALSE,FALSE,FALSE);
}
// write edges
@@ -4441,9 +4513,9 @@ QCString DotGroupCollaboration::writeGraph( FTextStream &t, GraphOutputFormat fo
QCString absEpsName = absBaseName+".eps";
bool regenerate=FALSE;
if (checkAndUpdateMd5Signature(absBaseName,sigStr) ||
- !checkDeliverables(format==BITMAP ? absImgName :
+ !checkDeliverables(graphFormat==GOF_BITMAP ? absImgName :
usePDFLatex ? absPdfName : absEpsName,
- format==BITMAP /*&& generateImageMap*/ ? absMapName : QCString())
+ graphFormat==GOF_BITMAP /*&& generateImageMap*/ ? absMapName : QCString())
)
{
regenerate=TRUE;
@@ -4456,7 +4528,7 @@ QCString DotGroupCollaboration::writeGraph( FTextStream &t, GraphOutputFormat fo
dotfile.close();
}
- if (format==BITMAP) // run dot to create a bitmap image
+ if (graphFormat==GOF_BITMAP) // run dot to create a bitmap image
{
QCString dotArgs(maxCmdLine);
@@ -4466,7 +4538,7 @@ QCString DotGroupCollaboration::writeGraph( FTextStream &t, GraphOutputFormat fo
DotManager::instance()->addRun(dotRun);
}
- else if (format==EPS)
+ else if (graphFormat==GOF_EPS)
{
DotRunner *dotRun = new DotRunner(absDotName,d.absPath().data(),FALSE);
if (usePDFLatex)
@@ -4481,7 +4553,23 @@ QCString DotGroupCollaboration::writeGraph( FTextStream &t, GraphOutputFormat fo
}
}
- if (format==BITMAP && writeImageMap)
+ if (graphFormat==GOF_BITMAP && textFormat==EOF_DocBook)
+ {
+ t << "<para>" << endl;
+ t << " <figure>" << endl;
+ t << " <title>Group Collaboration diagram";
+ t << "</title>" << endl;
+ t << " <mediaobject>" << endl;
+ t << " <imageobject>" << endl;
+ t << " <imagedata";
+ t << " width=\"50%\" align=\"center\" valign=\"middle\" scalefit=\"1\" fileref=\"" << relPath << baseName << "." << imgExt << "\">";
+ t << "</imagedata>" << endl;
+ t << " </imageobject>" << endl;
+ t << " </mediaobject>" << endl;
+ t << " </figure>" << endl;
+ t << "</para>" << endl;
+ }
+ else if (graphFormat==GOF_BITMAP && writeImageMap)
{
QCString mapLabel = escapeCharsInString(baseName,FALSE);
t << "<center><table><tr><td>";
@@ -4503,7 +4591,7 @@ QCString DotGroupCollaboration::writeGraph( FTextStream &t, GraphOutputFormat fo
else
{
t << "<img src=\"" << relPath << imgName
- << "\" border=\"0\" alt=\"\" usemap=\"#"
+ << "\" border=\"0\" alt=\"\" usemap=\"#"
<< mapLabel << "\"/>" << endl;
if (regenerate || !insertMapFile(t,absMapName,relPath,mapLabel))
{
@@ -4512,10 +4600,9 @@ QCString DotGroupCollaboration::writeGraph( FTextStream &t, GraphOutputFormat fo
t << "<!-- MAP " << mapId << " -->" << endl;
}
}
-
t << "</td></tr></table></center>" << endl;
}
- else if (format==EPS)
+ else if (graphFormat==GOF_EPS)
{
if (regenerate || !writeVecGfxFigure(t,baseName,absBaseName))
{
diff --git a/src/dot.h b/src/dot.h
index 6ff89be..8906199 100644
--- a/src/dot.h
+++ b/src/dot.h
@@ -39,7 +39,8 @@ class GroupDef;
class DotGroupCollaboration;
class DotRunnerQueue;
-enum GraphOutputFormat { BITMAP , EPS };
+enum GraphOutputFormat { GOF_BITMAP, GOF_EPS };
+enum EmbeddedOutputFormat { EOF_Html, EOF_LaTeX, EOF_Rtf, EOF_DocBook };
/** Attributes of an edge of a dot graph */
struct EdgeInfo
@@ -165,8 +166,8 @@ class DotClassGraph
~DotClassGraph();
bool isTrivial() const;
bool isTooBig() const;
- QCString writeGraph(FTextStream &t,GraphOutputFormat f,const char *path,
- const char *fileName, const char *relPath,
+ QCString writeGraph(FTextStream &t,GraphOutputFormat gf,EmbeddedOutputFormat ef,
+ const char *path, const char *fileName, const char *relPath,
bool TBRank=TRUE,bool imageMap=TRUE,int graphId=-1) const;
void writeXML(FTextStream &t);
@@ -196,7 +197,7 @@ class DotInclDepGraph
public:
DotInclDepGraph(FileDef *fd,bool inverse);
~DotInclDepGraph();
- QCString writeGraph(FTextStream &t, GraphOutputFormat f,
+ QCString writeGraph(FTextStream &t, GraphOutputFormat gf, EmbeddedOutputFormat ef,
const char *path,const char *fileName,const char *relPath,
bool writeImageMap=TRUE,int graphId=-1) const;
bool isTrivial() const;
@@ -222,7 +223,7 @@ class DotCallGraph
public:
DotCallGraph(MemberDef *md,bool inverse);
~DotCallGraph();
- QCString writeGraph(FTextStream &t, GraphOutputFormat f,
+ QCString writeGraph(FTextStream &t, GraphOutputFormat gf, EmbeddedOutputFormat ef,
const char *path,const char *fileName,
const char *relPath,bool writeImageMap=TRUE,
int graphId=-1) const;
@@ -249,7 +250,8 @@ class DotDirDeps
~DotDirDeps();
bool isTrivial() const;
QCString writeGraph(FTextStream &out,
- GraphOutputFormat format,
+ GraphOutputFormat gf,
+ EmbeddedOutputFormat ef,
const char *path,
const char *fileName,
const char *relPath,
@@ -298,7 +300,7 @@ class DotGroupCollaboration
DotGroupCollaboration(GroupDef* gd);
~DotGroupCollaboration();
- QCString writeGraph(FTextStream &t, GraphOutputFormat format,
+ QCString writeGraph(FTextStream &t, GraphOutputFormat gf,EmbeddedOutputFormat ef,
const char *path,const char *fileName,const char *relPath,
bool writeImageMap=TRUE,int graphId=-1) const;
void buildGraph(GroupDef* gd);
diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp
index 261f739..372bb93 100644
--- a/src/htmldocvisitor.cpp
+++ b/src/htmldocvisitor.cpp
@@ -1906,7 +1906,7 @@ void HtmlDocVisitor::writeDotFile(const QCString &fn,const QCString &relPath,
}
baseName.prepend("dot_");
QCString outDir = Config_getString("HTML_OUTPUT");
- writeDotGraphFromFile(fn,outDir,baseName,BITMAP);
+ writeDotGraphFromFile(fn,outDir,baseName,GOF_BITMAP);
writeDotImageMapFromFile(m_t,fn,outDir,relPath,baseName,context);
}
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index 0d399d3..27091b4 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -2516,7 +2516,7 @@ void HtmlGenerator::endDotGraph(const DotClassGraph &g)
endSectionSummary(t);
startSectionContent(t,m_sectionCount);
- g.writeGraph(t,BITMAP,dir,fileName,relPath,TRUE,TRUE,m_sectionCount);
+ g.writeGraph(t,GOF_BITMAP,EOF_Html,dir,fileName,relPath,TRUE,TRUE,m_sectionCount);
if (generateLegend && !umlLook)
{
t << "<center><span class=\"legend\">[";
@@ -2542,7 +2542,7 @@ void HtmlGenerator::endInclDepGraph(const DotInclDepGraph &g)
endSectionSummary(t);
startSectionContent(t,m_sectionCount);
- g.writeGraph(t,BITMAP,dir,fileName,relPath,TRUE,m_sectionCount);
+ g.writeGraph(t,GOF_BITMAP,EOF_Html,dir,fileName,relPath,TRUE,m_sectionCount);
endSectionContent(t);
m_sectionCount++;
@@ -2560,7 +2560,7 @@ void HtmlGenerator::endGroupCollaboration(const DotGroupCollaboration &g)
endSectionSummary(t);
startSectionContent(t,m_sectionCount);
- g.writeGraph(t,BITMAP,dir,fileName,relPath,TRUE,m_sectionCount);
+ g.writeGraph(t,GOF_BITMAP,EOF_Html,dir,fileName,relPath,TRUE,m_sectionCount);
endSectionContent(t);
m_sectionCount++;
@@ -2578,7 +2578,7 @@ void HtmlGenerator::endCallGraph(const DotCallGraph &g)
endSectionSummary(t);
startSectionContent(t,m_sectionCount);
- g.writeGraph(t,BITMAP,dir,fileName,relPath,TRUE,m_sectionCount);
+ g.writeGraph(t,GOF_BITMAP,EOF_Html,dir,fileName,relPath,TRUE,m_sectionCount);
endSectionContent(t);
m_sectionCount++;
@@ -2596,7 +2596,7 @@ void HtmlGenerator::endDirDepGraph(const DotDirDeps &g)
endSectionSummary(t);
startSectionContent(t,m_sectionCount);
- g.writeGraph(t,BITMAP,dir,fileName,relPath,TRUE,m_sectionCount);
+ g.writeGraph(t,GOF_BITMAP,EOF_Html,dir,fileName,relPath,TRUE,m_sectionCount);
endSectionContent(t);
m_sectionCount++;
diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp
index eed36bc..0edb459 100644
--- a/src/latexdocvisitor.cpp
+++ b/src/latexdocvisitor.cpp
@@ -1587,7 +1587,7 @@ void LatexDocVisitor::startDotFile(const QCString &fileName,
baseName.prepend("dot_");
QCString outDir = Config_getString("LATEX_OUTPUT");
QCString name = fileName;
- writeDotGraphFromFile(name,outDir,baseName,EPS);
+ writeDotGraphFromFile(name,outDir,baseName,GOF_EPS);
if (hasCaption)
{
m_t << "\n\\begin{DoxyImage}\n";
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index 10e50de..086e012 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -1814,7 +1814,7 @@ void LatexGenerator::startDotGraph()
void LatexGenerator::endDotGraph(const DotClassGraph &g)
{
- g.writeGraph(t,EPS,Config_getString("LATEX_OUTPUT"),fileName,relPath);
+ g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString("LATEX_OUTPUT"),fileName,relPath);
}
void LatexGenerator::startInclDepGraph()
@@ -1823,7 +1823,7 @@ void LatexGenerator::startInclDepGraph()
void LatexGenerator::endInclDepGraph(const DotInclDepGraph &g)
{
- g.writeGraph(t,EPS,Config_getString("LATEX_OUTPUT"),fileName,relPath);
+ g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString("LATEX_OUTPUT"),fileName,relPath);
}
void LatexGenerator::startGroupCollaboration()
@@ -1832,7 +1832,7 @@ void LatexGenerator::startGroupCollaboration()
void LatexGenerator::endGroupCollaboration(const DotGroupCollaboration &g)
{
- g.writeGraph(t,EPS,Config_getString("LATEX_OUTPUT"),fileName,relPath);
+ g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString("LATEX_OUTPUT"),fileName,relPath);
}
void LatexGenerator::startCallGraph()
@@ -1841,7 +1841,7 @@ void LatexGenerator::startCallGraph()
void LatexGenerator::endCallGraph(const DotCallGraph &g)
{
- g.writeGraph(t,EPS,Config_getString("LATEX_OUTPUT"),fileName,relPath);
+ g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString("LATEX_OUTPUT"),fileName,relPath);
}
void LatexGenerator::startDirDepGraph()
@@ -1850,7 +1850,7 @@ void LatexGenerator::startDirDepGraph()
void LatexGenerator::endDirDepGraph(const DotDirDeps &g)
{
- g.writeGraph(t,EPS,Config_getString("LATEX_OUTPUT"),fileName,relPath);
+ g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString("LATEX_OUTPUT"),fileName,relPath);
}
void LatexGenerator::startDescription()
diff --git a/src/printdocvisitor.h b/src/printdocvisitor.h
index 0381c93..ee2ae3f 100644
--- a/src/printdocvisitor.h
+++ b/src/printdocvisitor.h
@@ -476,9 +476,10 @@ class PrintDocVisitor : public DocVisitor
printf("<image src=\"%s\" type=\"",img->name().data());
switch(img->type())
{
- case DocImage::Html: printf("html"); break;
- case DocImage::Latex: printf("latex"); break;
- case DocImage::Rtf: printf("rtf"); break;
+ case DocImage::Html: printf("html"); break;
+ case DocImage::Latex: printf("latex"); break;
+ case DocImage::Rtf: printf("rtf"); break;
+ case DocImage::DocBook: printf("docbook"); break;
}
printf("\" width=%s height=%s>\n",img->width().data(),img->height().data());
}
diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp
index b90b5a8..0d17208 100644
--- a/src/rtfdocvisitor.cpp
+++ b/src/rtfdocvisitor.cpp
@@ -1653,7 +1653,7 @@ void RTFDocVisitor::writeDotFile(const QCString &fileName)
baseName=baseName.right(baseName.length()-i-1);
}
QCString outDir = Config_getString("RTF_OUTPUT");
- writeDotGraphFromFile(fileName,outDir,baseName,BITMAP);
+ writeDotGraphFromFile(fileName,outDir,baseName,GOF_BITMAP);
if (!m_lastIsPara) m_t << "\\par" << endl;
m_t << "{" << endl;
m_t << rtf_Style_Reset;
diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp
index 8699c4e..ccdadcf 100644
--- a/src/rtfgen.cpp
+++ b/src/rtfgen.cpp
@@ -2409,7 +2409,7 @@ void RTFGenerator::endDotGraph(const DotClassGraph &g)
newParagraph();
QCString fn =
- g.writeGraph(t,BITMAP,Config_getString("RTF_OUTPUT"),fileName,relPath,TRUE,FALSE);
+ g.writeGraph(t,GOF_BITMAP,EOF_Rtf,Config_getString("RTF_OUTPUT"),fileName,relPath,TRUE,FALSE);
// display the file
t << "{" << endl;
@@ -2431,7 +2431,7 @@ void RTFGenerator::endInclDepGraph(const DotInclDepGraph &g)
{
newParagraph();
- QCString fn = g.writeGraph(t,BITMAP,Config_getString("RTF_OUTPUT"),
+ QCString fn = g.writeGraph(t,GOF_BITMAP,EOF_Rtf,Config_getString("RTF_OUTPUT"),
fileName,relPath,FALSE);
// display the file
@@ -2461,7 +2461,7 @@ void RTFGenerator::endCallGraph(const DotCallGraph &g)
{
newParagraph();
- QCString fn = g.writeGraph(t,BITMAP,Config_getString("RTF_OUTPUT"),
+ QCString fn = g.writeGraph(t,GOF_BITMAP,EOF_Rtf,Config_getString("RTF_OUTPUT"),
fileName,relPath,FALSE);
// display the file
@@ -2483,7 +2483,7 @@ void RTFGenerator::endDirDepGraph(const DotDirDeps &g)
{
newParagraph();
- QCString fn = g.writeGraph(t,BITMAP,Config_getString("RTF_OUTPUT"),
+ QCString fn = g.writeGraph(t,GOF_BITMAP,EOF_Rtf,Config_getString("RTF_OUTPUT"),
fileName,relPath,FALSE);
// display the file
diff --git a/src/xmldocvisitor.cpp b/src/xmldocvisitor.cpp
index f74a6a2..c36042b 100644
--- a/src/xmldocvisitor.cpp
+++ b/src/xmldocvisitor.cpp
@@ -678,9 +678,10 @@ void XmlDocVisitor::visitPre(DocImage *img)
m_t << "<image type=\"";
switch(img->type())
{
- case DocImage::Html: m_t << "html"; break;
- case DocImage::Latex: m_t << "latex"; break;
- case DocImage::Rtf: m_t << "rtf"; break;
+ case DocImage::Html: m_t << "html"; break;
+ case DocImage::Latex: m_t << "latex"; break;
+ case DocImage::Rtf: m_t << "rtf"; break;
+ case DocImage::DocBook: m_t << "docbook"; break;
}
m_t << "\"";