1cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* VCG description handler for Bison. 2cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 3cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. 4cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 5cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project This file is part of Bison, the GNU Compiler Compiler. 6cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 7cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Bison is free software; you can redistribute it and/or modify 8cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project it under the terms of the GNU General Public License as published by 9cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the Free Software Foundation; either version 2, or (at your option) 10cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project any later version. 11cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 12cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Bison is distributed in the hope that it will be useful, 13cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project but WITHOUT ANY WARRANTY; without even the implied warranty of 14cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project GNU General Public License for more details. 16cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 17cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project You should have received a copy of the GNU General Public License 18cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project along with Bison; see the file COPYING. If not, write to 19cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 20cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Boston, MA 02110-1301, USA. */ 21cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 22cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef VCG_H_ 23cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define VCG_H_ 24cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 25cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* VCG color map. The 32 prime predefined colors. */ 26cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectenum color 27cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 28cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project white = 0, 29cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project blue, 30cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project red, 31cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project green = 3, 32cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yellow, 33cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project magenta, 34cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project cyan = 6, 35cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project darkgrey, 36cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project darkblue, 37cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project darkred = 9, 38cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project darkgreen, 39cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project darkyellow, 40cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project darkmagenta = 12, 41cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project darkcyan, 42cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project gold, 43cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project lightgrey = 15, 44cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project lightblue, 45cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project lightred, 46cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project lightgreen = 18, 47cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project lightyellow, 48cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project lightmagenta, 49cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project lightcyan = 21, 50cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project lilac, 51cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project turquoise, 52cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project aquamarine = 24, 53cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project khaki, 54cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project purple, 55cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yellowgreen = 27, 56cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project pink, 57cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project orange, 58cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project orchid, 59cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project black = 31 60cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 61cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 62cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* VCG textmode. Specify the adjustement of the text within the border of a summary node. */ 63cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectenum textmode 64cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 65cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project centered, 66cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project left_justify, 67cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project right_justify 68cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 69cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 70cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* VCG shapes. Used for nodes shapes. */ 71cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectenum shape 72cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 73cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project box, 74cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project rhomb, 75cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ellipse, 76cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project triangle 77cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 78cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 79cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Structure for colorentries. */ 80cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstruct colorentry 81cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 82cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int color_index; 83cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int red_cp; 84cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int green_cp; 85cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int blue_cp; 86cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project struct colorentry *next; 87cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 88cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 89cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Structure to construct lists of classnames. */ 90cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstruct classname 91cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 92cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int no; /* Class number */ 93cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const char *name; /* Name associated to the class no. */ 94cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project struct classname *next; /* next name class association. */ 95cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 96cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 97cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Structure is in infoname. */ 98cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstruct infoname 99cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 100cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int integer; 101cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char const *chars; 102cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project struct infoname *next; 103cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 104cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 105cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* VCG decision yes/no. */ 106cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectenum decision 107cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 108cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yes, 109cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project no 110cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 111cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 112cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* VCG graph orientation. */ 113cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectenum orientation 114cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 115cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project top_to_bottom, 116cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project bottom_to_top, 117cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project left_to_right, 118cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project right_to_left 119cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 120cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 121cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* VCG alignment for node alignement. */ 122cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectenum alignment 123cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 124cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project center, 125cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project top, 126cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project bottom 127cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 128cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 129cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* VCG arrow mode. */ 130cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectenum arrow_mode 131cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 132cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fixed, 133cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project free_a 134cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 135cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 136cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* VCG crossing weight type. */ 137cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectenum crossing_type 138cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 139cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project bary, 140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project median, 141cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project barymedian, 142cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project medianbary 143cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 144cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 145cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* VCG views. */ 146cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectenum view 147cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 148cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project normal_view, 149cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project cfish, 150cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project pfish, 151cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fcfish, 152cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fpfish 153cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 154cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 155cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*------------------------------------------------------. 156cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Node attributs list. structure that describes a node. | 157cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`------------------------------------------------------*/ 158cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 159cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstruct node 160cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 161cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Title the unique string identifying the node. This attribute is 162cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project mandatory. */ 163cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const char *title; 164cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 165cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Label the text displayed inside the node. If no label is specified 166cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project then the title of the node will be used. Note that this text may 167cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project contain control characters like NEWLINE that influences the size of 168cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the node. */ 169cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const char *label; 170cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 171cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* loc is the location as x, y position relatively to the system of 172cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project coordinates of the graph. Locations are specified in the form 173cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project loc: - x: xpos y: ypos "". The locations of nodes are only valid, 174cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if the whole graph is fully specified with locations and no part is 175cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project folded. The layout algorithm of the tool calculates appropriate x, y 176cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project positions, if at least one node that must be drawn (i.e., is not 177cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project hidden by folding or edge classes) does not have fixed specified 178cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project locations. 179cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is none. */ 180cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int locx; 181cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int locy; 182cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 183cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* vertical order is the level position (rank) of the node. We can also 184cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project specify level: int. Level specifications are only valid, if the 185cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project layout is calculated, i.e. if at least one node does not have a 186cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fixed location specification. The layout algorithm partitioned all 187cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project nodes into levels 0...maxlevel. Nodes at the level 0 are on the 188cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project upper corner. The algorithm is able to calculate appropriate levels 189cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for the nodes automatically, if no fixed levels are given. 190cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Specifications of levels are additional constraints, that may be 191cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ignored, if they are in conflict with near edge specifications. 192cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default values are unspecified. */ 193cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int vertical_order; 194cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 195cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* horizontal order is the horizontal position of the node within a 196cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project level. The nodes which are specified with horizontal positions are 197cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ordered according to these positions within the levels. The nodes 198cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project which do not have this attribute are inserted into this ordering by 199cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the crossing reduction mechanism. Note that connected components are 200cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project handled separately, thus it is not possible to intermix such 201cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project components by specifying a horizontal order. If the algorithm for 202cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project downward laid out trees is used, the horizontal order influences 203cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project only the order of the child nodes at a node, but not the order of 204cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the whole level. 205cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is unspecified. */ 206cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int horizontal_order; 207cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 208cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* width, height is the width and height of a node including the border. 209cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project If no value (in pixels) is given then width and height are 210cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project calculated from the size of the label. 211cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default are width and height of the label. */ 212cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int width; 213cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int height; 214cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 215cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* shrink, stretch gives the shrinking and stretching factor of the 216cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project node. The values of the attributes width, height, borderwidth and 217cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the size of the label text is scaled by ((stretch=shrink) \Lambda 218cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 100) percent. Note that the actual scale value is determined by the 219cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project scale value of a node relatively to a scale value of the graph, 220cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project i.e. if (stretch,shrink) = (2,1) for the graph and (stretch,shrink) 221cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project = (2,1) for the node of the graph, then the node is scaled by the 222cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project factor 4 compared to the normal size. The scale value can also be 223cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project specified by scaling: float. 224cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default are 1,1. */ 225cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int shrink; 226cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int stretch; 227cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 228cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* folding specifies the default folding of the nodes. The folding k 229cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (with k ? 0) means that the graph part that is reachable via edges 230cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project of a class less or equal to k is folded and displayed as one node. 231cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project There are commands to unfold such summary nodes, see section 5. If 232cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project no folding is specified for a node, then the node may be folded if 233cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project it is in the region of another node that starts the folding. If 234cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project folding 0 is specified, then the node is never folded. In this case 235cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the folding stops at the predecessors of this node, if it is 236cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project reachable from another folding node. The summary node inherits some 237cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project attributes from the original node which starts the folding (all 238cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project color attributes, textmode and label, but not the location). A 239cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project folded region may contain folded regions with smaller folding class 240cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project values (nested foldings). If there is more than one node that start 241cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the folding of the same region (this implies that the folding class 242cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project values are equal) then the attributes are inherited by one of these 243cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project nodes nondeterministically. If foldnode attributes are specified, 244cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project then the summary node attributes are inherited from these attributes. 245cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is none. */ 246cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int folding; 247cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 248cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* shape specifies the visual appearance of a node: box, rhomb, ellipse, 249cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project and triangle. The drawing of ellipses is much slower than the drawing 250cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project of the other shapes. 251cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is box. */ 252cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum shape shape; 253cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 254cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* textmode specifies the adjustment of the text within the border of a 255cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project node. The possibilities are center, left.justify and right.justify. 256cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is center. */ 257cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum textmode textmode; 258cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 259cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* borderwidth specifies the thickness of the node's border in pixels. 260cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project color is the background color of the node. If none is given, the 261cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project node is white. For the possibilities, see the attribute color for 262cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project graphs. 263cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is 2. */ 264cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int borderwidth; 265cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 266cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* node color. 267cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is white or transparent, */ 268cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum color color; 269cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 270cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* textcolor is the color for the label text. bordercolor is the color 271cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project of the border. Default color is the textcolor. info1, info2, info3 272cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project combines additional text labels with a node or a folded graph. info1, 273cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is black. */ 274cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum color textcolor; 275cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 276cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* info2, info3 can be selected from the menu. The corresponding text 277cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project labels can be shown by mouse clicks on nodes. 278cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default are null strings. */ 279cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const char *infos[3]; 280cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 281cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Node border color. 282cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is textcolor. */ 283cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum color bordercolor; 284cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 285cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Next node node... */ 286cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project struct node *next; 287cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 288cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 289cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* typedef alias. */ 290cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef struct node node; 291cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 292cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*-------------------------------------------------------. 293cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Edge attributs list. Structure that describes an edge. | 294cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`-------------------------------------------------------*/ 295cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 296cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* VCG Edge type. */ 297cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectenum edge_type 298cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 299cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project normal_edge, 300cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project back_edge, 301cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project near_edge, 302cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project bent_near_edge 303cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 304cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 305cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Structs enum definitions for edges. */ 306cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectenum linestyle 307cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 308cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project continuous, 309cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project dashed, 310cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project dotted, 311cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project invisible 312cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 313cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 314cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectenum arrowstyle 315cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 316cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project solid, 317cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project line, 318cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project none 319cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 320cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 321cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* The struct edge itself. */ 322cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstruct edge 323cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 324cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 325cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Edge type. 326cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is normal edge. */ 327cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum edge_type type; 328cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 329cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Sourcename is the title of the source node of the edge. 330cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default: none. */ 331cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const char *sourcename; /* Mandatory. */ 332cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 333cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Targetname is the title of the target node of the edge. 334cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default: none. */ 335cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const char *targetname; /* Mandatory. */ 336cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 337cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Label specifies the label of the edge. It is drawn if 338cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project display.edge.labels is set to yes. 339cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default: no label. */ 340cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const char *label; 341cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 342cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Linestyle specifies the style the edge is drawn. Possibilities are: 343cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ffl continuous a solid line is drawn ( -- ) ffl dashed the edge 344cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project consists of single dashes ( - - - ) ffl dotted the edge is made of 345cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project single dots ( \Delta \Delta \Delta ) ffl invisible the edge is not 346cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project drawn. The attributes of its shape (color, thickness) are ignored. 347cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project To draw a dashed or dotted line needs more time than solid lines. 348cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is continuous. */ 349cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum linestyle linestyle; 350cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 351cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Thickness is the thickness of an edge. 352cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is 2. */ 353cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int thickness; 354cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 355cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Class specifies the folding class of the edge. Nodes reachable by 356cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project edges of a class less or equal to a constant k specify folding 357cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project regions of k. See the node attribute folding and the folding commands. 358cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is 1. */ 359cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int class; 360cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 361cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* color is the color of the edge. 362cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is black. */ 363cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum color color; 364cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 365cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* textcolor is the color of the label of the edge. arrowcolor, 366cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project backarrowcolor is the color of the arrow head and of the backarrow 367cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project head. priority The positions of the nodes are mainly determined by 368cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the incoming and outgoing edges. One can think of rubberbands instead 369cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project of edges that pull a node into its position. The priority of an edges 370cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project corresponds to the strength of the rubberband. 371cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is color. */ 372cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum color textcolor; 373cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 374cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Arrow color. 375cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is color. */ 376cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum color arrowcolor; 377cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 378cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* BackArrow color. 379cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is color. */ 380cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum color backarrowcolor; 381cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 382cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* arrowsize, backarrowsize The arrow head is a right-angled, isosceles 383cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project triangle and the cathetuses have length arrowsize. 384cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is 10. */ 385cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int arrowsize; 386cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 387cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Backarrow size 388cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is 0. */ 389cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int backarrowsize; 390cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 391cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* arrowstyle, backarrowstyle Each edge has two arrow heads: the one 392cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project appears at the target node (the normal arrow head), the other appears 393cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project at the source node (the backarrow head). Normal edges only have the 394cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project normal solid arrow head, while the backarrow head is not drawn, i.e. 395cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project it is none. Arrowstyle is the style of the normal arrow head, and 396cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project backarrowstyle is the style of the backarrow head. Styles are none, 397cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project i.e. no arrow head, solid, and line. 398cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is solid. */ 399cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum arrowstyle arrowstyle; 400cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 401cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Default is none. */ 402cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum arrowstyle backarrowstyle; 403cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 404cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Default is 1. */ 405cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int priority; 406cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 407cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Anchor. An anchor point describes the vertical position in a node 408cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project where an edge goes out. This is useful, if node labels are several 409cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project lines long, and outgoing edges are related to label lines. (E.g., 410cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project this allows a nice visualization of structs containing pointers as 411cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fields.). 412cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is none. */ 413cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int anchor; 414cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 415cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Horizontal order is the horizontal position the edge. This is of 416cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project interest only if the edge crosses several levels because it specifies 417cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the point where the edge crosses the level. within a level. The nodes 418cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project which are specified with horizontal positions are ordered according 419cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project to these positions within a level. The horizontal position of a long 420cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project edge that crosses the level specifies between which two node of that 421cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project level the edge has to be drawn. Other edges which do not have this 422cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project attribute are inserted into this ordering by the crossing reduction 423cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project mechanism. Note that connected components are handled separately, 424cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project thus it is not possible to intermix such components by specifying a 425cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project horizontal order. 426cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is unspcified. */ 427cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int horizontal_order; 428cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 429cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* 430cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ** Next edge node... 431cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project */ 432cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project struct edge *next; 433cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 434cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 435cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 436cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* 437cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project** typedef alias. 438cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project*/ 439cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef struct edge edge; 440cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 441cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*--------------------------------------------------------. 442cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Graph attributs list. Structure that describes a graph. | 443cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`--------------------------------------------------------*/ 444cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 445cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstruct graph 446cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 447cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Graph title or name. 448cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Title specifies the name (a string) associated with the graph. The 449cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default name of a subgraph is the name of the outer graph, and the 450cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project name of the outmost graph is the name of the specification input 451cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project file. The name of a graph is used to identify this graph, e.g., if 452cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project we want to express that an edge points to a subgraph. Such edges 453cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project point to the root of the graph, i.e. the first node of the graph or 454cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the root of the first subgraph in the graph, if the subgraph is 455cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project visualized explicitly. 456cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project By default, it's the name of the vcg graph file description. */ 457cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const char *title; 458cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 459cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Graph label. 460cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Label the text displayed inside the node, when the graph is folded 461cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project to a node. If no label is specified then the title of the graph will 462cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project be used. Note that this text may contain control characters like 463cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project NEWLINE that influences the size of the node. 464cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project By default, it takes the title value */ 465cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const char *label; 466cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 467cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Any informations. 468cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Info1, info2, info3 combines additional text labels with a node or a 469cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project folded graph. info1, info2, info3 can be selected from the menu 470cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project interactively. The corresponding text labels can be shown by mouse 471cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project clicks on nodes. 472cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default values are empty strings (here NULL pointers) */ 473cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const char *infos[3]; 474cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 475cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Background color and summary node colors 476cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Color specifies the background color for the outermost graph, or the 477cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project color of the summary node for subgraphs. Colors are given in the enum 478cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project declared above. If more than these default colors are needed, a 479cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project color map with maximal 256 entries can be used. The first 32 entries 480cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project correspond to the colors just listed. A color of the color map can 481cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project selected by the color map index, an integer, for instance red has 482cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project index 2, green has index 3, etc. 483cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is white for background and white or transparent for summary 484cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project nodes. */ 485cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum color color; 486cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 487cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Textcolor. 488cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project need explanations ??? 489cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default is black for summary nodes. */ 490cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum color textcolor; 491cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 492cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Bordercolor is the color of the summary node's border. Default color 493cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project is the textcolor. width, height are width and height of the 494cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project displayed part of the window of the outermost graph in pixels, or 495cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project width and height of the summary node of inner subgraphs. 496cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is the default of the textcolor. */ 497cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum color bordercolor; 498cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 499cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Width, height are width and height of the displayed part of the 500cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project window of the outermost graph in pixels, or width and height of the 501cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project summary node of inner subgraphs. 502cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default value is 100. */ 503cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int width; 504cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int height; 505cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 506cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Specify the thickness if summary node's border in pixels. 507cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default value is 2. */ 508cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int borderwidth; 509cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 510cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* x, y are the x-position and y-position of the graph's window in 511cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project pixels, relatively to the root screen, if it is the outermost graph. 512cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project The origin of the window is upper, left hand. For inner subgraphs, 513cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project it is the position of the folded summary node. The position can also 514cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project be specified in the form loc: fx:int y:intg. 515cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project The default value is 0. */ 516cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int x; 517cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int y; 518cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 519cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* folding of a subgraph is 1, if the subgraph is fused, and 0, if the 520cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project subgraph is visualized explicitly. There are commands to unfold such 521cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project summary nodes. 522cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default value is 0 */ 523cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int folding; 524cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 525cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Shrink, stretch gives the shrinking and stretching factor for the 526cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project graph's representation (default is 1, 1). ((stretch=shrink) \Lambda 527cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 100) is the scaling of the graph in percentage, e.g., 528cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (stretch,shrink) = (1,1) or (2,2) or (3,3) : : : is normal size, 529cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (stretch,shrink) = (1,2) is half size, (stretch,shrink) = (2,1) is 530cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project double size. For subgraphs, it is also the scaling factor of the 531cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project summary node. The scaling factor can also be specified by scaling: 532cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project float (here, scaling 1.0 means normal size). */ 533cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int shrink; 534cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int stretch; 535cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 536cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* textmode specifies the adjustment of the text within the border of a 537cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project summary node. The possibilities are center, left.justify and 538cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project right.justify. 539cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default value is center.*/ 540cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum textmode textmode; 541cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 542cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Shape can be specified for subgraphs only. It is the shape of the 543cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project subgraph summary node that appears if the subgraph is folded: box, 544cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project rhomb, ellipse, and triangle. vertical order is the level position 545cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (rank) of the summary node of an inner subgraph, if this subgraph is 546cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project folded. We can also specify level: int. The level is only 547cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project recognized, if an automatical layout is calculated. horizontal order 548cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project is the horizontal position of the summary node within a level. The 549cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project nodes which are specified with horizontal positions are ordered 550cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project according to these positions within the levels. The nodes which do 551cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project not have this attribute are inserted into this ordering by the 552cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project crossing reduction mechanism. Note that connected 553cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project components are handled separately, thus it is not possible to 554cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project intermix such components by specifying a horizontal order. If the 555cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project algorithm for downward laid out trees is used, the horizontal order 556cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project influences only the order of the child nodes at a node, but not the 557cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project order of the whole level. 558cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is box, other: rhomb, ellipse, triangle. */ 559cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum shape shape; 560cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 561cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Vertical order is the level position (rank) of the summary node of an 562cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project inner subgraph, if this subgraph is folded. We can also specify 563cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project level: int. The level is only recognized, if an automatical layout is 564cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project calculated. */ 565cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int vertical_order; 566cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 567cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Horizontal order is the horizontal position of the summary node within 568cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project a level. The nodes which are specified with horizontal positions are 569cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ordered according to these positions within the levels. The nodes which 570cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project do not have this attribute are inserted into this ordering by the 571cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project crossing reduction mechanism. Note that connected components are 572cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project handled separately, thus it is not possible to intermix such components 573cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project by specifying a horizontal order. If the algorithm for downward laid 574cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project out trees is used, the horizontal order influences only the order of 575cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the child nodes at a node, but not the order of the whole level. */ 576cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int horizontal_order; 577cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 578cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* xmax, ymax specify the maximal size of the virtual window that is 579cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project used to display the graph. This is usually larger than the displayed 580cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project part, thus the width and height of the displayed part cannot be 581cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project greater than xmax and ymax. Only those parts of the graph are drawn 582cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project that are inside the virtual window. The virtual window can be moved 583cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project over the potential infinite system of coordinates by special 584cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project positioning commands. 585cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Defaults are 90 and 90. */ 586cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int xmax; 587cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int ymax; 588cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 589cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* xy-base: specify the upper left corner coordinates of the graph 590cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project relatively to the root window. 591cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Defaults are 5, 5. */ 592cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int xbase; 593cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int ybase; 594cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 595cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* xspace, yspace the minimum horizontal and vertical distance between 596cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project nodes. xlspace is the horizontal distance between lines at the 597cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project points where they cross the levels. (At these points, dummy nodes 598cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project are used. In fact, this is the horizontal distance between dummy 599cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project nodes.) It is recommended to set xlspace to a larger value, if 600cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project splines are used to draw edges, to prevent sharp bendings. 601cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default are 20 and 70. */ 602cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int xspace; 603cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yspace; 604cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 605cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* The horizontal space between lines at the point where they cross 606cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the levels. 607cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project defaults value is 1/2 xspace (polygone) and 4/5 xspace (splines)*/ 608cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int xlspace; 609cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 610cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* xraster, yraster specifies the raster distance for the position of 611cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the nodes. The center of a node is aligned to this raster. xlraster 612cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project is the horizontal raster for the positions of the line control 613cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project points (the dummy nodes). It should be a divisor of xraster. 614cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project defaults are 1,1. */ 615cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int xraster; 616cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yraster; 617cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 618cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* xlraster is the horizontal raster for the positions of the line 619cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project control points (the dummy nodes). It should be a divisor of xraster. 620cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project defaults is 1. */ 621cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int xlraster; 622cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 623cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* hidden specifies the classes of edges that are hidden. 624cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Edges that are within such a class are not laid out nor drawn. 625cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Nodes that are only reachable (forward or backward) by edges of an 626cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project hidden class are not drawn. However, nodes that are not reachable 627cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project at all are drawn. (But see attribute ignore.singles.) Specification 628cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project of classes of hidden edges allows to hide parts of a graph, e.g., 629cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project annotations of a syntax tree. This attribute is only allowed at the 630cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project outermost level. More than one settings are possible to specify 631cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project exactly the set of classes that are hidden. Note the important 632cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project difference between hiding of edges and the edge line style invisible. 633cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Hidden edges are not existent in the layout. Edges with line style 634cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project invisible are existent in the layout; they need space and may 635cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project produce crossings and influence the layout, but you cannot see 636cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project them. 637cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project No default value. */ 638cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int hidden; 639cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 640cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Classname allows to introduce names for the edge classes. The names 641cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project are used in the menus. infoname allows to introduce names for the 642cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project additional text labels. The names are used in the menus. 643cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project defaults are 1,2,3... 644cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project By default, no class names. */ 645cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project struct classname *classname; 646cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 647cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Infoname allows to introduce names for the additional text labels. 648cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project The names are used in the menus. 649cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Infoname is given by an integer and a string. 650cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project The default value is NULL. */ 651cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project struct infoname *infoname; 652cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 653cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Colorentry allows to fill the color map. A color is a triplet of integer 654cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project values for the red/green/blue-part. Each integer is between 0 (off) and 655cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 255 (on), e.g., 0 0 0 is black and 255 255 255 is white. For instance 656cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project colorentry 75 : 70 130 180 sets the map entry 75 to steel blue. This 657cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project color can be used by specifying just the number 75. 658cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default id NULL. */ 659cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project struct colorentry *colorentry; 660cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 661cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Layout downfactor, layout upfactor, layout nearfactor The layout 662cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project algorithm partitions the set of edges into edges pointing upward, 663cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project edges pointing downward, and edges pointing sidewards. The last type 664cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project of edges is also called near edges. If the layout.downfactor is 665cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project large compared to the layout.upfactor and the layout.nearfactor, 666cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project then the positions of the nodes is mainly determined by the edges 667cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project pointing downwards. If the layout.upfactor is large compared to the 668cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project layout.downfactor and the layout.nearfactor, then the positions of 669cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the nodes is mainly determined by the edges pointing upwards. If the 670cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project layout.nearfactor is large, then the positions of the nodes is 671cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project mainly determined by the edges pointing sidewards. These attributes 672cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project have no effect, if the method for downward laid out trees is used. 673cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is normal. */ 674cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int layout_downfactor; 675cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int layout_upfactor; 676cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int layout_nearfactor; 677cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Layout splinefactor determines the bending at splines. The factor 678cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 100 indicates a very sharp bending, a factor 1 indicates a very flat 679cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project bending. Useful values are 30 : : : 80. */ 680cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int layout_splinefactor; 681cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 682cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Late edge labels yes means that the graph is first partitioned and 683cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project then, labels are introduced. The default algorithm first creates 684cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project labels and then partitions the graph, which yield a more compact 685cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project layout, but may have more crossings. 686cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is no. */ 687cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum decision late_edge_labels; 688cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 689cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Display edge labels yes means display labels and no means don't 690cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project display edge labels. 691cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default vaule is no. */ 692cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum decision display_edge_labels; 693cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 694cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Dirty edge labels yes enforces a fast layout of edge labels, which 695cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project may very ugly because several labels may be drawn at the same place. 696cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Dirty edge labels cannot be used if splines are used. 697cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is no. 698cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project */ 699cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum decision dirty_edge_labels; 700cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 701cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Finetuning no switches the fine tuning phase of the graph layout 702cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project algorithm off, while it is on as default. The fine tuning phase 703cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project tries to give all edges the same length. 704cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is yes. */ 705cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum decision finetuning; 706cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 707cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Ignore singles yes hides all nodes which would appear single and 708cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project unconnected from the remaining graph. Such nodes have no edge at all 709cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project and are sometimes very ugly. Default is to show all nodes. 710cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is no. */ 711cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum decision ignore_singles; 712cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 713cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* priority phase yes replaces the normal pendulum method by a 714cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project specialized method: It forces straight long edges with 90 degree, 715cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project just as the straight phase. In fact, the straight phase is a fine 716cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project tune phase of the priority method. This phase is also recommended, 717cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if an orthogonal layout is selected (see manhattan.edges). 718cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is no. */ 719cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum decision priority_phase; 720cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 721cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* manhattan edges yes switches the orthogonal layout on. Orthogonal 722cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project layout (or manhattan layout) means that all edges consist of line 723cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project segments with gradient 0 or 90 degree. Vertical edge segments might 724cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project by shared by several edges, while horizontal edge segments are never 725cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project shared. This results in very aesthetical layouts just for flowcharts. 726cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project If the orthogonal layout is used, then the priority phase and 727cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project straight phase should be used. Thus, these both phases are switched 728cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project on, too, unless priority layout and straight line tuning are 729cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switched off explicitly. 730cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is no. */ 731cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum decision manhattan_edges; 732cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 733cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Smanhattan edges yes switches a specialized orthogonal layout on: 734cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Here, all horizontal edge segments between two levels share the same 735cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project horizontal line, i.e. not only vertical edge segments are shared, 736cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project but horizontal edge segments are shared by several edges, too. This 737cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project looks nice for trees but might be too confusing in general, because 738cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the location of an edge might be ambiguously. 739cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is no. */ 740cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum decision smanhattan_edges; 741cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 742cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Near edges no suppresses near edges and bent near edges in the 743cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project graph layout. 744cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is yes. */ 745cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum decision near_edges; 746cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 747cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Orientation specifies the orientation of the graph: top.to.bottom, 748cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project bottom.to.top, left.to.right or right.to.left. Note: the normal 749cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project orientation is top.to.bottom. All explanations here are given 750cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project relatively to the normal orientation, i.e., e.g., if the orientation 751cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project is left to right, the attribute xlspace is not the horizontal but 752cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the vertical distance between lines, etc. 753cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is to_to_bottom. */ 754cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum orientation orientation; 755cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 756cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Node alignment specified the vertical alignment of nodes at the 757cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project horizontal reference line of the levels. If top is specified, the 758cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project tops of all nodes of a level have the same y-coordinate; on bottom, 759cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the bottoms have the same y-coordinate, on center the nodes are 760cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project centered at the levels. 761cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is center. */ 762cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum alignment node_alignment; 763cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 764cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Port sharing no suppresses the sharing of ports of edges at the 765cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project nodes. Normally, if multiple edges are adjacent to the same node, 766cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project and the arrow head of all these edges has the same visual appearance 767cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (color, size, etc.), then these edges may share a port at a node, 768cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project i.e. only one arrow head is draw, and all edges are incoming into 769cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project this arrow head. This allows to have many edges adjacent to one node 770cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project without getting confused by too many arrow heads. If no port sharing 771cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project is used, each edge has its own port, i.e. its own place where it is 772cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project adjacent to the node. 773cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is yes. */ 774cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum decision port_sharing; 775cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 776cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Arrow mode fixed (default) should be used, if port sharing is used, 777cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project because then, only a fixed set of rotations for the arrow heads are 778cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project used. If the arrow mode is free, then each arrow head is rotated 779cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project individually to each edge. But this can yield to a black spot, where 780cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project nothing is recognizable, if port sharing is used, since all these 781cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project qdifferently rotated arrow heads are drawn at the same place. If the 782cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project arrow mode is fixed, then the arrow head is rotated only in steps of 783cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 45 degree, and only one arrow head occurs at each port. 784cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is fixed. */ 785cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum arrow_mode arrow_mode; 786cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 787cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Treefactor The algorithm tree for downward laid out trees tries to 788cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project produce a medium dense, balanced tree-like layout. If the tree 789cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project factor is greater than 0.5, the tree edges are spread, i.e. they 790cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project get a larger gradient. This may improve the readability of the tree. 791cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Note: it is not obvious whether spreading results in a more dense or 792cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project wide layout. For a tree, there is a tree factor such that the whole 793cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project tree is minimal wide. 794cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is 0.5. */ 795cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project float treefactor; 796cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 797cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Spreadlevel This parameter only influences the algorithm tree, too. 798cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project For large, balanced trees, spreading of the uppermost nodes would 799cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enlarge the width of the tree too much, such that the tree does not 800cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fit anymore in a window. Thus, the spreadlevel specifies the minimal 801cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project level (rank) where nodes are spread. Nodes of levels upper than 802cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project spreadlevel are not spread. 803cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is 1. */ 804cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int spreadlevel; 805cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 806cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Crossing weight specifies the weight that is used for the crossing 807cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project reduction: bary (default), median, barymedian or medianbary. We 808cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project cannot give a general recommendation, which is the best method. For 809cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project graphs with very large average degree of edges (number of incoming 810cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project and outgoing edges at a node), the weight bary is the fastest 811cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project method. With the weights barymedian and medianbary, equal weights of 812cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project different nodes are not very probable, thus the crossing reduction 813cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project phase 2 might be very fast. 814cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is bary. */ 815cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum crossing_type crossing_weight; 816cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 817cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Crossing phase2 is the most time consuming phase of the crossing 818cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project reduction. In this phase, the nodes that happen to have equal 819cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project crossing weights are permuted. By specifying no, this phase is 820cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project suppressed. 821cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is yes. */ 822cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum decision crossing_phase2; 823cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 824cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Crossing optimization is a postprocessing phase after the normal 825cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project crossing reduction: we try to optimize locally, by exchanging pairs 826cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project of nodes to reduce the crossings. Although this phase is not very 827cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project time consuming, it can be suppressed by specifying no. 828cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is yes. */ 829cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum decision crossing_optimization; 830cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 831cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* View allows to select the fisheye views. Because 832cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project of the fixed size of the window that shows the graph, we normally 833cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project can only see a small amount of a large graph. If we shrink the graph 834cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project such that it fits into the window, we cannot recognize any detail 835cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project anymore. Fisheye views are coordinate transformations: the view onto 836cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the graph is distort, to overcome this usage deficiency. The polar 837cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fisheye is easy to explain: assume a projection of the plane that 838cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project contains the graph picture onto a spheric ball. If we now look onto 839cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project this ball in 3 D, we have a polar fisheye view. There is a focus 840cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project point which is magnified such that we see all details. Parts of the 841cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project plane that are far away from the focus point are demagnified very 842cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project much. Cartesian fisheye have a similar effect; only the formula for 843cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the coordinate transformation is different. Selecting cfish means 844cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the cartesian fisheye is used which demagnifies such that the whole 845cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project graph is visible (self adaptable cartesian fisheye). With fcfish, 846cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the cartesian fisheye shows the region of a fixed radius around the 847cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project focus point (fixed radius cartesian fisheye). This region might be 848cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project smaller than the whole graph, but the demagnification needed to show 849cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project this region in the window is also not so large, thus more details 850cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project are recognizable. With pfish the self adaptable polar fisheye is 851cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project selected that shows the whole graph, and with fpfish the fixed 852cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project radius polar fisheye is selected. 853cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is normal view. */ 854cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum view view; 855cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 856cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Edges no suppresses the drawing of edges. 857cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is yes. */ 858cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum decision edges; 859cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 860cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Nodes no suppresses the drawing of nodes. 861cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is yes. */ 862cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum decision nodes; 863cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 864cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Splines specifies whether splines are used to draw edges (yes or no). 865cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project As default, polygon segments are used to draw edges, because this is 866cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project much faster. Note that the spline drawing routine is not fully 867cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project validated, and is very slow. Its use is mainly to prepare high 868cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project quality PostScript output for very small graphs. 869cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is no. */ 870cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum decision splines; 871cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 872cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Bmax set the maximal number of iterations that are done for the 873cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project reduction of edge bendings. 874cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is 100. */ 875cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int bmax; 876cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 877cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Cmin set the minimal number of iterations that are done for the 878cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project crossing reduction with the crossing weights. The normal method 879cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project stops if two consecutive checks does not reduce the number of 880cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project crossings anymore. However, this increasing of the number of 881cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project crossings might be locally, such that after some more iterations, 882cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the crossing number might decrease much more. 883cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is 0. */ 884cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int cmin; 885cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 886cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Cmax set the maximal number of interactions for crossing reduction. 887cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project This is helpful for speeding up the layout process. 888cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is -1, which represents infinity. */ 889cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int cmax; 890cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 891cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Pmin set the minimal number of iterations that is done with the 892cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project pendulum method. Similar to the crossing reduction, this method 893cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project stops if the `imbalancement weight' does not decreases anymore. 894cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project However, the increasing of the imbalancement weight might be locally, 895cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project such that after some more iterations, the imbalancement weight might 896cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project decrease much more. 897cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is 0. */ 898cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int pmin; 899cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 900cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Pmax set the maximal number of iterations of the pendulum method. 901cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project This is helpful for speedup the layout process. 902cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is 100. */ 903cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int pmax; 904cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 905cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Rmin set the minimal number of iterations that is done with the 906cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project rubberband method. This is similar as for the pendulum method. 907cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is 0. */ 908cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int rmin; 909cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 910cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Rmax set the maximal number of iterations of the rubberband method. 911cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project This is helpful for speedup the layout process. 912cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is 100. */ 913cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int rmax; 914cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 915cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Smax set the maximal number of iterations of the straight line 916cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project recognition phase (useful only, if the straight line recognition 917cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project phase is switched on, see attribute straight.phase). 918cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Default is 100. */ 919cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int smax; 920cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 921cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Generic values. 922cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project */ 923cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project node node; 924cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project edge edge; 925cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 926cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* List of nodes declared. 927cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Pointer. */ 928cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project node *node_list; 929cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 930cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* List of edges declared. 931cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Pointer. */ 932cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project edge *edge_list; 933cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 934cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 935cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 936cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Graph typedefs. */ 937cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef struct graph graph; 938cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 939cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid new_graph (graph *g); 940cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid new_node (node *n); 941cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid new_edge (edge *e); 942cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 943cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid add_node (graph *g, node *n); 944cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid add_edge (graph *g, edge *e); 945cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 946cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid add_colorentry (graph *g, int color_idx, int red_cp, 947cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int green_cp, int blue_cp); 948cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid add_classname (graph *g, int val, const char *name); 949cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid add_infoname (graph *g, int val, const char *name); 950cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 951cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid open_node (FILE *fout); 952cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid output_node (node *n, FILE *fout); 953cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid close_node (FILE *fout); 954cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 955cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid open_edge (edge *e, FILE *fout); 956cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid output_edge (edge *e, FILE *fout); 957cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid close_edge (FILE *fout); 958cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 959cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid open_graph (FILE *fout); 960cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid output_graph (graph *g, FILE *fout); 961cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid close_graph (graph *g, FILE *fout); 962cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 963cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif /* VCG_H_ */ 964