Graphviz  2.29.20120523.0446
lib/common/const.h
Go to the documentation of this file.
00001 /* $Id$ $Revision$ */
00002 /* vim:set shiftwidth=4 ts=8: */
00003 
00004 /*************************************************************************
00005  * Copyright (c) 2011 AT&T Intellectual Property 
00006  * All rights reserved. This program and the accompanying materials
00007  * are made available under the terms of the Eclipse Public License v1.0
00008  * which accompanies this distribution, and is available at
00009  * http://www.eclipse.org/legal/epl-v10.html
00010  *
00011  * Contributors: See CVS logs. Details at http://www.graphviz.org/
00012  *************************************************************************/
00013 
00014 #ifndef GV_CONST_H
00015 #define GV_CONST_H
00016 
00017 #define SMALLBUF        128
00018 #define LPAREN          '('
00019 #define RPAREN          ')'
00020 #define LBRACE          '{'
00021 #define RBRACE          '}'
00022 
00023 /*      node,edge types */
00024 #ifdef NORMAL
00025 #undef NORMAL
00026 #endif
00027 #define         NORMAL          0       /* an original input node */
00028 #define         VIRTUAL         1       /* virtual nodes in long edge chains */
00029 #define         SLACKNODE       2       /* encode edges in node position phase */
00030 #define         REVERSED        3       /* reverse of an original edge */
00031 #define         FLATORDER       4       /* for ordered edges */
00032 #define         CLUSTER_EDGE 5  /* for ranking clusters */
00033 #define         IGNORED         6       /* concentrated multi-edges */
00034 
00035 /* collapsed node classifications */
00036 #define         NOCMD           0       /* default */
00037 #define         SAMERANK        1       /* place on same rank */
00038 #define         MINRANK         2       /* place on "least" rank */
00039 #define         SOURCERANK      3       /* strict version of MINRANK */
00040 #define         MAXRANK         4       /* place on "greatest" rank */
00041 #define         SINKRANK        5       /* strict version of MAXRANK */
00042 #define         LEAFSET         6       /* set of collapsed leaf nodes */
00043 #define         CLUSTER         7       /* set of clustered nodes */
00044 
00045 /* type of cluster rank assignment */
00046 #define         LOCAL           100
00047 #define         GLOBAL          101
00048 #define         NOCLUST         102
00049 
00050 /* default attributes */
00051 #define         DEFAULT_COLOR           "black"
00052 #define         DEFAULT_ACTIVEPENCOLOR  "#808080"
00053 #define         DEFAULT_ACTIVEFILLCOLOR "#fcfcfc"
00054 #define         DEFAULT_ACTIVEFONTCOLOR "black"
00055 #define         DEFAULT_SELECTEDPENCOLOR "#303030"
00056 #define         DEFAULT_SELECTEDFILLCOLOR "#e8e8e8"
00057 #define         DEFAULT_SELECTEDFONTCOLOR "black"
00058 #define         DEFAULT_DELETEDPENCOLOR "#e0e0e0"
00059 #define         DEFAULT_DELETEDFILLCOLOR "#f0f0f0"
00060 #define         DEFAULT_DELETEDFONTCOLOR "darkgrey"
00061 #define         DEFAULT_VISITEDPENCOLOR "#101010"
00062 #define         DEFAULT_VISITEDFILLCOLOR "#f8f8f8"
00063 #define         DEFAULT_VISITEDFONTCOLOR "black"
00064 #define         DEFAULT_FONTSIZE        14.0
00065 #define         DEFAULT_LABEL_FONTSIZE  11.0    /* for head/taillabel */
00066 #define         MIN_FONTSIZE            1.0
00067 #define         DEFAULT_FONTNAME        "Times-Roman"
00068 #define         DEFAULT_FILL            "lightgrey"
00069 #define         LINESPACING             1.20
00070 
00071 #define         DEFAULT_NODEHEIGHT      0.5
00072 #define         MIN_NODEHEIGHT          0.02
00073 #define         DEFAULT_NODEWIDTH       0.75
00074 #define         MIN_NODEWIDTH           0.01
00075 #define         DEFAULT_NODESHAPE       "ellipse"
00076 
00077 #define         NODENAME_ESC            "\\N"
00078 
00079 #define         DEFAULT_LAYERSEP        ":\t "
00080 #define         DEFAULT_LAYERLISTSEP    ","
00081 
00082 #define         DEFAULT_NODESEP 0.25
00083 #define         MIN_NODESEP             0.02
00084 #define         DEFAULT_RANKSEP 0.5
00085 #define         MIN_RANKSEP             0.02
00086 
00087 
00088 /* default margin for paged formats such as PostScript - in points  = 0.5in */
00089 #define         DEFAULT_PRINT_MARGIN 36
00090 /* default margin for embedded formats such as PNG - in points */
00091 #define         DEFAULT_EMBED_MARGIN 0
00092 /* default padding around graph - in points */
00093 #define         DEFAULT_GRAPH_PAD 4
00094 
00095 #define         SELF_EDGE_SIZE  18
00096 #define         MC_SCALE        256     /* for mincross */
00097 
00098 #define         PORT_LABEL_DISTANCE     10
00099 #define         PORT_LABEL_ANGLE        -25     /* degrees; pos is CCW, neg is CW */
00100 
00101 /* default polygon sample size for overlap removal and maps */
00102 #define DFLT_SAMPLE 20
00103 
00104 /* arrow types */
00105 #define         ARR_NONE         0
00106 
00107 /* sides (e.g. of cluster margins) */
00108 #define         BOTTOM_IX       0
00109 #define         RIGHT_IX        1
00110 #define         TOP_IX          2
00111 #define         LEFT_IX         3
00112 
00113 /* sides of boxes for SHAPE_path */
00114 #define         BOTTOM          (1<<BOTTOM_IX)
00115 #define         RIGHT           (1<<RIGHT_IX)
00116 #define         TOP             (1<<TOP_IX)
00117 #define         LEFT            (1<<LEFT_IX)
00118 
00119 #define CCW  -1                 /* counter clock-wise */
00120 #define CW    1                 /* clock-wise */
00121 
00122 /* Obj types  for renderers */
00123 #define         NONE    0
00124 #define         NODE    1
00125 #define         EDGE    2
00126 #define         CLST    3
00127 
00128 /* output languages */
00129 #define         HPGL            2       /* HP Graphics Language */
00130 #define         PCL             3       /* Printer Control Language */
00131 #define         MIF             4       /* Adobe FrameMaker */
00132 #define         PIC_format      5       /* symbol PIC is used by compilers for 
00133                                            Position Independent Code */
00134 #define         TK              15      /* TK canvas */
00135 
00136 #define         VTX             21      /* visual thought */
00137 #define         METAPOST        22
00138 #define         DIA             24      /* dia drawing tool */
00139 
00140 #define         QPDF            30      /* Quartz paged PDF */
00141 #define         QEPDF           31      /* Quartz embedded PDF */
00142 
00143 #define         QBM_FIRST 100   /* first Quartz bitmap format, inclusive */
00144 #define         QBM_LAST 200    /* last Quartz bitmap format, exclusive */
00145 
00146 #define         GVRENDER_PLUGIN 300     /* a plugin supported language */
00147 #define         NO_SUPPORT      999     /* no support */
00148 
00149 /* for clusters */
00150 #define         CL_BACK         10      /* cost of backward pointing edge */
00151 #define         CL_OFFSET       8       /* margin of cluster box in PS points */
00152 #ifndef MSWIN32
00153 #define         CL_CROSS        1000    /* cost of cluster skeleton edge crossing */
00154 #else
00155 #define         CL_CROSS        100     /* avoid 16 bit overflow */
00156 #endif
00157 
00158 /* edge types */
00159 #define REGULAREDGE 1
00160 #define FLATEDGE    2
00161 #define SELFWPEDGE  4
00162 #define SELFNPEDGE  8
00163 #define SELFEDGE    8
00164 #define EDGETYPEMASK     15     /* the OR of the above */
00165 
00166 /* for graph server */
00167 #define         SERVER_NN       200
00168 #define         SERVER_NE       500
00169 
00170 /* for neato */
00171 #define Spring_coeff    1.0
00172 #define MYHUGE          (1.0e+37)
00173 #define MAXDIM                  10
00174 
00175 /* drawing phases */
00176 #define GVBEGIN         0
00177 #define GVSPLINES       1
00178 
00179 /* existence of labels */
00180 #define EDGE_LABEL              (1 << 0)
00181 #define HEAD_LABEL              (1 << 1)
00182 #define TAIL_LABEL              (1 << 2)
00183 #define GRAPH_LABEL             (1 << 3)
00184 #define NODE_XLABEL             (1 << 4)
00185 #define EDGE_XLABEL             (1 << 5)
00186 
00187 /* type of graph label: GD_label_pos */
00188 #define LABEL_AT_BOTTOM 0
00189 #define LABEL_AT_TOP    1
00190 #define LABEL_AT_LEFT   2
00191 #define LABEL_AT_RIGHT  4
00192 
00193 /* values specifying rankdir */
00194 #define RANKDIR_TB      0
00195 #define RANKDIR_LR      1
00196 #define RANKDIR_BT      2
00197 #define RANKDIR_RL      3
00198 
00199 /* allowed charsets */
00200 #define CHAR_UTF8       0
00201 #define CHAR_LATIN1     1
00202 #define CHAR_BIG5       2
00203 
00204 /* style flags */
00205 #define FILLED  (1 << 0)
00206 #define RADIAL  (1 << 1)
00207 #define ROUNDED (1 << 2)
00208 #define DIAGONALS (1 << 3)
00209 #define AUXLABELS (1 << 4)
00210 #define INVISIBLE (1 << 5)
00211 #define DOGEAR (1 << 6)
00212 #define TAB (1 << 7)
00213 #define FOLDER (1 << 8)
00214 #define BOX3D (1 << 9)
00215 #define COMPONENT (1 << 10)
00216 
00217 /* fill types */
00218 #define FILL      1
00219 #define GRADIENT  2
00220 #define RGRADIENT 3
00221 
00222 /* label types */
00223 #define LT_NONE         (0 << 1)
00224 #define LT_HTML         (1 << 1)
00225 #define LT_RECD         (2 << 1)
00226 
00227 /* Flags stored in GD_flags 
00228  * Bit(s):  0     HAS_CLUSt_EDGE
00229  *          1-3   ET_ 
00230  *          4     NEW_RANK
00231  */
00232 
00233 /* edge types */
00234 #define ET_NONE         (0 << 1)
00235 #define ET_LINE         (1 << 1)
00236 #define ET_PLINE        (2 << 1)
00237 #define ET_ORTHO        (3 << 1)
00238 #define ET_SPLINE       (4 << 1)
00239 #define ET_COMPOUND     (5 << 1)
00240 
00241 /* New ranking is used */
00242 #define NEW_RANK        (1 << 4)
00243 /******/
00244 
00245 /* user-specified node position: ND_pinned */
00246 #define P_SET    1              /* position supplied by user */
00247 #define P_FIX    2              /* position fixed during topological layout */
00248 #define P_PIN    3              /* position fixed */
00249 
00250 #define GAP 4                   /* whitespace in POINTS around labels and between peripheries */
00251 
00252 /* fontsize at which text is omitted entirely */
00253 #define FONTSIZE_MUCH_TOO_SMALL 0.15
00254 /* fontsize at which text is rendered by a simple line */
00255 #define FONTSIZE_TOO_SMALL 1.5
00256 
00257 #endif