Orb/Doxygen/doc/diagrams.doc
changeset 0 42188c7ea2d9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Orb/Doxygen/doc/diagrams.doc	Thu Jan 21 17:29:01 2010 +0000
@@ -0,0 +1,148 @@
+/******************************************************************************
+ *
+ * 
+ *
+ * Copyright (C) 1997-2008 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 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 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 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
+
+*/
+