diff options
Diffstat (limited to 'doc/diagrams.doc')
-rw-r--r-- | doc/diagrams.doc | 148 |
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 + +*/ + |