Commit fa7e8208 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.2.14

parent 37dc8d46
...@@ -95,7 +95,7 @@ IGNORE_PREFIX = ...@@ -95,7 +95,7 @@ IGNORE_PREFIX =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the HTML output # configuration options related to the HTML output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_HTML = NO GENERATE_HTML = YES
HTML_OUTPUT = HTML_OUTPUT =
HTML_HEADER = HTML_HEADER =
HTML_FOOTER = HTML_FOOTER =
...@@ -140,7 +140,7 @@ MAN_LINKS = NO ...@@ -140,7 +140,7 @@ MAN_LINKS = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the XML output # configuration options related to the XML output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_XML = YES GENERATE_XML = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output # configuration options for the AutoGen Definitions output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
...@@ -168,7 +168,7 @@ PERL_PATH = /usr/bin/perl ...@@ -168,7 +168,7 @@ PERL_PATH = /usr/bin/perl
# Configuration options related to the dot tool # Configuration options related to the dot tool
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO CLASS_DIAGRAMS = NO
HAVE_DOT = NO HAVE_DOT = YES
CLASS_GRAPH = YES CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES COLLABORATION_GRAPH = YES
TEMPLATE_RELATIONS = YES TEMPLATE_RELATIONS = YES
...@@ -176,6 +176,7 @@ HIDE_UNDOC_RELATIONS = YES ...@@ -176,6 +176,7 @@ HIDE_UNDOC_RELATIONS = YES
INCLUDE_GRAPH = YES INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = NO INCLUDED_BY_GRAPH = NO
GRAPHICAL_HIERARCHY = YES GRAPHICAL_HIERARCHY = YES
DOT_IMAGE_FORMAT = png
DOT_PATH = DOT_PATH =
DOTFILE_DIRS = DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_WIDTH = 1024
......
DOXYGEN Version 1.2.13-20020210 DOXYGEN Version 1.2.14
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (10 February 2002) Dimitri van Heesch (17 February 2002)
DOXYGEN Version 1.2.13_20020210 DOXYGEN Version 1.2.14
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (10 February 2002) Dimitri van Heesch (dimitri@stack.nl) (17 February 2002)
1.2.13-20020210 1.2.14
...@@ -151,7 +151,7 @@ PERL_PATH = ...@@ -151,7 +151,7 @@ PERL_PATH =
# Configuration options related to the dot tool # Configuration options related to the dot tool
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO CLASS_DIAGRAMS = NO
HAVE_DOT = YES HAVE_DOT = NO
CLASS_GRAPH = YES CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES COLLABORATION_GRAPH = YES
TEMPLATE_RELATIONS = YES TEMPLATE_RELATIONS = YES
......
...@@ -249,10 +249,15 @@ class IDocRef : public IDoc ...@@ -249,10 +249,15 @@ class IDocRef : public IDoc
class IDocVariableList : public IDoc class IDocVariableList : public IDoc
{ {
public:
virtual IDocIterator *entries() const = 0;
}; };
class IDocVariableListEntry : public IDoc class IDocVariableListEntry : public IDoc
{ {
public:
virtual QString term() const = 0;
virtual IDocPara *description() const = 0;
}; };
class IDocHRuler : public IDoc class IDocHRuler : public IDoc
......
...@@ -805,6 +805,11 @@ void VariableListHandler::startListItem(const QXmlAttributes& attrib) ...@@ -805,6 +805,11 @@ void VariableListHandler::startListItem(const QXmlAttributes& attrib)
m_curEntry->startListItem(attrib); m_curEntry->startListItem(attrib);
} }
IDocIterator *VariableListHandler::entries() const
{
return new VariableListIterator(*this);
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// HighlightHandler // HighlightHandler
//---------------------------------------------------------------------- //----------------------------------------------------------------------
......
...@@ -533,7 +533,8 @@ class SimpleSectHandler : public IDocSimpleSect, ...@@ -533,7 +533,8 @@ class SimpleSectHandler : public IDocSimpleSect,
/* \brief Node representing an named item of a VariableList. /* \brief Node representing an named item of a VariableList.
* *
*/ */
class VariableListEntryHandler : public IDocVariableListEntry, public BaseHandler<VariableListEntryHandler> class VariableListEntryHandler : public IDocVariableListEntry,
public BaseHandler<VariableListEntryHandler>
{ {
public: public:
virtual void startVarListEntry(const QXmlAttributes& attrib); virtual void startVarListEntry(const QXmlAttributes& attrib);
...@@ -549,6 +550,8 @@ class VariableListEntryHandler : public IDocVariableListEntry, public BaseHandle ...@@ -549,6 +550,8 @@ class VariableListEntryHandler : public IDocVariableListEntry, public BaseHandle
// IDocVariableListEntry // IDocVariableListEntry
virtual Kind kind() const { return VariableListEntry; } virtual Kind kind() const { return VariableListEntry; }
virtual QString term() const { return m_term; }
virtual IDocPara *description() const { return m_description; }
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
...@@ -562,8 +565,11 @@ class VariableListEntryHandler : public IDocVariableListEntry, public BaseHandle ...@@ -562,8 +565,11 @@ class VariableListEntryHandler : public IDocVariableListEntry, public BaseHandle
* *
*/ */
// children: varlistentry, listitem // children: varlistentry, listitem
class VariableListHandler : public IDocVariableList, public BaseHandler<VariableListHandler> class VariableListHandler : public IDocVariableList,
public BaseHandler<VariableListHandler>
{ {
friend class VariableListIterator;
public: public:
virtual void startVariableList(const QXmlAttributes& attrib); virtual void startVariableList(const QXmlAttributes& attrib);
virtual void endVariableList(); virtual void endVariableList();
...@@ -575,6 +581,7 @@ class VariableListHandler : public IDocVariableList, public BaseHandler<Variable ...@@ -575,6 +581,7 @@ class VariableListHandler : public IDocVariableList, public BaseHandler<Variable
// IDocVariableList // IDocVariableList
virtual Kind kind() const { return VariableList; } virtual Kind kind() const { return VariableList; }
virtual IDocIterator *entries() const;
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
...@@ -582,6 +589,13 @@ class VariableListHandler : public IDocVariableList, public BaseHandler<Variable ...@@ -582,6 +589,13 @@ class VariableListHandler : public IDocVariableList, public BaseHandler<Variable
VariableListEntryHandler *m_curEntry; VariableListEntryHandler *m_curEntry;
}; };
class VariableListIterator : public BaseIterator<IDocIterator,IDoc,VariableListEntryHandler>
{
public:
VariableListIterator(const VariableListHandler &handler) :
BaseIterator<IDocIterator,IDoc,VariableListEntryHandler>(handler.m_entries) {}
};
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
/*! \brief Node representing a highlighted text fragment. /*! \brief Node representing a highlighted text fragment.
......
...@@ -249,10 +249,15 @@ class IDocRef : public IDoc ...@@ -249,10 +249,15 @@ class IDocRef : public IDoc
class IDocVariableList : public IDoc class IDocVariableList : public IDoc
{ {
public:
virtual IDocIterator *entries() const = 0;
}; };
class IDocVariableListEntry : public IDoc class IDocVariableListEntry : public IDoc
{ {
public:
virtual QString term() const = 0;
virtual IDocPara *description() const = 0;
}; };
class IDocHRuler : public IDoc class IDocHRuler : public IDoc
......
...@@ -116,9 +116,7 @@ void DumpDoc(IDoc *doc) ...@@ -116,9 +116,7 @@ void DumpDoc(IDoc *doc)
{ {
IDocParameterList *list = dynamic_cast<IDocParameterList*>(doc); IDocParameterList *list = dynamic_cast<IDocParameterList*>(doc);
printf(" --- parameter list type=%d --- \n",list->listType()); printf(" --- parameter list type=%d --- \n",list->listType());
IDocListItem *li = dynamic_cast<IDocListItem*>(doc); IDocIterator *di = list->params();
ASSERT(li!=0);
IDocIterator *di = li->contents();
IDoc *pdoc; IDoc *pdoc;
for (di->toFirst();(pdoc=di->current());di->toNext()) for (di->toFirst();(pdoc=di->current());di->toNext())
{ {
...@@ -166,14 +164,26 @@ void DumpDoc(IDoc *doc) ...@@ -166,14 +164,26 @@ void DumpDoc(IDoc *doc)
break; break;
case IDoc::VariableList: case IDoc::VariableList:
{ {
IDocVariableList *vl = dynamic_cast<IDocVariableList*>(vl); printf(" --- start variablelist --- \n");
IDocVariableList *vl = dynamic_cast<IDocVariableList*>(doc);
ASSERT(vl!=0); ASSERT(vl!=0);
IDocIterator *di = vl->entries();
IDoc *pdoc;
for (di->toFirst();(pdoc=di->current());di->toNext())
{
DumpDoc(pdoc);
}
di->release();
printf(" --- end variablelist --- \n");
} }
break; break;
case IDoc::VariableListEntry: case IDoc::VariableListEntry:
{ {
IDocVariableListEntry *vle = dynamic_cast<IDocVariableListEntry*>(vle); IDocVariableListEntry *vle = dynamic_cast<IDocVariableListEntry*>(doc);
ASSERT(vle!=0); ASSERT(vle!=0);
printf(" --- start variablelistentry term=%s --- \n",vle->term().data());
DumpDoc(vle->description());
printf(" --- end variablelistentry --- \n");
} }
break; break;
case IDoc::HRuler: case IDoc::HRuler:
......
...@@ -10,15 +10,18 @@ ...@@ -10,15 +10,18 @@
# See the GNU General Public License for more details. # See the GNU General Public License for more details.
# #
all: config.h config.l Makefile.doxywizard all: config.h config.l version.cpp Makefile.doxywizard
$(MAKE) -f Makefile.doxywizard $@ $(MAKE) -f Makefile.doxywizard $@
config.h: config.h: ../../src/config.h
$(CP) ../../src/config.h config.h $(CP) ../../src/config.h config.h
config.l: config.l: ../../src/config.l
$(CP) ../../src/config.l config.l $(CP) ../../src/config.l config.l
version.cpp:
$(CP) ../../src/version.cpp version.cpp
Makefile.doxywizard: doxywizard.pro Makefile.doxywizard: doxywizard.pro
$(ENV) $(PERL) $(TMAKE) doxywizard.pro >Makefile.doxywizard $(ENV) $(PERL) $(TMAKE) doxywizard.pro >Makefile.doxywizard
...@@ -30,7 +33,7 @@ clean: Makefile.doxywizard ...@@ -30,7 +33,7 @@ clean: Makefile.doxywizard
$(RM) config.cpp $(RM) config.cpp
distclean: clean distclean: clean
$(RM) Makefile.doxywizard config.l config.h $(RM) Makefile.doxywizard config.l config.h version.cpp
install: install:
$(INSTTOOL) -d $(INSTALL)/bin $(INSTTOOL) -d $(INSTALL)/bin
......
...@@ -313,7 +313,7 @@ void Wizard::about() ...@@ -313,7 +313,7 @@ void Wizard::about()
"<qt><center>A tool to create and edit configuration files " "<qt><center>A tool to create and edit configuration files "
"that can be read by doxygen.</center><p>" "that can be read by doxygen.</center><p>"
"<center>Written by Dimitri van Heesch</center><p>" "<center>Written by Dimitri van Heesch</center><p>"
"<center>(c) 2000-2001</center></qt>" "<center>(c) 2000-2002</center></qt>"
); );
} }
......
...@@ -83,6 +83,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -83,6 +83,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_distribute_group_doc DISTRIBUTE_GROUP_DOC <li> \refitem cfg_distribute_group_doc DISTRIBUTE_GROUP_DOC
<li> \refitem cfg_doc_abspath DOC_ABSPATH <li> \refitem cfg_doc_abspath DOC_ABSPATH
<li> \refitem cfg_doc_url DOC_URL <li> \refitem cfg_doc_url DOC_URL
<li> \refitem cfg_dot_image_format DOT_IMAGE_FORMAT
<li> \refitem cfg_dot_path DOT_PATH <li> \refitem cfg_dot_path DOT_PATH
<li> \refitem cfg_dotfile_dirs DOTFILE_DIRS <li> \refitem cfg_dotfile_dirs DOTFILE_DIRS
<li> \refitem cfg_enable_preprocessing ENABLE_PREPROCESSING <li> \refitem cfg_enable_preprocessing ENABLE_PREPROCESSING
...@@ -1273,6 +1274,13 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre> ...@@ -1273,6 +1274,13 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
If the \c GRAPHICAL_HIERARCHY and \c HAVE_DOT tags are set to \c YES then If the \c GRAPHICAL_HIERARCHY and \c HAVE_DOT tags are set to \c YES then
doxygen will graphical hierarchy of all classes instead of a textual one. doxygen will graphical hierarchy of all classes instead of a textual one.
\anchor cfg_dot_image_format
<dt>\c DOT_IMAGE_FORMAT <dd>
\addindex DOT_IMAGE_FORMAT
The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
generated by dot. Possible values are gif, jpg, and png.
If left blank gif will be used.
\anchor cfg_dot_path \anchor cfg_dot_path
<dt>\c DOT_PATH <dd> <dt>\c DOT_PATH <dd>
\addindex DOT_PATH \addindex DOT_PATH
......
...@@ -533,9 +533,11 @@ To install doxygen, just copy the binaries from the <code>bin</code> directory ...@@ -533,9 +533,11 @@ To install doxygen, just copy the binaries from the <code>bin</code> directory
to a location somewhere in the path. Alternatively, you can include to a location somewhere in the path. Alternatively, you can include
the <code>bin</code> directory of the distribution to the path. the <code>bin</code> directory of the distribution to the path.
<!--
For running doxywizard you need to install the non-commercial version of For running doxywizard you need to install the non-commercial version of
the Qt library first. This library can be downloaded from the Qt library first. This library can be downloaded from
http://www.trolltech.com/products/download/qt-win-noncomm.html http://www.trolltech.com/products/download/qt-win-noncomm.html
-->
\subsection build_tools Tools used to develop doxygen \subsection build_tools Tools used to develop doxygen
......
...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means ...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time. languages other than English (the default) at configuration time.
Currently (version 1.2.13-20020203), 25 languages Currently (version 1.2.13-20020210), 25 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Brazilian Portuguese, Chinese, Croatian, Czech, Danish, Brazilian Portuguese, Chinese, Croatian, Czech, Danish,
Dutch, English, Finnish, French, German, Dutch, English, Finnish, French, German,
...@@ -108,7 +108,7 @@ when the translator was updated. ...@@ -108,7 +108,7 @@ when the translator was updated.
<TD>German</TD> <TD>German</TD>
<TD>Jens Seidel<br>Jens Breitenstein</TD> <TD>Jens Seidel<br>Jens Breitenstein</TD>
<TD>jensseidel@NOSPAM.users.sf.net<br>Jens.Breitenstein@NOSPAM.tlc.de</TD> <TD>jensseidel@NOSPAM.users.sf.net<br>Jens.Breitenstein@NOSPAM.tlc.de</TD>
<TD>1.2.13</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Greek</TD> <TD>Greek</TD>
...@@ -230,7 +230,7 @@ when the translator was updated. ...@@ -230,7 +230,7 @@ when the translator was updated.
\hline \hline
French & Xavier Outhier & {\tt xouthier@yahoo.fr} & up-to-date \\ French & Xavier Outhier & {\tt xouthier@yahoo.fr} & up-to-date \\
\hline \hline
German & Jens Seidel & {\tt jensseidel@users.sf.net} & 1.2.13 \\ German & Jens Seidel & {\tt jensseidel@users.sf.net} & up-to-date \\
& Jens Breitenstein & {\tt Jens.Breitenstein@tlc.de} & \\ & Jens Breitenstein & {\tt Jens.Breitenstein@tlc.de} & \\
\hline \hline
Greek & Harry Kalogirou & {\tt harkal@rainbow.cs.unipi.gr} & 1.2.11 \\ Greek & Harry Kalogirou & {\tt harkal@rainbow.cs.unipi.gr} & 1.2.11 \\
......
...@@ -63,6 +63,12 @@ Makefile. It contains of a number of assignments (tags) of the form: ...@@ -63,6 +63,12 @@ Makefile. It contains of a number of assignments (tags) of the form:
You can probably leave the values of most tags in a generated template You can probably leave the values of most tags in a generated template
configuration file to their default value. See section \ref config for configuration file to their default value. See section \ref config for
more details about the configuration file. more details about the configuration file.
If you do not like to edit the config file with a text editor, you should
have a look at \ref doxywizard_usage "doxywizard", which is a GUI
front-end that can create, read and write doxygen configuration files,
and allows setting configuration options by entering them via dialogs.
For a small project consisting of a few C and/or C++ source For a small project consisting of a few C and/or C++ source
and header files, you can leave and header files, you can leave
\ref cfg_input "INPUT" tag empty and doxygen will search for sources in \ref cfg_input "INPUT" tag empty and doxygen will search for sources in
...@@ -79,6 +85,9 @@ For recursive parsing of a source tree you must set ...@@ -79,6 +85,9 @@ For recursive parsing of a source tree you must set
the \ref cfg_recursive "RECURSIVE" tag to \c YES. To further fine-tune the the \ref cfg_recursive "RECURSIVE" tag to \c YES. To further fine-tune the
list of files that is parsed the \ref cfg_exclude "EXCLUDE" and list of files that is parsed the \ref cfg_exclude "EXCLUDE" and
\ref cfg_exclude_patterns "EXCLUDE_PATTERNS" tags can be used. \ref cfg_exclude_patterns "EXCLUDE_PATTERNS" tags can be used.
To omit all \c test directories from a source tree for instance, one could use:
\verbatim EXCLUDE_PATTERNS = */test/*
\endverbatim
If you start using doxygen for an existing project (thus without any If you start using doxygen for an existing project (thus without any
documentation that doxygen is aware of), you can still get an idea of documentation that doxygen is aware of), you can still get an idea of
...@@ -94,7 +103,7 @@ a (documented) entity with its definition in the source files. Doxygen will ...@@ -94,7 +103,7 @@ a (documented) entity with its definition in the source files. Doxygen will
generate such cross-references if you set generate such cross-references if you set
the \ref cfg_source_browser "SOURCE_BROWSER" tag to \c YES. the \ref cfg_source_browser "SOURCE_BROWSER" tag to \c YES.
It can also include the sources directly into the documentation by setting It can also include the sources directly into the documentation by setting
\ref cfg_inline_sources "INLINE_SOURCES" to \c YES (this can be handly for \ref cfg_inline_sources "INLINE_SOURCES" to \c YES (this can be handy for
code reviews for instance). code reviews for instance).
\subsection step2 Step 2: Running doxygen \subsection step2 Step 2: Running doxygen
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.2.13_20020210 Version: 1.2.14
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
...@@ -1271,17 +1271,11 @@ void ClassDef::writeMemberList(OutputList &ol) ...@@ -1271,17 +1271,11 @@ void ClassDef::writeMemberList(OutputList &ol)
MemberDef *md=mi->memberDef; MemberDef *md=mi->memberDef;
ClassDef *cd=md->getClassDef(); ClassDef *cd=md->getClassDef();
Protection prot = mi->prot; Protection prot = mi->prot;
Specifier virt=md->virtualness();
//printf("%s: Member %s of class %s md->protection()=%d mi->prot=%d prot=%d inherited=%d\n", //printf("%s: Member %s of class %s md->protection()=%d mi->prot=%d prot=%d inherited=%d\n",
// name().data(),md->name().data(),cd->name().data(),md->protection(),mi->prot,prot,mi->inherited); // name().data(),md->name().data(),cd->name().data(),md->protection(),mi->prot,prot,mi->inherited);
Specifier virt=md->virtualness();
MemberDef *rmd=md->reimplements();
while (rmd && virt==Normal)
{
virt = rmd->virtualness()==Normal ? Normal : Virtual;
rmd = rmd->reimplements();
}
if (cd && !md->name().isEmpty() && md->name()[0]!='@') if (cd && !md->name().isEmpty() && md->name()[0]!='@')
{ {
......
...@@ -964,6 +964,20 @@ void Config::check() ...@@ -964,6 +964,20 @@ void Config::check()
s=aliasList.next(); s=aliasList.next();
} }
// check dot image format
QCString &dotImageFormat=Config_getEnum("DOT_IMAGE_FORMAT");
dotImageFormat=dotImageFormat.stripWhiteSpace();
if (dotImageFormat.isEmpty())
{
dotImageFormat = "gif";
}
else if (dotImageFormat!="gif" && dotImageFormat!="png" && dotImageFormat!="jpg")
{
config_err("Invalid value for DOT_IMAGE_FORMAT: `%s'. Using the default.\n",dotImageFormat.data());
dotImageFormat = "gif";
}
// check dot path // check dot path
QCString &dotPath = Config_getString("DOT_PATH"); QCString &dotPath = Config_getString("DOT_PATH");
if (!dotPath.isEmpty()) if (!dotPath.isEmpty())
...@@ -2248,6 +2262,17 @@ void Config::create() ...@@ -2248,6 +2262,17 @@ void Config::create()
TRUE TRUE
); );
cb->addDependency("HAVE_DOT"); cb->addDependency("HAVE_DOT");
ce = addEnum(
"DOT_IMAGE_FORMAT",
"The DOT_IMAGE_FORMAT tag can be used to set the image format of the images \n"
"generated by dot. Possible values are gif, jpg, and png\n"
"If left blank gif will be used. \n",
"gif"
);
ce->addValue("gif");
ce->addValue("jpg");
ce->addValue("png");
ce->addDependency("HAVE_DOT");
cs = addString( cs = addString(
"DOT_PATH", "DOT_PATH",
"The tag DOT_PATH can be used to specify the path where the dot tool can be \n" "The tag DOT_PATH can be used to specify the path where the dot tool can be \n"
......
...@@ -727,12 +727,15 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type) ...@@ -727,12 +727,15 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type)
switch(type) switch(type)
{ {
case IT_Html: case IT_Html:
if (!Config_getBool("GENERATE_HTML")) return result;
outputDir = Config_getString("HTML_OUTPUT"); outputDir = Config_getString("HTML_OUTPUT");
break; break;
case IT_Latex: case IT_Latex:
if (!Config_getBool("GENERATE_LATEX")) return result;
outputDir = Config_getString("LATEX_OUTPUT"); outputDir = Config_getString("LATEX_OUTPUT");
break; break;
case IT_RTF: case IT_RTF:
if (!Config_getBool("GENERATE_RTF")) return result;
outputDir = Config_getString("RTF_OUTPUT"); outputDir = Config_getString("RTF_OUTPUT");
break; break;
} }
...@@ -884,7 +887,7 @@ static void checkArgName(const QCString &name) ...@@ -884,7 +887,7 @@ static void checkArgName(const QCString &name)
return; return;
} }
} }
printf("member type=%d\n",memberDef->memberType()); //printf("member type=%d\n",memberDef->memberType());
QCString scope=memberDef->getScopeString(); QCString scope=memberDef->getScopeString();
if (!scope.isEmpty()) scope+="::"; else scope=""; if (!scope.isEmpty()) scope+="::"; else scope="";
warn(memberDef->docFile(),memberDef->docLine(), warn(memberDef->docFile(),memberDef->docLine(),
......
...@@ -336,7 +336,7 @@ void DotNode::writeBox(QTextStream &t, ...@@ -336,7 +336,7 @@ void DotNode::writeBox(QTextStream &t,
t << " Node" << m_number << " [shape=\"box\",label=\"" t << " Node" << m_number << " [shape=\"box\",label=\""
<< convertLabel(m_label) << convertLabel(m_label)
<< "\",fontsize=10,height=0.2,width=0.4"; << "\",fontsize=10,height=0.2,width=0.4";
if (format==GIF) t << ",fontname=\"doxfont\""; if (format==BITMAP) t << ",fontname=\"Helvetica\"";
t << ",color=\"" << labCol << "\""; t << ",color=\"" << labCol << "\"";
if (m_isRoot) if (m_isRoot)
{ {
...@@ -369,7 +369,7 @@ void DotNode::writeArrow(QTextStream &t, ...@@ -369,7 +369,7 @@ void DotNode::writeArrow(QTextStream &t,
{ {
t << ",label=\"" << ei->m_label << "\""; t << ",label=\"" << ei->m_label << "\"";
} }
if (format==GIF) t << ",fontname=\"doxfont\""; if (format==BITMAP) t << ",fontname=\"Helvetica\"";
t << "];" << endl; t << "];" << endl;
} }
...@@ -687,10 +687,11 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) ...@@ -687,10 +687,11 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
for (dnli.toFirst();(n=dnli.current());++dnli) for (dnli.toFirst();(n=dnli.current());++dnli)
{ {
QCString baseName; QCString baseName;
QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
baseName.sprintf("inherit_graph_%d",count++); baseName.sprintf("inherit_graph_%d",count++);
baseName = convertNameToFile(baseName); baseName = convertNameToFile(baseName);
QCString dotName=baseName+".dot"; QCString dotName=baseName+".dot";
QCString gifName=baseName+".gif"; QCString imgName=baseName+"."+ imgExt;
QCString mapName=baseName+".map"; QCString mapName=baseName+".map";
QFile f(dotName); QFile f(dotName);
...@@ -703,14 +704,15 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) ...@@ -703,14 +704,15 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
DotNode *node; DotNode *node;
for (;(node=dnli2.current());++dnli2) for (;(node=dnli2.current());++dnli2)
{ {
if (node->m_subgraphId==n->m_subgraphId) node->write(t,GIF,FALSE,TRUE); if (node->m_subgraphId==n->m_subgraphId) node->write(t,BITMAP,FALSE,TRUE);
} }
t << "}" << endl; t << "}" << endl;
f.close(); f.close();
QCString dotArgs(4096); QCString dotArgs(4096);
dotArgs.sprintf("-Tgif \"%s\" -o \"%s\"",dotName.data(),gifName.data()); dotArgs.sprintf("-T%s \"%s\" -o \"%s\"",
//printf("Running: dot -Tgif %s -o %s\n",dotName.data(),gifName.data()); imgExt.data(), dotName.data(),imgName.data());
//printf("Running: dot -T%s %s -o %s\n",imgExt.data(),dotName.data(),imgName.data());
if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
{ {
err("Problems running dot. Check your installation!\n"); err("Problems running dot. Check your installation!\n");
...@@ -726,7 +728,7 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) ...@@ -726,7 +728,7 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
return; return;
} }
QCString mapLabel = convertNameToFile(n->m_label); QCString mapLabel = convertNameToFile(n->m_label);
out << "<tr><td><img src=\"" << gifName << "\" border=\"0\" usemap=\"#" out << "<tr><td><img src=\"" << imgName << "\" border=\"0\" usemap=\"#"
<< mapLabel << "_map\"></td></tr>" << endl; << mapLabel << "_map\"></td></tr>" << endl;
out << "<map name=\"" << mapLabel << "_map\">" << endl; out << "<map name=\"" << mapLabel << "_map\">" << endl;
convertMapFile(out,mapName); convertMapFile(out,mapName);
...@@ -1294,11 +1296,12 @@ QCString DotClassGraph::writeGraph(QTextStream &out, ...@@ -1294,11 +1296,12 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
findMaximalDotGraph(m_startNode,m_maxDistance,baseName, findMaximalDotGraph(m_startNode,m_maxDistance,baseName,
thisDir,format,!isTBRank,m_graphType==Inheritance); thisDir,format,!isTBRank,m_graphType==Inheritance);
if (format==GIF) // run dot to create a .gif image if (format==BITMAP) // run dot to create a bitmap image
{ {
QCString dotArgs(4096); QCString dotArgs(4096);
dotArgs.sprintf("-Tgif \"%s.dot\" -o \"%s.gif\"", QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
baseName.data(),baseName.data()); dotArgs.sprintf("-T%s \"%s.dot\" -o \"%s.%s\"",
imgExt.data(),baseName.data(),baseName.data(),imgExt.data());
if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
{ {
err("Error: Problems running dot. Check your installation!\n"); err("Error: Problems running dot. Check your installation!\n");
...@@ -1316,7 +1319,8 @@ QCString DotClassGraph::writeGraph(QTextStream &out, ...@@ -1316,7 +1319,8 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
return baseName; return baseName;
} }
QCString mapLabel = convertNameToFile(m_startNode->m_label+"_"+mapName); QCString mapLabel = convertNameToFile(m_startNode->m_label+"_"+mapName);
out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#" out << "<p><center><img src=\"" << baseName << "."
<< imgExt << "\" border=\"0\" usemap=\"#"
<< mapLabel << "\" alt=\""; << mapLabel << "\" alt=\"";
switch (m_graphType) switch (m_graphType)
{ {
...@@ -1520,12 +1524,13 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out, ...@@ -1520,12 +1524,13 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
findMaximalDotGraph(m_startNode,m_maxDistance,baseName,thisDir,format, findMaximalDotGraph(m_startNode,m_maxDistance,baseName,thisDir,format,
FALSE,FALSE,!m_inverse); FALSE,FALSE,!m_inverse);
if (format==GIF) if (format==BITMAP)
{ {
// run dot to create a .gif image // run dot to create a bitmap image
QCString dotArgs(4096); QCString dotArgs(4096);
dotArgs.sprintf("-Tgif \"%s.dot\" -o \"%s.gif\"", QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
baseName.data(),baseName.data()); dotArgs.sprintf("-T%s \"%s.dot\" -o \"%s.%s\"",
imgExt.data(),baseName.data(),baseName.data(),imgExt.data());
if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
{ {
err("Problems running dot. Check your installation!\n"); err("Problems running dot. Check your installation!\n");
...@@ -1545,7 +1550,8 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out, ...@@ -1545,7 +1550,8 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
return baseName; return baseName;
} }
out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#" out << "<p><center><img src=\"" << baseName << "."
<< imgExt << "\" border=\"0\" usemap=\"#"
<< mapName << "_map\" alt=\""; << mapName << "_map\" alt=\"";
if (m_inverse) out << "Included by dependency graph"; else out << "Include dependency graph"; if (m_inverse) out << "Included by dependency graph"; else out << "Include dependency graph";
out << "\">"; out << "\">";
...@@ -1633,43 +1639,25 @@ void generateGraphLegend(const char *path) ...@@ -1633,43 +1639,25 @@ void generateGraphLegend(const char *path)
return; return;
} }
QTextStream dotText(&dotFile); QTextStream dotText(&dotFile);
#if 0
dotText << "digraph inheritance\n";
dotText << "{\n";
dotText << " Node7 [shape=\"box\",label=\"Inherited\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",style=\"filled\" fontcolor=\"white\"];\n";
dotText << " Node8 -> Node7 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n";
dotText << " Node8 [shape=\"box\",label=\"PublicBase\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$class_publicbase" << htmlFileExtension << "\"];\n";
dotText << " Node9 -> Node8 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n";
dotText << " Node9 [shape=\"box\",label=\"Truncated\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"red\",URL=\"$class_truncated" << htmlFileExtension << "\"];\n";
dotText << " Node11 -> Node7 [dir=back,color=\"darkgreen\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n";
dotText << " Node11 [shape=\"box\",label=\"ProtectedBase\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$class_protectedbase" << htmlFileExtension << "\"];\n";
dotText << " Node12 -> Node7 [dir=back,color=\"firebrick4\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n";
dotText << " Node12 [shape=\"box\",label=\"PrivateBase\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$class_privatebase" << htmlFileExtension << "\"];\n";
dotText << " Node13 -> Node7 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n";
dotText << " Node13 [shape=\"box\",label=\"Undocumented\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"grey75\"];\n";
dotText << " Node14 -> Node7 [dir=back,color=\"darkorchid3\",fontsize=10,style=\"dashed\",label=\"m_usedClass\",fontname=\"doxfont\"];\n";
dotText << " Node14 [shape=\"box\",label=\"Used\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$class_used" << htmlFileExtension << "\"];\n";
dotText << "}\n";
#endif
dotText << "digraph inheritance\n"; dotText << "digraph inheritance\n";
dotText << "{\n"; dotText << "{\n";
dotText << " Node9 [shape=\"box\",label=\"Inherited\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",style=\"filled\" fontcolor=\"white\"];\n"; dotText << " Node9 [shape=\"box\",label=\"Inherited\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",style=\"filled\" fontcolor=\"white\"];\n";
dotText << " Node10 -> Node9 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n"; dotText << " Node10 -> Node9 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"Helvetica\"];\n";
dotText << " Node10 [shape=\"box\",label=\"PublicBase\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$classPublicBase" << htmlFileExtension << "\"];\n"; dotText << " Node10 [shape=\"box\",label=\"PublicBase\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classPublicBase" << htmlFileExtension << "\"];\n";
dotText << " Node11 -> Node10 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n"; dotText << " Node11 -> Node10 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"Helvetica\"];\n";
dotText << " Node11 [shape=\"box\",label=\"Truncated\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"red\",URL=\"$classTruncated" << htmlFileExtension << "\"];\n"; dotText << " Node11 [shape=\"box\",label=\"Truncated\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"red\",URL=\"$classTruncated" << htmlFileExtension << "\"];\n";
dotText << " Node13 -> Node9 [dir=back,color=\"darkgreen\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n"; dotText << " Node13 -> Node9 [dir=back,color=\"darkgreen\",fontsize=10,style=\"solid\",fontname=\"Helvetica\"];\n";
dotText << " Node13 [shape=\"box\",label=\"ProtectedBase\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$classProtectedBase" << htmlFileExtension << "\"];\n"; dotText << " Node13 [shape=\"box\",label=\"ProtectedBase\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classProtectedBase" << htmlFileExtension << "\"];\n";
dotText << " Node14 -> Node9 [dir=back,color=\"firebrick4\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n"; dotText << " Node14 -> Node9 [dir=back,color=\"firebrick4\",fontsize=10,style=\"solid\",fontname=\"Helvetica\"];\n";
dotText << " Node14 [shape=\"box\",label=\"PrivateBase\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$classPrivateBase" << htmlFileExtension << "\"];\n"; dotText << " Node14 [shape=\"box\",label=\"PrivateBase\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classPrivateBase" << htmlFileExtension << "\"];\n";
dotText << " Node15 -> Node9 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n"; dotText << " Node15 -> Node9 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"Helvetica\"];\n";
dotText << " Node15 [shape=\"box\",label=\"Undocumented\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"grey75\"];\n"; dotText << " Node15 [shape=\"box\",label=\"Undocumented\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"grey75\"];\n";
dotText << " Node16 -> Node9 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"doxfont\"];\n"; dotText << " Node16 -> Node9 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"Helvetica\"];\n";
dotText << " Node16 [shape=\"box\",label=\"Templ< int >\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$classTempl" << htmlFileExtension << "\"];\n"; dotText << " Node16 [shape=\"box\",label=\"Templ< int >\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classTempl" << htmlFileExtension << "\"];\n";
dotText << " Node17 -> Node16 [dir=back,color=\"orange\",fontsize=10,style=\"dashed\",label=\"< int >\",fontname=\"doxfont\"];\n"; dotText << " Node17 -> Node16 [dir=back,color=\"orange\",fontsize=10,style=\"dashed\",label=\"< int >\",fontname=\"Helvetica\"];\n";
dotText << " Node17 [shape=\"box\",label=\"Templ< T >\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$classTempl" << htmlFileExtension << "\"];\n"; dotText << " Node17 [shape=\"box\",label=\"Templ< T >\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classTempl" << htmlFileExtension << "\"];\n";
dotText << " Node18 -> Node9 [dir=back,color=\"darkorchid3\",fontsize=10,style=\"dashed\",label=\"m_usedClass\",fontname=\"doxfont\"];\n"; dotText << " Node18 -> Node9 [dir=back,color=\"darkorchid3\",fontsize=10,style=\"dashed\",label=\"m_usedClass\",fontname=\"Helvetica\"];\n";
dotText << " Node18 [shape=\"box\",label=\"Used\",fontsize=10,height=0.2,width=0.4,fontname=\"doxfont\",color=\"black\",URL=\"$classUsed" << htmlFileExtension << "\"];\n"; dotText << " Node18 [shape=\"box\",label=\"Used\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classUsed" << htmlFileExtension << "\"];\n";
dotText << "}\n"; dotText << "}\n";
dotFile.close(); dotFile.close();
...@@ -1683,9 +1671,10 @@ void generateGraphLegend(const char *path) ...@@ -1683,9 +1671,10 @@ void generateGraphLegend(const char *path)
// go to the html output directory (i.e. path) // go to the html output directory (i.e. path)
QDir::setCurrent(d.absPath()); QDir::setCurrent(d.absPath());
// run dot to generate the a .gif image from the graph // run dot to generate the a bitmap image from the graph
QCString dotArgs(4096); QCString dotArgs(4096);
dotArgs.sprintf("-Tgif graph_legend.dot -o graph_legend.gif"); QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
dotArgs.sprintf("-T%s graph_legend.dot -o graph_legend.%s",imgExt.data(),imgExt.data());
if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
{ {
err("Problems running dot. Check your installation!\n"); err("Problems running dot. Check your installation!\n");
...@@ -1700,9 +1689,11 @@ void writeDotGraphFromFile(const char *inFile,const char *outFile, ...@@ -1700,9 +1689,11 @@ void writeDotGraphFromFile(const char *inFile,const char *outFile,
GraphOutputFormat format) GraphOutputFormat format)
{ {
QCString dotArgs(4096); QCString dotArgs(4096);
if (format==GIF) QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
if (format==BITMAP)
{ {
dotArgs.sprintf("-Tgif \"%s\" -o \"%s.gif\"",inFile,outFile); dotArgs.sprintf("-T%s \"%s\" -o \"%s.%s\"",imgExt.data(),
inFile,outFile,imgExt.data());
} }
else // format==EPS else // format==EPS
{ {
......
...@@ -27,7 +27,7 @@ class QTextStream; ...@@ -27,7 +27,7 @@ class QTextStream;
class DotNodeList; class DotNodeList;
class ClassSDict; class ClassSDict;
enum GraphOutputFormat { GIF , EPS }; enum GraphOutputFormat { BITMAP , EPS };
struct EdgeInfo struct EdgeInfo
{ {
......
/****************************************************************************** /******************************************************************************
* *
* $Id$ *
* *
* *
* Copyright (C) 1997-2002 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
...@@ -1294,9 +1294,14 @@ static MemberDef *addVariableToFile( ...@@ -1294,9 +1294,14 @@ static MemberDef *addVariableToFile(
MemberDef *md; MemberDef *md;
for (mni.toFirst();(md=mni.current());++mni) for (mni.toFirst();(md=mni.current());++mni)
{ {
if ((nd==0 && md->getFileDef() && if (
root->fileName==md->getFileDef()->absFilePath()) ((nd==0 && md->getFileDef() &&
|| (nd!=0 && md->getNamespaceDef()==nd)) root->fileName==md->getFileDef()->absFilePath()
)
|| (nd!=0 && md->getNamespaceDef()==nd)
)
&& !md->isDefine() // function style #define's can be "overloaded" by typedefs or variables
)
// variable already in the scope // variable already in the scope
{ {
addMemberDocs(root,md,def,0,FALSE); addMemberDocs(root,md,def,0,FALSE);
......
...@@ -755,8 +755,6 @@ void HtmlGenerator::startMemberDescription() ...@@ -755,8 +755,6 @@ void HtmlGenerator::startMemberDescription()
DBG_HTML(t << "<!-- startMemberDescription -->" << endl) DBG_HTML(t << "<!-- startMemberDescription -->" << endl)
if (Config_getBool("HTML_ALIGN_MEMBERS")) if (Config_getBool("HTML_ALIGN_MEMBERS"))
{ {
//t << "<tr><td><img src=null.gif></td><td><img src=null.gif></td>"
// "<td></td><td><font size=-1><em>";
t << "<tr><td>&nbsp;</td><td><font size=-1><em>"; t << "<tr><td>&nbsp;</td><td><font size=-1><em>";
} }
else else
...@@ -922,9 +920,11 @@ void HtmlGenerator::startDotFile(const char *name,bool hasCaption) ...@@ -922,9 +920,11 @@ void HtmlGenerator::startDotFile(const char *name,bool hasCaption)
"/" "/"
#endif #endif
+baseName; +baseName;
writeDotGraphFromFile(name,outName,GIF); writeDotGraphFromFile(name,outName,BITMAP);
t << "<div align=\"center\">" << endl; t << "<div align=\"center\">" << endl;
t << "<img src=\"" << baseName << ".gif\" alt=\"" << baseName << "\">" << endl; t << "<img src=\"" << baseName << "."
<< Config_getEnum("DOT_IMAGE_FORMAT") << "\" alt=\""
<< baseName << "\">" << endl;
if (hasCaption) if (hasCaption)
{ {
t << "<p><strong>"; t << "<p><strong>";
...@@ -1068,7 +1068,7 @@ void HtmlGenerator::startDotGraph() ...@@ -1068,7 +1068,7 @@ void HtmlGenerator::startDotGraph()
void HtmlGenerator::endDotGraph(DotClassGraph &g) void HtmlGenerator::endDotGraph(DotClassGraph &g)
{ {
g.writeGraph(t,GIF,Config_getString("HTML_OUTPUT")); g.writeGraph(t,BITMAP,Config_getString("HTML_OUTPUT"));
} }
void HtmlGenerator::startInclDepGraph() void HtmlGenerator::startInclDepGraph()
...@@ -1077,7 +1077,7 @@ void HtmlGenerator::startInclDepGraph() ...@@ -1077,7 +1077,7 @@ void HtmlGenerator::startInclDepGraph()
void HtmlGenerator::endInclDepGraph(DotInclDepGraph &g) void HtmlGenerator::endInclDepGraph(DotInclDepGraph &g)
{ {
g.writeGraph(t,GIF,Config_getString("HTML_OUTPUT")); g.writeGraph(t,BITMAP,Config_getString("HTML_OUTPUT"));
} }
void HtmlGenerator::writeGraphicalHierarchy(DotGfxHierarchyTable &g) void HtmlGenerator::writeGraphicalHierarchy(DotGfxHierarchyTable &g)
......
...@@ -3180,7 +3180,7 @@ void writeSearchButton(const char *dir) ...@@ -3180,7 +3180,7 @@ void writeSearchButton(const char *dir)
void writeDoxFont(const char *dir) void writeDoxFont(const char *dir)
{ {
QCString fileName=(QCString)dir+"/doxfont.ttf"; QCString fileName=(QCString)dir+"/Helvetica.ttf";
QFile f(fileName); QFile f(fileName);
if (f.open(IO_WriteOnly)) if (f.open(IO_WriteOnly))
f.writeBlock((char *)doxfont_data,doxfont_len); f.writeBlock((char *)doxfont_data,doxfont_len);
...@@ -3194,5 +3194,5 @@ void writeDoxFont(const char *dir) ...@@ -3194,5 +3194,5 @@ void writeDoxFont(const char *dir)
void removeDoxFont(const char *dir) void removeDoxFont(const char *dir)
{ {
QDir d(dir); QDir d(dir);
d.remove("doxfont.ttf"); d.remove("Helvetica.ttf");
} }
...@@ -1114,12 +1114,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1114,12 +1114,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
} }
Specifier lvirt=virtualness(); Specifier lvirt=virtualness();
MemberDef *rmd=reimplements();
while (rmd && lvirt==Normal)
{
lvirt = rmd->virtualness()==Normal ? Normal : Virtual;
rmd = rmd->reimplements();
}
if (protection()!=Public || lvirt!=Normal || if (protection()!=Public || lvirt!=Normal ||
isFriend() || isRelated() || isExplicit() || isFriend() || isRelated() || isExplicit() ||
...@@ -1725,3 +1719,15 @@ void MemberDef::setSectionList(Definition *d, MemberList *sl) ...@@ -1725,3 +1719,15 @@ void MemberDef::setSectionList(Definition *d, MemberList *sl)
classSectionSDict->append((int)d,sl); classSectionSDict->append((int)d,sl);
} }
Specifier MemberDef::virtualness() const
{
Specifier v = virt;
MemberDef *rmd = reimplements();
while (rmd && v==Normal)
{
v = rmd->virtualness()==Normal ? Normal : Virtual;
rmd = rmd->reimplements();
}
return v;
}
...@@ -99,7 +99,7 @@ class MemberDef : public Definition ...@@ -99,7 +99,7 @@ class MemberDef : public Definition
// direct kind info // direct kind info
Protection protection() const { return prot; } Protection protection() const { return prot; }
Specifier virtualness() const { return virt; } Specifier virtualness() const;
MemberType memberType() const { return mtype; } MemberType memberType() const { return mtype; }
// convenience methods // convenience methods
......
...@@ -449,7 +449,7 @@ void MemberList::writeDeclarations(OutputList &ol, ...@@ -449,7 +449,7 @@ void MemberList::writeDeclarations(OutputList &ol,
{ {
//printf("Member group has docs!\n"); //printf("Member group has docs!\n");
ol.startMemberGroupDocs(); ol.startMemberGroupDocs();
parseDoc(ol,"<generated>",1,0,0,mg->documentation()); parseDoc(ol,"<generated>",1,0,0,mg->documentation()+"\n");
ol.endMemberGroupDocs(); ol.endMemberGroupDocs();
} }
ol.startMemberGroup(); ol.startMemberGroup();
......
...@@ -2275,7 +2275,7 @@ void RTFGenerator::startDotFile(const char *name,bool) ...@@ -2275,7 +2275,7 @@ void RTFGenerator::startDotFile(const char *name,bool)
"/" "/"
#endif #endif
+baseName; +baseName;
writeDotGraphFromFile(name,outName,GIF); writeDotGraphFromFile(name,outName,BITMAP);
newParagraph(); newParagraph();
t << "{" << endl; t << "{" << endl;
t << Rtf_Style_Reset << endl; t << Rtf_Style_Reset << endl;
...@@ -2631,13 +2631,13 @@ void RTFGenerator::endDotGraph(DotClassGraph &g) ...@@ -2631,13 +2631,13 @@ void RTFGenerator::endDotGraph(DotClassGraph &g)
newParagraph(); newParagraph();
QCString fileName = QCString fileName =
g.writeGraph(t,GIF,Config_getString("RTF_OUTPUT"),TRUE,FALSE); g.writeGraph(t,BITMAP,Config_getString("RTF_OUTPUT"),TRUE,FALSE);
// 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 << "." << Config_getEnum("DOT_IMAGE_FORMAT");
t << " \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; t << " \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
t << "}" << endl; t << "}" << endl;
} }
...@@ -2650,13 +2650,13 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g) ...@@ -2650,13 +2650,13 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g)
{ {
newParagraph(); newParagraph();
QCString fileName = g.writeGraph(t,GIF,Config_getString("RTF_OUTPUT"),FALSE); QCString fileName = g.writeGraph(t,BITMAP,Config_getString("RTF_OUTPUT"),FALSE);
// 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 << "." << Config_getEnum("DOT_IMAGE_FORMAT");
t << " \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; t << " \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
t << "}" << endl; t << "}" << endl;
} }
......
...@@ -2090,6 +2090,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -2090,6 +2090,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
BEGIN( CopyArgComment ); BEGIN( CopyArgComment );
} }
} }
<CopyArgComment>^{B}*"*"+/{BN}+
<CopyArgComment>[^\n\*]+ { fullArgString+=yytext; } <CopyArgComment>[^\n\*]+ { fullArgString+=yytext; }
<CopyArgComment>"*/" { fullArgString+=yytext; <CopyArgComment>"*/" { fullArgString+=yytext;
if (lastCopyArgChar!=0) if (lastCopyArgChar!=0)
...@@ -3445,7 +3446,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3445,7 +3446,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<SkipCode>"//" { <SkipCode>"//" {
*pSkipDoc+=yytext; *pSkipDoc+=yytext;
} }
<SkipCode>"/*" { <SkipCode>"/*"|"*/" {
*pSkipDoc+=yytext; *pSkipDoc+=yytext;
} }
<SkipCode>[^ \<\*\t\/\\\n]+ { <SkipCode>[^ \<\*\t\/\\\n]+ {
...@@ -3571,7 +3572,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3571,7 +3572,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
BEGIN(lastFormulaContext); BEGIN(lastFormulaContext);
} }
<ReadFormulaLong,ReadFormulaShort>. { formulaText+=*yytext; } <ReadFormulaLong,ReadFormulaShort>. { formulaText+=*yytext; }
<ExampleDoc,PageDoc,ClassDocBrief,SkipCode,ClassDoc,ReadFormulaShort,ReadFormulaLong>{B}*"*/" { <ExampleDoc,PageDoc,ClassDocBrief,ClassDoc,ReadFormulaShort,ReadFormulaLong>{B}*"*/" {
checkDocs(); checkDocs();
//printf("current->section=%x\n",current->section); //printf("current->section=%x\n",current->section);
if (YY_START==SkipCode) // premature end of code block if (YY_START==SkipCode) // premature end of code block
......
...@@ -58,15 +58,17 @@ ...@@ -58,15 +58,17 @@
// - trCompoundReference(), trLegendDocs() updated // - trCompoundReference(), trLegendDocs() updated
// - Removed some TODO's // - Removed some TODO's
// //
// 2002/02/13 Oliver Brandt (o.brandt@tu-bs.de)
// - Updated for "new since 1.2.13" version
// - Removed some TODO's
//
// Todo: // Todo:
// - translation of all Config_getBool("OPTIMIZE_OUTPUT_FOR_C")
// strings (see translator_en.h)
// - see FIXME // - see FIXME
#ifndef TRANSLATOR_DE_H #ifndef TRANSLATOR_DE_H
#define TRANSLATOR_DE_H #define TRANSLATOR_DE_H
class TranslatorGerman : public TranslatorAdapter_1_2_13 class TranslatorGerman : public Translator
{ {
public: public:
...@@ -123,7 +125,9 @@ class TranslatorGerman : public TranslatorAdapter_1_2_13 ...@@ -123,7 +125,9 @@ class TranslatorGerman : public TranslatorAdapter_1_2_13
/* header that is put before the list of member attributes. */ /* header that is put before the list of member attributes. */
virtual QCString trMemberDataDocumentation() virtual QCString trMemberDataDocumentation()
{ return "Dokumentation der Datenelemente"; } { /* No difference if "OPTIMIZE_OUTPUT_FOR_C" is set! */
return "Dokumentation der Datenelemente";
}
/* this is the text of a link put after brief descriptions. */ /* this is the text of a link put after brief descriptions. */
virtual QCString trMore() virtual QCString trMore()
...@@ -215,6 +219,7 @@ class TranslatorGerman : public TranslatorAdapter_1_2_13 ...@@ -215,6 +219,7 @@ class TranslatorGerman : public TranslatorAdapter_1_2_13
/* This is put above each page as a link to all members of files. */ /* This is put above each page as a link to all members of files. */
virtual QCString trFileMembers() virtual QCString trFileMembers()
/* No difference if "OPTIMIZE_OUTPUT_FOR_C" is set! */
{ return "Datei-Elemente"; } { return "Datei-Elemente"; }
/* This is put above each page as a link to all related pages. */ /* This is put above each page as a link to all related pages. */
...@@ -340,10 +345,8 @@ class TranslatorGerman : public TranslatorAdapter_1_2_13 ...@@ -340,10 +345,8 @@ class TranslatorGerman : public TranslatorAdapter_1_2_13
* annotated compound index. * annotated compound index.
*/ */
virtual QCString trCompoundIndex() virtual QCString trCompoundIndex()
/* No difference if "OPTIMIZE_OUTPUT_FOR_C" is set! */
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
return "Datenstruktur-Verzeichnis";
else
return "Datenstruktur-Verzeichnis"; return "Datenstruktur-Verzeichnis";
} }
...@@ -1341,7 +1344,7 @@ class TranslatorGerman : public TranslatorAdapter_1_2_13 ...@@ -1341,7 +1344,7 @@ class TranslatorGerman : public TranslatorAdapter_1_2_13
virtual QCString trGlobal(bool first_capital, bool singular) virtual QCString trGlobal(bool first_capital, bool singular)
{ {
QCString result((first_capital ? "Global" : "global")); // FIXME QCString result((first_capital ? "Global" : "global")); // FIXME
if (!singular) result+="s"; if (!singular) result+="";
return result; return result;
} }
...@@ -1369,6 +1372,26 @@ class TranslatorGerman : public TranslatorAdapter_1_2_13 ...@@ -1369,6 +1372,26 @@ class TranslatorGerman : public TranslatorAdapter_1_2_13
{ {
return "Benutzt"; return "Benutzt";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.2.13
//////////////////////////////////////////////////////////////////////////
/* used in member documentation blocks to produce a list of
* members that are implemented by this one.
*/
virtual QCString trImplementedFromList(int numEntries)
{
return "Implementiert " + trWriteList(numEntries) + ".";
}
/* used in member documentation blocks to produce a list of
* all members that implement this abstract member.
*/
virtual QCString trImplementedInList(int numEntries)
{
return "Implementiert in " + trWriteList(numEntries) + ".";
}
}; };
#endif #endif
......
...@@ -1309,6 +1309,50 @@ static void writeTemplateLists(Definition *d,QTextStream &t) ...@@ -1309,6 +1309,50 @@ static void writeTemplateLists(Definition *d,QTextStream &t)
} }
} }
static void writeListOfAllMember(ClassDef *cd,QTextStream &t)
{
t << " <listofallmembers>" << endl;
MemberNameInfoSDict::Iterator mnii(*cd->memberNameInfoSDict());
MemberNameInfo *mni;
for (mnii.toFirst();(mni=mnii.current());++mnii)
{
MemberNameInfoIterator mii(*mni);
MemberInfo *mi;
for (mii.toFirst();(mi=mii.current());++mii)
{
MemberDef *md=mi->memberDef;
ClassDef *cd=md->getClassDef();
Definition *d=md->getGroupDef();
if (d==0) d = cd;
Protection prot = mi->prot;
Specifier virt=md->virtualness();
t << " <member refid=\"" << d->getOutputFileBase() << "_" <<
md->anchor() << "\" prot=\"";
switch (prot)
{
case Public: t << "public"; break;
case Protected: t << "protected"; break;
case Private: t << "private"; break;
}
t << "\" virt=\"";
switch(virt)
{
case Normal: t << "non-virtual"; break;
case Virtual: t << "virtual"; break;
case Pure: t << "pure-virtual"; break;
}
t << "\"";
if (!mi->ambiguityResolutionScope.isEmpty())
{
t << " ambiguityscope=\"" << mi->ambiguityResolutionScope << "\"";
}
t << "><scope>" << cd->name() << "</scope><name>" <<
md->name() << "</name></member>" << endl;
}
}
t << " </listofallmembers>" << endl;
}
static void generateXMLForClass(ClassDef *cd,QTextStream &ti) static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
{ {
// + brief description // + brief description
...@@ -1415,6 +1459,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) ...@@ -1415,6 +1459,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
} }
} }
writeTemplateLists(cd,t); writeTemplateLists(cd,t);
writeListOfAllMember(cd,t);
MemberGroupSDict::Iterator mgli(*cd->memberGroupSDict); MemberGroupSDict::Iterator mgli(*cd->memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
......
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