Blame doc/diagrams.doc

Packit Service 50c9f2
/******************************************************************************
Packit Service 50c9f2
 *
Packit Service 50c9f2
 * 
Packit Service 50c9f2
 *
Packit Service 50c9f2
 * Copyright (C) 1997-2015 by Dimitri van Heesch.
Packit Service 50c9f2
 *
Packit Service 50c9f2
 * Permission to use, copy, modify, and distribute this software and its
Packit Service 50c9f2
 * documentation under the terms of the GNU General Public License is hereby 
Packit Service 50c9f2
 * granted. No representations are made about the suitability of this software 
Packit Service 50c9f2
 * for any purpose. It is provided "as is" without express or implied warranty.
Packit Service 50c9f2
 * See the GNU General Public License for more details.
Packit Service 50c9f2
 *
Packit Service 50c9f2
 * Documents produced by Doxygen are derivative works derived from the
Packit Service 50c9f2
 * input used in their production; they are not affected by this license.
Packit Service 50c9f2
 *
Packit Service 50c9f2
 */
Packit Service 50c9f2
/*! \page diagrams Graphs and diagrams
Packit Service 50c9f2
Packit Service 50c9f2
  Doxygen has built-in support to generate inheritance diagrams for C++
Packit Service 50c9f2
  classes. 
Packit Service 50c9f2
Packit Service 50c9f2
  Doxygen can use the "dot" tool from graphviz to generate
Packit Service 50c9f2
  more advanced diagrams and graphs. Graphviz is an open-source, 
Packit Service 50c9f2
  cross-platform graph drawing toolkit and can be found 
Packit Service 50c9f2
  at http://www.graphviz.org/
Packit Service 50c9f2
Packit Service 50c9f2
  If you have the "dot" tool in the path, you can set
Packit Service 50c9f2
  \ref cfg_have_dot "HAVE_DOT" to \c YES in the configuration file to 
Packit Service 50c9f2
  let doxygen use it.
Packit Service 50c9f2
Packit Service 50c9f2
  Doxygen uses the "dot" tool to generate the following graphs:
Packit Service 50c9f2
  
    Packit Service 50c9f2
      
  • A graphical representation of the class hierarchy will be drawn, along
  • Packit Service 50c9f2
          with the textual one. Currently this feature is supported for HTML only.\n
    Packit Service 50c9f2
          Warning: When you have a very large class hierarchy where many 
    Packit Service 50c9f2
          classes derive from a common base class, the resulting image may become 
    Packit Service 50c9f2
          too big to handle for some browsers.
    Packit Service 50c9f2
      
  • An inheritance graph will be generated for each documented class showing the
  • Packit Service 50c9f2
          direct and indirect inheritance relations. This disables the
    Packit Service 50c9f2
          generation of the built-in class inheritance diagrams.
    Packit Service 50c9f2
      
  • An include dependency graph is generated for each documented file that
  • Packit Service 50c9f2
          includes at least one other file. This feature is currently supported 
    Packit Service 50c9f2
          for HTML and RTF only.
    Packit Service 50c9f2
      
  • An inverse include dependency graph is also generated showing for
  • Packit Service 50c9f2
          a (header) file, which other files include it.
    Packit Service 50c9f2
      
  • A graph is drawn for each documented class and struct that shows:
  • Packit Service 50c9f2
          
      Packit Service 50c9f2
            
    • the inheritance relations with base classes.
    • Packit Service 50c9f2
            
    • the usage relations with other structs and classes (e.g.
    • Packit Service 50c9f2
                 class \c A has a member variable \c m_a of type class \c B, then
      Packit Service 50c9f2
                 \c A has an arrow to \c B with \c m_a as label).
      Packit Service 50c9f2
            
      Packit Service 50c9f2
        
    • if \ref cfg_call_graph "CALL_GRAPH" is set to YES, a
    • Packit Service 50c9f2
            graphical call graph is drawn for each function showing the 
      Packit Service 50c9f2
            functions that the function directly or indirectly calls
      Packit Service 50c9f2
            (see also section \ref cmdcallgraph "\\callgraph" and
      Packit Service 50c9f2
             section \ref cmdhidecallgraph "\\hidecallgraph").
      Packit Service 50c9f2
        
    • if \ref cfg_caller_graph "CALLER_GRAPH" is set to YES, a
    • Packit Service 50c9f2
            graphical caller graph is drawn for each function showing the 
      Packit Service 50c9f2
            functions that the function is directly or indirectly called by
      Packit Service 50c9f2
            (see also section \ref cmdcallergraph "\\callergraph" and
      Packit Service 50c9f2
             section \ref cmdhidecallergraph "\\hidecallergraph").
      Packit Service 50c9f2
        
      Packit Service 50c9f2
      Packit Service 50c9f2
        Using a \ref customize "layout file" you can determine which of the
      Packit Service 50c9f2
        graphs are actually shown.
      Packit Service 50c9f2
      Packit Service 50c9f2
        The options \ref cfg_dot_graph_max_nodes "DOT_GRAPH_MAX_NODES" and
      Packit Service 50c9f2
        \ref cfg_max_dot_graph_depth "MAX_DOT_GRAPH_DEPTH" can be used to 
      Packit Service 50c9f2
        limit the size of the various graphs.
      Packit Service 50c9f2
      Packit Service 50c9f2
        The elements in the class diagrams in HTML and RTF 
      Packit Service 50c9f2
        have the following meaning:
      Packit Service 50c9f2
        
        Packit Service 50c9f2
          
      • A \b yellow box indicates a class. A box can have a
      • Packit Service 50c9f2
               little marker in the lower right corner to indicate that the class 
        Packit Service 50c9f2
               contains base classes that are hidden. 
        Packit Service 50c9f2
               For the class diagrams the maximum tree width is currently 8 elements. 
        Packit Service 50c9f2
               If a tree is wider some nodes will be hidden.
        Packit Service 50c9f2
               If the box is filled with a 
        Packit Service 50c9f2
               dashed pattern the inheritance relation is virtual.
        Packit Service 50c9f2
          
      • A \b white box indicates that the documentation of the class
      • Packit Service 50c9f2
               is currently shown.
        Packit Service 50c9f2
          
      • A \b gray box indicates an undocumented class.
      • Packit Service 50c9f2
          
      • A solid dark blue arrow indicates public inheritance.
      • Packit Service 50c9f2
          
      • A dashed dark green arrow indicates protected inheritance.
      • Packit Service 50c9f2
          
      • A dotted dark green arrow indicates private inheritance.
      • Packit Service 50c9f2
          
        Packit Service 50c9f2
        Packit Service 50c9f2
          The elements in the class diagram in \LaTeX have the 
        Packit Service 50c9f2
          following meaning:
        Packit Service 50c9f2
          
          Packit Service 50c9f2
            
        • A \b white box indicates a class.
        • Packit Service 50c9f2
                 A \b marker in the lower right corner of the box indicates that the 
          Packit Service 50c9f2
                 class has base classes that are hidden. 
          Packit Service 50c9f2
                 If the box has a \b dashed border this indicates virtual inheritance.
          Packit Service 50c9f2
            
        • A \b solid arrow indicates public inheritance.
        • Packit Service 50c9f2
            
        • A \b dashed arrow indicates protected inheritance.
        • Packit Service 50c9f2
            
        • A \b dotted arrow indicates private inheritance.
        • Packit Service 50c9f2
            
          Packit Service 50c9f2
          Packit Service 50c9f2
            The elements in the graphs generated by the dot tool have the following
          Packit Service 50c9f2
            meaning:
          Packit Service 50c9f2
            
            Packit Service 50c9f2
              
          • A \b white box indicates a class or struct or file.
          • Packit Service 50c9f2
              
          • A box with a \b red border indicates a node that has
          • Packit Service 50c9f2
                   \e more arrows than are shown! 
            Packit Service 50c9f2
                   In other words: the graph is \e truncated with respect to this node.
            Packit Service 50c9f2
                   The reason why a graph is sometimes truncated is to prevent images
            Packit Service 50c9f2
                   from becoming too large. 
            Packit Service 50c9f2
                   For the graphs generated with dot doxygen tries
            Packit Service 50c9f2
                   to limit the width of the resulting image to 1024 pixels.  
            Packit Service 50c9f2
              
          • A \b black box indicates that the class' documentation is currently shown.
          • Packit Service 50c9f2
              
          • A dark blue arrow indicates an include relation (for the
          • Packit Service 50c9f2
                   include dependency graph) or public inheritance (for the other graphs).
            Packit Service 50c9f2
              
          • A dark green arrow indicates protected inheritance.
          • Packit Service 50c9f2
              
          • A dark red arrow indicates private inheritance.
          • Packit Service 50c9f2
              
          • A purple dashed arrow indicated a "usage" relation, the
          • Packit Service 50c9f2
                   edge of the arrow is labeled with the variable(s) responsible for the
            Packit Service 50c9f2
                   relation.
            Packit Service 50c9f2
                   Class \c A uses class \c B, if class \c A has a member variable \c m 
            Packit Service 50c9f2
                   of type C, where B is a subtype of C (e.g. `C` could be `B`, `B*`, `T*`). 
            Packit Service 50c9f2
              
            Packit Service 50c9f2
            Packit Service 50c9f2
            Packit Service 50c9f2
            Here are a couple of header files that together show the various diagrams
            Packit Service 50c9f2
            that doxygen can generate: 
            Packit Service 50c9f2
            Packit Service 50c9f2
            diagrams_a.h
            Packit Service 50c9f2
            \include diagrams_a.h
            Packit Service 50c9f2
            diagrams_b.h
            Packit Service 50c9f2
            \include diagrams_b.h
            Packit Service 50c9f2
            diagrams_c.h
            Packit Service 50c9f2
            \include diagrams_c.h
            Packit Service 50c9f2
            diagrams_d.h
            Packit Service 50c9f2
            \include diagrams_d.h
            Packit Service 50c9f2
            diagrams_e.h
            Packit Service 50c9f2
            \include diagrams_e.h
            Packit Service 50c9f2
            Packit Service 50c9f2
            \htmlonly
            Packit Service 50c9f2

            Packit Service 50c9f2
            Click here
            Packit Service 50c9f2
            for the corresponding HTML documentation that is generated by doxygen
            Packit Service 50c9f2
            (EXTRACT_ALL = YES is used here).
            Packit Service 50c9f2
            \endhtmlonly
            Packit Service 50c9f2
            \latexonly
            Packit Service 50c9f2
            \IfFileExists{../html/examples/diagrams/latex/refman_doc.tex}
            Packit Service 50c9f2
            {
            Packit Service 50c9f2
            See \hyperlink{diagrams_example}{Diagrams example}
            Packit Service 50c9f2
            for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
            Packit Service 50c9f2
            } {}
            Packit Service 50c9f2
            \endlatexonly
            Packit Service 50c9f2
            Packit Service 50c9f2
            \htmlonly
            Packit Service 50c9f2


            Packit Service 50c9f2
            Go to the next section or return to the
            Packit Service 50c9f2
            index.
            Packit Service 50c9f2
            \endhtmlonly
            Packit Service 50c9f2
            Packit Service 50c9f2
            */
            Packit Service 50c9f2