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