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><...></TT>
|
wolffd@0
|
312 rather than <TT>"..."</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><BR/></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><FONT></B> <I>text</I> <B></FONT></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><FONT></B> ] <B><TABLE></B> <I>rows</I> <B></TABLE></B> [ <B></FONT></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><TR></B> <I>cells</I> <B></TR></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><TD></B> <I>label</I> <B></TD></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><TD></B> <B><IMG/></B> <B></TD></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 <TD> element,
|
wolffd@0
|
425 whitespace characters are ignored; within a <TD> 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 "&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><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 >
|
wolffd@0
|
462 </PRE>
|
wolffd@0
|
463 <P>
|
wolffd@0
|
464 <PRE><TR
|
wolffd@0
|
465 <!-- No attributes -->
|
wolffd@0
|
466 >
|
wolffd@0
|
467 </PRE>
|
wolffd@0
|
468 <P>
|
wolffd@0
|
469 <PRE><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 >
|
wolffd@0
|
489 </PRE>
|
wolffd@0
|
490
|
wolffd@0
|
491 <P>
|
wolffd@0
|
492 <PRE><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 >
|
wolffd@0
|
497 </PRE>
|
wolffd@0
|
498
|
wolffd@0
|
499 <P>
|
wolffd@0
|
500 <PRE><BR
|
wolffd@0
|
501 ALIGN="CENTER|LEFT|RIGHT"
|
wolffd@0
|
502 >
|
wolffd@0
|
503 </PRE>
|
wolffd@0
|
504
|
wolffd@0
|
505 <P>
|
wolffd@0
|
506 <PRE><IMG
|
wolffd@0
|
507 SCALE="FALSE|TRUE|WIDTH|HEIGHT|BOTH"
|
wolffd@0
|
508 SRC="<I>value</I>"
|
wolffd@0
|
509 >
|
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><TD></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><BR></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><BR></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><BR></T> elements contained
|
wolffd@0
|
541 in the cell. That is, if a <T><BR></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 <FONT>...</FONT>, or the border color
|
wolffd@0
|
587 of the table or cell within the scope of
|
wolffd@0
|
588 <TABLE>...</TABLE>,
|
wolffd@0
|
589 or <TD>...</TD>.
|
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 <FONT>...</FONT>.
|
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 <FONT>...</FONT>.
|
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 <FONT> 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 <IMG> 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>
|