summaryrefslogtreecommitdiff
path: root/doc/diagrams.doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/diagrams.doc')
-rw-r--r--doc/diagrams.doc148
1 files changed, 148 insertions, 0 deletions
diff --git a/doc/diagrams.doc b/doc/diagrams.doc
new file mode 100644
index 0000000..56f82b8
--- /dev/null
+++ b/doc/diagrams.doc
@@ -0,0 +1,148 @@
+/******************************************************************************
+ *
+ *
+ *
+ * Copyright (C) 1997-2012 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 built-in support to generate inheritance diagrams for C++
+ classes.
+
+ Doxygen can use the "dot" tool from graphviz to generate
+ more advanced diagrams and graphs. Graphviz is an open-source,
+ cross-platform graph drawing toolkit and can be found
+ at http://www.graphviz.org/
+
+ If you have the "dot" tool 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>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>An inheritance graph will be generated for each documented class showing the
+ direct and indirect inheritance relations. This disables the
+ generation of the built-in class inheritance diagrams.
+ <li>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>An inverse include dependency graph is also generated showing for
+ a (header) file, which other files include it.
+ <li>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 and 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>
+ <li>if \ref cfg_call_graph "CALL_GRAPH" is set to YES, a
+ graphical call graph is drawn for each function showing the
+ functions that the function directly or indirectly calls.
+ <li>if \ref cfg_caller_graph "CALLER_GRAPH" is set to YES, a
+ graphical caller graph is drawn for each function showing the
+ functions that the function is directly or indirectly called by.
+ </ul>
+
+ Using a \ref customize "layout file" you can determine which of the
+ graphs are actually shown.
+
+ The options \ref cfg_dot_graph_max_nodes "DOT_GRAPH_MAX_NODES" and
+ \ref cfg_max_dot_graph_depth "MAX_DOT_GRAPH_DEPTH" can be used to
+ limit the size of the various graphs.
+
+ 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 is 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 gray 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 indicates 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 other words: the graph is \e truncated with respect to this node.
+ The reason why a graph is sometimes truncated is to 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 labeled 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 `B`, `B*`, `T\<B\>*`).
+ </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).<p>
+ \endhtmlonly
+
+\htmlonly
+Go to the <a href="preprocessing.html">next</a> section or return to the
+ <a href="index.html">index</a>.
+\endhtmlonly
+
+*/
+