annotate toolboxes/graph_visualisation/share/graphviz/doc/html/info/shapes.html @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
rev   line source
wolffd@0 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
wolffd@0 2 <!--
wolffd@0 3 This is a generated document. Do not edit.
wolffd@0 4 -->
wolffd@0 5 <HTML VERSION="2.0">
wolffd@0 6 <HEAD>
wolffd@0 7 <TITLE>Node Shapes</TITLE>
wolffd@0 8 </HEAD>
wolffd@0 9 <BODY BGCOLOR=white>
wolffd@0 10 <A NAME="top"></A>
wolffd@0 11 <H1 align=CENTER>Node Shapes</H1>
wolffd@0 12 <HR>
wolffd@0 13 The geometries of all node shapes are affected by
wolffd@0 14 the node attributes
wolffd@0 15 <A HREF=attrs.html#d:fixedsize><TT>fixedsize</TT></A>,
wolffd@0 16 <A HREF=attrs.html#d:fontname><TT>fontname</TT></A>,
wolffd@0 17 <A HREF=attrs.html#d:fontsize><TT>fontsize</TT></A>,
wolffd@0 18 <A HREF=attrs.html#d:height><TT>height</TT></A>,
wolffd@0 19 <A HREF=attrs.html#d:label><TT>label</TT></A>,
wolffd@0 20 <A HREF=#d:style><TT>style</TT></A> and
wolffd@0 21 <A HREF=attrs.html#d:width><TT>width</TT></A>.
wolffd@0 22
wolffd@0 23 <H2><A NAME=polygon>Polygon-based Nodes</A></H2>
wolffd@0 24 The possible polygon-based shapes are displayed below.
wolffd@0 25 <TABLE ALIGN=CENTER>
wolffd@0 26 <TR ALIGN=CENTER>
wolffd@0 27 <TD><IMG SRC=box.gif>
wolffd@0 28 <TD><IMG SRC=polygon.gif>
wolffd@0 29 <TD><IMG SRC=ellipse.gif>
wolffd@0 30 <TD><IMG SRC=circle.gif>
wolffd@0 31 </TR>
wolffd@0 32 <TR ALIGN=CENTER>
wolffd@0 33 <TD><A NAME=d:box>box</A>
wolffd@0 34 <TD><A NAME=d:polygon>polygon</A>
wolffd@0 35 <TD><A NAME=d:ellipse>ellipse</A>
wolffd@0 36 <TD><A NAME=d:circle>circle</A>
wolffd@0 37 </TR>
wolffd@0 38 <TR ALIGN=CENTER>
wolffd@0 39 <TD><IMG SRC=point.gif>
wolffd@0 40 <TD><IMG SRC=egg.gif>
wolffd@0 41 <TD><IMG SRC=triangle.gif>
wolffd@0 42 <TD><IMG SRC=plaintext.gif>
wolffd@0 43 </TR>
wolffd@0 44 <TR ALIGN=CENTER>
wolffd@0 45 <TD><A NAME=d:point>point</A>
wolffd@0 46 <TD><A NAME=d:egg>egg</A>
wolffd@0 47 <TD><A NAME=d:triangle>triangle</A>
wolffd@0 48 <TD><A NAME=d:plaintext>plaintext</A>
wolffd@0 49 </TR>
wolffd@0 50 <TR ALIGN=CENTER>
wolffd@0 51 <TD><IMG SRC=diamond.gif>
wolffd@0 52 <TD><IMG SRC=trapezium.gif>
wolffd@0 53 <TD><IMG SRC=parallelogram.gif>
wolffd@0 54 <TD><IMG SRC=house.gif>
wolffd@0 55 </TR>
wolffd@0 56 <TR ALIGN=CENTER>
wolffd@0 57 <TD><A NAME=d:diamond>diamond</A>
wolffd@0 58 <TD><A NAME=d:trapezium>trapezium</A>
wolffd@0 59 <TD><A NAME=d:parallelogram>parallelogram</A>
wolffd@0 60 <TD><A NAME=d:house>house</A>
wolffd@0 61 </TR>
wolffd@0 62 <TR ALIGN=CENTER>
wolffd@0 63 <TD><IMG SRC=pentagon.gif>
wolffd@0 64 <TD><IMG SRC=hexagon.gif>
wolffd@0 65 <TD><IMG SRC=septagon.gif>
wolffd@0 66 <TD><IMG SRC=octagon.gif>
wolffd@0 67 </TR>
wolffd@0 68 <TR ALIGN=CENTER>
wolffd@0 69 <TD><A NAME=d:pentagon>pentagon</A>
wolffd@0 70 <TD><A NAME=d:hexagon>hexagon</A>
wolffd@0 71 <TD><A NAME=d:septagon>septagon</A>
wolffd@0 72 <TD><A NAME=d:octagon>octagon</A>
wolffd@0 73 </TR>
wolffd@0 74 <TR ALIGN=CENTER>
wolffd@0 75 <TD><IMG SRC=doublecircle.gif>
wolffd@0 76 <TD><IMG SRC=doubleoctagon.gif>
wolffd@0 77 <TD><IMG SRC=tripleoctagon.gif>
wolffd@0 78 <TD><IMG SRC=invtriangle.gif>
wolffd@0 79 </TR>
wolffd@0 80 <TR ALIGN=CENTER>
wolffd@0 81 <TD><A NAME=d:doublecircle>doublecircle</A>
wolffd@0 82 <TD><A NAME=d:doubleoctagon>doubleoctagon</A>
wolffd@0 83 <TD><A NAME=d:tripleoctagon>tripleoctagon</A>
wolffd@0 84 <TD><A NAME=d:invtriangle>invtriangle</A>
wolffd@0 85 </TR>
wolffd@0 86 <TR ALIGN=CENTER>
wolffd@0 87 <TD><IMG SRC=invtrapezium.gif>
wolffd@0 88 <TD><IMG SRC=invhouse.gif>
wolffd@0 89 <TD><IMG SRC=Mdiamond.gif>
wolffd@0 90 <TD><IMG SRC=Msquare.gif>
wolffd@0 91 </TR>
wolffd@0 92 <TR ALIGN=CENTER>
wolffd@0 93 <TD><A NAME=d:invtrapezium>invtrapezium</A>
wolffd@0 94 <TD><A NAME=d:invhouse>invhouse</A>
wolffd@0 95 <TD><A NAME=d:Mdiamond>Mdiamond</A>
wolffd@0 96 <TD><A NAME=d:Msquare>Msquare</A>
wolffd@0 97 </TR>
wolffd@0 98 <TR ALIGN=CENTER>
wolffd@0 99 <TD><IMG SRC=Mcircle.gif>
wolffd@0 100 <TD><IMG SRC=rect.gif>
wolffd@0 101 <TD><IMG SRC=rectangle.gif>
wolffd@0 102 <TD><IMG SRC=none.gif>
wolffd@0 103 </TR>
wolffd@0 104 <TR ALIGN=CENTER>
wolffd@0 105 <TD><A NAME=d:Mcircle>Mcircle</A>
wolffd@0 106 <TD><A NAME=d:rect>rect</A>
wolffd@0 107 <TD><A NAME=d:rectangle>rectangle</A>
wolffd@0 108 <TD><A NAME=d:none>none</A>
wolffd@0 109 </TR>
wolffd@0 110 <TR ALIGN=CENTER>
wolffd@0 111 <TD><IMG SRC=note.gif>
wolffd@0 112 <TD><IMG SRC=tab.gif>
wolffd@0 113 <TD><IMG SRC=folder.gif>
wolffd@0 114 <TD><IMG SRC=box3d.gif>
wolffd@0 115 </TR>
wolffd@0 116 <TR ALIGN=CENTER>
wolffd@0 117 <TD><A NAME=d:note>note</A>
wolffd@0 118 <TD><A NAME=d:tab>tab</A>
wolffd@0 119 <TD><A NAME=d:folder>folder</A>
wolffd@0 120 <TD><A NAME=d:box3d>box3d</A>
wolffd@0 121 </TR>
wolffd@0 122 <TR ALIGN=CENTER>
wolffd@0 123 <TD><IMG SRC=component.gif>
wolffd@0 124 </TR>
wolffd@0 125 <TR ALIGN=CENTER>
wolffd@0 126 <TD><A NAME=d:component>component</A>
wolffd@0 127 </TR>
wolffd@0 128 </TABLE>
wolffd@0 129 As the figures suggest, the shapes <TT>rect</TT> and <TT>rectangle</TT> are synonyms for <TT>box</TT>, and <TT>none</TT> is a synonym for <TT>plaintext</TT>.
wolffd@0 130 Also, unlike the rest, we have shown these last two
wolffd@0 131 without <TT>style=filled</TT>
wolffd@0 132 to indicate the normal use. If fill were turned on, the label text would
wolffd@0 133 appear in a filled rectangle.
wolffd@0 134 <P>
wolffd@0 135 The geometries of polygon-based shapes are also affected
wolffd@0 136 by the node attributes
wolffd@0 137 <A HREF=attrs.html#d:regular><TT>regular</TT></A>,
wolffd@0 138 <A HREF=attrs.html#d:peripheries><TT>peripheries</TT></A> and
wolffd@0 139 <A HREF=attrs.html#d:orientation><TT>orientation</TT></A>.
wolffd@0 140 If <TT>shape="polygon"</TT>, the attributes
wolffd@0 141 <A HREF=attrs.html#d:sides><TT>sides</TT></A>,
wolffd@0 142 <A HREF=attrs.html#d:skew><TT>skew</TT></A> and
wolffd@0 143 <A HREF=attrs.html#d:distortion><TT>distortion</TT></A> are also used.
wolffd@0 144 If unset, they default to 4, 0.0 and 0.0, respectively.
wolffd@0 145 In addition, the 3 M* shapes support auxiliary labels using
wolffd@0 146 the <A HREF=attrs.html#d:toplabel><TT>toplabel</TT></A> and
wolffd@0 147 <A HREF=attrs.html#d:bottomlabel><TT>bottomlabel</TT></A> attributes.
wolffd@0 148 On the other hand, the point shape is special in that it is
wolffd@0 149 only affected by the <A HREF=attrs.html#d:peripheries><TT>peripheries</TT></A>,
wolffd@0 150 <A HREF=attrs.html#d:width><TT>width</TT></A> and
wolffd@0 151 <A HREF=attrs.html#d:height><TT>height</TT></A> attributes.
wolffd@0 152
wolffd@0 153 <H2><A NAME=record>Record-based Nodes</A></H2>
wolffd@0 154 These are specified by shape values of "record" and "Mrecord".
wolffd@0 155 The structure of a record-based node is determined by
wolffd@0 156 its <A HREF=attrs.html#d:label><TT>label</TT></A>,
wolffd@0 157 which has the following schema:
wolffd@0 158 <TABLE>
wolffd@0 159 <TR><TD ALIGN=right><I>rlabel</I><TD>=<TD><I>field</I> ( '|' <I>field</I> )*</TR>
wolffd@0 160 <TR><TD ALIGN=right>where <I>field</I><TD>=<TD>fieldId</I> or '{' <I>rlabel</I> '}'</TR>
wolffd@0 161 <TR><TD ALIGN=right>and <I>fieldId</I><TD>=<TD> [ '<' <I>string</I> '>'] [ <I>string</I> ]</TR>
wolffd@0 162 </TABLE>
wolffd@0 163 Literal braces, vertical bars and angle brackets must be escaped.
wolffd@0 164 Spaces are interpreted as separators between tokens,
wolffd@0 165 so they must be escaped if you want spaces in the text.
wolffd@0 166 <P>
wolffd@0 167 The first string in <I>fieldId</I> assigns a portname to the field and can
wolffd@0 168 be combined with the node name to indicate where to attach an edge
wolffd@0 169 to the node. (See <A HREF=attrs.html#k:portPos>portPos</A>.)
wolffd@0 170 The second string is used as the text for the field; it supports the usual
wolffd@0 171 <A HREF=attrs.html#k:escString>escape sequences</A> \n, \l and \r.
wolffd@0 172 <P>
wolffd@0 173 Visually, a record is a box, with fields represented by alternating
wolffd@0 174 rows of horizontal or vertical subboxes. The Mrecord shape is identical
wolffd@0 175 to a record shape, except that the outermost box has rounded corners.
wolffd@0 176 Flipping between horizontal and vertical layouts is done by nesting
wolffd@0 177 fields in braces "{...}". The top-level orientation in a record is
wolffd@0 178 horizontal. Thus, a record with label "A | B | C | D" will have 4 fields
wolffd@0 179 oriented left to right, while "{A | B | C | D}" will have them
wolffd@0 180 from top to bottom and "A | { B | C } | D" will have "B" over "C", with
wolffd@0 181 "A" to the left and "D" to the right of "B" and "C".
wolffd@0 182 <P>
wolffd@0 183 The initial orientation of a record node depends on the
wolffd@0 184 <A HREF="attrs.html#d:rankdir">rankdir</A> attribute. If this attribute
wolffd@0 185 is <TT>TB</TT> (the default) or <TT>TB</TT>, corresponding to vertical
wolffd@0 186 layouts, the top-level fields in a record are displayed horizontally.
wolffd@0 187 If, however, this attribute is <TT>LR</TT> or <TT>RL</TT>,
wolffd@0 188 corresponding to horizontal layouts, the top-level fields are
wolffd@0 189 displayed vertically.
wolffd@0 190 <P>
wolffd@0 191 As an example of a record node, the dot input
wolffd@0 192 <XMP>
wolffd@0 193 digraph structs {
wolffd@0 194 node [shape=record];
wolffd@0 195 struct1 [label="<f0> left|<f1> mid\ dle|<f2> right"];
wolffd@0 196 struct2 [label="<f0> one|<f1> two"];
wolffd@0 197 struct3 [label="hello\nworld |{ b |{c|<here> d|e}| f}| g | h"];
wolffd@0 198 struct1:f1 -> struct2:f0;
wolffd@0 199 struct1:f2 -> struct3:here;
wolffd@0 200 }
wolffd@0 201 </XMP>
wolffd@0 202
wolffd@0 203 yields the figure<BR>
wolffd@0 204 <IMG SRC=record.gif>
wolffd@0 205 <P>
wolffd@0 206 If we add the line
wolffd@0 207 <XMP>
wolffd@0 208 rankdir=LR
wolffd@0 209 </XMP>
wolffd@0 210 we get the layout<BR>
wolffd@0 211 <IMG SRC=record2.gif>
wolffd@0 212 <P>
wolffd@0 213 If we change node <TT>struct1</TT> to have shape <TT>Mrecord</TT>,
wolffd@0 214 it then looks like:<BR>
wolffd@0 215 <IMG SRC=mrecord.gif>
wolffd@0 216
wolffd@0 217 <H2><A NAME="d:style">Styles for Nodes</A></H2>
wolffd@0 218 The <A HREF=attrs.html#d:style><TT>style</TT></A>
wolffd@0 219 attribute can be used to modify the appearance of a node.
wolffd@0 220 At present, there are 8 style values recognized:
wolffd@0 221 <TT>filled</TT>, <TT>invisible</TT>, <TT>diagonals</TT>, <TT>rounded</TT>.
wolffd@0 222 <TT>dashed</TT>, <TT>dotted</TT>, <TT>solid</TT> and <TT>bold</TT>.
wolffd@0 223 As usual, the value of the <A HREF=attrs.html#d:style><TT>style</TT></A>
wolffd@0 224 attribute can be a comma-separated list of any of these. If the
wolffd@0 225 style contains conflicts (e.g, <TT>style="dotted, solid"</TT>), the last
wolffd@0 226 attribute wins.
wolffd@0 227 <DL>
wolffd@0 228 <DT><A NAME=d:filled><TT>filled</TT>
wolffd@0 229 <DD>This value indicates that the node's interior should be filled.
wolffd@0 230 The color used is the node's <TT>fillcolor</TT> or, if that's not defined, its
wolffd@0 231 <TT>color</TT>. For unfilled nodes, the interior of the node is transparent to
wolffd@0 232 whatever color is the current graph or cluster background color.
wolffd@0 233 Note that <TT>point</TT> shapes are always filled.
wolffd@0 234 <P>
wolffd@0 235 Thus, the code
wolffd@0 236 <XMP>
wolffd@0 237 digraph G {
wolffd@0 238 rankdir=LR
wolffd@0 239 node [shape=box, color=blue]
wolffd@0 240 node1 [style=filled]
wolffd@0 241 node2 [style=filled, fillcolor=red]
wolffd@0 242 node0 -> node1 -> node2
wolffd@0 243 }
wolffd@0 244 </XMP>
wolffd@0 245 yields the figure<BR>
wolffd@0 246 <IMG SRC=fill.gif>
wolffd@0 247
wolffd@0 248 <DT><A NAME=d:invisible><TT>invisible</TT>
wolffd@0 249 <DD>Setting this style causes the node not to be displayed at all.
wolffd@0 250 Note that the node is still used in laying out the graph.
wolffd@0 251
wolffd@0 252 <DT><A NAME=d:diagonals><TT>diagonals</TT>
wolffd@0 253 <DD>The diagonals style causes small chords to be drawn near the vertices
wolffd@0 254 of the node's polygon or, in case of circles and ellipses, two chords near
wolffd@0 255 the top and the bottom of the shape. The special node shapes
wolffd@0 256 <A HREF=#d:Msquare><TT>Msquare</TT></A>,
wolffd@0 257 <A HREF=#d:Mcircle><TT>Mcircle</TT></A>, and
wolffd@0 258 <A HREF=#d:Mdiamond><TT>Mdiamond</TT></A>
wolffd@0 259 are simply an ordinary square, circle and
wolffd@0 260 diamond with the diagonals style set.
wolffd@0 261
wolffd@0 262 <DT><A NAME=d:rounded><TT>rounded</TT>
wolffd@0 263 <DD>The rounded style causes the polygonal corners to be smoothed.
wolffd@0 264 Note that this style also applies to record-based nodes. Indeed,
wolffd@0 265 the <TT>Mrecord</TT> shape is simply shorthand for setting this style.
wolffd@0 266 Also, prior to 26 April 2005, the rounded and filled styles were
wolffd@0 267 mutually exclusive.
wolffd@0 268 <P>
wolffd@0 269 As an example of rounding, dot uses the graph
wolffd@0 270 <XMP>
wolffd@0 271 digraph R {
wolffd@0 272 rankdir=LR
wolffd@0 273 node [style=rounded]
wolffd@0 274 node1 [shape=box]
wolffd@0 275 node2 [fillcolor=yellow, style="rounded,filled", shape=diamond]
wolffd@0 276 node3 [shape=record, label="{ a | b | c }"]
wolffd@0 277
wolffd@0 278 node1 -> node2 -> node3
wolffd@0 279 }
wolffd@0 280 </XMP>
wolffd@0 281 to produce the figure<BR>
wolffd@0 282 <IMG SRC=round.gif>
wolffd@0 283 <DT><A NAME=d:dashed><TT>dashed</TT>
wolffd@0 284 <DD>This style causes the node's border to be drawn as a dashed line.
wolffd@0 285 <DT><A NAME=d:dotted><TT>dotted</TT>
wolffd@0 286 <DD>This style causes the node's border to be drawn as a dotted line.
wolffd@0 287 <DT><A NAME=d:solid><TT>solid</TT>
wolffd@0 288 <DD>This style causes the node's border to be drawn as a solid line,
wolffd@0 289 which is the default.
wolffd@0 290 <DT><A NAME=d:bold><TT>bold</TT>
wolffd@0 291 <DD>This style causes the node's border to be drawn as a bold line.
wolffd@0 292 See also <A HREF=attrs.html#d:setlinewidth>setlinewidth</A>.
wolffd@0 293
wolffd@0 294 </DL>
wolffd@0 295
wolffd@0 296 <P>
wolffd@0 297 Additional styles may be available with a specific code generator.
wolffd@0 298 <H2><A NAME=html>HTML-Like Labels</A></H2>
wolffd@0 299
wolffd@0 300 <B>NOTE:</B><EM>This feature is only available on versions of Graphviz
wolffd@0 301 that are newer than mid-November 2003. In particular, it is not part
wolffd@0 302 of release 1.10.</EM>
wolffd@0 303 <P>
wolffd@0 304 If the value of a label attribute
wolffd@0 305 (<A HREF=attrs.html#d:label><TT>label</TT></A> for nodes, edges, clusters, and
wolffd@0 306 graphs, and the
wolffd@0 307 <A HREF=attrs.html#d:headlabel><TT>headlabel</TT></A> and
wolffd@0 308 <A HREF=attrs.html#d:taillabel><TT>taillabel</TT></A>
wolffd@0 309 attributes of an edge) is given as an
wolffd@0 310 <A HREF=lang.html#html>HTML string</A>,
wolffd@0 311 that is, delimited by <TT>&lt;...&gt;</TT>
wolffd@0 312 rather than <TT>&quot;...&quot;</TT>,
wolffd@0 313 the label is interpreted as
wolffd@0 314 an HTML description. At their simplest, such labels
wolffd@0 315 can describe multiple lines of variously aligned text as provided by ordinary
wolffd@0 316 <A HREF=attrs.html#k:escString>string labels</A>. More generally, the
wolffd@0 317 label can specify a table similar to those provided by HTML,
wolffd@0 318 with different graphical attributes at each level.
wolffd@0 319 <P>
wolffd@0 320 <B>NOTE:</B> The features and syntax supported by these labels are
wolffd@0 321 modeled on HTML. However, there are many aspects that are relevant
wolffd@0 322 to Graphviz labels that are not in HTML and, conversely, HTML allows
wolffd@0 323 various constructs which are meaningless in Graphviz. We will generally
wolffd@0 324 refer to these labels as "HTML labels" rather than the cumbersome
wolffd@0 325 "HTML-like labels" but the reader is warned that these are not really
wolffd@0 326 HTML. The grammar below describes precisely what Graphviz will accept.
wolffd@0 327 <P>
wolffd@0 328 Although HTML labels are not, strictly speaking, a shape, they can be
wolffd@0 329 viewed as a generalization of the record shapes described above.
wolffd@0 330 In particular, if a node has set its
wolffd@0 331 <A HREF=attrs.html#k:shape><TT>shape</TT></A>
wolffd@0 332 attribute to <TT>plaintext</TT>, the HTML label will be the node's
wolffd@0 333 shape. On the other hand, if the node has any other shape (except
wolffd@0 334 <TT>point</TT>), the HTML label will be embedded within the node the
wolffd@0 335 same way an ordinary label would be.
wolffd@0 336 <P>
wolffd@0 337 The following is an abstract grammar for HTML labels.
wolffd@0 338 Terminals, corresponding to elements, are shown in bold font,
wolffd@0 339 and nonterminals in italics.
wolffd@0 340 Square brackets [ and ] enclose optional items.
wolffd@0 341 Vertical bars | separate alternatives.
wolffd@0 342 Note that, as in HTML, element and attribute names are case-insensitive.
wolffd@0 343 (cf. sections 3.2.1 and 3.2.2 of the
wolffd@0 344 <A HREF="http://www.w3.org/TR/html401">HTML 4.01 specification</A>).
wolffd@0 345 <TABLE>
wolffd@0 346 <TR>
wolffd@0 347 <TD ALIGN=RIGHT><I>label</I></TD>
wolffd@0 348 <TD ALIGN=LEFT>:</TD>
wolffd@0 349 <TD ALIGN=LEFT><I>text</I></TD>
wolffd@0 350 </TR>
wolffd@0 351 <TR>
wolffd@0 352 <TD ALIGN=RIGHT></TD>
wolffd@0 353 <TD ALIGN=LEFT>|</TD>
wolffd@0 354 <TD ALIGN=LEFT><I>table</I></TD>
wolffd@0 355 </TR>
wolffd@0 356 <TR>
wolffd@0 357 <TD ALIGN=RIGHT><I>text</I></TD>
wolffd@0 358 <TD ALIGN=LEFT>:</TD>
wolffd@0 359 <TD ALIGN=LEFT><I>textitem</I></TD>
wolffd@0 360 </TR>
wolffd@0 361 <TR>
wolffd@0 362 <TD ALIGN=RIGHT></TD>
wolffd@0 363 <TD ALIGN=LEFT>|</TD>
wolffd@0 364 <TD ALIGN=LEFT><I>text</I> <I>textitem</I></TD>
wolffd@0 365 </TR>
wolffd@0 366 <TR>
wolffd@0 367 <TD ALIGN=RIGHT><I>textitem</I></TD>
wolffd@0 368 <TD ALIGN=LEFT>:</TD>
wolffd@0 369 <TD ALIGN=LEFT><I>string</I></TD>
wolffd@0 370 </TR>
wolffd@0 371 <TR>
wolffd@0 372 <TD ALIGN=RIGHT></TD>
wolffd@0 373 <TD ALIGN=LEFT>|</TD>
wolffd@0 374 <TD ALIGN=LEFT><B>&lt;BR/&gt;</B></TD>
wolffd@0 375 </TR>
wolffd@0 376 <TR>
wolffd@0 377 <TD ALIGN=RIGHT></TD>
wolffd@0 378 <TD ALIGN=LEFT>|</TD>
wolffd@0 379 <TD ALIGN=LEFT><B>&lt;FONT&gt;</B> <I>text</I> <B>&lt;/FONT&gt;</B></TD>
wolffd@0 380 </TR>
wolffd@0 381 <TR>
wolffd@0 382 <TD ALIGN=RIGHT><I>table</I></TD>
wolffd@0 383 <TD ALIGN=LEFT>:</TD>
wolffd@0 384 <TD ALIGN=LEFT>[ <B>&lt;FONT&gt;</B> ] <B>&lt;TABLE&gt;</B> <I>rows</I> <B>&lt;/TABLE&gt;</B> [ <B>&lt;/FONT&gt;</B> ]</TD>
wolffd@0 385 </TR>
wolffd@0 386 <TR>
wolffd@0 387 <TD ALIGN=RIGHT><I>rows</I></TD>
wolffd@0 388 <TD ALIGN=LEFT>:</TD>
wolffd@0 389 <TD ALIGN=LEFT><I>row</I></TD>
wolffd@0 390 </TR>
wolffd@0 391 <TR>
wolffd@0 392 <TD ALIGN=RIGHT></TD>
wolffd@0 393 <TD ALIGN=LEFT>|</TD>
wolffd@0 394 <TD ALIGN=LEFT><I>rows</I> <I>row</I></TD>
wolffd@0 395 </TR>
wolffd@0 396 <TR>
wolffd@0 397 <TD ALIGN=RIGHT><I>row</I></TD>
wolffd@0 398 <TD ALIGN=LEFT>:</TD>
wolffd@0 399 <TD ALIGN=LEFT><B>&lt;TR&gt;</B> <I>cells</I> <B>&lt;/TR&gt;</B></TD>
wolffd@0 400 </TR>
wolffd@0 401 <TR>
wolffd@0 402 <TD ALIGN=RIGHT><I>cells</I></TD>
wolffd@0 403 <TD ALIGN=LEFT>:</TD>
wolffd@0 404 <TD ALIGN=LEFT><I>cell</I></TD>
wolffd@0 405 </TR>
wolffd@0 406 <TR>
wolffd@0 407 <TD ALIGN=RIGHT></TD>
wolffd@0 408 <TD ALIGN=LEFT>|</TD>
wolffd@0 409 <TD ALIGN=LEFT><I>cells</I> <I>cell</I></TD>
wolffd@0 410 </TR>
wolffd@0 411 <TR>
wolffd@0 412 <TD ALIGN=RIGHT><I>cell</I></TD>
wolffd@0 413 <TD ALIGN=LEFT>:</TD>
wolffd@0 414 <TD ALIGN=LEFT><B>&lt;TD&gt;</B> <I>label</I> <B>&lt;/TD&gt;</B></TD>
wolffd@0 415 </TR>
wolffd@0 416 <TR>
wolffd@0 417 <TD ALIGN=RIGHT></TD>
wolffd@0 418 <TD ALIGN=LEFT>|</TD>
wolffd@0 419 <TD ALIGN=LEFT><B>&lt;TD&gt;</B> <B>&lt;IMG/&gt;</B> <B>&lt;/TD&gt;</B></TD>
wolffd@0 420 </TR>
wolffd@0 421 </TABLE>
wolffd@0 422 <P>
wolffd@0 423 Above, a <I>string</I> is any collection of printable characters, including
wolffd@0 424 all spaces. Note that outside of the body of a &lt;TD&gt; element,
wolffd@0 425 whitespace characters are ignored; within a &lt;TD&gt; element, spaces
wolffd@0 426 are preserved but all other white space characters are discarded.
wolffd@0 427 HTML comments are allowed within an HTML string. They can occur anywhere
wolffd@0 428 provided that, if they contain part of an HTML element, they must contain
wolffd@0 429 the entire element.
wolffd@0 430 <P>
wolffd@0 431 As is obvious from the above description, the interpretation of white space
wolffd@0 432 characters is one place where HTML-like labels is very different from
wolffd@0 433 standard HTML. In HTML, any sequence of white space characters is
wolffd@0 434 collapsed to a single space, If the user does not want this to happen, the
wolffd@0 435 input must use non-breaking spaces "&amp;nbsp;". This makes sense in
wolffd@0 436 HTML, where text layout depends dynamically on the space available. In
wolffd@0 437 Graphviz, the layout is statically determined by the input, so it is
wolffd@0 438 reasonable to treat ordinary space characters as non-breaking. In addition,
wolffd@0 439 ignoring tabs and newlines allows the input text to be formatted for
wolffd@0 440 easier reading.
wolffd@0 441 <P>
wolffd@0 442 Each of the HTML elements has a set of optional attributes.
wolffd@0 443 Attribute values must appear in double quotes.
wolffd@0 444 <PRE>&lt;TABLE
wolffd@0 445 ALIGN="CENTER|LEFT|RIGHT"
wolffd@0 446 BGCOLOR="<I>color</I>"
wolffd@0 447 BORDER="<I>value</I>"
wolffd@0 448 CELLBORDER="<I>value</I>"
wolffd@0 449 CELLPADDING="<I>value</I>"
wolffd@0 450 CELLSPACING="<I>value</I>"
wolffd@0 451 COLOR="<I>color</I>"
wolffd@0 452 FIXEDSIZE="FALSE|TRUE"
wolffd@0 453 HEIGHT="<I>value</I>"
wolffd@0 454 HREF="<I>value</I>"
wolffd@0 455 PORT="<I>portName</I>"
wolffd@0 456 TARGET="<I>value</I>"
wolffd@0 457 TITLE="<I>value</I>"
wolffd@0 458 TOOLTIP="<I>value</I>"
wolffd@0 459 VALIGN="MIDDLE|BOTTOM|TOP"
wolffd@0 460 WIDTH="<I>value</I>"
wolffd@0 461 &gt;
wolffd@0 462 </PRE>
wolffd@0 463 <P>
wolffd@0 464 <PRE>&lt;TR
wolffd@0 465 &lt;!-- No attributes --&gt;
wolffd@0 466 &gt;
wolffd@0 467 </PRE>
wolffd@0 468 <P>
wolffd@0 469 <PRE>&lt;TD
wolffd@0 470 ALIGN="CENTER|LEFT|RIGHT|TEXT"
wolffd@0 471 BALIGN="CENTER|LEFT|RIGHT"
wolffd@0 472 BGCOLOR="<I>color</I>"
wolffd@0 473 BORDER="<I>value</I>"
wolffd@0 474 CELLPADDING="<I>value</I>"
wolffd@0 475 CELLSPACING="<I>value</I>"
wolffd@0 476 COLOR="<I>color</I>"
wolffd@0 477 COLSPAN="<I>value</I>"
wolffd@0 478 FIXEDSIZE="FALSE|TRUE"
wolffd@0 479 HEIGHT="<I>value</I>"
wolffd@0 480 HREF="<I>value</I>"
wolffd@0 481 PORT="<I>portName</I>"
wolffd@0 482 ROWSPAN="<I>value</I>"
wolffd@0 483 TARGET="<I>value</I>"
wolffd@0 484 TITLE="<I>value</I>"
wolffd@0 485 TOOLTIP="<I>value</I>"
wolffd@0 486 VALIGN="MIDDLE|BOTTOM|TOP"
wolffd@0 487 WIDTH="<I>value</I>"
wolffd@0 488 &gt;
wolffd@0 489 </PRE>
wolffd@0 490
wolffd@0 491 <P>
wolffd@0 492 <PRE>&lt;FONT
wolffd@0 493 COLOR="<I>color</I>"
wolffd@0 494 FACE="<I>fontname</I>"
wolffd@0 495 POINT-SIZE="<I>value</I>"
wolffd@0 496 &gt;
wolffd@0 497 </PRE>
wolffd@0 498
wolffd@0 499 <P>
wolffd@0 500 <PRE>&lt;BR
wolffd@0 501 ALIGN="CENTER|LEFT|RIGHT"
wolffd@0 502 &gt;
wolffd@0 503 </PRE>
wolffd@0 504
wolffd@0 505 <P>
wolffd@0 506 <PRE>&lt;IMG
wolffd@0 507 SCALE="FALSE|TRUE|WIDTH|HEIGHT|BOTH"
wolffd@0 508 SRC="<I>value</I>"
wolffd@0 509 &gt;
wolffd@0 510 </PRE>
wolffd@0 511
wolffd@0 512 <P>
wolffd@0 513 <B><I><FONT SIZE=-1>ALIGN</FONT> </I></B>
wolffd@0 514 <BLOCKQUOTE>
wolffd@0 515 specifies horizontal placement. When an object is allocated
wolffd@0 516 more space than required, this value determines where the extra space
wolffd@0 517 is placed left and right of the object.
wolffd@0 518 <P>
wolffd@0 519 <ul>
wolffd@0 520 <LI>CENTER aligns the object in the center. (Default) </LI>
wolffd@0 521 <LI>LEFT aligns the object on the left.</LI>
wolffd@0 522 <LI>RIGHT aligns the object on the right. </LI>
wolffd@0 523 <LI>(<T>&lt;TD&gt;</T> only) TEXT aligns lines of text using the full
wolffd@0 524 cell width. The alignment of a line is determined by its (possibly
wolffd@0 525 implicit) associated <T>&lt;BR&gt;</T> element.</LI>
wolffd@0 526 </ul>
wolffd@0 527 <P>
wolffd@0 528 The contents of a cell are normally aligned as a block. In particular,
wolffd@0 529 lines of text are first aligned as a text block based on the width of
wolffd@0 530 the widest line and the corresponding <T>&lt;BR&gt;</T> elements. Then,
wolffd@0 531 the entire text block is aligned within a cell. If, however, the
wolffd@0 532 cell's <B><I>ALIGN</I></B> value is <T>"TEXT"</T>, and the cell contains
wolffd@0 533 lines of text, then the lines are justified using the entire available
wolffd@0 534 width of the cell. If the cell does not contain text, then the contained
wolffd@0 535 image or table is centered.
wolffd@0 536 </BLOCKQUOTE>
wolffd@0 537
wolffd@0 538 <B><I><FONT SIZE=-1>BALIGN</FONT> </I></B>
wolffd@0 539 <BLOCKQUOTE>
wolffd@0 540 specifies the default alignment of <T>&lt;BR&gt;</T> elements contained
wolffd@0 541 in the cell. That is, if a <T>&lt;BR&gt;</T> element has no
wolffd@0 542 explicit <B><I>ALIGN</I></B> attribute, the attribute value is specified
wolffd@0 543 by the value of <B><I>BALIGN</I></B>.
wolffd@0 544 </BLOCKQUOTE>
wolffd@0 545
wolffd@0 546 <B><I><FONT SIZE=-1>BGCOLOR="color"</FONT></I></B>
wolffd@0 547 <BLOCKQUOTE>
wolffd@0 548 sets the color of the background. This color can be
wolffd@0 549 overridden by a <B><I>BGCOLOR</I></B> attribute in descendents.
wolffd@0 550 </BLOCKQUOTE>
wolffd@0 551
wolffd@0 552 <B><I><FONT SIZE=-1>BORDER="value"</FONT></I></B>
wolffd@0 553 <BLOCKQUOTE>
wolffd@0 554 specifies the width of the border around the object in points.
wolffd@0 555 A value of zero indicates no border. The default is 1.
wolffd@0 556 The maximum value is 255.
wolffd@0 557 If set in a table, and <B><I>CELLBORDER</I></B> is not set,
wolffd@0 558 this value is also used for all cells in the table.
wolffd@0 559 It can be overridden by a <B><I>BORDER</I></B> tag in a cell.
wolffd@0 560 </BLOCKQUOTE>
wolffd@0 561
wolffd@0 562 <B><I><FONT SIZE=-1>CELLBORDER="value"</FONT></I></B>
wolffd@0 563 <BLOCKQUOTE>
wolffd@0 564 specifies the width of the border for all cells in a table.
wolffd@0 565 It can be overridden by a <B><I>BORDER</I></B> tag in a cell.
wolffd@0 566 The maximum value is 255.
wolffd@0 567 </BLOCKQUOTE>
wolffd@0 568
wolffd@0 569 <B><I><FONT SIZE=-1>CELLPADDING="value"</FONT></I></B>
wolffd@0 570 <BLOCKQUOTE>
wolffd@0 571 specifies the space, in points, between a cell's border and its content.
wolffd@0 572 The default is 2.
wolffd@0 573 The maximum value is 255.
wolffd@0 574 </BLOCKQUOTE>
wolffd@0 575
wolffd@0 576 <B><I><FONT SIZE=-1>CELLSPACING="value"</FONT></I></B>
wolffd@0 577 <BLOCKQUOTE>
wolffd@0 578 specifies the space, in points, between cells in a table and between
wolffd@0 579 a cell and the table's border. The default is 2.
wolffd@0 580 The maximum value is 127.
wolffd@0 581 </BLOCKQUOTE>
wolffd@0 582
wolffd@0 583 <B><I><FONT SIZE=-1>COLOR="color"</FONT></I></B>
wolffd@0 584 <BLOCKQUOTE>
wolffd@0 585 sets the color of the font within the scope of
wolffd@0 586 &lt;FONT&gt;...&lt;/FONT&gt;, or the border color
wolffd@0 587 of the table or cell within the scope of
wolffd@0 588 &lt;TABLE&gt;...&lt;/TABLE&gt;,
wolffd@0 589 or &lt;TD&gt;...&lt;/TD&gt;.
wolffd@0 590 This color can be
wolffd@0 591 overridden by a <B><I>COLOR</I></B> attribute in descendents.
wolffd@0 592 By default, the font color is determined by the
wolffd@0 593 <A HREF="attrs.html#:fontcolor">fontcolor</A> attribute of
wolffd@0 594 the corresponding node, edge or graph, and the border color
wolffd@0 595 is determined by the
wolffd@0 596 <A HREF="attrs.html#:color">color</A> attribute of
wolffd@0 597 the corresponding node, edge or graph.
wolffd@0 598 </BLOCKQUOTE>
wolffd@0 599
wolffd@0 600 <B><I><FONT SIZE=-1>COLSPAN="value"</FONT></I></B>
wolffd@0 601 <BLOCKQUOTE>
wolffd@0 602 specifies the number of columns spanned by the cell. The default is 1.
wolffd@0 603 The maximum value is 65535.
wolffd@0 604 </BLOCKQUOTE>
wolffd@0 605
wolffd@0 606 <B><I><FONT SIZE=-1>FACE="fontname"</FONT></I></B>
wolffd@0 607 <BLOCKQUOTE>
wolffd@0 608 specifies the font to use within the scope of
wolffd@0 609 &lt;FONT&gt;...&lt;/FONT&gt;.
wolffd@0 610 This can be
wolffd@0 611 overridden by a <B><I>FACE</I></B> attribute in descendents.
wolffd@0 612 By default, the font name is determined by the
wolffd@0 613 <A HREF="attrs.html#:fontname">fontname</A> attribute of the corresponding
wolffd@0 614 node, edge or graph.
wolffd@0 615 </BLOCKQUOTE>
wolffd@0 616
wolffd@0 617 <B><I><FONT SIZE=-1>FIXEDSIZE</FONT> </I></B>
wolffd@0 618 <BLOCKQUOTE>
wolffd@0 619 specifies whether the values given by the <B><I>WIDTH</I></B>
wolffd@0 620 and <B><I>HEIGHT</I></B> attributes are enforced.
wolffd@0 621 <P>
wolffd@0 622 <ul>
wolffd@0 623 <LI>FALSE allows the object to grow so that all its contents will fit. (Default) </LI>
wolffd@0 624 <LI>TRUE fixes the object size to its given <B><I>WIDTH</I></B>
wolffd@0 625 and <B><I>HEIGHT</I></B>.
wolffd@0 626 Both of these attributes must be supplied.</LI>
wolffd@0 627 </ul>
wolffd@0 628 </BLOCKQUOTE>
wolffd@0 629
wolffd@0 630 <B><I><FONT SIZE=-1>HEIGHT="value"</FONT></I></B>
wolffd@0 631 <BLOCKQUOTE>
wolffd@0 632 specifies the mininum height, in points, of the object. The height
wolffd@0 633 includes the contents, any spacing and the border. Unless
wolffd@0 634 <B><I>FIXEDSIZE</I></B> is true, the height will be expanded to allow
wolffd@0 635 the contents to fit.
wolffd@0 636 The maximum value is 65535.
wolffd@0 637 </BLOCKQUOTE>
wolffd@0 638
wolffd@0 639 <B><I><FONT SIZE=-1>HREF="value"</FONT></I></B>
wolffd@0 640 <BLOCKQUOTE>
wolffd@0 641 attaches a URL to the object.
wolffd@0 642 </BLOCKQUOTE>
wolffd@0 643
wolffd@0 644 <B><I><FONT SIZE=-1>POINT-SIZE="value"</FONT></I></B>
wolffd@0 645 <BLOCKQUOTE>
wolffd@0 646 sets the size of the font, in points, used within the scope of
wolffd@0 647 &lt;FONT&gt;...&lt;/FONT&gt;.
wolffd@0 648 This can be
wolffd@0 649 overridden by a <B><I>POINT-SIZE</I></B> attribute in descendents.
wolffd@0 650 By default, the font size is determined by the
wolffd@0 651 <A HREF="attrs.html#:fontsize">fontsize</A> attribute of the corresponding
wolffd@0 652 node, edge or graph.
wolffd@0 653 </BLOCKQUOTE>
wolffd@0 654
wolffd@0 655 <B><I><FONT SIZE=-1>PORT="value"</FONT></I></B>
wolffd@0 656 <BLOCKQUOTE>
wolffd@0 657 attaches a portname to the object.
wolffd@0 658 (See <A HREF=attrs.html#k:portPos>portPos</A>.)
wolffd@0 659 This can be used to modify the head
wolffd@0 660 or tail of an edge, so that the end attaches directly to the object.
wolffd@0 661 </BLOCKQUOTE>
wolffd@0 662
wolffd@0 663 <B><I><FONT SIZE=-1>ROWSPAN="value"</FONT></I></B>
wolffd@0 664 <BLOCKQUOTE>
wolffd@0 665 specifies the number of rows spanned by the cell. The default is 1.
wolffd@0 666 The maximum value is 65535.
wolffd@0 667 </BLOCKQUOTE>
wolffd@0 668
wolffd@0 669 <B><I><FONT SIZE=-1>SCALE</FONT></I></B>
wolffd@0 670 <BLOCKQUOTE>
wolffd@0 671 specifies how an image will use any extra space available in its cell.
wolffd@0 672 Allowed values are
wolffd@0 673 <ul>
wolffd@0 674 <LI>FALSE : keep image its natural size. (Default) </LI>
wolffd@0 675 <LI>TRUE : scale image uniformly to fit.</LI>
wolffd@0 676 <LI>WIDTH : expand image width to fill </LI>
wolffd@0 677 <LI>HEIGHT : expand image height to fill </LI>
wolffd@0 678 <LI>BOTH : expand both image width height to fill </LI>
wolffd@0 679 </ul>
wolffd@0 680 If this attribute is undefined,
wolffd@0 681 the image inherits the <A HREF="attrs.html#d:imagescale">imagescale</A>
wolffd@0 682 attribute of the graph object being drawn.
wolffd@0 683 As with the <A HREF="attrs.html#d:imagescale">imagescale</A>
wolffd@0 684 attribute, if the cell has a fixed size and the image is too large,
wolffd@0 685 any offending dimension will be shrunk to fit the space, the
wolffd@0 686 scaling being uniform in width and height if <I>SCALE=<TT>"true"</TT></I>.
wolffd@0 687 </BLOCKQUOTE>
wolffd@0 688
wolffd@0 689 <B><I><FONT SIZE=-1>SRC="value"</FONT></I></B>
wolffd@0 690 <BLOCKQUOTE>
wolffd@0 691 specifies the image file to be displayed in the cell.
wolffd@0 692 Note that if the software is used as a web server, file system access
wolffd@0 693 to images is more restricted. See <A HREF="#d:GV_FILE_PATH">GV_FILE_PATH</A>
wolffd@0 694 and <A HREF="#d:SERVER_NAME">SERVER_NAME</A>.
wolffd@0 695 </BLOCKQUOTE>
wolffd@0 696
wolffd@0 697 <B><I><FONT SIZE=-1>TARGET="value"</FONT></I></B>
wolffd@0 698 <BLOCKQUOTE>
wolffd@0 699 determines which window of the browser is used for the URL if the object
wolffd@0 700 has one.
wolffd@0 701 See <A HREF="http://www.w3.org/TR/html401/present/frames.html#adef-target">W3C documentation</A>.
wolffd@0 702 </BLOCKQUOTE>
wolffd@0 703
wolffd@0 704 <B><I><FONT SIZE=-1>TITLE="value"</FONT></I></B>
wolffd@0 705 <BLOCKQUOTE>
wolffd@0 706 sets the tooltip annotation attached to the element.
wolffd@0 707 This is used only if the element has a HREF attribute.
wolffd@0 708 </BLOCKQUOTE>
wolffd@0 709
wolffd@0 710 <B><I><FONT SIZE=-1>TOOLTIP="value"</FONT></I></B>
wolffd@0 711 <BLOCKQUOTE>
wolffd@0 712 is an alias for <B><I><FONT SIZE=-1>TITLE</FONT></I></B>.
wolffd@0 713 </BLOCKQUOTE>
wolffd@0 714
wolffd@0 715 <P>
wolffd@0 716 <B><I><FONT SIZE=-1>VALIGN</FONT> </I></B>
wolffd@0 717 <BLOCKQUOTE>
wolffd@0 718 specifies vertical placement. When an object is allocated
wolffd@0 719 more space than required, this value determines where the extra space
wolffd@0 720 is placed above and below the object.
wolffd@0 721 <P>
wolffd@0 722 <ul>
wolffd@0 723 <LI>MIDDLE aligns the object in the center. (Default) </LI>
wolffd@0 724 <LI>LEFT aligns the object on the left.</LI>
wolffd@0 725 <LI>RIGHT aligns the object on the right. </LI>
wolffd@0 726 </ul>
wolffd@0 727 </BLOCKQUOTE>
wolffd@0 728
wolffd@0 729 <B><I><FONT SIZE=-1>WIDTH="value"</FONT></I></B>
wolffd@0 730 <BLOCKQUOTE>
wolffd@0 731 specifies the mininum width, in points, of the object. The width
wolffd@0 732 includes the contents, any spacing and the border. Unless
wolffd@0 733 <B><I>FIXEDSIZE</I></B> is true, the width will be expanded to allow
wolffd@0 734 the contents to fit.
wolffd@0 735 The maximum value is 65535.
wolffd@0 736 </BLOCKQUOTE>
wolffd@0 737
wolffd@0 738 <P>
wolffd@0 739 There is some inheritance among the attributes. If a table specifies
wolffd@0 740 a <I><B>CELLPADDING</B></I>, <I><B>CELLBORDER</B></I> or <I><B>BORDER</B></I>
wolffd@0 741 value, this value is used by the table's
wolffd@0 742 cells unless overridden. If a cell or table specifies a <I><B>BGCOLOR</B></I>,
wolffd@0 743 this will be the background color for all of its descendents.
wolffd@0 744 Of course, if a background or fill color is specified for the
wolffd@0 745 graph object owning the label, this will be the original
wolffd@0 746 background for the label.
wolffd@0 747 The object's fontname, fontcolor and fontsize attributes
wolffd@0 748 are the default for drawing text. These can be overridden by using
wolffd@0 749 <I><B>FONT</B></I> to set new values. The new font values will hold
wolffd@0 750 until overridden by an enclosed <I><B>FONT</B></I> element.
wolffd@0 751 Finally, the pencolor or color of the graph object will be used as
wolffd@0 752 the border color.
wolffd@0 753 <P>
wolffd@0 754 Because of certain limitations in handling tables in a device-independent
wolffd@0 755 manner, when <I><B>BORDER</B></I> is 1 and both table and cell borders
wolffd@0 756 are on and <I><B>CELLSPACING</B></I> is less than 2, anomalies can arise
wolffd@0 757 in the output, such as gaps between sides of borders which should be
wolffd@0 758 abutting or even collinear. The user can usual get around this by increasing
wolffd@0 759 the border size or the spacing, or turning off the table border.
wolffd@0 760 <P>
wolffd@0 761 As an example of HTML labels, the dot input
wolffd@0 762 <XMP>
wolffd@0 763 digraph structs {
wolffd@0 764 node [shape=plaintext]
wolffd@0 765 struct1 [label=<
wolffd@0 766 <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
wolffd@0 767 <TR><TD>left</TD><TD PORT="f1">mid dle</TD><TD PORT="f2">right</TD></TR>
wolffd@0 768 </TABLE>>];
wolffd@0 769 struct2 [label=<
wolffd@0 770 <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
wolffd@0 771 <TR><TD PORT="f0">one</TD><TD>two</TD></TR>
wolffd@0 772 </TABLE>>];
wolffd@0 773 struct3 [label=<
wolffd@0 774 <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
wolffd@0 775 <TR>
wolffd@0 776 <TD ROWSPAN="3">hello<BR/>world</TD>
wolffd@0 777 <TD COLSPAN="3">b</TD>
wolffd@0 778 <TD ROWSPAN="3">g</TD>
wolffd@0 779 <TD ROWSPAN="3">h</TD>
wolffd@0 780 </TR>
wolffd@0 781 <TR>
wolffd@0 782 <TD>c</TD><TD PORT="here">d</TD><TD>e</TD>
wolffd@0 783 </TR>
wolffd@0 784 <TR>
wolffd@0 785 <TD COLSPAN="3">f</TD>
wolffd@0 786 </TR>
wolffd@0 787 </TABLE>>];
wolffd@0 788 struct1:f1 -> struct2:f0;
wolffd@0 789 struct1:f2 -> struct3:here;
wolffd@0 790 }
wolffd@0 791 </XMP>
wolffd@0 792 produces the HTML analogue of the record example above<BR>
wolffd@0 793 <IMG SRC=html1.gif>
wolffd@0 794 <P>
wolffd@0 795 As usual, an HTML specification is more verbose. On the other hand,
wolffd@0 796 HTML labels are much more general, as the following example shows:
wolffd@0 797 <P>
wolffd@0 798 <IMG SRC=html2.gif>
wolffd@0 799 <P>
wolffd@0 800 The source for this graph can be found <A HREF=html2.dot>here</A>.
wolffd@0 801 <P>
wolffd@0 802 Here is an example using &lt;FONT&gt; elements
wolffd@0 803 <P>
wolffd@0 804 <IMG SRC=html3.gif>
wolffd@0 805 <P>
wolffd@0 806 with the <A HREF=html3.dot>input graph</A>.
wolffd@0 807 <P>
wolffd@0 808 Here is an example using an &lt;IMG&gt; element
wolffd@0 809 <P>
wolffd@0 810 <IMG SRC=html4.gif>
wolffd@0 811 <P>
wolffd@0 812 with the <A HREF=html4.dot>input graph</A>.
wolffd@0 813
wolffd@0 814 <H2><A NAME=epsf>User-defined Nodes</A></H2>
wolffd@0 815
wolffd@0 816 There is a third type of node shape which is specified by the user.
wolffd@0 817 Typically, these shapes rely on the details of a concrete graphics
wolffd@0 818 format. At present, shapes can be described using PostScript, via a
wolffd@0 819 file or add-on library, for use in PostScript output, or shapes can
wolffd@0 820 be specified by a bitmap-image file for use with SVG or bitmap (jpeg,
wolffd@0 821 gif, etc.) output. More information can be found on the page
wolffd@0 822 <A HREF="http://www.graphviz.org/Documentation/html/shapehowto.html">
wolffd@0 823 How to create custom shapes</A>.
wolffd@0 824
wolffd@0 825 <H2><A NAME=sdlshapes>SDL Shapes for PostScript</A></H2>
wolffd@0 826 One example of user-defined node shapes is provided by Mark Rison of CSR.
wolffd@0 827 These are the <A HREF=http://www.sdl-forum.org/SDL/index.htm>SDL</A> shapes.
wolffd@0 828 These are available as PostScript functions whose use is described in
wolffd@0 829 <A HREF="http://www.graphviz.org/Documentation/html/shapehowto.html#psprocs"> External PostScript procedures</A>.
wolffd@0 830 The necessary PostScript library file and sample use can be found in the
wolffd@0 831 <tt>contrib/sdlshapes</tt> directory in the release. Please note the
wolffd@0 832 COPYRIGHT AND PERMISSION NOTICE contained in the library file <tt>sdl.ps</tt>.
wolffd@0 833 <P>
wolffd@0 834 The table below
wolffd@0 835 gives the shape names and the corresponding node shapes.
wolffd@0 836 <IMG SRC=sdlshapes.jpg>
wolffd@0 837 </BODY>
wolffd@0 838 </HTML>