summaryrefslogtreecommitdiffstats
path: root/doc/diagrams.doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/diagrams.doc')
-rw-r--r--doc/diagrams.doc137
1 files changed, 137 insertions, 0 deletions
diff --git a/doc/diagrams.doc b/doc/diagrams.doc
new file mode 100644
index 0000000..7fd3251
--- /dev/null
+++ b/doc/diagrams.doc
@@ -0,0 +1,137 @@
+/******************************************************************************
+ *
+ *
+ *
+ * Copyright (C) 1997-2000 by Dimitri van Heesch.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
+ * for any purpose. It is provided "as is" without express or implied warranty.
+ * See the GNU General Public License for more details.
+ *
+ * Documents produced by Doxygen are derivative works derived from the
+ * input used in their production; they are not affected by this license.
+ *
+ */
+/*! \page diagrams Graphs and diagrams
+
+ Doxygen has build-in support to generate inheritance diagrams for C++
+ classes.
+
+ Doxygen can use the "dot" tool from graphviz 1.5 to generate
+ more advanced diagrams & graphs. Graphviz is an open-sourced,
+ cross-platform graph drawing toolkit from AT&T and Lucent Bell Labs and
+ can be found at http://www.research.att.com/sw/tools/graphviz/
+
+ If you have the "dot" tool available in the path, you can set
+ \ref cfg_have_dot "HAVE_DOT" to \c YES in the configuration file to
+ let doxygen use it.
+
+ Doxygen uses the "dot" tool to generate the following graphs:
+ <ul>
+ <li>if \ref cfg_graphical_hierarchy "GRAPHICAL_HIERARCHY" is set to \c YES,
+ a graphical representation of the class hierarchy will be drawn, along
+ with the textual one. Currently this feature is supported for HTML only.\n
+ <b>Warning:</b> When you have a very large class hierarchy where many
+ classes derive from a common base class, the resulting image may become
+ too big to handle for some browsers.
+ <li>if \ref cfg_class_graph "CLASS_GRAPH" is set to \c YES,
+ a graph will be generated for each documented class showing the
+ direct and indirect inheritance relations. This disables the
+ generation of the build-in class inheritance diagrams.
+ <li>if \ref cfg_include_graph "INCLUDE_GRAPH" is set to \c YES, an include
+ dependency graph is generated for each documented file that includes at
+ least one other file. This feature is currently supported for HTML and RTF
+ only.
+ <li>if \ref cfg_collaboration_graph "COLLABORATION_GRAPH" is set to YES, a
+ graph is drawn for each documented class and struct that shows:
+ <ul>
+ <li> the inheritance relations with base classes.
+ <li> the usage relations with other structs & classes (e.g.
+ class \c A has a member variable \c m_a of type class \c B, then
+ \c A has an arrow to \c B with \c m_a as label).
+ </ul>
+ </ul>
+
+ The elements in the class diagrams in HTML and RTF
+ have the following meaning:
+ <ul>
+ <li> A \b yellow box indicates a class. A box can have a
+ little marker in the lower right corner to indicate that the class
+ contains base classes that are hidden.
+ For the class diagrams the maximum tree width is currently 8 elements.
+ If a tree wider some nodes will be hidden.
+ If the box is filled with a
+ dashed pattern the inheritance relation is virtual.
+ <li> A \b white box indicates that the documentation of the class
+ is currently shown.
+ <li> A \b grey box indicates an undocumented class.
+ <li> A <b>solid dark blue</b> arrow indicates public inheritance.
+ <li> A <b>dashed dark green</b> arrow indicates protected inheritance.
+ <li> A <b>dotted dark green</b> arrow indicates private inheritance.
+ </ul>
+
+ The elements in the class diagram in \f$\mbox{\LaTeX}\f$ have the
+ following meaning:
+ <ul>
+ <li> A \b white box indicates a class.
+ A \b marker in the lower right corner of the box indicates that the
+ class has base classes that are hidden.
+ If the box has a \b dashed border this indicates virtual inheritance.
+ <li> A \b solid arrow indicates public inheritance.
+ <li> A \b dashed arrow indicates protected inheritance.
+ <li> A \b dotted arrow indicated private inheritance.
+ </ul>
+
+ The elements in the graphs generated by the dot tool have the following
+ meaning:
+ <ul>
+ <li> A \b white box indicates a class or struct or file.
+ <li> A box with a \b red border indicates a node that has
+ \e more arrows than are shown!
+ In order words: the graph is \e truncated with respect to this node.
+ The reason a graph is sometimes truncated is too prevent images
+ from becoming too large.
+ For the graphs generated with dot doxygen tries
+ to limit the width of the resulting image to 1024 pixels.
+ <li> A \b black box indicates that the class' documentation is currently shown.
+ <li> A <b>dark blue</b> arrow indicates an include relation (for the
+ include dependency graph) or public inheritance (for the other graphs).
+ <li> A <b>dark green</b> arrow indicates protected inheritance.
+ <li> A <b>dark red</b> arrow indicates private inheritance.
+ <li> A <b>purple dashed</b> arrow indicated a "usage" relation, the
+ edge of the arrow is labled with the variable(s) responsible for the
+ relation.
+ Class \c A uses class \c B, if class \c A has a member variable \c m
+ of type C, where B is a subtype of C (e.g. C could be \c B, \c B*, <code>T\<B\>*</code> ).
+ </ul>
+
+
+Here are a couple of header files that together show the various diagrams
+that doxygen can generate:
+
+<code>diagrams_a.h</code>
+\verbinclude diagrams_a.h
+<code>diagrams_b.h</code>
+\verbinclude diagrams_b.h
+<code>diagrams_c.h</code>
+\verbinclude diagrams_c.h
+<code>diagrams_d.h</code>
+\verbinclude diagrams_d.h
+<code>diagrams_e.h</code>
+\verbinclude diagrams_e.h
+
+ \htmlonly
+ Click <a href="$(DOXYGEN_DOCDIR)/examples/diagrams/html/index.html">here</a>
+ for the corresponding HTML documentation that is generated by doxygen<br>
+ (<code>EXTRACT_ALL</code> = <code>YES</code> is used here).
+ \endhtmlonly
+
+\htmlonly
+Go to the <a href="preprocessing.html">next</a> section or return to the
+ <a href="index.html">index</a>.
+\endhtmlonly
+
+*/
+