Home
        VCG Visualization of Compiler Graphs
         Contents
1.            220             221        Y   222        p   223        B   fi224      226       8 225             230       8 229       8 228       8 227             231             f1232      233        6   N  1234      236       8 235             237             238              239             fi240      241        A   242             243             247       6 246       6 245       6 244            fi248       249              fi250      251              2  2             253             254        p   Nf  3255 y                   Table 6  The ISO Latin 1 Character Set    values  Note  the ASCII value of the control characters depends on the operating system and  the C compiler  The following control characters are allowed     Newline  corresponds to the C sequence   n   mostly implemented by ASCII code 10   continue drawing text at the beginning of the next line     Tabular  C sequence   t   ASCII code 9  draw 8 space characters     Beep  C sequence   a   ASCII code 7  produce an audible or visible alert  equivalent to  printf   a      The position for the next character to be drawn is not changed     Backspace  C sequence   b   ASCII code 8  go one character back and continue drawing  at that place     Formfeed  C sequence   f   ASCII code 12  This occurs with an additional parameter  the  next few characters  and changes the actual form of output     4 EXAMPLES OF GDL SPECIFICATIONS 30     fu  ASCII codes 12 117  starts underlining     fb  ASCII codes 12 98  starts bold t
2.        title    Mashey       title    Bourne     1 title    Formshell       title   csh     title    esh       title    vsh     title   ksh         title   System  V     title      v9sh       title   tcsh     title   ksh i     title      KornShell         title      Perl     title   rc    1     title   tcl     1 title    Bash       title   POSIX     title   ksh POSIX       sourcename   Thompson  targetname     sourcename     Thompson    targetname     sourcename     Thompson    targetname     sourcename   Bourne     sourcename      Bourne       sourcename   Bourne     sourcename      Bourne       sourcename   Bourne     sourcename      Bourne       sourcename   Bourne     targetname   rc      rc  targetname      Perl       linestyle  invisible priority  0    linestyle  invisible priority  0    linestyle  invisible    linestyle  invisible      vertical_order  1 horizontal_order  2    vertical_order  2 horizontal_order  3    vertical_order  2 horizontal_order  2    vertical_order  3  vertical_order  3 shape  triangle    vertical_order  4 horizontal_order  2    vertical_order  4    vertical order  5 horizontalorder  3 shape  ellipse    vertical_order  5 horizontal_order  5    vertical_order  6  vertical_order  6 shape  triangle    vertical_order  7 shape  ellipse    vertical order  8 shape  ellipse H  vertical order  8    vertical_order  8    vertical_order  9 shape  rhomb    vertical_order  9    vertical_order  10 horizontal_order  3    vertical_order  10 horizontal_order  2 sh
3.      node    title  16  label   test z 3      node    title  15  label   x    8     node    title  14  label   2   7     node    title  13  label   z    6     node    title  12  label   2   1     node    title  11  label   test x 2      node    title  10  label   z    5     node    title  9  label   z    4     node    title  8  label   2   1     node    title  7  label   z    3     node    title  6  label   test z  1      node    title  5  label   z    2     node    title  4  label   2   1     node    title  3  label   z    1     node    title  2  label   Start     node    title  1  label   Exit_point ntest     node  1 title  0  label   Entry_point ntest     edge    thickness  4 sourcename  18  targetname  1     edge    thickness  4 sourcename  0  targetname  18     edge    thickness  4 sourcename  12  targetname  17  label   false       4 EXAMPLES OF GDL SPECIFICATIONS    edge  edge  edge  edge  edge  edge  edge  edge  edge  edge  edge  edge  edge  edge  edge  edge  edge  edge        thickness      thickness      thickness      thickness      thickness      thickness      thickness      thickness      thickness      thickness      thickness      thickness      thickness      thickness      thickness      thickness      thickness      thickness            4 sourcename    4 sourcename    4 sourcename    4 sourcename    4 sourcename    4 sourcename    4 sourcename    4 sourcename    4 sourcename    4 sourcename    4 sourcename    4 sourcename    4 sourcename    4 sourcename    
4.     f      Folding of a graph allows to inspect the graph in a more compact way  Unimportant parts are  hidden while important parts are shown in detail  To fold parts of the graph also improves  the performance of the tool because the folded parts need not to be laid out  Examples  are  fold the procedure parts of a syntax tree  hide annotations of a graph  e g   syntax tree  attributes   display approximations of paths in a graph  show the condensation to strongly  connected regions  etc  There are 3 general methods to fold the visualized graph     e folding of complete subgraphs  The GDL specification allows to partition the  graph statically into nested subgraphs   Statically means  there is no way to change  this partitioning interactively   See section 3 1  attribute folding  Subgraphs can be  visualized explicitly  i e all nodes are drawn  or in a compressed manner by displaying  only one summary node for the whole graph     hiding of edges  The edges of the graph can be statically partitioned into classes   Edge classes are specified by numbers  1  2       Every class can separately be hidden   In this case  all edges of this class are not laid out and not drawn   Note that edges  with the linestyle invisible are laid out  even if they are not drawn  See section 3 3    Additionally  all nodes that are only reachable by edges currently hidden are not drawn   i e  all nodes whose incoming and outgoing edges are hidden become invisible  too  See  section 3 1  attribute h
5.     fixed radius around the focus point  In this case  the focus point is always centered in    the graph window     The view parameters can be selected by a dialog box  fig  46   Here  not only the mode  of the fisheye can be chosen  but also whether edges or nodes generally should appear  or    whether splines should be used to draw edges     5 9    File Operations    There is a submenu with the following items     Save to File writes the graph with all calculated layout parameters into a file  The  result is a valid GDL specification that can be read by the VCG tool     Export Part  after selecting a region to be exported  an image is saved in monochro   matic PBM P4 format  colored PPM P6 format  or PostScript  For PostScript  multiple  page output up to 25 pages is possible  too  Note  if we use splines  it is only possible  to export the whole graph     Export Graph  The whole graph is exported  just similar as above   Load  a new GDL file is read and the described graph is displayed     Reload  the actual GDL file is read again and the described graph is displayed  This  does not work if the actual file is  lt stdin gt      To export an image  it is useful first to shrink the graph to a size that the part to export  is completely visible  With a rectangular rubberband  this part is selected  Hint  If a corner    5 USAGE OF THE VCG TOOL 59    of the part is too close to the corner of the window  it is more comfortable to open the  rubberband at the opposite corner and t
6.    K     edge    thickness  3 sourcename   A  targetname   B     edge    thickness  3 sourcename   A  targetname   C     edge    thickness  3 sourcename   A  targetname   D     edge    thickness  3 sourcename   A  targetname   E     edge    thickness  3 sourcename   A  targetname   F     edge    thickness  3 sourcename   A  targetname   J     edge    thickness  3 sourcename   B  targetname   D     edge    thickness  3 sourcename   C  targetname   E     edge    thickness  3 sourcename   D  targetname   F     edge    thickness  3 sourcename   F  targetname   K     edge    thickness  3 sourcename   J  targetname   K     edge    thickness  3 sourcename   A  targetname   G     edge    thickness  3 sourcename   G  targetname   H     edge    thickness  3 sourcename   H  targetname   I     edge    thickness  3 sourcename   I  targetname   A       4 EXAMPLES OF GDL SPECIFICATIONS    Start of all       Figure 14  normal without fine tuning    The normal layout algorithm breaks the cycle  such that only one reverted edge is necessary     38    Start of all       Figure 15  normal with fine tuning    Compared to the previous layout  the fine tun   ing phase has balanced the position of the  node J  The long edge I  gt Start will not be  balanced since this would create additional re   verted edges     Start of all       Figure 16  minbackward  without fine tuning    This is nearly the same pic   ture as for normal  Again   only one reverted edge is  necessary  The layout al   gorithm max
7.   back     backedge    thickness  4 sourcename  15  targetname  12  label   back     edge    thickness  4 sourcename  13  targetname  14      bentnearedge    thickness  4 sourcename  14  targetname  16  label   false     bentnearedge    thickness  4 sourcename  14  targetname  15  label   true     bentnearedge    thickness  4 sourcename  12  targetname  13  label   true     bentnearedge    thickness  4 sourcename  4  targetname  8  label   false     backedge    thickness  4 sourcename  11  targetname  8  label   back     edge    thickness  4 sourcename   10  targetname  11      edge    thickness  4 sourcename  9  targetname  10      bentnearedge    thickness  4 sourcename  8  targetname  9  label   true     edge    thickness  4 sourcename  3  targetname  4      backedge    thickness  4 sourcename  7  targetname  4  label   back      edge    thickness  4 sourcename  6  targetname   7      edge    thickness  4 sourcename  5  targetname  6      bentnearedge    thickness  4 sourcename  4  targetname  5  label   true     edge    thickness  4 sourcename  2  targetname  3       If we use the orthogonal layout  the graph looks like a typical flowchart  Here  the down   factor should be large while the nearfactor and the upfactor must be zero  The result is  example 8     4 EXAMPLES OF GDL SPECIFICATIONS 37    Example 8     graph    title    CFG GRAPH   manhattan edges  yes  layoutalgorithm  dfs  finetuning  no  display edge labels  yes  layout downfactor  100  layout upfactor  0  lay
8.   no type                       pe           erp           xo  ppl       Figure 37  Example 10  Layout algorithm tree  smanhattan edges    edge is the product downfactor x priority    We want to have the shell Bourne left to the shell Mashey and csh right to Mashey  Thus  we also give the nodes at level 2 a horizontal order  However  csh is on level 3  and only its  edge crosses level 2  Thus we set the attribute horizontal  order for this edge  too  and now  this edge is drawn to the right of Mashey    To reduce the amount of specification  we use default attribute specifications for the height   width and borderwidth of nodes and for the style of edges  To differentiate  we use ellipses  for the different variations of the KornShell  triangles for C Shells and a rhomb for tc1  The  graph is acyclic  thus the layout algorithm minbackward is used  Edges are drawn by splines     Example 11     graph     title   shells   splines  yes  layoutalgorithm  minbackward  layout nearfactor  0  layout downfactor  100  layout upfactor  100       First the time scale    4 EXAMPLES OF GDL SPECIFICATIONS    node height  26  node width  60  node borderwidth  0   edge linestyle  dashed    node   node   node   node       title     title     title     title      1972    1976    1978    1980     future    Figure 38  Example 11    vertical order  vertical order  vertical order    vertical  order         1 horizontal_order  1     2  horizontal_order  1    sS  4j    46    4 EXAMPLES OF GDL SPECIFIC
9.   rithms  see  Sa94   Sa95       2 OVERVIEW OF THE LAYOUT PHASES 5    2 Overview of the Layout Phases    The task of the VCG tool is to parse a graph specification  to assign horizontal and vertical  positions to each node  if necessary  and to find polygon segments or splines for the edges  such that they do not overlap with nodes  and finally  to draw the resulting picture in a  window  The specification that is given as input to the VCG tool is a readable ASCII text   The output window can be used to browse through the graph  to shrink or enlarge the graph   to fold parts of the graph and to export a bitmap of the graph or a PostScript file  Graph  folding results potentially in a relayout of the graph  The layout of the graph can be influenced  in a wide range by attributes of edges  nodes and graphs  or by different variations of the  layout algorithm  Because graph layout and drawing is a rather complex process  the tool  gives messages in form of a single character to indicate its state     2 1 Parsing    The first phase of the tool is to parse the specification and to construct internal data structures  representing the graph  The specification may contain attributes denoting initially folded parts  of the graph  This phase is indicated by the message character    a        2 2 Folding    This phase is executed as start of each relayout  i e  after the start of the tool  or whenever  a folding operation was selected by the user  It is indicated by the message character
10.   to  move the window horizontally through the system of coordinates  The second lower scrollbar  is used to scroll the displayed window horizontally through the virtual window  i e  to fine  tune the horizontal position of the visible part of the graph    Note  if the virtual window is positioned  this causes a redrawing of a part of the graph   If the visible window is scrolled through the virtual window  this causes refresh of the visible  window  which is usually a much faster operation  because of a graphic buffer    The right scrollbar is used to set the scaling of the graph  If the scrollthumb is in the  middle of the scrollbar  the scaling is 10096  i e  it is normal size  The small buttons at the  beginning and end of each scrollbar can be used to increment or decrement the scrollbar value  in fine grained steps  The amount of increment or decrement depends on the selected mouse  button used to push onto the scrollbar buttons  The small button below the right scrollbar is  used to set an appropriate scaling such that the whole graph is completely visible  For large    5 USAGE OF THE VCG TOOL 50          Unfold Subgraph     gt   Node Information   gt   Position    Unfold Region    Pick Position             Figure 39  The Graph Window    graphs  this will set a large demagnification such that no details are anymore visible     5 3 Folding    As already mentioned  the graph can be partitioned into nested subgraphs  that can be folded  by selecting one of their nodes  an
11.   xvcg  filename     If the optional parameter filename is set to        the input file is  lt stdin gt   If filename is not  specified  the tool asks for the filename containing the graph description in GDL  If multiple  graph specifications should be visualized sequentially  the tool is invoked by    xvcg  multi filename  filenames filenames        Instead of terminating the tool after the visualization of filename   the tool is automatically  reinvoked to visualize filenames  filenames  etc  The command  xvcg  h  prints an explanation  of the usage on the screen  Other options of the tool are explained in the manual page  After  reading the input  the visualization layout is calculated with the parameters given in the GDL  file  The graph is drawn in a X11 window  Pet91   Interactive commands are entered by a  mouse menu  pull down menu using the left or right mouse button   A summary of commands  is shown in table 7     5 2 The Graph Window    The graph window consists of a drawing area where the graph appears  a text area be   low where the messages are printed  5 scrollbars and a small button  right  below the right  scrollbar   The menu becomes visible on a mouse click into the drawing area  as shown in  figure 39     5 USAGE OF THE VCG TOOL 49    Item Description    Fold Subgraph fold a subgraph to a summary node   Unfold Subgraph unfold a subgraph   Expose Hide Edges hide or expose edges and their regions   Fold Region fold a region of class k   Unfold Region unfold 
12.  13  28    label  13  19  22  25  33  53  late edge labels  19  55  layout algorithm  5  18  37  layout attribute  53   layout criteria  4   layout factors  55   layout parameter  55   layout phase  5   layout spline factor  21  layoutdownfactor  18  36  45  layoutnearfactor  18  36  45  layoutupfactor  18  36  45  left justify  16  24   left to right  20   level  7  10  16  23  26  30  37  53  lightblue  13  28   lightcyan  13  28   lightgreen  13  28   lightgrey  13  28  lightmagenta  13  28  lightred  13  28   lightyellow  13  28   lilac  13  28   line  26   line style  18  26   load  58   loc  16  23  62   local crossing optimization  9  21  55  65    magenta  13  28   manhattan edges  19  36  43  manhattan layout  19  20  manual page  48  maxdegree  8  18  40  maxdepth  8  18  38  64  maxdepthslow  8  18  37  39  64  maxindegree  8  18  42  maxoutdegree  8  18  37  41  maxspect  60   median  21    71    medianbary  9  21  55  mediancenter  9  21  55   message character  5  7  9 11  65  minbackward  8  18  37  38  45  64  mindegree  8  18  37  41  mindepth  8  18  39  64  mindepthslow  8  18  37  40  64  minindegree  8  18  41  minoutdegree  8  18  42   mouse button  48   mouse click  13  24  48  multipage  60   multiple input files  48    nearedge  11  20  28  30  31  nearfactor  18  36  45  nested graph  5  newline  29   node  11  22   node alignment  20  node attribute  22  node information  53  node label  22  33  53  node title  22   nodes  21  58   none  26   number
13.  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  4T  48    maxdepthslow with fine tuning          020002 ee eee  mindepth without fine tuning           len  mindepth with fine tuning       4 2 lll rs  mindepthslow without fine tuning             lle  mindepthslow with fine tuning          len    maxdegree without fine    tuning      2    lee ns    maxdegree with fine tuning       4    eere    mindegree without fine            mindegree with fine tuning     aoaaa  minindegree without fine tuning         eren  minindegree with fine tuning      soo  maxindegree without fine tuning         eres  minoutdegree without fine tuning    ooa  maxindegree with fine tuning      esoo  minoutdegree with fine tuning          leen  Example 10  Layout algorithm maxdepth                  0     Example 10  Layout algorithm tree  treefactor 0 9               Example 10  Layout algorithm tree  smanhattan edges                Example 11          The Graph Window      The Edge Class Menu of an Example                    02       The Follow Edge History Box                                   The Layout Parameter            Normal Flat View     Polar Fisheye View      Cartesian Fisheye View    The View Parameter Box          llle ens    The Export Box      The File Selector Box    39  39  39  40  40  40  40  41  41  41  41  42  42  42  42  43  44  45  46  50  51  52  54  55  56  57  58  59  60    1 INTRODUCTION 4    1 Introduction    Visualization allows better understanding
14.  Cpe RS                   Figure 44  Polar Fisheye View    This mechanism has similarities with the fisheye camera lenses in the photography  The  polar fisheye view  fig  44  is a coordinate transformation where the plane of the normal  coordinate system is projected onto a spheric ball  If we look onto this ball in 3 D  we have  a polar fisheye view  The point most near to us looks very large  it is the focus point  It  appears in the magnification that is currently valid due to the right scrollbar setting or one  of the scaling operations  Points near the border of the visible half of the ball are shown  very small  A polar fisheye view has also disadvantages  it distorts the graph  thus distances    5 USAGE OF THE VCG TOOL 57    between the nodes  angles between the edge segments  and even straightness of lines are not  anymore recognizable  Since the drawing of lines is optimized  it may even happen that we  see a crossing of lines when there is no crossing in the plane view  But these cases are very  seldom          VCG    expl fishex2a vc                 0     d    n       Es 12580  mE                        Figure 45  Cartesian Fisheye View    The cartesian fisheye view  fig  45  is a similar projection  The polar fisheye is a transfor   mation of the polar coordinate system  while the cartesian fisheye is a transformation of the  cartesian coordinate system  T he advantage is  in a polar view  horizontal and vertical lines  do not appear orthogonal  they seem to be b
15.  Edges    Time for Loading  sec     Time for Positioning  sec    12 35 3 1    Tree 4 is a binary tree of level 12  normal layout  not specialized tree layout         Table 15  Statistics  Times for Loading and Positioning      means    not measurable     i e  less than 1 sec     7 Related Work    During the work in the project COMPARE  we tested some visualization tools and algorithms   Each of these tools has certain advantages and disadvantages  but none of these tools combined  speed on large graphs with an appropriate folding mechanism  Nevertheless  these excellent  tools gave us many inspirations    We mentioned already the Edge tool  see  PaTi90    MaPa91    that has the most common  features with the VCG tool  Another visualization tool that works similar than the VCG tool  or the Edge tool is daVinci  see  FrWe93    This X11 tool reads a specification of a graph  written in the style of a functional language  The DAG tool and the DOT tool are described  in  GNV88    GKNV93  and  KoEI91   They allow the production of high quality graphs  for printing  The Graph      see  Hi93   is a graph editor that includes a large collection of    8 CONCLUSIONS 67    algorithm to create  analyze and lay out graphs interactively  D ABDUCTOR is described  in  Mis94   This tool is very powerful for the visualization of compound graphs     8 Conclusions    VCG is a tool that allows to visualize complex graphs in a compact way and in good per   formance  It can be used to show the compi
16.  backspace  29   bary  21  65   barycenter  9  21  55  barymedian  9  21  55  beep  29   bend point  10  12  bending reduction  22  65  bentnearedge  12  32  35  bitmap  5  11  59   black  13  28   blue  13  28   bmax  22   bold  28   bordercolor  16  24  borderwidth  16  24  bottom  20   bottom to top  20    69    bottom up  11  box  16  24    C escape  13   call graph  4   cartesian fisheye  21  57  center  20  60   center height  60   center node  52   center width  60   cfish  21   character set  29   class  5  6  17  24  26  50  51  class name  18  51   CLaX  4  33   cmax  22  65   cmin  21   color  13  24  26  28  30   color entry  18  28   color index  28   color map  13  18  28  comment  13  26   compiler  4   connected component  9  26  continuous  26   control character  13  29  control flow graph  4  33  coordinate  7  10   coordinate system  16  51  56  coordinate transformation  21  56  crossing  9   crossing optimization  21  crossing phasel  9   crossing phase2  9  21  55  65  crossing reduction  9  21  65  crossing reduction method  55  crossing weight  9  21  65  cyan  13  28   cycle  8  11  31  35  37    D ABDUCTOR  67  DAG tool  66    INDEX    darkblue  13  28  darkcyan  13  28  darkgreen  13  28  darkgrey  13  28  darkmagenta  13  28  darkred  13  28  darkyellow  13  28  dashed  26   data dependence graph  4  daVinci tool  66   default attribute value  12  45  depth first search  8  18  dfs  8  18  39  64   dirty edge labels  19  display edge labels  19  d
17.  layout nearfactor are 1  The nodes out_upfactor and layout nearfactor are  are pulled in direction of their parent 1  The nodes are not anymore pulled in  nodes  direction of their parent nodes     Figure 35  Example 10  Layout algorithm maxdepth    Example 10     graph     title   typed syntax tree   node    title   503160  label     Identifier ntst3  0   Y  node    title   503240  label   Identifier nx  0       3  node    title   502952  label   INTEGER     node    title   503304  label      VarDecl       node    title   TO  label   no type  H  node    title   T1  label   no type  H  node    title   T2  label   int  H  edge    sourcename   503304  targetname   503240     edge    sourcename   503304  targetname   502952     nearedge    sourcename   503160  targetname   TO  linestyle  dotted      nearedge    sourcename   503240  targetname      T1    linestyle  dotted      4 EXAMPLES OF GDL SPECIFICATIONS 44                                                  Decl fe type                                                           3 rer im  Goto  afro type Coy ffo type        ostat  fre type INTEGER  3                                     Identifier  sem e pope   Assian  a no ee  2       Identifier  b  0     Identifier  x  0       Ej        Identifier  x  0  ve          Figure 36  Example 10  Layout algorithm tree  treefactor 0 9    nearedge    sourcename   502952  targetname      T2    linestyle  dotted      4 5 The Combination of Features    The following example is taken from  
18.  near edges  The  nodes connected by near edges are drawn at the same level  example 3      Example 3     graph        list of nodes      node    title    A    node    title   B    node    title   C     node    title   D    node    title   E        list of edges      nearedge    thickness  3 sourcename    A  targetname   B     nearedge    thickness  3 sourcename    A  targetname   C     backedge    thickness  3 sourcename   C  targetname   D     nearedge    thickness  3 sourcename   D  targetname   E     edge    thickness  3 sourcename   D  targetname    A       4 EXAMPLES OF GDL SPECIFICATIONS 32    In some situations  we want to have edges that are horizontally anchored  but the target nodes  should not be at the same level  Such edges must have a bend point  Here  we can use bent  near edges  A   B and D   E in example 4      Example 4     graph        list of nodes      node    title    A    node    title   B    node    title   C     node    title   D    node    title   E        list of edges      bentnearedge    thickness  3 sourcename    A    targetname   B       nearedge    thickness  3 sourcename   A  targetname   C     backedge    thickness  3 sourcename   C  targetname   D     bentnearedge    thickness  3 sourcename   D  targetname   E     edge    thickness  3 sourcename   D  targetname   A       In order to indicate that node  D  represents a struct with two fields  whose first points to   E  and second points to  A   we can use the attribute anchor for the specifi
19.  node n with respect to an edge class k is the set of nodes which are  reachable from n by edges of classes less or equal than k  It is possible to fold a connected  region of n into one node  It is also possible to select a node m inside the region of n  where the folding stops  in this case  the connected region of n without the connected  region of m is folded  or  with other words  the folding of the region of n stops at the  predecessors of m  This method can be used to visualize approximated path     A simple example is a tree where all edges have the same class  Folding a node n is  folding the whole subtree starting from n into one summary node  see figure 2   Folding  n until m  where m is in the subtree of n  is folding the path from n to m and all  subtrees along this path except the subtree that starts from m  see figure 3      Note that nested foldings are possible  Folding regions or subgraphs may interfere with  hiding of edges  In this case  first the summary node of the folded region or subgraph is  calculated  and then the hiding of edges is performed     2 3 Assignment of Ranks    After folding  all visible nodes are determined  If all visible nodes are specified by the user  with valid coordinates  the graph is drawn immediately  However  if the coordinates of at least  one node is missing  an appropriate layout must be calculated  The first pass places the nodes  into discrete ranks  All nodes of the same rank will appear at the same vertical position  Th
20.  not readable because it is too small     e Statistics shows the statistics of the graph  which includes the size of the graph  the  number of nodes and edges  the number of crossings etc     5 6 Scaling    Additionally to the right scrollbar  the submenu Scale is used to scale the current visualization  up and down  It sets the global values of stretch and shrink     5 USAGE OF THE VCG TOOL    New shrink       Item New stretch  normal 1   400 96   stretch   4  200 96   stretch   2  150 96 stretch   3  90 96 stretch   9  80 96 stretch   8  70 96 stretch   7  60 96 stretch   6  50 96 stretch  25 96 stretch    1  shrink  shrink   shrink   2  shrink   10  shrink   10  shrink   10  shrink   10  shrink   2  shrink   4       Layout Attributes    IO edge labels          dirty labels  iN  near edges    im double edges  E finetuning          splines    L  manhatten edges  L  smanhatten edges  O priority phase  O straight phase    Adding Labels  Layout Factors  Down factor  1  Up  factor  1  Hear factor  i  X Base  5  Y Base  5  X Space  25  Y Space  70  XL Space  12  Splinefactor 70  Time limit     Layout Speed    Orientation        top to bottom  O bottom to top  O Jeft to right  O right to left    Crossinq Heuristics       barycenter   O mediancenter   O barymedian   O medianbary   Em optimize phase 2    Node Ali nk Im optimize local              Alignment  O top  B center    Arrow Heads  m port sharing  E fixed arrow heads    O bottom    m after folding    after partitioning  Maxim
21.  of crossings  53  number of edges  53  number of nodes  53    orange  13  28   orchid  13  28   orientation  20  55  59   orthogonal layout  10  19  20  36  57  outermost graph  22    panner  60   paper format  59   paper size  59   parsing  5   PBM format  59   pendulum method  10  19  22  65  pick position  52  57   pink  13  28   pmax  22  65    INDEX    pmin  22   polar fisheye  21  56  polygon segment  10  port sharing  20  position  52  positioning  49  51  PostScript  5  11  59  PPM format  59  priority  8  26  44  priority phase  19  pull down menu  48  purple  13  28    rank  7  16  20  23  44  red  13  28   redraw  49   refresh  49   region  6  12  24  51  reload  58  replacement edge  13  rescan  60   rhomb  16  24   right justify  16  24  right to left  20  rmax  22   rmin  22   root screen  16  rubberband  52  58  rubberband method  10  22  43  ruler  53    save to file  58   scaling  16  24  49  53  60  scrollbar  48  51  scrolling  49  51   self adaptable fisheye  21  58  shape  16  24  35   shrink  16  24  53   single nodes  19  smanhattan edges  20  43  smax  22  65   solid  26   sourcename  25   spanning tree  7  40    72    specification  5   speedup  63   spline  10  21  45  58  65   spline factor  21   spread level  20   statistics  53   stdin  48   straight line phase  10  19  22  65  straight phase  19   stretch  16  24  53   string  13   strongly connected component  7  18  subgraph  5  11  50   summary node  5  6  12  24  50  syntax tree  4    tabula
22.  of the intermediate representations  IRs  used in  compilers  Many parts of the IR are trees or graphs  e g   the syntax tree  the control flow  graph  the call graph or the data dependence graph  WiMa92   A simple textual visualization  of trees and graphs is often too confusing or unreadable  A special visualization tool that  shows trees and graphs in a natural way is more helpful  It allows powerful debugging of  internals of the compiler and the examination of the effect of engines on the IR    In the early phases of the project COMPARE  the Edge tool  PaTi90  was used for this  purpose  This tool has the advantage to be easily adaptable by reading a graph specification  from a file that can be used as interface format between engines  compiler phases  and the  tool  Further  the tool can be used for postmortem debugging  which is important if the  compiler graphs are such large that the online debugging would slow down the compiler to  an unreasonable degree    However  the Edge tool is very slow on typical IR graphs  e g   visualization of a syntax  tree of a CLaX program of 200 lines needed more than 20 minutes on a Sun Sparc ELC   and  the layout is sometimes a little bit strange for the graphs used in compilers  Furthermore  it is  only possible in a limited way to show condensations of graphs  that often help to understand  algorithms in compiler construction  To overcome these deficiencies  a new visualization tool is  implemented  the VCG tool  It combines the a
23.  of the layout  the picture will be more ugly  First  we should try    6 EXPERIENCES 65    to skip the crossing reduction phase 2  option  nocopt2  attribute crossing  phase2   It  probably takes the most time  which we can recognize if the message character    B    appears  a long time  Next  we should try to limit the iterations for the crossing reduction  option   cmax  attribute cmax  or try to select another crossing weight  option  bary  etc   attribute  crossing weight   Normally  it is not necessary to switch off the local crossing optimization   because this step is very fast and effective    If the graph is very unbalanced  then the pendulum method probably needs a lot of time   We can recognize this if the message character    m    appears a long time  In this case  we  limit the iterations for the crossing reduction  option  pmax  attribute pmax   If the message  character    S    does not disappear immediately after the pendulum method  then we limit the  straight line fine tuning phase instead  option  smax  attribute smax      The other parameters normally need not to be changed  because the corresponding phases  are very fast  In particular  bending reduction improves the layout quality much and is so  fast  such that the option  bmax is needed very seldom  Further  the fast mode  option  f   should be avoided  because it reduces the iteration limits so much that the result is very ugly   The drawing of splines is very slow  Thus it should be avoided on large 
24.  of the menu item Ruler gives a hint of the current position of the virtual  window  Horizontal and vertical rulers are switched on or off at the margins of the displayed  window to display the coordinates  Of course  this does not work for fisheye views  since the  coordinate system is distort     5 5 Node Information    This submenu contains several points that allow to see more information about the nodes and  the graph     e Info 1  Info 2  Info 3  The name of these items can be selected as attribute infoname  in the specification  otherwise the item numbers    1        2     and    3    appear  After the  selection of nodes  their info fields are displayed  The info fields can be used to provide  the nodes with additional textual information that would be too large as labels of the  nodes     Layout Attributes  After the selection of nodes  their layout attributes are shown   This includes the attributes of the specification  but also the calculated position  If a  horizontal or vertical order was specified  it may happen that this order was corrected   because a level was not possible for a node or the layout algorithm failed to validate  the specified horizontal orders  In this case  we see for instance the entry 1     5 which  means that the order was specified to be 1  but was corrected by the layout algorithm  to the value 5     Label of Node displays the label of a node in normal size  This is useful  if the graph  is shrunken very much  such that the label text is
25.  subgraph summary node  that appears if the subgraph is folded  box  rhomb  ellipse  and triangle     vertical_order is the level position  rank  of the summary node of an inner subgraph  if this  subgraph is folded  We can also specify level  int  The level is only recognized  if an  automatical layout is calculated  See sections 2 3 and 3 6 for more details     horizontal_order is the horizontal position of the summary node within a level  The nodes  which are specified with horizontal positions are ordered according to these positions  within the levels  The nodes which do not have this attribute are inserted into this  ordering by the crossing reduction mechanism  see section 2 4   Note that connected  components are handled separately  thus it is not possible to intermix such components  by specifying a horizontal order   If the algorithm for downward laid out trees is used  the horizontal order influences only  the order of the child nodes at a node  but not the order of the whole level     xmax  ymax specify the maximal size of the virtual window that is used to display the  graph  see figure 5   This is usually larger than the displayed part  thus the width and  height of the displayed part cannot be greater than xmax and ymax  Only those parts  of the graph are drawn that are inside the virtual window  The virtual window can be  moved over the potential infinite system of coordinates by special positioning commands     3 GRAPH DESCRIPTION LANGUAGE 17    virtual windo
26.  the attributes are inherited  by one of these nodes nondeterministically  see section 2 2   If foldnode attributes are  specified  then the summary node attributes are inherited from these attributes     shape specifies the visual appearance of a node  box  rhomb  ellipse  and triangle  The  drawing of ellipses is much slower than the drawing of the other shapes     textmode specifies the adjustment of the text within the border of a node  The possibilities  are center  left_justify and right_justify     borderwidth specifies the thickness of the node   s border in pixels     color is the background color of the node  If none is given  the node is white  For the possi   bilities  see the attribute color for graphs  section 3 1      textcolor is the color for the label text   bordercolor is the color of the border  Default color is the textcolor     infol  info2  info3 combines additional text labels with a node or a folded graph  infol   info2  info3 can be selected from the menu  The corresponding text labels can be shown  by mouse clicks on nodes     3 GRAPH DESCRIPTION LANGUAGE 25    3 3 Edge Attributes    Edge specifications also occur as parts of graph specifications  The edge information is de   limited by the keywords edge    and    The attributes sourcename and targetname are  mandatory  They specify the source and target node of the edge  It is possible to specify  default attribute values of edges for every subgraph by edge   gt  attribute keyword  gt     gt  at   
27.  the cor   responding direction     left  rright  uup  ddown  move the virtual window  or focus point  256 pixels to the  corresponding direction     5 USAGE OF THE VCG TOOL 52    o llleft  rrright  uuup  dddown  move the virtual window  or focus point  one screensize  to the corresponding direction  The screensize is given by the attributes width and  height of the outermost graph  see section 3 1      e origin move the virtual window to the position  0 0   or move the focus point to the  center of the graph     Additionally  there is the item Position in the mouse menu that allows to change the  absolute position of the virtual window  and the item Pick Position which allows to select  the new origin of the coordinate system by mouse picks  the item Center Node which centers  a node whose title was entered in the virtual window  and the item Follow Edge that allows  to follow an edge to its start or end point    The operation Pick Position has two modes  New origins  focus points for fisheye views   see 5 8  can be selected continuously by short left mouse clicks  This operation continues until  a right mouse button is selected  This is helpful to browse through the graph with fisheye  view  e g   to move the focus point over all points of interest  However  if the left mouse button  is pressed  hold and drawn over the window  a rubberband appears  In this case  not only  the origin is set but also a scaling is calculated such that just the region of the rubberband is  magn
28.  the text displayed inside the node  If no label is specified then the title of the node will  be used  Note that this text may contain control characters like NEWLINE that influences  the size of the node     3 GRAPH DESCRIPTION LANGUAGE    23    attribute name default value  title   label   loc x   loc y  vertical_order  horizontal_order  width   height   shrink   stretch    attribute type  mandatory  string of the title  none    string  string  int  int none  unspecified  unspecified   width of the label  int height of the label  int 1   int 1   none    int  int  int    int   box  rhomb       center  left justify  right  justify center  int 2    folding  shape  textmode  borderwidth    color    box    textcolor  bordercolor    black  white  red       black  white  red       black  white  red         white or transparent  black    textcolor    empty string  empty string  empty string    infol  info2  info3    string  string  string       Table 3  Node Attributes    loc is the location as x  y position relatively to the system of coordinates of the graph     Locations are specified in the form 106    x  zpos y  ypos    The locations of nodes  are only valid  if the whole graph is fully specified with locations and no part is folded   The layout algorithm of the tool calculates appropriate x  y positions  if at least one  node that must be drawn  i e   is not hidden by folding or edge classes  does not have  fixed specified locations     vertical order is the level position  
29.  xspace and yspace  if splines are too sharp  we reduce  the spline factor and increase xlspace  if the layout iteration phases run into timeouts  we  increase the maximal number of iterations  etc    The layout parameters become valid  if the dialog box is closed by selecting the    Okay     button  This yield a relayout of the graph  On button    Cancel     the old parameters remain  valid        VCG  Jexpl fishex2a vcg                Figure 43  Normal Flat View    5 USAGE OF THE VCG TOOL 56    5 8 View Parameters    After the layout  we have a view onto the graph  The    view    is the way how the graph  appears  Normally  it appears in the window that realizes a flat coordinate system with linear  scale  see fig  43   Unfortunately  large graphs do not fit well into a small window such that  the normal view either shows the full graph demagnified such that no details are visible  or it  shows a small region in an appropriate magnification such that the node labels are readable   But then  only a part of the graph is visible and the structure of the whole graph and the  relations between this part and the remaining graph is not recognizable    The idea of a solution of this conflict is to distort the coordinate system  The main point  of interest is the focus point  It is magnified such that its label is readable  Parts far away  from the focus point are demagnified  Thus  the whole graph or at least a very large part is  visible        4VCG    expl fishex2a vcg       T   
30. 098 b    fi099 c    fi100 d    fi101 e   102             fi103 g   fi104 h   106           105         j   107         k    F1108 1   109        m   110        n   111        o   fi112 p   113        q   114        r   115         s   116        t   117        u   118        v   119        w  N  1120 121              y   122        z   126         125          124         123             Fi127    fi131 N  1132 Mf 1133 Nf 1134 Nf  1135    0        fi129    8        Nf 1136 N  1137 Nf 1138 Nf 1139 Nf 1140  fi141  f1142         3   1        7 150        7 149        7 148        7 147        7 146         145           fi144       fi152      f1153  fi154          1              Ffi156  fii57 7   8  1              fi159 7   fi160 N  1161     163          162              fi164          fi165          fi166 i   167             fi168 7    fi169      N  1170      172        gt  171         a   175       6 174          173        7  MIS       f1177       181           180        3 179        2 178         p   182        q   183          gt     18       4          1    fi186 2   N  1187  lt    N  1188     191          190         189             fi192 A  fi193 A    fi194 A    fi195 A    fi196 A   197        A    fi198       fi199 C   fi200      N  i201      203       5 202             205       1 204        1    fiz06 1          7 1   fi208       fiz09 210                  211             212             213        O    fi214 0    fi215 x   fi216       fi217      218             219  
31. 4   205 92 92    indian red       introduce the colors    khaki        AliceBlue    and    indian red    with the color index 32  33 and 34   If we want to use blue  which is a default color  we can specify color  blue or color  1  If  we want to use khaki as a color of a node  we cannot specify color  khaki since this name     khaki    is unknown for the VCG tool  Instead  we specify color  32    More tricky  we can even overwrite the default colors  If we specify    colorentry 1   205 198 115    khaki     colorentry 2   210 218 255    AliceBlue     colorentry 3   205 92 92    indian red       then the default colors blue  red and green are overwritten by khaki  AliceBlue and indian red   If we now specify color  blue  then the color khaki will appear  Table 5 shows the default  color map     white blue red green 03  yellow magenta cyan darkgrey 0T  darkblue darkred darkgreen darkyellow 11  darkmagenta darkcyan gold lightgrey 15    lightblue lightred lightgreen lightyellow 19  lightmagenta lightcyan lilac turquoise 23  aquamarine khaki purple yellowgreen 27  pink orange orchid black 31       Table 5  Color Codes of the Default Color Map    3 6 Further Remarks    A few important restrictions should be considered  All titles of graphs and nodes must be  unique  In order to decide which are the source and the target node of an edge  this restriction  is very important    A node can only be touched by 2 near edges  If more than 2 near edges are specified to  touch the node  the 
32. 4 sourcename    4 sourcename    4 sourcename    4 sourcename    Entry_point  test    test b    test c 5    Exit point  test              false       Figure 11  Example 6       8  targetname   12  label   false         16  targetname    15  targetname    13  targetname    14  targetname    14  targetname    12  targetname       12  label      12  label   w14        16  label     15  label      13  label      back      back        false      true      true          4  targetname   8  label   false      11  targetname  8  label   back          10  targetname    9  targetname      w11     qo          8  targetname  9  label   true       i3  targetname      t4ue       7  targetname   4  label   back         6  targetname      5  targetname                    6        4  targetname   5  label   true         2  targetname                  34    4 EXAMPLES OF GDL SPECIFICATIONS    This previous example was a very simple translation into a control flow graph  The start   exit and branch nodes can be better recognized if we use different shapes for them  The edges  that close a cycle can be specified as back edges  in order to see the uniform flow of the other  edges  The decision edges should be anchored left and right to the branch nodes  thus  we    use bent near edges  The    Example 7    graph    title    CFG GRAPH   layoutalgorithm  dfs  finetuning  no  display edge labels  yes  yspace  55      title       title       title       title       title       title       title       ti
33. 8  The File Selector Box    5 USAGE OF THE VCG TOOL 61    To scroll through the list of file name entries  a scrollbar and the buttons    next    and     prev    are available  An entry is selected as file name on a double mouse click on it  The  file name becomes valid if the dialog box is closed by the button    Okay     Note that the file  selector box is immediately reopened  if the file name was not appropriate  e g   if we try to  read a nonexisting file or to write to an existing file     normal commands    quit the tool   show or hide the ruler   load another file   reload the same file   change layout   change view   hide expose the corresponding edge class  show the info field 1 of nodes   show the info field 2 of nodes   show the info field 3 of nodes    position commands    d  arrow keys  c   scroll to the left  right up down  b   go to the origin  0 0   enter a position by coordinates  pick a position by the mouse  position such that a node is centered  follow an edge  stretch  shrink    set the scale factor to normal       Table 8  Key Commands in the Graph Window    5 11 Animations    On some computer systems  there is a simple possibility to implement animations  The  signal USRSIGI  on SunOs  UNIX software signal 30  e g   kill  30  causes the tool to  reload the actual GDL file  An engine  or some other program  can continuously produce  GDL specifications into a file while VCG visualizes in parallel according to this file  When  the engine has produced one 
34. ATIONS    node   node   node   node   node   node     edge   edge   edge   edge   edge   edge   edge   edge   edge       title   1982  vertical order     title   1984  vertical order     title   1986  vertical order     title   1988  vertical order     title   1990  vertical order     title   future  vertical order     horizontal_order  1      5   6    7j  8j  9      10 horizontal_order  1        sourcename   1972     sourcename   1976     sourcename   1978     sourcename   1980     sourcename   1982     sourcename   1984     sourcename   1986     sourcename   1988     sourcename   1990     targetname   1976   targetname   1978   targetname   1980   targetname   1982   targetname   1984   targetname   1986   targetname   1988   targetname   1990          Qe         ee         targetname   future          We need some invisible edge to make the graph fully connected      Otherwise  the horizontal order attribute would not work     edge   edge     nearedge   1 sourcename       sourcename   ksh i  targetname      Perl       sourcename   tcsh  targetname      tcl     nearedge    sourcename   1988        Now the shells themselves     Note  the default value  1 means  no default    node height   1  node width   1  node borderwidth  2  edge linestyle  solid    node   node   node   node   node   node   node   node   node   node   node   node   node   node   node   node   node   node   node     edge   edge   edge   edge   edge   edge   edge   edge   edge   edge       title    Thompson
35. DL SPECIFICATIONS 43    4 4 Tree Layouts    The following example shows a typed syntax tree  This tree can either be laid out by the  specialized algorithm for downward laid out trees  or by the normal algorithms using cross   ing reduction and rubberband methods  The layout of a tree is quite strange  if the lay   out_downfactor is not used  The incoming edges draw the nodes too much into the direction of  of the parent node  The nicest layout is produced by the specialized tree algorithm with a tree  factor of 0 9  If an orthogonal layout is needed  the attribute smanhattan_edges can be used   For trees  it is more appropriate than the normal manhattan layout with manhattan_edges                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Positioning by the rubberband method  Positioning by the rubberband method   The layout  downfactor  layout_upfactor The layout  downfactor is 10  The lay   and
36. GKNV93  and shows the dependencies of different shell  programs  To visualize it  a combination of features of the VCG tool is used  There is a time  scale that should indicate the origin of the programs  The shells themselves are nodes that  must be placed at the same rank as their birth dates  We use the attribute vertical_order  to set the nodes to these positions  Furthermore  we want to have the time axis at the left  side of the shell dependence graph  This is achieved by the attribute horizontal_order at  some of the nodes  However  this attribute only works if the graph is connected  Thus  we  create three invisible edges to make the graph connected    Invisible edges  as all other edges  influence the positions of the nodes as they would pull  their adjacent nodes together  To avoid this effect for the invisible edges  we set the priority  of the invisible edges to zero and the priority of the visible edges to 100  There are many  possibilities to change the priority  we can set the attribute priority  but we can also set  the layout factors downfactor  upfactor and nearfactor  The real priority of a downward    4 EXAMPLES OF GDL SPECIFICATIONS 45    E CET        Identifier  tst3  0                   pea  pene                 Stat  afre type Starlist  4  no type    15e1   pee  9  re type                                                 5 int ME Am   Boto  a no type  estat  afro type INTEGER  af    Identifier  b  0                                                       
37. Graph Editor      Software  Practice  amp  Experience  vol  20  no  S1  pp 63 88  1990    Sander  Georg  Graph Layout throught the VCG Tool  technical report A03 94   Universit at des Saarlandes  FB 14 Informatik  1994 available via ftp from  ftp cs uni sb de  file  pub graphics vcg doc tr A03 94 ps gz    Sander  Georg  Graph Layout throught the VCG Tool    in Tamassia  Roberto  Tollis  Ioannis G   Editors  Graph Drawing  DIMACS In   ternational Workshop GD 94  Lecture Notes in Computer Science 894  pp  194   205  Springer Verlag 1995    Sugiyama  Kozo  Tagawa  Shojiro  Toda  Mitsuhiko  Methods for visual under   standing of hierarchical system structures  IEEE Transactions on Systems  Man   and Cybernetics SMC 11  No  2  pp  109 125  Feb  1981    SunView Programmer s Guide  Revision A of 17 February 1986     Wilhelm  Reinhard  Maurer  Dieter    bersetzerbau  Theory  Konstruktion   Generierung  Springer Verlag 1992    Peterson  Chris D   X11 Athena Widget Set     C Language Interface  Revision  notes to X11 R5  1991     Index  9 dot printer  59    acyclic  8  18  37  45  alert  29   alignment  20  anchor  28  32  anchor point  11  26  animation  61  annotation  5  18  aquamarine  13  28  arrow color  26  arrow head  20  26  arrow mode  20  arrow size  26   arrow style  26  attribute  11  12  attribute order  12  attribute value  12  attribute value  default  12  45    backarrow color  26  backarrow size  26  backarrow style  26  backedge  11  31  35  background color  13  24 
38. VCG    Visualization of Compiler Graphs    User Documentation V 1 30    Georg Sander  sander cs uni sb de  Universitat des Saarlandes  66041 Saarbr  cken  Germany    Feb  9  1995    Copyright notice    1993 1995 by I  Lemke  G  Sander and the CoMPARE Consortium    This work is supported by the ESPRIT project 5399 COMPARE  We thank the COMPARE Consortium for the per   mission to distribute this software and this documentation freely  You can redistribute them under the terms of the  GNU General Public License as published by the Free Software Foundation  version 2 of the License  The members  of the COMPARE Consortium are ACE Associated Computer Experts bv  GMD Forschungsstelle an der Univer   sitat Karlsruhe  Harlequin Limited  INRIA  STERIA  Stichting Mathematisch Centrum  CWI   and Universitat des    Saarlandes     The COMPARE Consortium will neither assume responsibility for any damages caused by the use of its products  nor  accept warranty or update claims  This product is distributedin the hope that it will be useful  but WITHOUT ANY  WARRANTY  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR  PURPOSE  See the GNU General Public License for more details     The information contained in this document is subject to change without notice     CONTENTS    Contents   1 Introduction   2 Overview of the Layout Phases  2 1 Parsing    2     gt                                 2 3 Assignment  gt                                                2 4 Redu
39. a region   Scroll scroll the virtual window   Node Information show the infol  info2  or info3 text  the label  or layout attributes of a node    Position position the virtual window absolutely    Pick Position position the virtual window accordingly to mouse position    Center Node position the virtual window to center a node   Follow Edge center the node at the end of an edge in the window   Ruler switch position rulers on or off   Layout change the layout parameters of the graph   View change the view parameters   Scale set  shrink stretch  factor for magnification   File store the graph in VCG  PBM  PPM or PostScript format   load a new file  or reload the actual file again   Quit exit the tool       Table 7  Menu Items    As described in section 3 1  the displayed window shows a part of the virtual window that  contains the actually drawn part of the graph  see figure 5   Parts that are not inside the  virtual window are not drawn because of performance reasons  The displayed window can be  closed or opened  but cannot be larger than the virtual window  The first left scrollbar is used  to position the virtual window to a y coordinate  i e  to move the window vertically through  the system of coordinates  The second left scrollbar is used to scroll the displayed window  vertically through the virtual window  i e  to fine tune the vertical position of the visible part  of the graph     The first lower scrollbar is used to position the virtual window to a x coordinate  i e
40. al Iteration Factors  Crossingred   inf   Mediumshifts  100  Centershifts  100  Straightlin   100  Bendingsred   100  Minimal Iteration Factors  Crossingred   0  m         I  HMediumshifts  0   T   Centershifts  0   5T     inf  7            O 5105218 Ly normal    O medium     fast amp ugly    Partitioning Alqorithm    O normali    O minbackward  iO maxdepth     maxdegree  JO mindepth     mindegree    O maxindegree    minindegree  O maxoutdegree     minoutdegree  O maxdepthsiow     mindepthslow         tree layout       Figure 42  The Layout Parameter Box    54    5 USAGE OF THE VCG TOOL 55    5 7 Layout Parameters    After the selection of the menu item Layout  a dialog box appears  see fig  42   Here  we can  select the way and whether edge labels are drawn  the orientation of the graph  see attribute  orientation   the crossing reduction method  barycenter weights if the degree of the nodes  is high  mediancenter weights if the degree is small  or one of the hybrid methods barymedian  or medianbary  the crossing reduction phase 2 or the local optimization phase can also be  switched on or off   the node alignment  see attribute node  alignment   the mode for the  arrow heads  see attribute port sharing and arrow  mode  and the layout algorithm  The  attribute late  edge  labels corresponds to the selection of the point    Adding labels     after  partitioning   Further  we have access to all layout factors by some scrollbars  for instance   if the graph is too dense  we set
41. al fine tuning phase tries to recognize long edges and tries to position these  edges by long line segments with gradient 90 degree  This is useful for the orthogonal layout  methods  The message character    S    indicates this phase    Unfortunately  both physical simulations need not to be convergent  i e  it may happen  that they are iterated infinitely often without resulting in a stable layout  These cases are  seldom  To prevent infinite execution  the number of iterations is artificially restricted  The  running in such a    timeout    situation is indicated by the message character    t        2 6 Bending of Edges    If a graph contains nodes with different sizes  it might happen that an edge starting at a very  small node is drawn through a neighbored large node  To avoid this situation  we allow that  edges are bend at certain points  Also  if an orthogonal layout method is selected  the edges  are bend such that only orthogonal line segments exist  These bendings are calculated in an  iterative phase indicated by the message character    e        2 7 Drawing    Finally  the graph is drawn in a window  or it is exported into a file  Edges can be drawn  as polygon segments or optionally as splines  The drawing of splines is very slow  thus it is  indicated by the character    d        3 GRAPH DESCRIPTION LANGUAGE 11    The exporting into PostScript or into bitmap formats  PBM and PPM  is also possible  and is indicated by further message characters     3 Graph Descr
42. and stretching factor of the node  The values of the  attributes width  height  borderwidth and the size of the label text is scaled by    stretch  shrink   gt  100  percent  Note that the actual scale value is determined by the  scale value of a node relatively to a scale value of the graph  i e  if  stretch shrink      2 1  for the graph and  stretch shrink     2 1  for the node of the graph  then the  node is scaled by the factor 4 compared to the normal size  The scale value can also be  specified by scaling  float     folding specifies the default folding of the nodes  The folding  amp   with  amp   gt  0  means that the  graph part that is reachable via edges of a class less or equal to     is folded and displayed  as one node  There are commands to unfold such summary nodes  see section 5  If no  folding is specified for a node  then the node may be folded if it is in the region of  another node that starts the folding  If folding 0 is specified  then the node is never  folded  In this case the folding stops at the predecessors of this node  if it is reachable  from another folding node  The summary node inherits some attributes from the original  node which starts the folding  all color attributes  textmode and label  but not the  location   A folded region may contain folded regions with smaller folding class values   nested foldings   If there is more than one node that start the folding of the same region   this implies that the folding class values are equal  then
43. ape  ellipse     Mashey      Bourne  H     esh    horizontalorder  4    targetname      ksh       targetname      esh       targetname    vsh  H  targetname   System V     targetname    v9sh  H  targetname   Formshell    targetname    Bash  H    4T    5 USAGE OF THE VCG TOOL    edge    sourcename   csh  targetname   tcsh  H  edge    sourcename   csh  targetname      ksh       edge    sourcename   Formshell  targetname   ksh  horizontalorder  4    edge    sourcename   esh  targetname      ksh       edge    sourcename      vsh    targetname      ksh       edge    sourcename      ksh    targetname     ksh i       edge    sourcename   System V  targetname   POSIX     edge    sourcename    vOsh  targetname   rc  H  edge    sourcename   ksh i  targetname   KornShell     edge    sourcename   ksh i  targetname    Bash  H  edge    sourcename   KornShell     targetname    Bash    H  edge    sourcename   KornShell   targetname   POSIX  H  edge    sourcename   KornShell     targetname   ksh POSIX       48    5 Usage of the VCG tool    The usage of the VCG tool is very simple  It is designed as an auxiliary tool that works  in combination with programs that provide automatically the input of the tool  Thus  the  possibilities to change the visualized graph interactively are very limited  The interactive  commands are concentrated to improve the readability of existing graphs  i e  to show impor   tant parts and hide other parts     5 1 Starting the Tool  The invocation of the VCG tool is 
44. cation of the    Field1  Field2    edges  example 5         Figure 9  Example 4 Figure 10  Example 5    Example 5     graph        list of nodes  gt    node    title    A    node    title   B    node    title   C     node    title   D  label     Field1 nField2       node    title   E        list of edges      bentnearedge    thickness  3 sourcename    A  targetname   B       nearedge    thickness  3 sourcename    A  targetname   C     backedge    thickness  3 sourcename   C  targetname   D     edge    thickness  3 sourcename   D  targetname   E  anchor  1    edge    thickness  3 sourcename   D  targetname   A  anchor  2      4 EXAMPLES OF GDL SPECIFICATIONS 33    4 2 A Control Flow Graph    Example 6 is a control flow graph of a procedural program  The nodes contain the text  of statements as labels  Not all edges have labels  The displayed program  in the pseudo  language CLaX  consists of a procedure test and a main routine     PROCEDURE test  VAR b   INTEGER  c   INTEGER      BEGIN  b  c  5   END  BEGIN    main routine of a nonsense program           1   WHILE  x   1  DO           2   test   x  1    x    3   OD   WHILE  x   1  DO           4   x    5   test   x  2     OD   WHILE  x   1  DO  x    6   IF  x   7  THEN x    8  ELSE test   x  3     FI   OD   END    Example 6     graph    title    CFG GRAPH   splines  yes  layoutalgorithm  dfs finetuning  no  display edge labels  yes  yspace  55  node    title  18  label   test_b      test c 5     node    title  17  label   Exit
45. cified for subgraphs   width of root screen   90   height of root screen   90   5   5   20   1    5 tspace if polygons are used    2 xspace if splines are used  70   1   1   1   none   1 2       1  2  or 3    default color map    Table 1  Graph Attributes  Part 1    attribute name  layoutalgorithm    layout_downfactor  layout_upfactor  layout_nearfactor  layout_splinefactor  late_edge_labels  display_edge_labels  dirty_edge_labels  finetuning  ignore_singles  straight_phase  priority_phase  manhattan_edges  smanhattan_edges  near_edges  orientation  node_alignment  port_sharing  arrow_mode  spreadlevel  treefactor  crossing_phase2  crossing_optimization  crossing_weight    view  edges  nodes  splines  bmax  cmax  cmin  pmax  pmin  rmax  rmin  smax    Table 2  Graph Attributes  Part 2    3 GRAPH DESCRIPTION LANGUAGE    attribute type  maxdepth  mindepth   minbackward        int  int  int  int  yes   yes   yes   yes   yes   yes   yes   yes   yes   yes   top to bottom       top  bottom  center    no  no  no  no  no  no  no  no  no  no    yes  no  fixed  free   int   float   yes  no   yes  no   bary  median  barymedian  medianbary  cfish  pfish  fcfish  fpfish  yes  no   yes  no    yes  no    int  int  int  int  int  int  int  int       15    default value  normal    yes  top to bottom  center   yes   fixed   1   0 5   yes   yes   bary    normal view  yes   yes   no   100   infinite   0   100    3 GRAPH DESCRIPTION LANGUAGE 16    bordercolor is the color of the summary node   s b
46. ction of Crossings    o oaaae  2 5 Calculation of Coordinates       aaa  2 6 Bending of Edges    re  2 7             3 Graph Description Language  3 1 Graph Attributes    aaa ee s  3 2 Node Attributes 0000 00  3 3 Edge Attributes  2    ee ee  3 4 Grammar of            3 5             3 6 Further Remarks        les   4 Examples of GDL Specifications  4 1 A Cyclic Graph      ee  4 2 A Control Flow Graph             4 3 The Effect of the Layout Algorithms         lees  4 4 Tree Layouts         4 22 seem ee  4 5 The Combination of Features          2    5 Usage of the VCG tool  5 1 Starting the Tool            5 2 The Graph Window       2 20 20    20 0002 ee ee ee            ee ee  5 4 Positioning        4  le ee Rs  5 5 Node Information         4  2 2 aa  5 6 Scaling    22e hs  5 7 Layout Parameters                      5 8 View Parameters      4  4  4 2 4 el ee es  5 9 File Operations     0 llle Rs  5 10 The File          5 11 Animations     2    2    0  s  5 12 Keyboard Commands                      ee  5 13 Speedup the Layout       aaa   6 Experiences    11  13  22  25  26  27  28    30  30  33  37  43  44    48  48  48  50  51  53  53  55  56  58  60  61  62  63    65    LIST OF TABLES    7 Related Work    8 Conclusions    List    00 N Do BWM rR       2 Pre rE     oP WwW Mr        List    00 N Do BWM rR    co   O 00 0 4                  4        of Tables    Graph          Graph Attributes  Part 2           les  Node Attributes          Edge Attributes       2  222 ll s  Col
47. d unfolded by selecting the summary node of a subgraph   Further  a class of edges can be hidden  which also hides the region of nodes only reachable  by edges of this class  Finally  a connected region can be folded dynamically by selecting  the start nodes and the end node of a region and an edge class k  All nodes reachable from  the start nodes by edges of classes less or equal then k up to  and unless  the end nodes are  condensed into one summary node  Nested foldings are possible  To activate the different  folding methods  the following items are in the mouse menu     e Fold Subgraph  After selection of this item  an arbitrary node of the subgraph to be  folded must be selected  The corresponding subgraph is folded     e Unfold Subgraph  The summary node of a subgraph must be selected to show this  subgraph explicitly     e Expose Hide Edges  A dialog box of all edge classes appears  see figure 40 for an  example   There is at least the default edge class    1     The edge classes are shown by    5 USAGE OF THE VCG TOOL 51       i  VCG   fexpl other compgraph vcg Edge Classes    E 6311 Graph Edges     Unreach Stmt  Edges     Control Flow  O Block Connect Edges W  Unreach Block Edges W  Basic Block    O Predominator Edges    Postdominator Edges    Control Dep   O True Dep   Edges    Anti Dep   Edges    Input Dep   O Output Dep  Edges WW  unused   m  mused          mused           Figure 40  The Edge Class Menu of an Example    The text of the edge classes is specified 
48. decrease the depth of the layout  these algorithms really calculate a good  order to get a maximal or minimal spanning tree  The disadvantage is  that they are  rather slow  Warning  a minimal spanning tree does not necessarily mean that the depth  of the layout is minimal  However  it is a good hint to get a flat layout  See the examples  in section 4 3     maxdegree  mindegree  etc   We can also presort the nodes by different criteria before  DFS such that the nodes are scheduled in a different order  Possible criterias are the  number of incoming edges  the number of outgoing edges  and the number of edges at  all on a node  The sorting of nodes may have various effects and can sometimes be used  as a fast replacement of maxdepthslow or mindepthslow     minbackward  Instead of calculating strongly connected components  we can also per   form topological sorting to assign ranks to the nodes  This is much faster  if the graph  is already known to be acyclic     tree  This method works only  if the graph is a forest of downward laid out trees  i e   each node at rank   has at most one adjacent edge coming from a node of an upper  rank      lt  l toit  A node may have edges pointing to nodes at the same level  and many  adjacent edges coming from nodes of lower ranks        gt  l  and the direction of the edges  can be arbitrary  but the picture of the layout  if the arrow heads are ignored  must be a  tree  see figure 4   The assignment of ranks is done by DFS  Then  the grap
49. depth without  fine tuning results in the  same picture     Start of all       Figure 17  minbackward  with fine tuning    Compared to the previ   ous layout  the fine tun   ing phase has partially  eliminated the long edge  I  gt Start and has again  balanced the position of  node J        Figure 18  maxdepth  with fine tuning    The long edge I  gt Start is  now fully eliminated  Here   the fine tuning phase is al   lowed to revert additional  edges     4 EXAMPLES OF GDL SPECIFICATIONS       Figure 19  maxdepthslow without fine  tuning    This layout with depth 6 is in fact maximal  deep  compared to all other variants     Start of all       Figure 21  mindepth without fine tuning    The layout algorithms dfs and minindegree  happen to result in the same picture     39           Start of all    Figure 20  maxdepthslow with fine  tuning    The fine tuning phase eliminates the long edge  Start  gt G  Thus  the layout is not anymore  maximal deep  Fine tuning destroys the prop   erty to be maximal deep     Start of all       Figure 22  mindepth with fine tuning    Compared to the previous layout  the long  edges I  gt Start is eliminated  In fact  this is  the layout with the minimal depth     4 EXAMPLES OF GDL SPECIFICATIONS       Figure 23  mindepthslow without fine  tuning    Graphs that are minimal deep tend to have  many nodes at the top level  Compared to all  untuned graphs  this layout is minimal deep   However note  that the algorithm mindepth  with fine tuning is abl
50. dvantages of the Edge tool  easy adaptability   with reasonable speed  a few seconds for the same example as above  and new concepts of  graph approximations  Therefore  we define a language that describes graphs and the layout  of their nodes and edges  GDL   graph description language   The core of this language is  compatible to the input specification language of the Edge tool  to allow interchangeability   Additionally  some extensions are implemented  colors  edge classes and priorities  splines   graph folding for path approximations   but also some layout description limits are introduced  to speed up runtime  If no layout is given in the graph specification  the tool computes a  appropriate one  With respect to    readability    of the graph the following criteria are used     1  Place the vertices  nodes  in a hierarchy of layers  2  Place the nodes without overlapping   3  Avoid crossings of lines  edges    4  Keep edges short and straight   5  Favor a balanced placement   6  Position related nodes close together    In the following sections  we first give an overview of the phases during the calculation of  the layout  Next  we define the graph description language and show some examples  Then   we explain the usage of the VCG tool  The remaining sections describe some experiences   and statistics concerning speed and applicability  The details of the algorithms used in the  VCG tool are not described here  There exists a technical report that explains these algo 
51. e  partitioning of the graph into levels of nodes of the same rank is indicated by the message  character    p       There are many possibilities to assign the rank  The normal method is to calculate a  spanning tree by determing the strongly connected components of the graph  All edges    2 OVERVIEW OF THE LAYOUT PHASES 8    should be oriented top down  A heuristics tries to find a minimal set of edges which cannot  be oriented top down  This is necessary in cycles of the graph  A faster method is to calculate  the spanning tree of a graph by depth first search  DFS   However  the order the nodes are  visited in influences heavily the layout  The initial order of the nodes is the order given by  the specification of the graph  Thus we have implemented various versions of such methods     dfs  Calculate the spanning tree by one single DFS traversal  This is the fastest method   but the quality of the result depends heavily on the initial order of the nodes in the  specification  and might be poor for some graphs     maxdepth  Calculate the spanning tree by DFS with the initial order and with the  reverted initial order  and take the deeper spanning tree  This results in more levels  i e   the graph is larger in y direction     mindepth  lake the flatter spanning tree of both DFS  This results in less levels  i e   more nodes at same levels  and the graph is larger in x direction     maxdepthslow  mindepthslow  While the previous algorithms are fast heuristics to  increase or 
52. e factor 100 indicates a very sharp  bending  a factor 1 indicates a very flat bending  Useful values are 30    80     cmin set the minimal number of iterations that are done for the crossing reduction with the  crossing weights  The normal method stops if two consecutive checks does not reduce the  number of crossings anymore  However  this increasing of the number of crossings might  be locally  such that after some more iterations  the crossing number might decrease  much more     3 GRAPH DESCRIPTION LANGUAGE 22    cmax set the maximal number of interactions for crossing reduction  This is helpful for  speedup the layout process  See section 5 13     pmin set the minimal number of iterations that is done with the pendulum method  Similar  to the crossing reduction  this method stops if the    imbalancement weight    does not de   creases anymore  However  the increasing of the imbalancement weight might be locally   such that after some more iterations  the imbalancement weight might decrease much  more     pmax set the maximal number of iterations of the pendulum method  This is helpful for  speedup the layout process     rmin set the minimal number of iterations that is done with the rubberband method  This  is similar as for the pendulum method     rmax set the maximal number of iterations of the rubberband method  This is helpful for  speedup the layout process     smax set the maximal number of iterations of the straight line recognition phase  useful only   if the st
53. e folding class of the edge  Nodes reachable by edges of a class less or equal  to a constant k specify folding regions of k  See the node attribute folding  section 3 2   and the folding commands  section 5      arrowstyle  backarrowstyle Each edge has two arrow heads  the one appears at the target  node  the normal arrow head   the other appears at the source node  the backarrow  head   Normal edges only have the normal solid arrow head  while the backarrow head  is not drawn  i e  it is none  Arrowstyle is the style of the normal arrow head  and  backarrowstyle is the style of the backarrow head  Styles are none  i e  no arrow head   solid  and line     arrowsize  backarrowsize The arrow head is a right angled  isosceles triangle and the  cathetuses have length arrowsize     color is the color of the edge  For the possibilities  see the attribute color for graphs  sec   tion 3 1     textcolor is the color of the label of the edge   arrowcolor  backarrowcolor is the color of the arrow head and of the backarrow head     priority The positions of the nodes are mainly determined by the incoming and outgoing  edges  One can think of rubberbands instead of edges that pull a node into its position   The priority of an edges corresponds to the strength of the rubberband     anchor An anchor point describes the vertical position in a node where an edge goes out   This is useful  if node labels are several lines long  and outgoing edges are related to  label lines   E g   this allow
54. e many edges adjacent to one node without getting confused by too many  arrow heads  If no port sharing is used  each edge has its own port  i e  its own place  where it is adjacent to the node     arrow  mode fixed  default  should be used  if port sharing is used  because then  only a  fixed set of rotations for the arrow heads are used  If the arrow mode is free  then  each arrow head is rotated individually to each edge  But this can yield to a black spot   where nothing is recognizable  if port sharing is used  since all these differently rotated  arrow heads are drawn at the same place  If the arrow mode is fixed  then the arrow  head is rotated only in steps of 45 degree  and only one arrow head occurs at each port     treefactor The algorithm tree for downward laid out trees tries to produce a medium dense   balanced tree like layout  If the tree factor is greater than 0 5  the tree edges are spread   i e  they get a larger gradient  This may improve the readability of the tree   Note  it is not obvious whether spreading results in a more dense or wide layout  For a  tree  there is a tree factor such that the whole tree is minimal wide     spreadlevel This parameter only influences the algorithm tree  too  For large  balanced  trees  spreading of the uppermost nodes would enlarge the width of the tree too much   such that the tree does not fit anymore in a window  Thus  the spreadlevel specifies the  minimal level  rank  where nodes are spread  Nodes of levels upper t
55. e to produce a flatter  layout     Start of all       Figure 25  maxdegree without fine tuning    The node Start has the most adjacent edges   Thus it is selected as start node of the span   ning tree  1 6  it appears at the topmost level     40       Start of all    Figure 24  mindepthslow with fine  tuning    The long edges G  gt H and 5 81   lt 5 are elim   inated  Note that the fine tuning phase of al   gorithm mindepth happens to reduce the deep  while here  this is not possible  Thus  com   pared to all fine tuned graphs  mindepthslow  does not produce the flattest layout     Start of all       Figure 26  maxdegree with fine tuning    Compared to the previous picture  the long  edge I  gt Start is eliminated  This is also a  layout with minimal depth     4 EXAMPLES OF GDL SPECIFICATIONS        Start of all    Figure 27  mindegree without fine tuning    The candidates for start nodes of the spanning  tree are the nodes B  C  G  H  I and J be   cause they have the minimal degree 2  From  these nodes  B  C and G happened to be se   lected  Note  the nodes E and K  also degree  2  are no candidates of start nodes because  they do not have outgoing edges     Start of all       Figure 29  minindegree without fine  tuning    The candidates for start nodes are Start  B   C  G  H  I and J  from which Start was se   lected  The algorithm maxoutdegree results in  the same picture     41       Figure 28  mindegree with fine tuning  The long edges Start  gt B and Start C are    elim
56. end  In a cartesian view  they are still drawn as  parallel horizontal and vertical lines  Since important forms of nodes and also the orthogonal  layout  see attribute manhattan edges  contain many orthogonal lines  this improves the  readability    The browsing through a fisheye view is the moving of the focus point  This can be done  by the command Pick Position and the various other positioning operations that allow to  set the origin in the flat view  We have two different modes for fisheye views     Self adaptable fisheyes The whole graph is visible The distortion scale of the fisheye is  automatically adapted to the actual fisheye  such that the graph just fits into the win   dow  The position where the focus point appears in the window is calculated from the  position of the focus point in the graph  i e   e g   if the focus is set to the upper left    5 USAGE OF THE VCG TOOL 58    1VCG down vcq Vie    General View      normal view   D cartesian fisheye  E polar fisheye   General Parameter Fisheye Parameter   edges im fixed radius          E nodes Radius  930     wa   gt     T    splines                     Figure 46  The View Parameter Box    corner of the graph  it will also appear in the upper left corner of the window  This  helps to keep the orientation when browsing through the graph     Fisheyes with a fixed radius If the graph is even too large for a self adaptable fisheye     this mode may be useful  Here  not the whole graph is visible but only a region of a
57. ermany   Fachbereich Mathematik und Informatik 1993     GKNV93  Gansner  Emden R   Koutsofios  Eleftherios  North  Stephen C   Vo  Kiem Phong   A Technique for Drawing Directed Graphs  IEEE Transactions on Software En   gineering  Vol  19  No  3  pp  214 230  March  1993     GNV88   Gansner  Emden R   North  Stephen C   Vo  Kiem Phong  DAG   A program that  draws directed graphs  Software     Practice and Experience  Vol  17  No  1  pp   1047 1062  1988     HeSa93  Heckmann  Reinhold  Sander  Georg  Trafola H Reference Manual   in Hoffmann  Berthold  Krieg Br  ckner  Bernd  Editors  Program Development  by Specification and Transformation  Lecture Notes in Computer Science 680  pp   275 313  Springer Verlag 1993    REFERENCES 68     Hi93     KoFI91     MaPa91     Mis94     PaTi90        5a94       295      STM81      SP G86    WiMa92      Pet91     Himsolt  Michael     Konzeption und Implementierung von Grapheditoren      Disser   tation  in German   Universitaet Passau  Germany  1993 published with Berichte  aus der Informatik  Verlag Shaker  Aachen 1993    Koutsofios  Eleftherios  North  Stephen C   Drawing graphs with dot  technical  report  AT amp T Bell Laboratories  Murray Hill NJ  1992    Manke  Stefan  Paulisch  Frances Newbery  Graph Representation Language  Ref   erence Manual  1991    Misue Kazuo  D ABDUCTOR 2 30 User Manual  Institute for Social Information  Science  Fujitsu Laboratories Ltd  1994    Paulisch  Frances Newbery  Tichy  W  F      EDGE  An Extendible 
58. graphs    If we don t want to deal with the exact iteration limits  we can set a time limit  option   timelimit   If the time limit is exceeded  the fastest possible mode for the actual iteration  phase is switched on  The time limit does not mean that the layout really needs so much time   The layout may be faster  because the graph structure is very simple  but more often  it will  be slower  because even the fastest possible methods already exceed the time limit  The time  limit is only a hint for the VCG tool  Another problem  the time limit is real time  thus the  result of the layout with time limit depends on the load of the computer  Thus  given a time  limit  two identical trys need not to give identical results     6 Experiences    Compiler graphs are usually a rather large network of interwoven graphs  Often  there is one  base graph and a lot of subgraphs that are annotations of the base graph  Not all aspects of a  compiler graph are of interest at the same time  either an overview of the graph is needed  or  some details are inspected  In the first case  the graph must be laid out completely and nice   i e  edges must be straight  nodes must be centered  etc  The user normally has shrunken  the graph very much  But in the first case  not all nodes must be drawn  large parts like  annotations can be folded  because only the main structure is of interest  In the second case   the readability of the complete layout is not important  The layout may be ugly  but the 
59. gs  and reorders the nodes of a level according to these weights  Because  the ordering of nodes within one level influences the weights of the adjacent levels  this is  performed iteratively until no improvement is anymore recognized  This is the phase 1 of the  crossing reduction  indicated by the message character    b       What happens  if the weights of some nodes are equal   Then  the selected order of these  nodes is arbitrary  In order to improve the layout further  a permutation of these nodes is  tried  Sometimes  a permutation allows further to reduce the crossings  This is the phase 2 of  the crossing reduction  indicated by the message character    B       However  the final result need not to be optimal  The crossing reduction is only a heuristics   A local optimization phase follows  message character T     There are four possibilities to calculate weights for crossing heuristics  The default  weights are the barycenter weights  STM81   while the mediancenter weights  GN V88  are  sometimes more appropriate  especially if the average degree  number of edges  at the nodes is    2 OVERVIEW OF THE LAYOUT PHASES 10    small  The barymedian weights are the combination of barycenter and mediancenter  where  barycenter has the first priority and mediancenter is only used for those nodes where the  barycenter weights are equal  Conversely  the medianbary weights are the combination of  barycenter and mediancenter  where mediancenter has the first priority     2 5 Calc
60. h  attribute name            graph      graph entry      P      graph  attribute    node  defaults  edge  defaults  foldnode  defaults  foldedge  defaults  graph  node  edge  backedge  nearedge  bentnearedge    S altribule value  any attribute shown in table 1 and 2     node     node  attribute     edge     edge attribute     foldnode     node  attribute     foldedge     edge  attribute     node        node attribute      P     edge        edge_attribute      P     backedge        edge_attribute      P     nearedge      edge_attribute      P   bentnearedge        edge_attribute      P  node_attribute_name         attribute value    edge_attribute_name         attribute_value      any attribute shown in table 3    any attribute shown in table 4    integer value  float_value  string_value  enum_value      any integer constant in C style    any float constant in C style       u     character                any possible constant value shown in tables 1 2  3 4    any printable ASCII character    The VCG tool has a color map of 256 colors  where 254 of these are free available  The first  32 colors  index 0     31  of the color map are the default colors  These colors can be specified  by name  all other colors are specified by their color map index number  The color map is    changed by specifying a sequence of colorentry attributes  for instance    3 GRAPH DESCRIPTION LANGUAGE 28    colorentry 32   205 198 115    khaki     colorentry 33   210 218 255    AliceBlue     colorentry 3
61. h is checked  whether it is a forest of downward laid out trees  If this is not the case  the standard  layout is used as fallback solution  As advantage of this method  crossing reduction  see  next section  is not necessary for downward laid out trees  and a very fast positioning  algorithm can be used     A further possibility to influence the layout are the priorities of edges  During the calcu   lation of the spanning tree  edges of higher priority are preferred  After the partitioning  a    2 OVERVIEW OF THE LAYOUT PHASES 9       Structurally  this is not a tree  e g   Structurally  this is a tree  But the lay   many edges point to the node    D       But out is not a downward laid out tree be   the layout has the shape of a tree  thus cause of the edges at the nodes  B  and  it is a downward laid out tree  AEF    Figure 4  Downward Laid Out Trees and Structural Trees    fine tuning phase tries to improve the ranks in order to avoid very long edges  Remaining too  long edges are split into small edges and dummy nodes     2 4 Reduction of Crossings    The next pass calculates a good order of the nodes within levels to avoid edge crossings  This  pass is not necessary  if the method for downward laid out trees is used  The first step is to  unmerge connected components of the graph and to handle each component separately  The  message character    u    indicates this    The crossing reduction algorithm calculates the weights of the nodes dependent on the  possible crossin
62. han spreadlevel are  not spread     crossing weight specifies the weight that is used for the crossing reduction  bary  default    median  barymedian or medianbary  5ee section 2 4  We cannot give a general rec   ommendation  which is the best method  For graphs with very large average degree  of edges  number of incoming and outgoing edges at a node   the weight bary is the    3 GRAPH DESCRIPTION LANGUAGE 21    fastest method  With the weights barymedian and medianbary  equal weights of dif   ferent nodes are not very probable  thus the crossing reduction phase 2 might be very  fast     crossing phase2 is the most time consuming phase of the crossing reduction  see section  2 4   In this phase  the nodes that happen to have equal crossing weights are permuted   By specifying no  this phase is suppressed     crossing optimization is a postprocessing phase after the normal crossing reduction  we  try to optimize locally  by exchanging pairs of nodes to reduce the crossings  Although  this phase is not very time consuming  it can be suppressed by specifying no     view allows to select the fisheye views  see section 5 8   Because of the fixed size of the  window that shows the graph  we normally can only see a small amount of a large  graph  If we shrink the graph such that it fits into the window  we cannot recognize  any detail anymore  Fisheye views are coordinate transformations  the view onto the  graph is distort  to overcome this usage deficiency  The polar fisheye is ea
63. idden  However  nodes without any incoming or outgoing edge  are drawn  but see also section 3 1  attribute ignore_singles   This method allows  to hide regions of the graph that are only connected by edges of a certain class  See the    2 OVERVIEW OF THE LAYOUT PHASES 6    Part of Graph    class k  class k is hidden       Figure 1  Hiding of Edges and their Region  The annotation  dark grey box  is a graph where all edges are in class  amp  while the main graph is  connected via class j  j Z k   The bold edges of class  amp  connect the annotation with the main graph   thus after hiding with respect to class k  the annotation is invisible  Other nodes  e g   the grey node   in the main graph are unchanged even if there are edges from the invisible annotations to these nodes     Is  N    Figure 2  Folding a Subtree  The striped subtree is folded to the black summary node     sketch in figure 1  Note that the hiding of edges may change the layout of a graph very  much  if certain variations of the layout algorithms are selected  variation maxdegree     minoutdegree      e folding of connected regions  While subgraphs allow statically to specify regions  that can be folded to one node  we can also use the class concept of edges to fold    2 OVERVIEW OF THE LAYOUT PHASES T    Figure 3  Folding a Subtree until a Node  The striped region is folded to the black summary node     dynamically specified regions  dynamically     interactively specified   The connected  region of a start
64. ified to fit into the window  Selecting regions by this way does not continue as for the  short mouse clicks  It stops directly        VCG down vcg FEdge       Select a graph node to follow its edges       title  label  info field 1  info field 2  info field 3    next prev             Select Node    Next Edge  Follow Edge  Cancel  Esc                 Enter title  D                      Figure 41  The Follow Edge History Box    The operation Follow edge works as follows  first one node must be selected by the  mouse  then one edge that starts or ends at this node is chosen by mouse button clicks  The  other end point of the edge is centered  Now  an edge of the end point can be selected by  button clicks to center a new end point  etc  The operation stops if the right mouse button is    5 USAGE OF THE VCG TOOL 53    selected at the end point  This method is also helpful to browse through the graph  However   how the find the way back to a node where the operation has been started   To support this   a history is implemented  By pressing the key  h  during the Follow edge operation  the  history dialog box appears  see fig  41  and shows all nodes that have been centered during  the Follow edge operation  Selecting a node using the button  Select Node  browses back  and centers this node  or sets the focus point to it   touching the button  Next Edge  allows  to select the next edge to follow  and touching the button    Follow Edge    allows to follow the  edge    The selection
65. in this example graph and changes with each new graph  see    attribute classname      5 4    numbers  or by the names that are assigned to the classes in the specification  see  attribute classname   The classes currently exposed are highlighted  Here  the classes  to hide and the classes to expose can be selected  As at all dialog boxes  the selection  of the  Okay  button causes the relayout  while the selection of the  Cancel  button  cancels this operation     Fold Region    n edge class must be selected from the submenu  First  nodes are  selected by the left mouse button where the following    Fold Region  operation stops   This corresponds to the folding attribute value 0 of nodes  After pressing the right  mouse button  nodes can be marked where the folding process starts  The connected  region of this class is folded until the foldstops are reached  if there are any      Unfold Region  After selection of a summary node  the corresponding connected region    is unfolded     Positioning    The displayed window can be scrolled through the virtual window by scrollbars  The virtual  window can be positioned over the potential infinite system of coordinates of the graph by  scrollbars  too  If the fisheye view is selected  see section 5 8   the positioning moves the focus  point instead of the virtual window  Additionally  there is the item Scroll in the mouse menu   which opens a submenu with    left  right  up  down  move the virtual window  or focus point  32 pixels to
66. inated   This changes the structure of the  layout completely     Start of all       Figure 30  minindegree with fine tuning    The long edge I  gt Start is eliminated  This is  again a layout with minimal depth     4 EXAMPLES OF GDL SPECIFICATIONS       Figure 31  maxindegree without fine  tuning    This time  the candidates are D and F  from  which F was selected as start node resulting in  the spanning tree F  gt K  Because K has no out   going edges  this component of the spanning  tree cannot be larger  Thus  a second com   ponent of the spanning tree is needed  which  starts at D and is D since it has no outgoing  edges to not yet scheduled nodes  A third com   ponent starts at G which is one of the not yet  scheduled nodes with maximal indegree     Start of all         EHE    Figure 33  maxindegree with fine tuning    F is again start node of one component of  the spanning tree  Compared to the previous  example  the long edges Start   G  B  gt D and    Start D are eliminated     42       Figure 32  minoutdegree without fine  tuning     The nodes E and K with minimal outdegree  0 cannot be start nodes  because start nodes  must have at least one successor  Otherwise   they would create one node components of the  spanning tree  The useful candidates are all  other nodes except Start  from which B  0  and G happened to be selected        Figure 34  minoutdegree with fine  tuning    The long edges Start  gt G  Start  gt B and  Start   C are eliminated     4 EXAMPLES OF G
67. instance of output  it sends the signal USRSIGI to the tool   The tool then displays the new instance of the graph  Depending on the option used to start  VCG  the tool indicates the completion of the visualization of a reload by touching its input    5 USAGE OF THE VCG TOOL 62    switch edge labels on or off  switch dirty edge labels on or off  set slow and nice layout   set normal layout   set medium layout    1   4   8   n   m   f set fast and ugly layout  0 optimze crossing phase 2  1   2   3   4   7   8    set top to bottom orientation  set bottom to top orientation  set left to right orientation  set right to left orientation  set node alignment to top  set node alignment to center   9 set node alignment to bottom   RETURN   quit the dialog box  ESC cancel the dialog box       Table 9  Key Commands in the Layout Dialog Box    select normal view  select cartesian view  select polar view  switch edges on or off  switch nodes on or off    switch splines on or off  f switch fixed radius on of off  RETURN   quit the dialog box  ESC cancel the dialog box       Table 10  Key Commands in the View Dialog Box    file to create a new time stamp  or by sending signal USRSIGI to the caller  The signal  USRSIG2  on SunOs  UNIX software signal 31  causes the tool to close its main window   It is recommended to use this simple animation mechanism only if the engine produces a  GDL description with fixed layout  i e  all nodes have attributes loc      5 12 Keyboard Commands    The most 
68. iption Language    The graph description language is very similar to GRL defined in  MaPa91   A specification  describes a graph that consists of subgraphs  nodes  and edges  Subgraphs are parts of a  graph that may be folded to one node during visualization or may be drawn explicitly  These  may have attributes that specify details of the graph   s appearance on the screen like labels   colors  sizes etc  The following shows an overview of the format of a GDL description     graph      lt  general graph attributes  gt    lt  list of nodes or subgraphs  gt    lt  list of edges  gt          where nodes and edges are specified by    node     title   lt  node title  gt    lt  node attributes  gt          and    edge     sourcename   lt  lille of source node  gt   targetname     title of target node  gt      edge attributes  gt          There are some special kinds of edges     back edges These edges are not laid out in the normal orientation  but are reverted  For  instance  if the layout algorithm tries to give all normal edges a top down orientation   it tries to give the back edges a bottom up orientation  If a graph contains a cycle  not  all edges can have the same orientation  Some edges must be reverted  In this case  the  layout algorithm prefers back edges before selecting any other edge to be reverted     near edges These special edges are laid out such that their source and target node are  directly neighbored at the same level  Near edges are drawn as short horizonta
69. isplayed window  16  49  DOT tool  66   dotted  26   downfactor  18  36  45  downward laid out tree  8  18  24  43  dummy node  9  17    edge  11  25   edge attribute  25   edge class  5  6  17  24  26  50  51  edge color  26   edge label  19  25  33  55  edge label color  26   edge priority  8  26   edge thickness  26   Edge tool  4  66   edges  21  58   ellipse  16  24   export graph  58   export part  58   expose edges  51    fast mode  65   1608  21   file info  60   file selector box  60   fine tuning phase  9  19  37  38  fisheye  21  56   fisheye with fixed radius  21  58    70    fisheye  self adaptable  21  58  fixed  20   float  13   flowchart  36   focus point  21  57   fold region  6  7  24  50  51  fold subgraph  5  50  foldedge  13   folding  5  12  16  24  50  63  foldnode  13  24   follow edge  52   follow edge history  53  formfeed  29   free  20    GDL  4  11  26   gold  13  28  grammar of GDL  26  graph  11  13   graph attribute  13  graph description language  4  11  graph label  13  graph title  13   graph window  48  Graph     67   green  13  28   GRL  11    height  16  24  60   help explanation  48   hidden  5  17   hide edges  5  6  50  51   hide region  5   horizontal order  16  23  26  44  53    ignore singles  19   info name  18   infol  13  24  53   info2  13  24  53   info3  13  24  53   input file  48   integer  13   intermediate representation  4  invisible  5  18  26  44   IR  4    INDEX    iteration  9  55  65    keyboard command  62    khaki 
70. l lines  which are not crossed by other edges or nodes  Invisible near edges can be used to  group nodes at a level together  A node can have maximal two near edges  whose one  is positioned to the left and the other is positioned to the right   Other restrictions   originated by the use of anchor points  are explained later      3 GRAPH DESCRIPTION LANGUAGE 12    bent near edges These special edges consist of a horizontal part  a bend point and a vertical  part  If an edge label is drawn  it is placed just at the bend point  Implemented is such  an edge by the combination of a near edge and a normal edge     Beside that  back edges  near edges and bent near edges are normal edges  Back edges are  specified by    backedge     sourcename   lt  lille of source node  gt   targetname     title of target node  gt      edge attributes  gt          Near edges are specified by    nearedge     sourcename   lt  lille of source node  gt   targetname     title of target node  gt      edge attributes  gt          Bent near edges are specified by    bentnearedge     sourcename   lt  lille of source node  gt   targetname     title of target node  gt      edge attributes  gt          Attributes are specified in the form   lt  attribute keyword  gt     lt  attribute value  gt     The order of attributes is irrelevant  Most attributes are optional  It is possible to specify  default values of all nodes or edges in the attribute section of a graph by    node  lt  attribute keyword  gt     lt  a
71. labels  The title is displayed in the nodes   Example 1     graph        list of nodes      node    title    A    node    title   B    node    title   C     node    title   D    node    title   E        list of edges      edge    thickness  3 sourcename    A  targetname   B     edge    thickness  3 sourcename    A  targetname   C     edge    thickness  3 sourcename   C  targetname   D     edge    thickness  3 sourcename   D  targetname   E     edge    thickness  3 sourcename   D  targetname     A         4 EXAMPLES OF GDL SPECIFICATIONS 31       Figure 6  Example 1 Figure 7  Example 2 Figure 8  Example 3    The VCG tool tries to give all edges the same orientation  But since the graph is cyclic  one  edge must be reverted  edge D   A   We can also select  which edge should be reverted  by  specifying a back edge  edge C   D in example 2        Example 2     graph        list of nodes      node    title    A    node    title   B    node    title   C     node    title   D    node    title   E        list of edges        edge    thickness  3 sourcename    A  targetname   B     edge    thickness  3 sourcename    A    targetname   C     backedge    thickness  3 sourcename   C  targetname   D     edge    thickness  3 sourcename   D  targetname   E     edge    thickness  3 sourcename   D  targetname    A            Again  the most of the edges have the same orientation  The tool selects the node D as topmost  node now  The same cyclic graph looks completely different  if we add some
72. ler functionality to prepare presentations and to  help on compiler debugging  The GDL specification language of the tool is general such that  the tool can be adapted to many applications    The tool is intended to be used in combination with a program system that produces  eraphs  It is not an interactive graph editor  The algorithms to lay out the graph are rather  simple and use heuristics  but they are very fast  Thus  the visualization of a graph may differ  from the intuition  but these cases were seldom in our experiences  The layout algorithms can  still be improved  see  BET94    Usually  the readability of large graphs is improved by the  layout algorithm  We believe that the tool is a good compromise between performance and  legibility of the visualization    There is a mailing list veg users cs uni sb de that distributes mail to all users of the VCG  tool  If you want to be added to this list  please send a request to sander cs uni sb de  Then  you  will be informed about bugs and new versions of the tool     References     BET94  Di Battista  G   Eades  P   Tamassia  R   Tollis I  G      Algorithms for Draw   ing Graphs  an Annotated Bibliography     Computational Geometry  Theory and  Applications  no  4  pp  235 282 available via ftp from ftp cs brown edu  file   pub papers compgeo gdbiblio tex Z  1994     FrWe93  Fr  hlich  Michael  Werner  Mattias  Das interaktive Graph Visualisierungssytem  daVinci V1 2  technical report  in German   University of Bremen  G
73. mited  and time limits can be specified    The first step to visualize a large graph is to select the parts of the graph that are currently  not of interest  We specify these parts as initially folded  Folding makes the remaining visible    5 USAGE OF THE VCG TOOL           asd    0 00 2             RETURN  ESC    RETURN    ESC       64    additional info  size  additional info   additional info   additional info     additional info     mode   date   owner   group   order of entries  unsorted   order of entries  sorted by name  order of entries  sorted by info  entry selection  all    entry selection    vcg  scroll entry list up  scroll entry list down  rescan entry list   quit the dialog box  quit the dialog box  cancel the dialog box    show titles   show labels   show info fields 1  show info fields 2  show info fields 3  show coordinates  scroll entry list up  scroll entry list down  apply current selection  quit the dialog box  quit the dialog box  cancel the dialog box    Table 14  Key Commands in the Title Selector Box and Follow Edge History Box    graph smaller  thus the layout can be calculated faster and the quality of the layout is better  It  is of course useful first to try the fast algorithms  dfs  minbackward  tree   then the medium  fast methods  normal  mindepth  maxdepth       before the slow methods  mindepthslow     maxdepthslow    If the VCG tool is still too slow      we must omit some phases or limit the iteration factors     This decreases the quality
74. more than these default colors are needed  a color map with maximal 256  entries can be used  The first 32 entries correspond to the colors just listed  A color  of the color map can selected by the color map index  an integer  for instance red has  index 2  green has index 3  etc  See section 3 5 for more details     textcolor is the color for the label text of summary nodes     3 GRAPH DESCRIPTION LANGUAGE    attribute name attribute type  string  string  string  string  string    black  white  red         textcolor  bordercolor  width int    height int    borderwidth int   x int   y int   folding int   shrink int   stretch int  textmode center       shape box  rhomb       vertical order int  horizontal order int   xmax int   ymax int   xbase int   ybase int   xspace int  xlspace int    yspace int   xraster int   xlraster int   yraster int   hidden int   classname int   string  int   string  int   int triple    infoname  colorentry    black  white  red       black  white  red            14    default value   file name   name of outer graph  string of the title   empty string   empty string   empty string   white for background   white or transparent for  summary nodes   black for summary nodes   textcolor for summary nodes   width of root screen   100  width of the label for subgraphs  height of root screen   100  height of the label for subgraphs  2   0   unspecified for subgraphs   0   unspecified for subgraphs   0   1   1   center   box   unspecified for subgraphs  unspe
75. ndepthslow  maxdegree  mindegree  maxindegree   minindegree  maxoutdegree  minoutdegree  minbackward  dfs and tree  The default  algorithm tries to give all edges the same orientation and is based on the calculation  of strongly connected components  The algorithms that are based on depth first search  are faster  While the simple dfs does not enforce additionally constraints  the algorithm  maxdepth tries to increase the depth of the layout and the algorithm mindepth tries  to increase the wide of the layout  These algorithms are fast heuristics  If they are not  appropriate  the algorithms maxdepthslow or mindepthslow also increase the depth or  wide  but they are very slow     The algorithm maxindegree lays out the nodes by scheduling the nodes with the  maximum of incoming edges first  and minindegree lays out the nodes by schedul   ing the nodes with the minimum of incoming edges first  In the same manner work  the algorithms maxoutdegree and minoutdegree for outgoing edges  and maxdegree  and mindegree for the sum of incoming and outgoing edges  These algorithms may  have various effects  and can sometimes be used as replacements of maxdepthslow or  mindepthslow     The algorithm minbackward can be used if the graph is acyclic  See section 2 3 for  details     The algorithm tree is a specialized method for downward laid out trees  see section 2 3    It is much faster on such tree like graphs and results in a balanced layout     layout  downfactor  layout  upfactor  layo
76. o draw it over to corner of the window  The selection  by rubberband is not necessary  if the whole graph is exported        CG exal vcg Export    Export to O PBH 1  O PPH 2  I  PostScript  3   Color mode   m baw O full color    grey  Orientation     portrait        landscape  Paper size  W  A4 L  85 L  A5  O 221 x17  oO 8  5 x11  oO 8  5 x14    Region   76 88     356 481    gt  280       393 pixels  Hargins  Left  13 89cm 5 47  Right     5 46cm 2 15    Top   1 81cm 0 71  Bottom  4 24cm 1 67           X dpi  L              w                             Y dpi                              Scaling  107 79  amp  a i Y                            p                    u       Width  10 65cm 4  19   Height  14  94015  88     O Scaling  100  Split output inte  O Maxspect     2 g4 9  O Center O 16 O 25 pages     Center width    Ses         Bounding Box                Figure 47  The Export Box    Now  a dialog box is opened that allows to select the format  scaling  size and position of  the image  see figure 47   Basically  this export mechanism is designed to create files that can  be printed  PBM and PPM are bitmap formats that often create rather large files   Example   A din A4 page at 300 dpi needs in PBM format nearly 1 MB  and in PPM about 24 MB    However  there are many printer drivers for PBM and PPM format in the world  PBM is a  monochromatic format  b amp w  and PPM is a color format  PostScript is an image description  language that can be used to create colored images  g
77. ogonal layout on  Here  all horizontal  edge segments between two levels share the same horizontal line  i e  not only vertical  edge segments are shared  but horizontal edge segments are shared by several edges  too     3 GRAPH DESCRIPTION LANGUAGE 20    This looks nice for trees but might be too confusing in general  because the location of  an edge might be ambiguously     near_edges no suppresses near edges and bent near edges in the graph layout     orientation specifies the orientation of the graph  top_to_bottom  bottom_to_top   left_to_right or right_to_left  Note  the normal orientation is top  to  bottom   All explanations here are given relatively to the normal orientation  i e   e g   if the  orientation is left to right  the attribute x1space is not the horizontal but the vertical  distance between lines  etc     node alignment specified the vertical alignment of nodes at the horizontal reference line of  the levels  If top is specified  the tops of all nodes of a level have the same y coordinate   on bottom  the bottoms have the same y coordinate  on center the nodes are centered  at the levels     port sharing no suppresses the sharing of ports of edges at the nodes  Normally  if multiple  edges are adjacent to the same node  and the arrow head of all these edges has the  same visual appearance  color  size  etc    then these edges may share a port at a node   i e  only one arrow head is draw  and all edges are incoming into this arrow head  This  allows to hav
78. or Codes of the Default Color Map                              The ISO Latin 1 Character Set 2    2    lee  Menultems            lee ee s  Key Commands in the Graph Window              leen  Key Commands in the Layout Dialog Box            llle  Key Commands in the View Dialog Box                          Key Commands in the Edge Class Selection Dialog Box               Key Commands in the Export Dialog Box                   2    Key Commands in the File Selector Box                       Key Commands in the Title Selector Box and Follow Edge History Box   Statistics  Times for Loading and Positioning                c n     of Figures    Hiding of Edges and their Region        ee  Folding a Subtree      2er  Folding a Subtree until    Node           lees  Downward Laid Out Trees and Structural Trees                   Displayed Window and Virtual Window                   c n  Example 1              gt                Example2          2 le ee a  Example3       2l eee s  Example 4         2 2l ll ee a  Example        2 2 ee s  Example6              Example Y              2  ee s  Example8                          normal without fine tuning        4  rs  normal with fine tuning         lens  minbackward without fine tuning         22e  minbackward with fine tuning        22e  maxdepth with fine tuning    7     maxdepthslow without fine tuning          le    66    67    14  15  23  25  28  29  49  61  62  62  63  63  64  64  66    LIST OF FIGURES    20  21  22  23  24  25  26  27 
79. order  Default color is the 162160101    width  height are width and height of the displayed part of the window of the outermost  graph in pixels  or width and height of the summary node of inner subgraphs     borderwidth specifies the thickness of the summary node   s border in pixels     x  y are the x position and y position of the graph   s window in pixels  relatively to the root  screen  if it is the outermost graph  The origin of the window is upper  left hand  For  inner subgraphs  it is the position of the folded summary node  The position can also  be specified in the form loc   x int y  int      folding of a subgraph is 1  if the subgraph is fused  and 0  if the subgraph is visualized  explicitly  There are commands to unfold such summary nodes  see section 5     shrink  stretch gives the shrinking and stretching factor for the graph   s representation  de   fault is 1  1     stretch shrink    100  is the scaling of the graph in percentage  e g     stretch shrink     1 1  or  2 2  or  3 3      is normal size   stretch shrink     1 2   is half size   stretch shrink     2 1  is double size  For subgraphs  it is also the scaling  factor of the summary node  The scaling factor can also be specified by scaling  float   here  scaling 1 0 means normal size      textmode specifies the adjustment of the text within the border of a summary node  The  possibilities are center  left_justify and right_justify     shape can be specified for subgraphs only  It is the shape of the
80. out nearfactor  0  xlspace  12  yspace  55      nodes and edges as in ezample 7        4 3 The Effect of the Layout Algorithms    The following sequence of pictures shows several times the same graph visualized by different  layout algorithms  The graph is cyclic  thus it depends on the personal taste which layout is  the best  Of course  the algorithm tree is not applicable  If the graph is acyclic  the default  layout algorithm or the layout algorithm minbackward are the most appropriate in nearly  all cases  Very often  the main problem is to select the nodes that appear at the top level  of the graph  The layout algorithm looks for candidates that have no incoming edges but at  least one outgoing edge  If such a node does not exist     as in example 9     the algorithms  mindegree       maxoutdegree are helpful    The fine tuning phase eliminates long edges  The tuned graph is more compact  The tuned  graph created by maxdepthslow need not to be maximal deep because the fine tuning may  have reduced the deep better with another variant of the layout algorithm  The tuned graph  created by mindepthslow need not to be minimal deep  too  All these partitioning algorithms  are only heuristics     Example 9     graph     xspace  25  node    title   A  label   Start of all     node    title   B    node    title   C    node    title   D     node    title   E     node    title   F    node    title   G    node    title   H     node    title   I    node    title   J    node    title
81. out nor drawn  Nodes that are only reachable   forward or backward  by edges of an hidden class are not drawn  However  nodes that    3 GRAPH DESCRIPTION LANGUAGE 18    are not reachable at all are drawn   But see attribute ignore_singles   Specification  of classes of hidden edges allows to hide parts of a graph  e g   annotations of a syntax  tree  This attribute is only allowed at the outermost level  More than one settings  are possible to specify exactly the set of classes that are hidden  Note the important  difference between hiding of edges and the edge line style invisible  see section 3 3    Hidden edges are not existent in the layout  Edges with line style invisible are existent  in the layout  they need space and may produce crossings and influence the layout  but  you cannot see them     classname allows to introduce names for the edge classes  The names are used in the menus     infoname allows to introduce names for the additional text labels  The names are used in  the menus     colorentry allows to fill the color map  A color is a triplet of integer values for the  red green blue part  Each integer is between 0  off  and 255  on   e g   0 0 0 is black  and 255 255 255 is white  For instance colorentry 75   70 130 180 sets the map  entry 75 to steel blue  This color can be used by specifying just the number 75  See  section 3 5 for more details     layoutalgorithm chooses different graph layout algorithms Possibilities are maxdepth   mindepth  maxdepthslow  mi
82. r  29  targetname  25  textcolor  13  24  26  textmode  16  24  thickness  26   time limit  65  timeout  10    title  13  22  top  20  top down  11    top to bottom  20  28  tree  8  18  20  37  43  64  tree factor  20  43  triangle  16  24  turquoise  13  28    underline  28   unfold region  51   unfold subgraph  50  UNIX software signal  61  upfactor  18  36  45  usage  48   USRSIGI  61   USRSIG2  61    VCG tool  4   vertical order  16  23  44  53  view  21  56   virtual window  16  49    INDEX    white  13  28  width  16  24  60  window  16    x dpi  59   x position  16  X11 window  48  xbase  17  xlraster  17  xlspace  10  17  xmax  16  xraster  17  xspace  10  17    y dpi  59   y position  16  ybase  17   yellow  13  28  yellowgreen  13  28  ymax  16   yraster  17   yspace  10  17    13    
83. r height      On PostScript multipage output  the position cannot be changed     5 10 The File Selector Box    On all file operation  a file selector box appears to help the selection of a file name  see  figure 48   Additionally to the file name  a file info is shown that may be the size of the file   the access mode  the creation date  the owner or the group  The file entries in the box can  be sorted by names  or by this file info  and can be preselected by different name extensions  like   vcg    ps etc  The directories are always shown as file entries  where         indicates the  actual directory and          indicates the parent directory  To switch into a directory  a double  mouse click on the corresponding entry is necessary  Alternately  a path can be specified     which becomes valid if the button    Rescan    is selected to reread the file name entries           CG exal  vcg File    Select a filename   O 1         veg  L    ps    oO     size         B  mode    O Res drwxr xr x    date    O docutils  down  veg  exal veg    exa2 vcg   exa3 veg   exa4  veg   exa 5  veg   nondown vcg  O preconf    drwxr xr x   rw r  r     rw r  r      exala     rw r  r      k  rw r  r     rw r  r     rw r  r     rw r  r     rw r  r    drwxr xr x          ewner      pbm  O group O   ppm  O           E sorted by name     sorted by info      next    Rescan  Cancel  Esc   Okay          Enter path   Hi esprit users sander src vcg docsrc    Enter filename  exalb vog Jj             Figure 4
84. raight line recognition phase is switched on  see attribute straight_phase      bmax set the maximal number of iterations that are done for the reduction of edge bendings     Note  the attributes xmax  ymax  xbase  ybase  xspace  yspace  xlspace  xraster  yraster   xlraster  hidden  classname  infoname  colorentry  layoutalgorithm  layout_downfactor  lay   out_upfactor  layout_nearfactor  late edge labels  display_edge_labels  dirty_edge_labels  fine   tuning  ignore_singles  straight_phase  priority_phase  manhattan_edges  smanhattan_edges   near_edges  orientation  node_alignment  port_sharing  arrow mode  treefactor  spreadlevel   crossing  weight  crossing  phase2  crossing  optimization  view  edges  nodes  splines  layout    splinefactor  cmin  cmax  pmin  pmax  rmin  rmax  and smax can only be specified for the  outermost graph  They influence the whole layout of all subgraphs  or change the general  usage mode of the VCG tool     3 2 Node Attributes    Node specifications occur as parts of graph specifications  The node information is delimited  by the keywords node    and    At least  every node has to contain a title  other attributes  are optional  It is possible to specify default attribute values of nodes for every subgraph by  node  lt  attribute keyword  gt     lt  attribute value  gt    The complete list of attributes with their  types and default values is shown in table 3     title the unique string identifying the node  This attribute is mandatory     label
85. rank  of the node  We can also specify level  int     Level specifications are only valid  if the layout is calculated  i e  if at least one node  does not have a fixed location specification  The layout algorithm partitioned all nodes  into levels 0     mazlevel  Nodes at the level 0 are on the upper corner  The algorithm  is able to calculate appropriate levels for the nodes automatically  if no fixed levels are  given  see sections 2 3   Specifications of levels are additional constraints  that may be  ignored  if they are in conflict with near edge specifications  See section 3 6 for more  details     horizontal order is the horizontal position of the node within a level  T he nodes which are    specified with horizontal positions are ordered according to these positions within the  levels  T he nodes which do not have this attribute are inserted into this ordering by the  crossing reduction mechanism  see section 2 4   Note that connected components are  handled separately  thus it is not possible to intermix such components by specifying a    3 GRAPH DESCRIPTION LANGUAGE 24    horizontal order   If the algorithm for downward laid out trees is used  the horizontal order influences only  the order of the child nodes at a node  but not the order of the whole level     width  height is the width and height of a node including the border  If no value  in pixels   is given then width and height are calculated from the size of the label     shrink  stretch gives the shrinking 
86. remaining near edges are converted into normal edges  A node that has  anchored edges can have only maximal 1 near edge  Further  if anchored edges occur  the  orientation is always top  to  bottom    It is possible to change the colors or underline during the output of text  e g   drawing  of labels or info fields  This is controlled by special characters in the corresponding string    3 GRAPH DESCRIPTION LANGUAGE 29                                fi000  fi001 Nf 1002 Nf 1003 Nf 1004 Nf 1005 Nf 1006 N  1007   Nf 1008       0       9          1  f1012  f1013  fi014  fi015   Nf i016  f1017  f i018 Nf 1019 Nf 1020  fi021  f 1022 Nf 1023   Nf 1024 Nf 1025 Nf 1026 N  1027 Nf1028 Nf 1029 Nf 1030 Nf 1031    f 1032  fi033      fi034                          fi036     N  1037      fi038  amp    038            fi040  gt    N  1041     N  1042     047         046         045         044         043            fi048 0   049        1    fi050 2    fi051 3    fi052 4    fi053 5    fi054 B    fi055 7   fi056 8    fi057 9   N  1058      fi059     060         gt     fi061         0        gt  062        7   fi064 6    fi065 A   N  1058 B    fi067 C    fi068 D    fi069 E    fi070 F    fi071 G   fi072 H    fi073 I    fi074 J    fi075          fi076 L    fi077 M    fi078          fi079 0   fi080 P   N  1081 Q    fi082          fi083 S    fi084 T    fi085 U    fi086 V    fi087 W   fi088 X    fid89 Y    fi090 2    fi091      fi092     094         093             fi095 _   fi096      fi097 a    fi
87. rey scaled images and monochromatic  images  PostScript images can be split into many pages  such that it is possible to dispatch  a very large graph onto several pages  in order to avoid that the labels of nodes becomes  unreadable small    After selecting the format  the paper size and orientation  and perhaps the number of  PostScript pages  the size and position of the images must be selected  For the bitmap  formats  the dpi factor of the printer must be selected first  because the size depend on this  factor  The factors x dpi and y dpi are independent of each other  such that it is possible  to distort the images with these factors  This is necessary for printing with the usual 9 dot  printers  which often have different horizontal and vertical resolutions  Next  we prefer to    5 USAGE OF THE VCG TOOL 60    select the buttons    Scaling  100     if the image should be normal size  or  Maxspect   if  the image should be maximal large  The scrollbars    Scaling        Width    and    Height    are  combined scrollbars  Changing one of them influences the others  to preserve the aspect ratio   The image is maximal wide  if the scrollthumb is at the right side of the bar labeled with     Width     and maximal heigh  if the scrollthumb is at the right side of the bar labeled with     Height       To position the image on the paper  we move the small rectangular that has diagonals  within the panner  or select one of the buttons    Center        Center width    and    Cente
88. s a nice visualization of structs containing pointers as fields      horizontal_order is the horizontal position the edge  This is of interest only if the edge  crosses several levels because it specifies the point where the edge crosses the level   within a level  The nodes which are specified with horizontal positions are ordered  according to these positions within a level  The horizontal position of a long edge that  crosses the level specifies between which two node of that level the edge has to be  drawn  Other edges which do not have this attribute are inserted into this ordering by  the crossing reduction mechanism  see section 2 4   Note that connected components  are handled separately  thus it is not possible to intermix such components by specifying  a horizontal order     3 4 Grammar of GDL    Now we give the grammar of GDL in EBNF  Extended Bacchus Naur Form   Terminals are  enclosed in    double quotes     nonterminals are written italic  finite iteration is specified by          Note that C style comments         and C   style comments      are allowed     3 GRAPH DESCRIPTION LANGUAGE 27    graph  graph_entry    graph_attribute    graph  attribute name      node  defaults   edge  defaults  foldnode  defaults  foldedge  defaults  node   edge   backedge   nearedge  bentnearedge   node attribute   edge attribute  node attribute name  edge  attribute name  attribute value    integer value  float_value  string_value  enum_value  character    3 5 Colors         grap
89. sy to explain   assume a projection of the plane that contains the graph picture onto a spheric ball  If  we now look onto this ball in 3 D  we have a polar fisheye view  There is a focus point  which is magnified such that we see all details  Parts of the plane that are far away  from the focus point are demagnified very much  Cartesian fisheye have a similar effect   only the formula for the coordinate transformation is different  Selecting cfish means  the cartesian fisheye is used which demagnifies such that the whole graph is visible  self  adaptable cartesian fisheye   With fcfish  the cartesian fisheye shows the region of a  fixed radius around the focus point  fixed radius cartesian fisheye   This region might  be smaller than the whole graph  but the demagnification needed to show this region  in the window is also not so large  thus more details are recognizable  With pfish the  self adaptable polar fisheye is selected that shows the whole graph  and with fpfish  the fixed radius polar fisheye is selected     edges no suppresses the drawing of edges   nodes no suppresses the drawing of nodes     splines specifies whether splines are used to draw edges  yes or no   As default  polygon  segments are used to draw edges  because this is much faster  Note that the spline  drawing routine is not fully validated  and is very slow  Its use is mainly to prepare high  quality PostScript output for very small graphs     layout_splinefactor determines the bending at splines  Th
90. their types and default values is shown in the tables 1 and 2     title specifies the name  a string  associated with the graph  The default name of a subgraph  is the name of the outer graph  and the name of the outmost graph is the name of the  specification input file  The name of a graph is used to identify this graph  e g   if we  want to express that an edge points to a subgraph  Such edges point to the root of the  graph  i e  the first node of the graph or the root of the first subgraph in the graph  if  the subgraph is visualized explicitly     label the text displayed inside the node  when the graph is folded to a node  If no label is  specified then the title of the graph will be used  Note that this text may contain control  characters like NEWLINE that influences the size of the node  See section 3 6 for more  details     infol  info2  info3 combines additional text labels with a node or a folded graph  infol   info2  info3 can be selected from the menu interactively  The corresponding text labels  can be shown by mouse clicks on nodes     color specifies the background color for the outermost graph  or the color of the summary  node for subgraphs  Colors are black  blue  red  green  yellow magenta  cyan  white   darkgrey  darkblue  darkred  darkgreen  darkyellow  darkmagenta  darkcyan  gold   lightgrey  lightblue  lightred  lightgreen  lightyellow  lightmagenta  light   cyan  lilac  turquoise  aquamarine  khaki  purple  yellowgreen  pink  orange and  orchid  If 
91. tle       title       title       title       title       title       title       title     node  node  node  node  node  node  node  node  11  label  node   9  label    8  label    7  label    6  label    5  label    4  label     node  node  node  node  node  node     18  label    17  label    16  label    15  label    14  label    13  label    12  label      10  label     result is example 7     Entry_point  test    test b    test c 5             false    alse    back back a    true        Figure 12  Example 7     test  b    testo   5      Exit  shape  ellipse     test z 3        pcc Y    y   7  shape  rhomb     ilg  h    y   1  shape  rhomb      test a 2        geb p    eid    y   1  shape  rhomb     pou gms     test z  1       fuc     y   1  shape  rhomb      4 EXAMPLES OF GDL SPECIFICATIONS 36         Entry_point  test         test b    test c  5          Exit point  test       false    true false    back    Figure 13  Example 8    node    title  3  label   z    1      node    title  2  label   Start  shape  ellipse     node    title  1  label   Exit_point ntest  shape  ellipse     node    title  0  label   Entry_point ntest  shape  ellipse     edge    thickness  4 sourcename  18  targetname  1      edge    thickness  4 sourcename  0  targetname  18      bentnearedge    thickness  4 sourcename  12  targetname  17  label   false     bentnearedge    thickness  4 sourcename  8  targetname  12  label   false     backedge    thickness  4 sourcename  16  targetname  12  label 
92. tribute value  gt    The position of the edge is determined by the position of its nodes  Thus   there is no way to specify  x  y  positions of the edge  The complete list of attributes with  their types and default values is shown in table 4     attribute name attribute type default value    sourcename string mandatory  targetname string mandatory  label string no label   linestyle continuous  dashed  dotted  invisible continuous    thickness int   class int   color black  white  red        textcolor black  white  red        arrowcolor black  white  red        backarrowcolor black  white  red        arrowsize int   backarrowsize int   arrowsstyle solid  line  none   backarrowsstyle solid  line  none   priority int   anchor int none  horizontal_order int unspecified       Table 4  Edge Attributes    sourcename is the title of the source node of the edge    targetname is the title of the target node of the edge    label specifies the label of the edge  It is drawn if display_edge_labels is set to yes   linestyle specifies the style the edge is drawn  Possibilities are     e continuous a solid line is drawn          e dashed the edge consists of single dashes            e dotted the edge is made of single dots            e invisible the edge is not drawn  The attributes of its shape  color  thickness  are  ignored     3 GRAPH DESCRIPTION LANGUAGE 26    To draw a dashed or dotted line needs more time than solid lines   thickness is the thickness of an edge     class specifies th
93. tries to give all edges the same  length     ignore_singles yes hides all nodes which would appear single and unconnected from the  remaining graph  Such nodes have no edge at all and are sometimes very ugly  Default  is to show all nodes     straight_phase yes initiates an additional phase that tries to avoid bendings in long edges   Long edges are laid out by long straight vertical lines with gradient 90 degree  Thus  this  phase is not very appropriate for normal layout  but it is recommended  if an orthogonal  layout is selected  see manhattan_edges      priority_phase yes replaces the normal pendulum method by aspecialized method  It forces  straight long edges with 90 degree  just as the straight phase  In fact  the straight phase  is a fine tune phase of the priority method  This phase is also recommended  if an  orthogonal layout is selected  see manhattan_edges      manhattan_edges yes switches the orthogonal layout on  Orthogonal layout  or manhattan  layout  means that all edges consist of line segments with gradient 0 or 90 degree   Vertical edge segments might by shared by several edges  while horizontal edge segments  are never shared  This results in very aesthetical layouts just for flowcharts  If the  orthogonal layout is used  then the priority phase and straight phase should be used   Thus  these both phases are switched on  too  unless priority layout and straight line  tuning are switched off explicitly     smanhattan_edges yes switches a specialized orth
94. ttribute value  gt   or  edge  lt  attribute keyword  gt     lt  attribute value  gt     These default attribute values are valid for all nodes and edges  even back edges  near edges  and bent near edges  where the corresponding attribute is not set explicitly  Regions of nodes  and edges can be folded  see section 2 2   As result  a summary node is displayed for all  nodes of a region  and edges to this summary node are displayed for sets of edges to nodes of  the region  It is possible to specify the attributes for such nodes and edges that are originated  by a folding operation  This allows to give the folded regions a different appearance than the    3 GRAPH DESCRIPTION LANGUAGE 13    normal nodes and edges  The attributes for such summary nodes or replacement edges are  specified by    foldnode  lt  attribute keyword  gt     lt  attribute value  gt   or  foldedge  lt  attribute keyword  gt     lt  attribute value  gt     The order of subgraphs  nodes  and edges may influence the final layout  because the first  node is scheduled first  Strings must be enclosed in quote marks and may contain the normal  C escapes  e g   V   Xn   f        Integers are sequences of digits  Floating point numbers  consist of a sequence of digits  followed by a dot     and a sequence of digits  C style comments            and C   style comments      are allowed     3 1 Graph Attributes    The graph information is delimited by the keywords graph    and    The complete list of  attributes with 
95. ulation of Coordinates    After partitioning of nodes into levels and ordering of the nodes within the levels  we can  assign coordinates to the nodes  Here  the nodes can be aligned at the bottom or at the top  of a level or centered at a level  and there is a minimal distance between the levels  yspace    This influences the y coordinates  The x coordinate must be calculated such that there is a  minimum distance between the nodes  xspace  and a minimal distance between the bend  points of edges  xlspace   Further  the layout must be balanced  such that the edges are  short and straight    To achieve this  either a special method for downward laid out trees is used  message  character  T    or  two general iteration phases are performed  The first phase simulates a  physical pendulum  The nodes are the balls and the edges are the strings  The balls hanging  on the strings pendel  i e  the nodes move inside their level and influence the neighbored  nodes  until the layout is sparse enough such that each node has space to be placed on a good  position  This phase is indicated by the message character    m       Next  the nodes are centered with respect to their edges  This phase simulates a rubber   band network  The edges pull on a node with a power proportional to their length  As effect   the node moves to a position such that the sum of the forces of its edges is zero  Then  the  length of the edges is balanced  T he message character  c  indicates this phase    An option
96. used commands are available on key press  Which commands are available depends  on the window dialog box that is currently open  If it is not ambiguous  the uppercase and  lowercase keys have the same functionality  Only the pairs I i and P p must be distinguished    5 USAGE OF THE VCG TOOL 63    switch edge class 1 on or off  switch edge class 2 on or off  switch edge class 3 on or off  switch edge class 4 on or off  switch edge class 5 on or off  switch edge class 6 on or off  switch edge class 7 on or off  switch edge class 8 on or off    1  2  3  4  5  6  7  8  9    switch edge class 9 on or off  RETURN   quit the dialog box  ESC cancel the dialog box       Table 11  Key Commands in the Edge Class Selection Dialog Box    PBM output format  PPM output format  PostScript output format  full color   greyscale   black and white  orientation  landscape  orientation  portrait  scaling  100      scaling  maxspect    center the position  quit the dialog box  quit the dialog box  cancel the dialog box       Table 12  Key Commands in the Export Dialog Box    on the graph window  During the selection of nodes  all key commands are switched off except  q  a  b  c  d  arrows   o       and 0  See the tables 8  9  10  11  12  13  and 14     5 13 Speedup the Layout    The VCG tool was designed to explore large graphs  However  the layout of large graphs  needs a lot of time  Thus  there are many possibilities to speedup the layout algorithm  the  graph can be folded  iterations can be li
97. user  only looks at small regions  and has stretched the graph to see the details  The VCG tool  provides reasonable facilities to support both situations  it can even combine both situations  using fisheye views  The layout algorithm can be controlled to be fast and ugly  or slow and  nice  Folding allows to reduce the number of information seen at the same time  If the user  looks at details  there are possibilities to find nodes and edges that are currently not in the  window  The user can influence the structure of the interwoven graphs by near edges  anchor  points and priorities  Nevertheless  visualization of large graphs is a difficult task and needs  a lot of time     7 RELATED WORK 66    Table 15 shows the performance of the VCG tool on a Sun Sparc ELC  The    Time for  Loading    includes the start of the tool  loading of the specification  automatical layout and  drawing  The measurements are done by hand  The speed is reasonable    The examples are     e Graph 1 shows a LR deterministic automaton produced by the TrafoLa parser generator     see  HeSa93       e Graph 2 is a larger LR deterministic automaton     Graph 3 is an all graph  i e  all nodes are connected pairwise   e Tree 1 is a syntax tree of a CLaX program  normal layout  not specialized tree layout    e Tree 2 is a syntax tree with annotations  normal layout  not specialized tree layout      e Tree 3 is a large syntax tree with annotations  normal layout  not specialized tree  layout        Nodes     
98. ut nearfactor The layout algorithm parti   tions the set of edges into edges pointing upward  edges pointing downward  and edges  pointing sidewards  The last type of edges is also called near edges     3 GRAPH DESCRIPTION LANGUAGE 19    If the layout_downfactor is large compared to the layout_upfactor and the  layout_nearfactor  then the positions of the nodes is mainly determined by  the edges pointing downwards  If the layout_upfactor is large compared to the  layout_downfactor and the layout_nearfactor  then the positions of the nodes is  mainly determined by the edges pointing upwards  If the layout_nearfactor is large   then the positions of the nodes is mainly determined by the edges pointing sidewards   These attributes have no effect  if the method for downward laid out trees is used     late_edge_labels yes means that the graph is first partitioned and then  labels are intro   duced  The default algorithm first creates labels and then partitions the graph  see  section 2 3   which yield a more compact layout  but may have more crossings     display_edge_labels yes means display labels and no means don   t display edge labels     dirty_edge_labels yes enforces a fast layout of edge labels  which may very ugly because  several labels may be drawn at the same place  Dirty edge labels cannot be used if  splines are used     finetuning no switches the fine tuning phase of the graph layout algorithm off  while it is  on as default  see section 2 3   The fine tuning phase 
99. w    LO crees dos   bi 8   Dg   c     En displayed 1     iol h     2 e 0     aad   E 1 1       l window g      h 0 movements               Y   of the        r x       scrollbar    virtual window    movements of the  virtual window    Figure 5  Displayed Window and Virtual Window    Therefore the graph may be larger than the virtual window  It is recommended to set  xmax  ymax not larger than the root screen to get a good performance     xbase  ybase specify the horizontal and vertical offset between the graph   s window and the  upper  left hand corner of the graph  i e  the position of the origin of the system of  coordinates relatively to the upper  left hand corner of the virtual window     xspace  yspace the minimum horizontal and vertical distance between nodes     xlspace is the horizontal distance between lines at the points where they cross the levels    At these points  dummy nodes are used  In fact  this is the horizontal distance between  dummy nodes   It is recommended to set xlspace to a larger value  if splines are used  to draw edges  to prevent sharp bendings     xraster  yraster specifies the raster distance for the position of the nodes  The center of a  node is aligned to this raster     xlraster is the horizontal raster for the positions of the line control points  the dummy  nodes   It should be a divisor of xraster     hidden specifies the classes of edges that are hidden  See section 2 2 and section 3 2  Edges  that are within such a class are not laid 
100. ypeface     fB  ASCII codes 12 66  starts very bold typeface     fn  ASCII codes 12 110  stops underlining and bold typefaces  i e  set to normal  typeface    M  1000  ASCII codes 12 105 48 48 48  prints the ISO character 0     11223  ASCII codes 12 105 50 50 51  prints the ISO character 223  the German 8     11252  ASCII codes 12 105 50 53 50  prints the ISO character 252  the German ii    5ee table 6 for the ISO Latin 1 character set     200  ASCII codes 12 48 48  sets the color to white  or  to the color that currently has  index 0 in the color table     M  31  ASCII codes 12 51 49  sets the color to black  or  to the color that currently has  index 31 in the color table   By this way  it is possible to access to the first 99 colors of  the map  See table 5 for the default color map     The level of nodes  also  summary nodes of subgraphs  is only recognized  if the whole  graph is laid out automatically  i e  if at least one node has no specified location  Normally  all  nodes of level 0 form the uppermost layer  nodes of other levels form the next layer top down    The level specification may be in conflict with a near edge specification  because the source  and target node of a near edge must have the same level  In this case  the level specification  of source or target node of the near edge is ignored     4 Examples of GDL Specifications    Here we give some GDL specifications with the displayed graphs     4 1 A Cyclic Graph  Example 1 is a small cyclic graph without 
    
Download Pdf Manuals
 
 
    
Related Search
    
Related Contents
Dell Brocade M6505 Hardware Reference Manual  exemplar de assinante da imprensa nacional  PUMCL  Shuttle XS35GS V2 barebone  Bauanleitung North American Harvard AT 6  Manual_Amoladora Angular Elite 7_HG1909  取扱説明書のダウンロード  Philips HTB3550G  Benutzerhandbuch FormsForWeb® Filler Version 3.2.x    Copyright © All rights reserved. 
   Failed to retrieve file