1 /* $Id$ $Revision$ */ 2 /* vim:set shiftwidth=4 ts=8: */ 3 4 /************************************************************************* 5 * Copyright (c) 2011 AT&T Intellectual Property 6 * All rights reserved. This program and the accompanying materials 7 * are made available under the terms of the Eclipse Public License v1.0 8 * which accompanies this distribution, and is available at 9 * http://www.eclipse.org/legal/epl-v10.html 10 * 11 * Contributors: See CVS logs. Details at http://www.graphviz.org/ 12 *************************************************************************/ 13 14 #ifndef GV_CONST_H 15 #define GV_CONST_H 16 17 #define SMALLBUF 128 18 #define LPAREN '(' 19 #define RPAREN ')' 20 #define LBRACE '{' 21 #define RBRACE '}' 22 23 /* node,edge types */ 24 #ifdef NORMAL 25 #undef NORMAL 26 #endif 27 #define NORMAL 0 /* an original input node */ 28 #define VIRTUAL 1 /* virtual nodes in long edge chains */ 29 #define SLACKNODE 2 /* encode edges in node position phase */ 30 #define REVERSED 3 /* reverse of an original edge */ 31 #define FLATORDER 4 /* for ordered edges */ 32 #define CLUSTER_EDGE 5 /* for ranking clusters */ 33 #define IGNORED 6 /* concentrated multi-edges */ 34 35 /* collapsed node classifications */ 36 #define NOCMD 0 /* default */ 37 #define SAMERANK 1 /* place on same rank */ 38 #define MINRANK 2 /* place on "least" rank */ 39 #define SOURCERANK 3 /* strict version of MINRANK */ 40 #define MAXRANK 4 /* place on "greatest" rank */ 41 #define SINKRANK 5 /* strict version of MAXRANK */ 42 #define LEAFSET 6 /* set of collapsed leaf nodes */ 43 #define CLUSTER 7 /* set of clustered nodes */ 44 45 /* type of cluster rank assignment */ 46 #define LOCAL 100 47 #define GLOBAL 101 48 #define NOCLUST 102 49 50 /* default attributes */ 51 #define DEFAULT_COLOR "black" 52 #define DEFAULT_ACTIVEPENCOLOR "#808080" 53 #define DEFAULT_ACTIVEFILLCOLOR "#fcfcfc" 54 #define DEFAULT_ACTIVEFONTCOLOR "black" 55 #define DEFAULT_SELECTEDPENCOLOR "#303030" 56 #define DEFAULT_SELECTEDFILLCOLOR "#e8e8e8" 57 #define DEFAULT_SELECTEDFONTCOLOR "black" 58 #define DEFAULT_DELETEDPENCOLOR "#e0e0e0" 59 #define DEFAULT_DELETEDFILLCOLOR "#f0f0f0" 60 #define DEFAULT_DELETEDFONTCOLOR "darkgrey" 61 #define DEFAULT_VISITEDPENCOLOR "#101010" 62 #define DEFAULT_VISITEDFILLCOLOR "#f8f8f8" 63 #define DEFAULT_VISITEDFONTCOLOR "black" 64 #define DEFAULT_FONTSIZE 14.0 65 #define DEFAULT_LABEL_FONTSIZE 11.0 /* for head/taillabel */ 66 #define MIN_FONTSIZE 1.0 67 #if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) || defined(__IPHONE_OS_VERSION_MIN_REQUIRED) 68 #define DEFAULT_FONTNAME "TimesNewRomanPSMT" 69 #else 70 #define DEFAULT_FONTNAME "Times-Roman" 71 #endif 72 #define DEFAULT_FILL "lightgrey" 73 #define LINESPACING 1.20 74 75 #define DEFAULT_NODEHEIGHT 0.5 76 #define MIN_NODEHEIGHT 0.02 77 #define DEFAULT_NODEWIDTH 0.75 78 #define MIN_NODEWIDTH 0.01 79 #define DEFAULT_NODESHAPE "ellipse" 80 81 #define NODENAME_ESC "\\N" 82 83 #define DEFAULT_LAYERSEP ":\t " 84 #define DEFAULT_LAYERLISTSEP "," 85 86 #define DEFAULT_NODESEP 0.25 87 #define MIN_NODESEP 0.02 88 #define DEFAULT_RANKSEP 0.5 89 #define MIN_RANKSEP 0.02 90 91 92 /* default margin for paged formats such as PostScript - in points = 0.5in */ 93 #define DEFAULT_PRINT_MARGIN 36 94 /* default margin for embedded formats such as PNG - in points */ 95 #define DEFAULT_EMBED_MARGIN 0 96 /* default padding around graph - in points */ 97 #define DEFAULT_GRAPH_PAD 4 98 99 #define SELF_EDGE_SIZE 18 100 #define MC_SCALE 256 /* for mincross */ 101 102 #define PORT_LABEL_DISTANCE 10 103 #define PORT_LABEL_ANGLE -25 /* degrees; pos is CCW, neg is CW */ 104 105 /* default polygon sample size for overlap removal and maps */ 106 #define DFLT_SAMPLE 20 107 108 /* arrow types */ 109 #define ARR_NONE 0 110 111 /* sides (e.g. of cluster margins) */ 112 #define BOTTOM_IX 0 113 #define RIGHT_IX 1 114 #define TOP_IX 2 115 #define LEFT_IX 3 116 117 /* sides of boxes for SHAPE_path */ 118 #define BOTTOM (1<<BOTTOM_IX) 119 #define RIGHT (1<<RIGHT_IX) 120 #define TOP (1<<TOP_IX) 121 #define LEFT (1<<LEFT_IX) 122 123 #define CCW -1 /* counter clock-wise */ 124 #define CW 1 /* clock-wise */ 125 126 /* Obj types for renderers */ 127 #define NONE 0 128 #define NODE 1 129 #define EDGE 2 130 #define CLST 3 131 132 /* output languages */ 133 #define HPGL 2 /* HP Graphics Language */ 134 #define PCL 3 /* Printer Control Language */ 135 #define MIF 4 /* Adobe FrameMaker */ 136 #define PIC_format 5 /* symbol PIC is used by compilers for 137 Position Independent Code */ 138 #define TK 15 /* TK canvas */ 139 140 #define VTX 21 /* visual thought */ 141 #define METAPOST 22 142 #define DIA 24 /* dia drawing tool */ 143 144 #define QPDF 30 /* Quartz paged PDF */ 145 #define QEPDF 31 /* Quartz embedded PDF */ 146 147 #define QBM_FIRST 100 /* first Quartz bitmap format, inclusive */ 148 #define QBM_LAST 200 /* last Quartz bitmap format, exclusive */ 149 150 #define GVRENDER_PLUGIN 300 /* a plugin supported language */ 151 #define NO_SUPPORT 999 /* no support */ 152 153 /* for clusters */ 154 #define CL_BACK 10 /* cost of backward pointing edge */ 155 #define CL_OFFSET 8 /* margin of cluster box in PS points */ 156 #ifndef _WIN32 157 #define CL_CROSS 1000 /* cost of cluster skeleton edge crossing */ 158 #else 159 #define CL_CROSS 100 /* avoid 16 bit overflow */ 160 #endif 161 162 /* edge types */ 163 #define REGULAREDGE 1 164 #define FLATEDGE 2 165 #define SELFWPEDGE 4 166 #define SELFNPEDGE 8 167 #define SELFEDGE 8 168 #define EDGETYPEMASK 15 /* the OR of the above */ 169 170 /* for graph server */ 171 #define SERVER_NN 200 172 #define SERVER_NE 500 173 174 /* for neato */ 175 #define Spring_coeff 1.0 176 #define MYHUGE (1.0e+37) 177 #define MAXDIM 10 178 179 /* drawing phases */ 180 #define GVBEGIN 0 181 #define GVSPLINES 1 182 183 /* existence of labels */ 184 #define EDGE_LABEL (1 << 0) 185 #define HEAD_LABEL (1 << 1) 186 #define TAIL_LABEL (1 << 2) 187 #define GRAPH_LABEL (1 << 3) 188 #define NODE_XLABEL (1 << 4) 189 #define EDGE_XLABEL (1 << 5) 190 191 /* type of graph label: GD_label_pos */ 192 #define LABEL_AT_BOTTOM 0 193 #define LABEL_AT_TOP 1 194 #define LABEL_AT_LEFT 2 195 #define LABEL_AT_RIGHT 4 196 197 /* values specifying rankdir */ 198 #define RANKDIR_TB 0 199 #define RANKDIR_LR 1 200 #define RANKDIR_BT 2 201 #define RANKDIR_RL 3 202 203 /* allowed charsets */ 204 #define CHAR_UTF8 0 205 #define CHAR_LATIN1 1 206 #define CHAR_BIG5 2 207 208 /* style flags (0-23)*/ 209 #define FILLED (1 << 0) 210 #define RADIAL (1 << 1) 211 #define ROUNDED (1 << 2) 212 #define DIAGONALS (1 << 3) 213 #define AUXLABELS (1 << 4) 214 #define INVISIBLE (1 << 5) 215 #define STRIPED (1 << 6) 216 #define DOTTED (1 << 7) 217 #define DASHED (1 << 8) 218 #define WEDGED (1 << 9) 219 #define UNDERLINE (1 << 10) 220 #define FIXEDSHAPE (1 << 11) 221 222 #define SHAPE_MASK (127 << 24) 223 224 /* shape (1-127) */ 225 #define DOGEAR (1 << 24) 226 #define TAB (2 << 24) 227 #define FOLDER (3 << 24) 228 #define BOX3D (4 << 24) 229 #define COMPONENT (5 << 24) 230 #define PROMOTER (6 << 24) 231 #define CDS (7 << 24) 232 #define TERMINATOR (8 << 24) 233 #define UTR (9 << 24) 234 #define PRIMERSITE (10 << 24) 235 #define RESTRICTIONSITE (11 << 24) 236 #define FIVEPOVERHANG (12 << 24) 237 #define THREEPOVERHANG (13 << 24) 238 #define NOVERHANG (14 << 24) 239 #define ASSEMBLY (15 << 24) 240 #define SIGNATURE (16 << 24) 241 #define INSULATOR (17 << 24) 242 #define RIBOSITE (18 << 24) 243 #define RNASTAB (19 << 24) 244 #define PROTEASESITE (20 << 24) 245 #define PROTEINSTAB (21 << 24) 246 #define RPROMOTER (22 << 24) 247 #define RARROW (23 << 24) 248 #define LARROW (24 << 24) 249 #define LPROMOTER (25 << 24) 250 #define CYLINDER (26 << 24) 251 252 /* fill types */ 253 #define FILL 1 254 #define GRADIENT 2 255 #define RGRADIENT 3 256 #define NO_POLY 4 /* bit flag: if set, do fill only */ 257 258 /* label types */ 259 #define LT_NONE (0 << 1) 260 #define LT_HTML (1 << 1) 261 #define LT_RECD (2 << 1) 262 263 /* Flags stored in GD_flags 264 * Bit(s): 0 unused 265 * 1-3 ET_ 266 * 4 NEW_RANK 267 */ 268 269 /* edge types */ 270 #define ET_NONE (0 << 1) 271 #define ET_LINE (1 << 1) 272 #define ET_CURVED (2 << 1) 273 #define ET_PLINE (3 << 1) 274 #define ET_ORTHO (4 << 1) 275 #define ET_SPLINE (5 << 1) 276 #define ET_COMPOUND (6 << 1) 277 278 /* New ranking is used */ 279 #define NEW_RANK (1 << 4) 280 /******/ 281 282 /* user-specified node position: ND_pinned */ 283 #define P_SET 1 /* position supplied by user */ 284 #define P_FIX 2 /* position fixed during topological layout */ 285 #define P_PIN 3 /* position fixed */ 286 287 #define GAP 4 /* whitespace in POINTS around labels and between peripheries */ 288 289 /* fontsize at which text is omitted entirely */ 290 #define FONTSIZE_MUCH_TOO_SMALL 0.15 291 /* fontsize at which text is rendered by a simple line */ 292 #define FONTSIZE_TOO_SMALL 1.5 293 294 #endif 295