Blame


1 cfa37a7b 2004-04-10 devnull .TH HTML 3
2 cfa37a7b 2004-04-10 devnull .SH NAME
3 cfa37a7b 2004-04-10 devnull parsehtml,
4 cfa37a7b 2004-04-10 devnull printitems,
5 cfa37a7b 2004-04-10 devnull validitems,
6 cfa37a7b 2004-04-10 devnull freeitems,
7 cfa37a7b 2004-04-10 devnull freedocinfo,
8 cfa37a7b 2004-04-10 devnull dimenkind,
9 cfa37a7b 2004-04-10 devnull dimenspec,
10 cfa37a7b 2004-04-10 devnull targetid,
11 cfa37a7b 2004-04-10 devnull targetname,
12 cfa37a7b 2004-04-10 devnull fromStr,
13 cfa37a7b 2004-04-10 devnull toStr
14 cfa37a7b 2004-04-10 devnull \- HTML parser
15 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
16 cfa37a7b 2004-04-10 devnull .nf
17 cfa37a7b 2004-04-10 devnull .PP
18 cfa37a7b 2004-04-10 devnull .ft L
19 cfa37a7b 2004-04-10 devnull #include <u.h>
20 cfa37a7b 2004-04-10 devnull #include <libc.h>
21 cfa37a7b 2004-04-10 devnull #include <html.h>
22 cfa37a7b 2004-04-10 devnull .ft P
23 cfa37a7b 2004-04-10 devnull .PP
24 cfa37a7b 2004-04-10 devnull .ta \w'\fLToken* 'u
25 cfa37a7b 2004-04-10 devnull .B
26 cfa37a7b 2004-04-10 devnull Item* parsehtml(uchar* data, int datalen, Rune* src, int mtype,
27 cfa37a7b 2004-04-10 devnull .B
28 cfa37a7b 2004-04-10 devnull int chset, Docinfo** pdi)
29 cfa37a7b 2004-04-10 devnull .PP
30 cfa37a7b 2004-04-10 devnull .B
31 cfa37a7b 2004-04-10 devnull void printitems(Item* items, char* msg)
32 cfa37a7b 2004-04-10 devnull .PP
33 cfa37a7b 2004-04-10 devnull .B
34 cfa37a7b 2004-04-10 devnull int validitems(Item* items)
35 cfa37a7b 2004-04-10 devnull .PP
36 cfa37a7b 2004-04-10 devnull .B
37 cfa37a7b 2004-04-10 devnull void freeitems(Item* items)
38 cfa37a7b 2004-04-10 devnull .PP
39 cfa37a7b 2004-04-10 devnull .B
40 cfa37a7b 2004-04-10 devnull void freedocinfo(Docinfo* d)
41 cfa37a7b 2004-04-10 devnull .PP
42 cfa37a7b 2004-04-10 devnull .B
43 cfa37a7b 2004-04-10 devnull int dimenkind(Dimen d)
44 cfa37a7b 2004-04-10 devnull .PP
45 cfa37a7b 2004-04-10 devnull .B
46 cfa37a7b 2004-04-10 devnull int dimenspec(Dimen d)
47 cfa37a7b 2004-04-10 devnull .PP
48 cfa37a7b 2004-04-10 devnull .B
49 cfa37a7b 2004-04-10 devnull int targetid(Rune* s)
50 cfa37a7b 2004-04-10 devnull .PP
51 cfa37a7b 2004-04-10 devnull .B
52 cfa37a7b 2004-04-10 devnull Rune* targetname(int targid)
53 cfa37a7b 2004-04-10 devnull .PP
54 cfa37a7b 2004-04-10 devnull .B
55 cfa37a7b 2004-04-10 devnull uchar* fromStr(Rune* buf, int n, int chset)
56 cfa37a7b 2004-04-10 devnull .PP
57 cfa37a7b 2004-04-10 devnull .B
58 cfa37a7b 2004-04-10 devnull Rune* toStr(uchar* buf, int n, int chset)
59 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
60 cfa37a7b 2004-04-10 devnull .PP
61 cfa37a7b 2004-04-10 devnull This library implements a parser for HTML 4.0 documents.
62 cfa37a7b 2004-04-10 devnull The parsed HTML is converted into an intermediate representation that
63 cfa37a7b 2004-04-10 devnull describes how the formatted HTML should be laid out.
64 cfa37a7b 2004-04-10 devnull .PP
65 cfa37a7b 2004-04-10 devnull .I Parsehtml
66 cfa37a7b 2004-04-10 devnull parses an entire HTML document contained in the buffer
67 cfa37a7b 2004-04-10 devnull .I data
68 cfa37a7b 2004-04-10 devnull and having length
69 cfa37a7b 2004-04-10 devnull .IR datalen .
70 cfa37a7b 2004-04-10 devnull The URL of the document should be passed in as
71 cfa37a7b 2004-04-10 devnull .IR src .
72 cfa37a7b 2004-04-10 devnull .I Mtype
73 cfa37a7b 2004-04-10 devnull is the media type of the document, which should be either
74 cfa37a7b 2004-04-10 devnull .B TextHtml
75 cfa37a7b 2004-04-10 devnull or
76 cfa37a7b 2004-04-10 devnull .BR TextPlain .
77 cfa37a7b 2004-04-10 devnull The character set of the document is described in
78 cfa37a7b 2004-04-10 devnull .IR chset ,
79 cfa37a7b 2004-04-10 devnull which can be one of
80 cfa37a7b 2004-04-10 devnull .BR US_Ascii ,
81 cfa37a7b 2004-04-10 devnull .BR ISO_8859_1 ,
82 cfa37a7b 2004-04-10 devnull .B UTF_8
83 cfa37a7b 2004-04-10 devnull or
84 cfa37a7b 2004-04-10 devnull .BR Unicode .
85 cfa37a7b 2004-04-10 devnull The return value is a linked list of
86 cfa37a7b 2004-04-10 devnull .B Item
87 cfa37a7b 2004-04-10 devnull structures, described in detail below.
88 cfa37a7b 2004-04-10 devnull As a side effect,
89 cfa37a7b 2004-04-10 devnull .BI * pdi
90 cfa37a7b 2004-04-10 devnull is set to point to a newly created
91 cfa37a7b 2004-04-10 devnull .B Docinfo
92 cfa37a7b 2004-04-10 devnull structure, containing information pertaining to the entire document.
93 cfa37a7b 2004-04-10 devnull .PP
94 cfa37a7b 2004-04-10 devnull The library expects two allocation routines to be provided by the
95 cfa37a7b 2004-04-10 devnull caller,
96 cfa37a7b 2004-04-10 devnull .B emalloc
97 cfa37a7b 2004-04-10 devnull and
98 cfa37a7b 2004-04-10 devnull .BR erealloc .
99 cfa37a7b 2004-04-10 devnull These routines are analogous to the standard malloc and realloc routines,
100 cfa37a7b 2004-04-10 devnull except that they should not return if the memory allocation fails.
101 cfa37a7b 2004-04-10 devnull In addition,
102 cfa37a7b 2004-04-10 devnull .B emalloc
103 cfa37a7b 2004-04-10 devnull is required to zero the memory.
104 cfa37a7b 2004-04-10 devnull .PP
105 cfa37a7b 2004-04-10 devnull For debugging purposes,
106 cfa37a7b 2004-04-10 devnull .I printitems
107 cfa37a7b 2004-04-10 devnull may be called to display the contents of an item list; individual items may
108 cfa37a7b 2004-04-10 devnull be printed using the
109 cfa37a7b 2004-04-10 devnull .B %I
110 cfa37a7b 2004-04-10 devnull print verb, installed on the first call to
111 cfa37a7b 2004-04-10 devnull .IR parsehtml .
112 cfa37a7b 2004-04-10 devnull .I validitems
113 cfa37a7b 2004-04-10 devnull traverses the item list, checking that all of the pointers are valid.
114 cfa37a7b 2004-04-10 devnull It returns
115 cfa37a7b 2004-04-10 devnull .B 1
116 cfa37a7b 2004-04-10 devnull is everything is ok, and
117 cfa37a7b 2004-04-10 devnull .B 0
118 cfa37a7b 2004-04-10 devnull if an error was found.
119 cfa37a7b 2004-04-10 devnull Normally, one would not call these routines directly.
120 cfa37a7b 2004-04-10 devnull Instead, one sets the global variable
121 cfa37a7b 2004-04-10 devnull .I dbgbuild
122 cfa37a7b 2004-04-10 devnull and the library calls them automatically.
123 cfa37a7b 2004-04-10 devnull One can also set
124 cfa37a7b 2004-04-10 devnull .IR warn ,
125 cfa37a7b 2004-04-10 devnull to cause the library to print a warning whenever it finds a problem with the
126 cfa37a7b 2004-04-10 devnull input document, and
127 cfa37a7b 2004-04-10 devnull .IR dbglex ,
128 cfa37a7b 2004-04-10 devnull to print debugging information in the lexer.
129 cfa37a7b 2004-04-10 devnull .PP
130 cfa37a7b 2004-04-10 devnull When an item list is finished with, it should be freed with
131 cfa37a7b 2004-04-10 devnull .IR freeitems .
132 cfa37a7b 2004-04-10 devnull Then,
133 cfa37a7b 2004-04-10 devnull .I freedocinfo
134 cfa37a7b 2004-04-10 devnull should be called on the pointer returned in
135 cfa37a7b 2004-04-10 devnull .BI * pdi\f1.
136 cfa37a7b 2004-04-10 devnull .PP
137 cfa37a7b 2004-04-10 devnull .I Dimenkind
138 cfa37a7b 2004-04-10 devnull and
139 cfa37a7b 2004-04-10 devnull .I dimenspec
140 cfa37a7b 2004-04-10 devnull are provided to interpret the
141 cfa37a7b 2004-04-10 devnull .B Dimen
142 cfa37a7b 2004-04-10 devnull type, as described in the section
143 cfa37a7b 2004-04-10 devnull .IR "Dimension Specifications" .
144 cfa37a7b 2004-04-10 devnull .PP
145 cfa37a7b 2004-04-10 devnull Frame target names are mapped to integer ids via a global, permanent mapping.
146 cfa37a7b 2004-04-10 devnull To find the value for a given name, call
147 cfa37a7b 2004-04-10 devnull .IR targetid ,
148 cfa37a7b 2004-04-10 devnull which allocates a new id if the name hasn't been seen before.
149 cfa37a7b 2004-04-10 devnull The name of a given, known id may be retrieved using
150 cfa37a7b 2004-04-10 devnull .IR targetname .
151 cfa37a7b 2004-04-10 devnull The library predefines
152 cfa37a7b 2004-04-10 devnull .BR FTtop ,
153 cfa37a7b 2004-04-10 devnull .BR FTself ,
154 cfa37a7b 2004-04-10 devnull .B FTparent
155 cfa37a7b 2004-04-10 devnull and
156 cfa37a7b 2004-04-10 devnull .BR FTblank .
157 cfa37a7b 2004-04-10 devnull .PP
158 cfa37a7b 2004-04-10 devnull The library handles all text as Unicode strings (type
159 cfa37a7b 2004-04-10 devnull .BR Rune* ).
160 cfa37a7b 2004-04-10 devnull Character set conversion is provided by
161 cfa37a7b 2004-04-10 devnull .I fromStr
162 cfa37a7b 2004-04-10 devnull and
163 cfa37a7b 2004-04-10 devnull .IR toStr .
164 cfa37a7b 2004-04-10 devnull .I FromStr
165 cfa37a7b 2004-04-10 devnull takes
166 cfa37a7b 2004-04-10 devnull .I n
167 cfa37a7b 2004-04-10 devnull Unicode characters from
168 cfa37a7b 2004-04-10 devnull .I buf
169 cfa37a7b 2004-04-10 devnull and converts them to the character set described by
170 cfa37a7b 2004-04-10 devnull .IR chset .
171 cfa37a7b 2004-04-10 devnull .I ToStr
172 cfa37a7b 2004-04-10 devnull takes
173 cfa37a7b 2004-04-10 devnull .I n
174 cfa37a7b 2004-04-10 devnull bytes from
175 cfa37a7b 2004-04-10 devnull .IR buf ,
176 cfa37a7b 2004-04-10 devnull interpretted as belonging to character set
177 cfa37a7b 2004-04-10 devnull .IR chset ,
178 cfa37a7b 2004-04-10 devnull and converts them to a Unicode string.
179 cfa37a7b 2004-04-10 devnull Both routines null-terminate the result, and use
180 cfa37a7b 2004-04-10 devnull .B emalloc
181 cfa37a7b 2004-04-10 devnull to allocate space for it.
182 cfa37a7b 2004-04-10 devnull .SS Items
183 cfa37a7b 2004-04-10 devnull The return value of
184 cfa37a7b 2004-04-10 devnull .I parsehtml
185 cfa37a7b 2004-04-10 devnull is a linked list of variant structures,
186 cfa37a7b 2004-04-10 devnull with the generic portion described by the following definition:
187 cfa37a7b 2004-04-10 devnull .PP
188 cfa37a7b 2004-04-10 devnull .EX
189 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Genattr* 'u
190 cfa37a7b 2004-04-10 devnull typedef struct Item Item;
191 cfa37a7b 2004-04-10 devnull struct Item
192 cfa37a7b 2004-04-10 devnull {
193 cfa37a7b 2004-04-10 devnull Item* next;
194 cfa37a7b 2004-04-10 devnull int width;
195 cfa37a7b 2004-04-10 devnull int height;
196 cfa37a7b 2004-04-10 devnull int ascent;
197 cfa37a7b 2004-04-10 devnull int anchorid;
198 cfa37a7b 2004-04-10 devnull int state;
199 cfa37a7b 2004-04-10 devnull Genattr* genattr;
200 cfa37a7b 2004-04-10 devnull int tag;
201 cfa37a7b 2004-04-10 devnull };
202 cfa37a7b 2004-04-10 devnull .EE
203 cfa37a7b 2004-04-10 devnull .PP
204 cfa37a7b 2004-04-10 devnull The field
205 cfa37a7b 2004-04-10 devnull .B next
206 cfa37a7b 2004-04-10 devnull points to the successor in the linked list of items, while
207 cfa37a7b 2004-04-10 devnull .BR width ,
208 cfa37a7b 2004-04-10 devnull .BR height ,
209 cfa37a7b 2004-04-10 devnull and
210 cfa37a7b 2004-04-10 devnull .B ascent
211 cfa37a7b 2004-04-10 devnull are intended for use by the caller as part of the layout process.
212 cfa37a7b 2004-04-10 devnull .BR Anchorid ,
213 cfa37a7b 2004-04-10 devnull if non-zero, gives the integer id assigned by the parser to the anchor that
214 cfa37a7b 2004-04-10 devnull this item is in (see section
215 cfa37a7b 2004-04-10 devnull .IR Anchors ).
216 cfa37a7b 2004-04-10 devnull .B State
217 cfa37a7b 2004-04-10 devnull is a collection of flags and values described as follows:
218 cfa37a7b 2004-04-10 devnull .PP
219 cfa37a7b 2004-04-10 devnull .EX
220 cfa37a7b 2004-04-10 devnull .ta 6n +\w'IFindentshift = 'u
221 cfa37a7b 2004-04-10 devnull enum
222 cfa37a7b 2004-04-10 devnull {
223 cfa37a7b 2004-04-10 devnull IFbrk = 0x80000000,
224 cfa37a7b 2004-04-10 devnull IFbrksp = 0x40000000,
225 cfa37a7b 2004-04-10 devnull IFnobrk = 0x20000000,
226 cfa37a7b 2004-04-10 devnull IFcleft = 0x10000000,
227 cfa37a7b 2004-04-10 devnull IFcright = 0x08000000,
228 cfa37a7b 2004-04-10 devnull IFwrap = 0x04000000,
229 cfa37a7b 2004-04-10 devnull IFhang = 0x02000000,
230 cfa37a7b 2004-04-10 devnull IFrjust = 0x01000000,
231 cfa37a7b 2004-04-10 devnull IFcjust = 0x00800000,
232 cfa37a7b 2004-04-10 devnull IFsmap = 0x00400000,
233 cfa37a7b 2004-04-10 devnull IFindentshift = 8,
234 cfa37a7b 2004-04-10 devnull IFindentmask = (255<<IFindentshift),
235 cfa37a7b 2004-04-10 devnull IFhangmask = 255
236 cfa37a7b 2004-04-10 devnull };
237 cfa37a7b 2004-04-10 devnull .EE
238 cfa37a7b 2004-04-10 devnull .PP
239 cfa37a7b 2004-04-10 devnull .B IFbrk
240 cfa37a7b 2004-04-10 devnull is set if a break is to be forced before placing this item.
241 cfa37a7b 2004-04-10 devnull .B IFbrksp
242 cfa37a7b 2004-04-10 devnull is set if a 1 line space should be added to the break (in which case
243 cfa37a7b 2004-04-10 devnull .B IFbrk
244 cfa37a7b 2004-04-10 devnull is also set).
245 cfa37a7b 2004-04-10 devnull .B IFnobrk
246 cfa37a7b 2004-04-10 devnull is set if a break is not permitted before the item.
247 cfa37a7b 2004-04-10 devnull .B IFcleft
248 cfa37a7b 2004-04-10 devnull is set if left floats should be cleared (that is, if the list of pending left floats should be placed)
249 cfa37a7b 2004-04-10 devnull before this item is placed, and
250 cfa37a7b 2004-04-10 devnull .B IFcright
251 cfa37a7b 2004-04-10 devnull is set for right floats.
252 cfa37a7b 2004-04-10 devnull In both cases, IFbrk is also set.
253 cfa37a7b 2004-04-10 devnull .B IFwrap
254 cfa37a7b 2004-04-10 devnull is set if the line containing this item is allowed to wrap.
255 cfa37a7b 2004-04-10 devnull .B IFhang
256 cfa37a7b 2004-04-10 devnull is set if this item hangs into the left indent.
257 cfa37a7b 2004-04-10 devnull .B IFrjust
258 cfa37a7b 2004-04-10 devnull is set if the line containing this item should be right justified,
259 cfa37a7b 2004-04-10 devnull and
260 cfa37a7b 2004-04-10 devnull .B IFcjust
261 cfa37a7b 2004-04-10 devnull is set for center justified lines.
262 cfa37a7b 2004-04-10 devnull .B IFsmap
263 cfa37a7b 2004-04-10 devnull is used to indicate that an image is a server-side map.
264 cfa37a7b 2004-04-10 devnull The low 8 bits, represented by
265 cfa37a7b 2004-04-10 devnull .BR IFhangmask ,
266 cfa37a7b 2004-04-10 devnull indicate the current hang into left indent, in tenths of a tabstop.
267 cfa37a7b 2004-04-10 devnull The next 8 bits, represented by
268 cfa37a7b 2004-04-10 devnull .B IFindentmask
269 cfa37a7b 2004-04-10 devnull and
270 cfa37a7b 2004-04-10 devnull .BR IFindentshift ,
271 cfa37a7b 2004-04-10 devnull indicate the current indent in tab stops.
272 cfa37a7b 2004-04-10 devnull .PP
273 cfa37a7b 2004-04-10 devnull The field
274 cfa37a7b 2004-04-10 devnull .B genattr
275 cfa37a7b 2004-04-10 devnull is an optional pointer to an auxiliary structure, described in the section
276 cfa37a7b 2004-04-10 devnull .IR "Generic Attributes" .
277 cfa37a7b 2004-04-10 devnull .PP
278 cfa37a7b 2004-04-10 devnull Finally,
279 cfa37a7b 2004-04-10 devnull .B tag
280 cfa37a7b 2004-04-10 devnull describes which variant type this item has.
281 cfa37a7b 2004-04-10 devnull It can have one of the values
282 cfa37a7b 2004-04-10 devnull .BR Itexttag ,
283 cfa37a7b 2004-04-10 devnull .BR Iruletag ,
284 cfa37a7b 2004-04-10 devnull .BR Iimagetag ,
285 cfa37a7b 2004-04-10 devnull .BR Iformfieldtag ,
286 cfa37a7b 2004-04-10 devnull .BR Itabletag ,
287 cfa37a7b 2004-04-10 devnull .B Ifloattag
288 cfa37a7b 2004-04-10 devnull or
289 cfa37a7b 2004-04-10 devnull .BR Ispacertag .
290 cfa37a7b 2004-04-10 devnull For each of these values, there is an additional structure defined, which
291 cfa37a7b 2004-04-10 devnull includes Item as an unnamed initial substructure, and then defines additional
292 cfa37a7b 2004-04-10 devnull fields.
293 cfa37a7b 2004-04-10 devnull .PP
294 cfa37a7b 2004-04-10 devnull Items of type
295 cfa37a7b 2004-04-10 devnull .B Itexttag
296 cfa37a7b 2004-04-10 devnull represent a piece of text, using the following structure:
297 cfa37a7b 2004-04-10 devnull .PP
298 cfa37a7b 2004-04-10 devnull .EX
299 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Rune* 'u
300 cfa37a7b 2004-04-10 devnull struct Itext
301 cfa37a7b 2004-04-10 devnull {
302 cfa37a7b 2004-04-10 devnull Item;
303 cfa37a7b 2004-04-10 devnull Rune* s;
304 cfa37a7b 2004-04-10 devnull int fnt;
305 cfa37a7b 2004-04-10 devnull int fg;
306 cfa37a7b 2004-04-10 devnull uchar voff;
307 cfa37a7b 2004-04-10 devnull uchar ul;
308 cfa37a7b 2004-04-10 devnull };
309 cfa37a7b 2004-04-10 devnull .EE
310 cfa37a7b 2004-04-10 devnull .PP
311 cfa37a7b 2004-04-10 devnull Here
312 cfa37a7b 2004-04-10 devnull .B s
313 cfa37a7b 2004-04-10 devnull is a null-terminated Unicode string of the actual characters making up this text item,
314 cfa37a7b 2004-04-10 devnull .B fnt
315 cfa37a7b 2004-04-10 devnull is the font number (described in the section
316 cfa37a7b 2004-04-10 devnull .IR "Font Numbers" ),
317 cfa37a7b 2004-04-10 devnull and
318 cfa37a7b 2004-04-10 devnull .B fg
319 cfa37a7b 2004-04-10 devnull is the RGB encoded color for the text.
320 cfa37a7b 2004-04-10 devnull .B Voff
321 cfa37a7b 2004-04-10 devnull measures the vertical offset from the baseline; subtract
322 cfa37a7b 2004-04-10 devnull .B Voffbias
323 cfa37a7b 2004-04-10 devnull to get the actual value (negative values represent a displacement down the page).
324 cfa37a7b 2004-04-10 devnull The field
325 cfa37a7b 2004-04-10 devnull .B ul
326 cfa37a7b 2004-04-10 devnull is the underline style:
327 cfa37a7b 2004-04-10 devnull .B ULnone
328 cfa37a7b 2004-04-10 devnull if no underline,
329 cfa37a7b 2004-04-10 devnull .B ULunder
330 cfa37a7b 2004-04-10 devnull for conventional underline, and
331 cfa37a7b 2004-04-10 devnull .B ULmid
332 cfa37a7b 2004-04-10 devnull for strike-through.
333 cfa37a7b 2004-04-10 devnull .PP
334 cfa37a7b 2004-04-10 devnull Items of type
335 cfa37a7b 2004-04-10 devnull .B Iruletag
336 cfa37a7b 2004-04-10 devnull represent a horizontal rule, as follows:
337 cfa37a7b 2004-04-10 devnull .PP
338 cfa37a7b 2004-04-10 devnull .EX
339 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Dimen 'u
340 cfa37a7b 2004-04-10 devnull struct Irule
341 cfa37a7b 2004-04-10 devnull {
342 cfa37a7b 2004-04-10 devnull Item;
343 cfa37a7b 2004-04-10 devnull uchar align;
344 cfa37a7b 2004-04-10 devnull uchar noshade;
345 cfa37a7b 2004-04-10 devnull int size;
346 cfa37a7b 2004-04-10 devnull Dimen wspec;
347 cfa37a7b 2004-04-10 devnull };
348 cfa37a7b 2004-04-10 devnull .EE
349 cfa37a7b 2004-04-10 devnull .PP
350 cfa37a7b 2004-04-10 devnull Here
351 cfa37a7b 2004-04-10 devnull .B align
352 cfa37a7b 2004-04-10 devnull is the alignment specification (described in the corresponding section),
353 cfa37a7b 2004-04-10 devnull .B noshade
354 cfa37a7b 2004-04-10 devnull is set if the rule should not be shaded,
355 cfa37a7b 2004-04-10 devnull .B size
356 cfa37a7b 2004-04-10 devnull is the height of the rule (as set by the size attribute),
357 cfa37a7b 2004-04-10 devnull and
358 cfa37a7b 2004-04-10 devnull .B wspec
359 cfa37a7b 2004-04-10 devnull is the desired width (see section
360 cfa37a7b 2004-04-10 devnull .IR "Dimension Specifications" ).
361 cfa37a7b 2004-04-10 devnull .PP
362 cfa37a7b 2004-04-10 devnull Items of type
363 cfa37a7b 2004-04-10 devnull .B Iimagetag
364 cfa37a7b 2004-04-10 devnull describe embedded images, for which the following structure is defined:
365 cfa37a7b 2004-04-10 devnull .PP
366 cfa37a7b 2004-04-10 devnull .EX
367 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Iimage* 'u
368 cfa37a7b 2004-04-10 devnull struct Iimage
369 cfa37a7b 2004-04-10 devnull {
370 cfa37a7b 2004-04-10 devnull Item;
371 cfa37a7b 2004-04-10 devnull Rune* imsrc;
372 cfa37a7b 2004-04-10 devnull int imwidth;
373 cfa37a7b 2004-04-10 devnull int imheight;
374 cfa37a7b 2004-04-10 devnull Rune* altrep;
375 cfa37a7b 2004-04-10 devnull Map* map;
376 cfa37a7b 2004-04-10 devnull int ctlid;
377 cfa37a7b 2004-04-10 devnull uchar align;
378 cfa37a7b 2004-04-10 devnull uchar hspace;
379 cfa37a7b 2004-04-10 devnull uchar vspace;
380 cfa37a7b 2004-04-10 devnull uchar border;
381 cfa37a7b 2004-04-10 devnull Iimage* nextimage;
382 cfa37a7b 2004-04-10 devnull };
383 cfa37a7b 2004-04-10 devnull .EE
384 cfa37a7b 2004-04-10 devnull .PP
385 cfa37a7b 2004-04-10 devnull Here
386 cfa37a7b 2004-04-10 devnull .B imsrc
387 cfa37a7b 2004-04-10 devnull is the URL of the image source,
388 cfa37a7b 2004-04-10 devnull .B imwidth
389 cfa37a7b 2004-04-10 devnull and
390 cfa37a7b 2004-04-10 devnull .BR imheight ,
391 cfa37a7b 2004-04-10 devnull if non-zero, contain the specified width and height for the image,
392 cfa37a7b 2004-04-10 devnull and
393 cfa37a7b 2004-04-10 devnull .B altrep
394 cfa37a7b 2004-04-10 devnull is the text to use as an alternative to the image, if the image is not displayed.
395 cfa37a7b 2004-04-10 devnull .BR Map ,
396 cfa37a7b 2004-04-10 devnull if set, points to a structure describing an associated client-side image map.
397 cfa37a7b 2004-04-10 devnull .B Ctlid
398 cfa37a7b 2004-04-10 devnull is reserved for use by the application, for handling animated images.
399 cfa37a7b 2004-04-10 devnull .B Align
400 cfa37a7b 2004-04-10 devnull encodes the alignment specification of the image.
401 cfa37a7b 2004-04-10 devnull .B Hspace
402 cfa37a7b 2004-04-10 devnull contains the number of pixels to pad the image with on either side, and
403 cfa37a7b 2004-04-10 devnull .B Vspace
404 cfa37a7b 2004-04-10 devnull the padding above and below.
405 cfa37a7b 2004-04-10 devnull .B Border
406 cfa37a7b 2004-04-10 devnull is the width of the border to draw around the image.
407 cfa37a7b 2004-04-10 devnull .B Nextimage
408 cfa37a7b 2004-04-10 devnull points to the next image in the document (the head of this list is
409 cfa37a7b 2004-04-10 devnull .BR Docinfo.images ).
410 cfa37a7b 2004-04-10 devnull .PP
411 cfa37a7b 2004-04-10 devnull For items of type
412 cfa37a7b 2004-04-10 devnull .BR Iformfieldtag ,
413 cfa37a7b 2004-04-10 devnull the following structure is defined:
414 cfa37a7b 2004-04-10 devnull .PP
415 cfa37a7b 2004-04-10 devnull .EX
416 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Formfield* 'u
417 cfa37a7b 2004-04-10 devnull struct Iformfield
418 cfa37a7b 2004-04-10 devnull {
419 cfa37a7b 2004-04-10 devnull Item;
420 cfa37a7b 2004-04-10 devnull Formfield* formfield;
421 cfa37a7b 2004-04-10 devnull };
422 cfa37a7b 2004-04-10 devnull .EE
423 cfa37a7b 2004-04-10 devnull .PP
424 cfa37a7b 2004-04-10 devnull This adds a single field,
425 cfa37a7b 2004-04-10 devnull .BR formfield ,
426 cfa37a7b 2004-04-10 devnull which points to a structure describing a field in a form, described in section
427 cfa37a7b 2004-04-10 devnull .IR Forms .
428 cfa37a7b 2004-04-10 devnull .PP
429 cfa37a7b 2004-04-10 devnull For items of type
430 cfa37a7b 2004-04-10 devnull .BR Itabletag ,
431 cfa37a7b 2004-04-10 devnull the following structure is defined:
432 cfa37a7b 2004-04-10 devnull .PP
433 cfa37a7b 2004-04-10 devnull .EX
434 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Table* 'u
435 cfa37a7b 2004-04-10 devnull struct Itable
436 cfa37a7b 2004-04-10 devnull {
437 cfa37a7b 2004-04-10 devnull Item;
438 cfa37a7b 2004-04-10 devnull Table* table;
439 cfa37a7b 2004-04-10 devnull };
440 cfa37a7b 2004-04-10 devnull .EE
441 cfa37a7b 2004-04-10 devnull .PP
442 cfa37a7b 2004-04-10 devnull .B Table
443 cfa37a7b 2004-04-10 devnull points to a structure describing the table, described in the section
444 cfa37a7b 2004-04-10 devnull .IR Tables .
445 cfa37a7b 2004-04-10 devnull .PP
446 cfa37a7b 2004-04-10 devnull For items of type
447 cfa37a7b 2004-04-10 devnull .BR Ifloattag ,
448 cfa37a7b 2004-04-10 devnull the following structure is defined:
449 cfa37a7b 2004-04-10 devnull .PP
450 cfa37a7b 2004-04-10 devnull .EX
451 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Ifloat* 'u
452 cfa37a7b 2004-04-10 devnull struct Ifloat
453 cfa37a7b 2004-04-10 devnull {
454 cfa37a7b 2004-04-10 devnull Item;
455 cfa37a7b 2004-04-10 devnull Item* item;
456 cfa37a7b 2004-04-10 devnull int x;
457 cfa37a7b 2004-04-10 devnull int y;
458 cfa37a7b 2004-04-10 devnull uchar side;
459 cfa37a7b 2004-04-10 devnull uchar infloats;
460 cfa37a7b 2004-04-10 devnull Ifloat* nextfloat;
461 cfa37a7b 2004-04-10 devnull };
462 cfa37a7b 2004-04-10 devnull .EE
463 cfa37a7b 2004-04-10 devnull .PP
464 cfa37a7b 2004-04-10 devnull The
465 cfa37a7b 2004-04-10 devnull .B item
466 cfa37a7b 2004-04-10 devnull points to a single item (either a table or an image) that floats (the text of the
467 cfa37a7b 2004-04-10 devnull document flows around it), and
468 cfa37a7b 2004-04-10 devnull .B side
469 cfa37a7b 2004-04-10 devnull indicates the margin that this float sticks to; it is either
470 cfa37a7b 2004-04-10 devnull .B ALleft
471 cfa37a7b 2004-04-10 devnull or
472 cfa37a7b 2004-04-10 devnull .BR ALright .
473 cfa37a7b 2004-04-10 devnull .B X
474 cfa37a7b 2004-04-10 devnull and
475 cfa37a7b 2004-04-10 devnull .B y
476 cfa37a7b 2004-04-10 devnull are reserved for use by the caller; these are typically used for the coordinates
477 cfa37a7b 2004-04-10 devnull of the top of the float.
478 cfa37a7b 2004-04-10 devnull .B Infloats
479 cfa37a7b 2004-04-10 devnull is used by the caller to keep track of whether it has placed the float.
480 cfa37a7b 2004-04-10 devnull .B Nextfloat
481 cfa37a7b 2004-04-10 devnull is used by the caller to link together all of the floats that it has placed.
482 cfa37a7b 2004-04-10 devnull .PP
483 cfa37a7b 2004-04-10 devnull For items of type
484 cfa37a7b 2004-04-10 devnull .BR Ispacertag ,
485 cfa37a7b 2004-04-10 devnull the following structure is defined:
486 cfa37a7b 2004-04-10 devnull .PP
487 cfa37a7b 2004-04-10 devnull .EX
488 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Item; 'u
489 cfa37a7b 2004-04-10 devnull struct Ispacer
490 cfa37a7b 2004-04-10 devnull {
491 cfa37a7b 2004-04-10 devnull Item;
492 cfa37a7b 2004-04-10 devnull int spkind;
493 cfa37a7b 2004-04-10 devnull };
494 cfa37a7b 2004-04-10 devnull .EE
495 cfa37a7b 2004-04-10 devnull .PP
496 cfa37a7b 2004-04-10 devnull .B Spkind
497 cfa37a7b 2004-04-10 devnull encodes the kind of spacer, and may be one of
498 cfa37a7b 2004-04-10 devnull .B ISPnull
499 cfa37a7b 2004-04-10 devnull (zero height and width),
500 cfa37a7b 2004-04-10 devnull .B ISPvline
501 cfa37a7b 2004-04-10 devnull (takes on height and ascent of the current font),
502 cfa37a7b 2004-04-10 devnull .B ISPhspace
503 cfa37a7b 2004-04-10 devnull (has the width of a space in the current font) and
504 cfa37a7b 2004-04-10 devnull .B ISPgeneral
505 cfa37a7b 2004-04-10 devnull (for all other purposes, such as between markers and lists).
506 cfa37a7b 2004-04-10 devnull .SS Generic Attributes
507 cfa37a7b 2004-04-10 devnull .PP
508 cfa37a7b 2004-04-10 devnull The genattr field of an item, if non-nil, points to a structure that holds
509 cfa37a7b 2004-04-10 devnull the values of attributes not specific to any particular
510 cfa37a7b 2004-04-10 devnull item type, as they occur on a wide variety of underlying HTML tags.
511 cfa37a7b 2004-04-10 devnull The structure is as follows:
512 cfa37a7b 2004-04-10 devnull .PP
513 cfa37a7b 2004-04-10 devnull .EX
514 cfa37a7b 2004-04-10 devnull .ta 6n +\w'SEvent* 'u
515 cfa37a7b 2004-04-10 devnull typedef struct Genattr Genattr;
516 cfa37a7b 2004-04-10 devnull struct Genattr
517 cfa37a7b 2004-04-10 devnull {
518 cfa37a7b 2004-04-10 devnull Rune* id;
519 cfa37a7b 2004-04-10 devnull Rune* class;
520 cfa37a7b 2004-04-10 devnull Rune* style;
521 cfa37a7b 2004-04-10 devnull Rune* title;
522 cfa37a7b 2004-04-10 devnull SEvent* events;
523 cfa37a7b 2004-04-10 devnull };
524 cfa37a7b 2004-04-10 devnull .EE
525 cfa37a7b 2004-04-10 devnull .PP
526 cfa37a7b 2004-04-10 devnull Fields
527 cfa37a7b 2004-04-10 devnull .BR id ,
528 cfa37a7b 2004-04-10 devnull .BR class ,
529 cfa37a7b 2004-04-10 devnull .B style
530 cfa37a7b 2004-04-10 devnull and
531 cfa37a7b 2004-04-10 devnull .BR title ,
532 cfa37a7b 2004-04-10 devnull when non-nil, contain values of correspondingly named attributes of the HTML tag
533 cfa37a7b 2004-04-10 devnull associated with this item.
534 cfa37a7b 2004-04-10 devnull .B Events
535 cfa37a7b 2004-04-10 devnull is a linked list of events (with corresponding scripted actions) associated with the item:
536 cfa37a7b 2004-04-10 devnull .PP
537 cfa37a7b 2004-04-10 devnull .EX
538 cfa37a7b 2004-04-10 devnull .ta 6n +\w'SEvent* 'u
539 cfa37a7b 2004-04-10 devnull typedef struct SEvent SEvent;
540 cfa37a7b 2004-04-10 devnull struct SEvent
541 cfa37a7b 2004-04-10 devnull {
542 cfa37a7b 2004-04-10 devnull SEvent* next;
543 cfa37a7b 2004-04-10 devnull int type;
544 cfa37a7b 2004-04-10 devnull Rune* script;
545 cfa37a7b 2004-04-10 devnull };
546 cfa37a7b 2004-04-10 devnull .EE
547 cfa37a7b 2004-04-10 devnull .PP
548 cfa37a7b 2004-04-10 devnull Here,
549 cfa37a7b 2004-04-10 devnull .B next
550 cfa37a7b 2004-04-10 devnull points to the next event in the list,
551 cfa37a7b 2004-04-10 devnull .B type
552 cfa37a7b 2004-04-10 devnull is one of
553 cfa37a7b 2004-04-10 devnull .BR SEonblur ,
554 cfa37a7b 2004-04-10 devnull .BR SEonchange ,
555 cfa37a7b 2004-04-10 devnull .BR SEonclick ,
556 cfa37a7b 2004-04-10 devnull .BR SEondblclick ,
557 cfa37a7b 2004-04-10 devnull .BR SEonfocus ,
558 cfa37a7b 2004-04-10 devnull .BR SEonkeypress ,
559 cfa37a7b 2004-04-10 devnull .BR SEonkeyup ,
560 cfa37a7b 2004-04-10 devnull .BR SEonload ,
561 cfa37a7b 2004-04-10 devnull .BR SEonmousedown ,
562 cfa37a7b 2004-04-10 devnull .BR SEonmousemove ,
563 cfa37a7b 2004-04-10 devnull .BR SEonmouseout ,
564 cfa37a7b 2004-04-10 devnull .BR SEonmouseover ,
565 cfa37a7b 2004-04-10 devnull .BR SEonmouseup ,
566 cfa37a7b 2004-04-10 devnull .BR SEonreset ,
567 cfa37a7b 2004-04-10 devnull .BR SEonselect ,
568 cfa37a7b 2004-04-10 devnull .B SEonsubmit
569 cfa37a7b 2004-04-10 devnull or
570 cfa37a7b 2004-04-10 devnull .BR SEonunload ,
571 cfa37a7b 2004-04-10 devnull and
572 cfa37a7b 2004-04-10 devnull .B script
573 cfa37a7b 2004-04-10 devnull is the text of the associated script.
574 cfa37a7b 2004-04-10 devnull .SS Dimension Specifications
575 cfa37a7b 2004-04-10 devnull .PP
576 cfa37a7b 2004-04-10 devnull Some structures include a dimension specification, used where
577 cfa37a7b 2004-04-10 devnull a number can be followed by a
578 cfa37a7b 2004-04-10 devnull .B %
579 cfa37a7b 2004-04-10 devnull or a
580 cfa37a7b 2004-04-10 devnull .B *
581 cfa37a7b 2004-04-10 devnull to indicate
582 cfa37a7b 2004-04-10 devnull percentage of total or relative weight.
583 cfa37a7b 2004-04-10 devnull This is encoded using the following structure:
584 cfa37a7b 2004-04-10 devnull .PP
585 cfa37a7b 2004-04-10 devnull .EX
586 cfa37a7b 2004-04-10 devnull .ta 6n +\w'int 'u
587 cfa37a7b 2004-04-10 devnull typedef struct Dimen Dimen;
588 cfa37a7b 2004-04-10 devnull struct Dimen
589 cfa37a7b 2004-04-10 devnull {
590 cfa37a7b 2004-04-10 devnull int kindspec;
591 cfa37a7b 2004-04-10 devnull };
592 cfa37a7b 2004-04-10 devnull .EE
593 cfa37a7b 2004-04-10 devnull .PP
594 cfa37a7b 2004-04-10 devnull Separate kind and spec values are extracted using
595 cfa37a7b 2004-04-10 devnull .I dimenkind
596 cfa37a7b 2004-04-10 devnull and
597 cfa37a7b 2004-04-10 devnull .IR dimenspec .
598 cfa37a7b 2004-04-10 devnull .I Dimenkind
599 cfa37a7b 2004-04-10 devnull returns one of
600 cfa37a7b 2004-04-10 devnull .BR Dnone ,
601 cfa37a7b 2004-04-10 devnull .BR Dpixels ,
602 cfa37a7b 2004-04-10 devnull .B Dpercent
603 cfa37a7b 2004-04-10 devnull or
604 cfa37a7b 2004-04-10 devnull .BR Drelative .
605 cfa37a7b 2004-04-10 devnull .B Dnone
606 cfa37a7b 2004-04-10 devnull means that no dimension was specified.
607 cfa37a7b 2004-04-10 devnull In all other cases,
608 cfa37a7b 2004-04-10 devnull .I dimenspec
609 cfa37a7b 2004-04-10 devnull should be called to find the absolute number of pixels, the percentage of total,
610 cfa37a7b 2004-04-10 devnull or the relative weight.
611 cfa37a7b 2004-04-10 devnull .SS Background Specifications
612 cfa37a7b 2004-04-10 devnull .PP
613 cfa37a7b 2004-04-10 devnull It is possible to set the background of the entire document, and also
614 cfa37a7b 2004-04-10 devnull for some parts of the document (such as tables).
615 cfa37a7b 2004-04-10 devnull This is encoded as follows:
616 cfa37a7b 2004-04-10 devnull .PP
617 cfa37a7b 2004-04-10 devnull .EX
618 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Rune* 'u
619 cfa37a7b 2004-04-10 devnull typedef struct Background Background;
620 cfa37a7b 2004-04-10 devnull struct Background
621 cfa37a7b 2004-04-10 devnull {
622 cfa37a7b 2004-04-10 devnull Rune* image;
623 cfa37a7b 2004-04-10 devnull int color;
624 cfa37a7b 2004-04-10 devnull };
625 cfa37a7b 2004-04-10 devnull .EE
626 cfa37a7b 2004-04-10 devnull .PP
627 cfa37a7b 2004-04-10 devnull .BR Image ,
628 cfa37a7b 2004-04-10 devnull if non-nil, is the URL of an image to use as the background.
629 cfa37a7b 2004-04-10 devnull If this is nil,
630 cfa37a7b 2004-04-10 devnull .B color
631 cfa37a7b 2004-04-10 devnull is used instead, as the RGB value for a solid fill color.
632 cfa37a7b 2004-04-10 devnull .SS Alignment Specifications
633 cfa37a7b 2004-04-10 devnull .PP
634 cfa37a7b 2004-04-10 devnull Certain items have alignment specifiers taken from the following
635 cfa37a7b 2004-04-10 devnull enumerated type:
636 cfa37a7b 2004-04-10 devnull .PP
637 cfa37a7b 2004-04-10 devnull .EX
638 cfa37a7b 2004-04-10 devnull .ta 6n
639 cfa37a7b 2004-04-10 devnull enum
640 cfa37a7b 2004-04-10 devnull {
641 cfa37a7b 2004-04-10 devnull ALnone = 0, ALleft, ALcenter, ALright, ALjustify,
642 cfa37a7b 2004-04-10 devnull ALchar, ALtop, ALmiddle, ALbottom, ALbaseline
643 cfa37a7b 2004-04-10 devnull };
644 cfa37a7b 2004-04-10 devnull .EE
645 cfa37a7b 2004-04-10 devnull .PP
646 cfa37a7b 2004-04-10 devnull These values correspond to the various alignment types named in the HTML 4.0
647 cfa37a7b 2004-04-10 devnull standard.
648 cfa37a7b 2004-04-10 devnull If an item has an alignment of
649 cfa37a7b 2004-04-10 devnull .B ALleft
650 cfa37a7b 2004-04-10 devnull or
651 cfa37a7b 2004-04-10 devnull .BR ALright ,
652 cfa37a7b 2004-04-10 devnull the library automatically encapsulates it inside a float item.
653 cfa37a7b 2004-04-10 devnull .PP
654 cfa37a7b 2004-04-10 devnull Tables, and the various rows, columns and cells within them, have a more
655 cfa37a7b 2004-04-10 devnull complex alignment specification, composed of separate vertical and
656 cfa37a7b 2004-04-10 devnull horizontal alignments:
657 cfa37a7b 2004-04-10 devnull .PP
658 cfa37a7b 2004-04-10 devnull .EX
659 cfa37a7b 2004-04-10 devnull .ta 6n +\w'uchar 'u
660 cfa37a7b 2004-04-10 devnull typedef struct Align Align;
661 cfa37a7b 2004-04-10 devnull struct Align
662 cfa37a7b 2004-04-10 devnull {
663 cfa37a7b 2004-04-10 devnull uchar halign;
664 cfa37a7b 2004-04-10 devnull uchar valign;
665 cfa37a7b 2004-04-10 devnull };
666 cfa37a7b 2004-04-10 devnull .EE
667 cfa37a7b 2004-04-10 devnull .PP
668 cfa37a7b 2004-04-10 devnull .B Halign
669 cfa37a7b 2004-04-10 devnull can be one of
670 cfa37a7b 2004-04-10 devnull .BR ALnone ,
671 cfa37a7b 2004-04-10 devnull .BR ALleft ,
672 cfa37a7b 2004-04-10 devnull .BR ALcenter ,
673 cfa37a7b 2004-04-10 devnull .BR ALright ,
674 cfa37a7b 2004-04-10 devnull .B ALjustify
675 cfa37a7b 2004-04-10 devnull or
676 cfa37a7b 2004-04-10 devnull .BR ALchar .
677 cfa37a7b 2004-04-10 devnull .B Valign
678 cfa37a7b 2004-04-10 devnull can be one of
679 cfa37a7b 2004-04-10 devnull .BR ALnone ,
680 cfa37a7b 2004-04-10 devnull .BR ALmiddle ,
681 cfa37a7b 2004-04-10 devnull .BR ALbottom ,
682 cfa37a7b 2004-04-10 devnull .BR ALtop
683 cfa37a7b 2004-04-10 devnull or
684 cfa37a7b 2004-04-10 devnull .BR ALbaseline .
685 cfa37a7b 2004-04-10 devnull .SS Font Numbers
686 cfa37a7b 2004-04-10 devnull .PP
687 cfa37a7b 2004-04-10 devnull Text items have an associated font number (the
688 cfa37a7b 2004-04-10 devnull .B fnt
689 cfa37a7b 2004-04-10 devnull field), which is encoded as
690 cfa37a7b 2004-04-10 devnull .BR style*NumSize+size .
691 cfa37a7b 2004-04-10 devnull Here,
692 cfa37a7b 2004-04-10 devnull .B style
693 cfa37a7b 2004-04-10 devnull is one of
694 cfa37a7b 2004-04-10 devnull .BR FntR ,
695 cfa37a7b 2004-04-10 devnull .BR FntI ,
696 cfa37a7b 2004-04-10 devnull .B FntB
697 cfa37a7b 2004-04-10 devnull or
698 cfa37a7b 2004-04-10 devnull .BR FntT ,
699 cfa37a7b 2004-04-10 devnull for roman, italic, bold and typewriter font styles, respectively, and size is
700 cfa37a7b 2004-04-10 devnull .BR Tiny ,
701 cfa37a7b 2004-04-10 devnull .BR Small ,
702 cfa37a7b 2004-04-10 devnull .BR Normal ,
703 cfa37a7b 2004-04-10 devnull .B Large
704 cfa37a7b 2004-04-10 devnull or
705 cfa37a7b 2004-04-10 devnull .BR Verylarge .
706 cfa37a7b 2004-04-10 devnull The total number of possible font numbers is
707 cfa37a7b 2004-04-10 devnull .BR NumFnt ,
708 cfa37a7b 2004-04-10 devnull and the default font number is
709 cfa37a7b 2004-04-10 devnull .B DefFnt
710 cfa37a7b 2004-04-10 devnull (which is roman style, normal size).
711 cfa37a7b 2004-04-10 devnull .SS Document Info
712 cfa37a7b 2004-04-10 devnull .PP
713 cfa37a7b 2004-04-10 devnull Global information about an HTML page is stored in the following structure:
714 cfa37a7b 2004-04-10 devnull .PP
715 cfa37a7b 2004-04-10 devnull .EX
716 cfa37a7b 2004-04-10 devnull .ta 6n +\w'DestAnchor* 'u
717 cfa37a7b 2004-04-10 devnull typedef struct Docinfo Docinfo;
718 cfa37a7b 2004-04-10 devnull struct Docinfo
719 cfa37a7b 2004-04-10 devnull {
720 cfa37a7b 2004-04-10 devnull // stuff from HTTP headers, doc head, and body tag
721 cfa37a7b 2004-04-10 devnull Rune* src;
722 cfa37a7b 2004-04-10 devnull Rune* base;
723 cfa37a7b 2004-04-10 devnull Rune* doctitle;
724 cfa37a7b 2004-04-10 devnull Background background;
725 cfa37a7b 2004-04-10 devnull Iimage* backgrounditem;
726 cfa37a7b 2004-04-10 devnull int text;
727 cfa37a7b 2004-04-10 devnull int link;
728 cfa37a7b 2004-04-10 devnull int vlink;
729 cfa37a7b 2004-04-10 devnull int alink;
730 cfa37a7b 2004-04-10 devnull int target;
731 cfa37a7b 2004-04-10 devnull int chset;
732 cfa37a7b 2004-04-10 devnull int mediatype;
733 cfa37a7b 2004-04-10 devnull int scripttype;
734 cfa37a7b 2004-04-10 devnull int hasscripts;
735 cfa37a7b 2004-04-10 devnull Rune* refresh;
736 cfa37a7b 2004-04-10 devnull Kidinfo* kidinfo;
737 cfa37a7b 2004-04-10 devnull int frameid;
738 cfa37a7b 2004-04-10 devnull
739 cfa37a7b 2004-04-10 devnull // info needed to respond to user actions
740 cfa37a7b 2004-04-10 devnull Anchor* anchors;
741 cfa37a7b 2004-04-10 devnull DestAnchor* dests;
742 cfa37a7b 2004-04-10 devnull Form* forms;
743 cfa37a7b 2004-04-10 devnull Table* tables;
744 cfa37a7b 2004-04-10 devnull Map* maps;
745 cfa37a7b 2004-04-10 devnull Iimage* images;
746 cfa37a7b 2004-04-10 devnull };
747 cfa37a7b 2004-04-10 devnull .EE
748 cfa37a7b 2004-04-10 devnull .PP
749 cfa37a7b 2004-04-10 devnull .B Src
750 cfa37a7b 2004-04-10 devnull gives the URL of the original source of the document,
751 cfa37a7b 2004-04-10 devnull and
752 cfa37a7b 2004-04-10 devnull .B base
753 cfa37a7b 2004-04-10 devnull is the base URL.
754 cfa37a7b 2004-04-10 devnull .B Doctitle
755 cfa37a7b 2004-04-10 devnull is the document's title, as set by a
756 cfa37a7b 2004-04-10 devnull .B <title>
757 cfa37a7b 2004-04-10 devnull element.
758 cfa37a7b 2004-04-10 devnull .B Background
759 cfa37a7b 2004-04-10 devnull is as described in the section
760 cfa37a7b 2004-04-10 devnull .IR "Background Specifications" ,
761 cfa37a7b 2004-04-10 devnull and
762 cfa37a7b 2004-04-10 devnull .B backgrounditem
763 cfa37a7b 2004-04-10 devnull is set to be an image item for the document's background image (if given as a URL),
764 cfa37a7b 2004-04-10 devnull or else nil.
765 cfa37a7b 2004-04-10 devnull .B Text
766 cfa37a7b 2004-04-10 devnull gives the default foregound text color of the document,
767 cfa37a7b 2004-04-10 devnull .B link
768 cfa37a7b 2004-04-10 devnull the unvisited hyperlink color,
769 cfa37a7b 2004-04-10 devnull .B vlink
770 cfa37a7b 2004-04-10 devnull the visited hyperlink color, and
771 cfa37a7b 2004-04-10 devnull .B alink
772 cfa37a7b 2004-04-10 devnull the color for highlighting hyperlinks (all in 24-bit RGB format).
773 cfa37a7b 2004-04-10 devnull .B Target
774 cfa37a7b 2004-04-10 devnull is the default target frame id.
775 cfa37a7b 2004-04-10 devnull .B Chset
776 cfa37a7b 2004-04-10 devnull and
777 cfa37a7b 2004-04-10 devnull .B mediatype
778 cfa37a7b 2004-04-10 devnull are as for the
779 cfa37a7b 2004-04-10 devnull .I chset
780 cfa37a7b 2004-04-10 devnull and
781 cfa37a7b 2004-04-10 devnull .I mtype
782 cfa37a7b 2004-04-10 devnull parameters to
783 cfa37a7b 2004-04-10 devnull .IR parsehtml .
784 cfa37a7b 2004-04-10 devnull .B Scripttype
785 cfa37a7b 2004-04-10 devnull is the type of any scripts contained in the document, and is always
786 cfa37a7b 2004-04-10 devnull .BR TextJavascript .
787 cfa37a7b 2004-04-10 devnull .B Hasscripts
788 cfa37a7b 2004-04-10 devnull is set if the document contains any scripts.
789 cfa37a7b 2004-04-10 devnull Scripting is currently unsupported.
790 cfa37a7b 2004-04-10 devnull .B Refresh
791 cfa37a7b 2004-04-10 devnull is the contents of a
792 cfa37a7b 2004-04-10 devnull .B "<meta http-equiv=Refresh ...>"
793 cfa37a7b 2004-04-10 devnull tag, if any.
794 cfa37a7b 2004-04-10 devnull .B Kidinfo
795 cfa37a7b 2004-04-10 devnull is set if this document is a frameset (see section
796 cfa37a7b 2004-04-10 devnull .IR Frames ).
797 cfa37a7b 2004-04-10 devnull .B Frameid
798 cfa37a7b 2004-04-10 devnull is this document's frame id.
799 cfa37a7b 2004-04-10 devnull .PP
800 cfa37a7b 2004-04-10 devnull .B Anchors
801 cfa37a7b 2004-04-10 devnull is a list of hyperlinks contained in the document,
802 cfa37a7b 2004-04-10 devnull and
803 cfa37a7b 2004-04-10 devnull .B dests
804 cfa37a7b 2004-04-10 devnull is a list of hyperlink destinations within the page (see the following section for details).
805 cfa37a7b 2004-04-10 devnull .BR Forms ,
806 cfa37a7b 2004-04-10 devnull .B tables
807 cfa37a7b 2004-04-10 devnull and
808 cfa37a7b 2004-04-10 devnull .B maps
809 cfa37a7b 2004-04-10 devnull are lists of the various forms, tables and client-side maps contained
810 cfa37a7b 2004-04-10 devnull in the document, as described in subsequent sections.
811 cfa37a7b 2004-04-10 devnull .B Images
812 cfa37a7b 2004-04-10 devnull is a list of all the image items in the document.
813 cfa37a7b 2004-04-10 devnull .SS Anchors
814 cfa37a7b 2004-04-10 devnull .PP
815 cfa37a7b 2004-04-10 devnull The library builds two lists for all of the
816 cfa37a7b 2004-04-10 devnull .B <a>
817 cfa37a7b 2004-04-10 devnull elements (anchors) in a document.
818 cfa37a7b 2004-04-10 devnull Each anchor is assigned a unique anchor id within the document.
819 cfa37a7b 2004-04-10 devnull For anchors which are hyperlinks (the
820 cfa37a7b 2004-04-10 devnull .B href
821 cfa37a7b 2004-04-10 devnull attribute was supplied), the following structure is defined:
822 cfa37a7b 2004-04-10 devnull .PP
823 cfa37a7b 2004-04-10 devnull .EX
824 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Anchor* 'u
825 cfa37a7b 2004-04-10 devnull typedef struct Anchor Anchor;
826 cfa37a7b 2004-04-10 devnull struct Anchor
827 cfa37a7b 2004-04-10 devnull {
828 cfa37a7b 2004-04-10 devnull Anchor* next;
829 cfa37a7b 2004-04-10 devnull int index;
830 cfa37a7b 2004-04-10 devnull Rune* name;
831 cfa37a7b 2004-04-10 devnull Rune* href;
832 cfa37a7b 2004-04-10 devnull int target;
833 cfa37a7b 2004-04-10 devnull };
834 cfa37a7b 2004-04-10 devnull .EE
835 cfa37a7b 2004-04-10 devnull .PP
836 cfa37a7b 2004-04-10 devnull .B Next
837 cfa37a7b 2004-04-10 devnull points to the next anchor in the list (the head of this list is
838 cfa37a7b 2004-04-10 devnull .BR Docinfo.anchors ).
839 cfa37a7b 2004-04-10 devnull .B Index
840 cfa37a7b 2004-04-10 devnull is the anchor id; each item within this hyperlink is tagged with this value
841 cfa37a7b 2004-04-10 devnull in its
842 cfa37a7b 2004-04-10 devnull .B anchorid
843 cfa37a7b 2004-04-10 devnull field.
844 cfa37a7b 2004-04-10 devnull .B Name
845 cfa37a7b 2004-04-10 devnull and
846 cfa37a7b 2004-04-10 devnull .B href
847 cfa37a7b 2004-04-10 devnull are the values of the correspondingly named attributes of the anchor
848 cfa37a7b 2004-04-10 devnull (in particular, href is the URL to go to).
849 cfa37a7b 2004-04-10 devnull .B Target
850 cfa37a7b 2004-04-10 devnull is the value of the target attribute (if provided) converted to a frame id.
851 cfa37a7b 2004-04-10 devnull .PP
852 cfa37a7b 2004-04-10 devnull Destinations within the document (anchors with the name attribute set)
853 cfa37a7b 2004-04-10 devnull are held in the
854 cfa37a7b 2004-04-10 devnull .B Docinfo.dests
855 cfa37a7b 2004-04-10 devnull list, using the following structure:
856 cfa37a7b 2004-04-10 devnull .PP
857 cfa37a7b 2004-04-10 devnull .EX
858 cfa37a7b 2004-04-10 devnull .ta 6n +\w'DestAnchor* 'u
859 cfa37a7b 2004-04-10 devnull typedef struct DestAnchor DestAnchor;
860 cfa37a7b 2004-04-10 devnull struct DestAnchor
861 cfa37a7b 2004-04-10 devnull {
862 cfa37a7b 2004-04-10 devnull DestAnchor* next;
863 cfa37a7b 2004-04-10 devnull int index;
864 cfa37a7b 2004-04-10 devnull Rune* name;
865 cfa37a7b 2004-04-10 devnull Item* item;
866 cfa37a7b 2004-04-10 devnull };
867 cfa37a7b 2004-04-10 devnull .EE
868 cfa37a7b 2004-04-10 devnull .PP
869 cfa37a7b 2004-04-10 devnull .B Next
870 cfa37a7b 2004-04-10 devnull is the next element of the list,
871 cfa37a7b 2004-04-10 devnull .B index
872 cfa37a7b 2004-04-10 devnull is the anchor id,
873 cfa37a7b 2004-04-10 devnull .B name
874 cfa37a7b 2004-04-10 devnull is the value of the name attribute, and
875 cfa37a7b 2004-04-10 devnull .B item
876 cfa37a7b 2004-04-10 devnull is points to the item within the parsed document that should be considered
877 cfa37a7b 2004-04-10 devnull to be the destination.
878 cfa37a7b 2004-04-10 devnull .SS Forms
879 cfa37a7b 2004-04-10 devnull .PP
880 cfa37a7b 2004-04-10 devnull Any forms within a document are kept in a list, headed by
881 cfa37a7b 2004-04-10 devnull .BR Docinfo.forms .
882 cfa37a7b 2004-04-10 devnull The elements of this list are as follows:
883 cfa37a7b 2004-04-10 devnull .PP
884 cfa37a7b 2004-04-10 devnull .EX
885 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Formfield* 'u
886 cfa37a7b 2004-04-10 devnull typedef struct Form Form;
887 cfa37a7b 2004-04-10 devnull struct Form
888 cfa37a7b 2004-04-10 devnull {
889 cfa37a7b 2004-04-10 devnull Form* next;
890 cfa37a7b 2004-04-10 devnull int formid;
891 cfa37a7b 2004-04-10 devnull Rune* name;
892 cfa37a7b 2004-04-10 devnull Rune* action;
893 cfa37a7b 2004-04-10 devnull int target;
894 cfa37a7b 2004-04-10 devnull int method;
895 cfa37a7b 2004-04-10 devnull int nfields;
896 cfa37a7b 2004-04-10 devnull Formfield* fields;
897 cfa37a7b 2004-04-10 devnull };
898 cfa37a7b 2004-04-10 devnull .EE
899 cfa37a7b 2004-04-10 devnull .PP
900 cfa37a7b 2004-04-10 devnull .B Next
901 cfa37a7b 2004-04-10 devnull points to the next form in the list.
902 cfa37a7b 2004-04-10 devnull .B Formid
903 cfa37a7b 2004-04-10 devnull is a serial number for the form within the document.
904 cfa37a7b 2004-04-10 devnull .B Name
905 cfa37a7b 2004-04-10 devnull is the value of the form's name or id attribute.
906 cfa37a7b 2004-04-10 devnull .B Action
907 cfa37a7b 2004-04-10 devnull is the value of any action attribute.
908 cfa37a7b 2004-04-10 devnull .B Target
909 cfa37a7b 2004-04-10 devnull is the value of the target attribute (if any) converted to a frame target id.
910 cfa37a7b 2004-04-10 devnull .B Method
911 cfa37a7b 2004-04-10 devnull is one of
912 cfa37a7b 2004-04-10 devnull .B HGet
913 cfa37a7b 2004-04-10 devnull or
914 cfa37a7b 2004-04-10 devnull .BR HPost .
915 cfa37a7b 2004-04-10 devnull .B Nfields
916 cfa37a7b 2004-04-10 devnull is the number of fields in the form, and
917 cfa37a7b 2004-04-10 devnull .B fields
918 cfa37a7b 2004-04-10 devnull is a linked list of the actual fields.
919 cfa37a7b 2004-04-10 devnull .PP
920 cfa37a7b 2004-04-10 devnull The individual fields in a form are described by the following structure:
921 cfa37a7b 2004-04-10 devnull .PP
922 cfa37a7b 2004-04-10 devnull .EX
923 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Formfield* 'u
924 cfa37a7b 2004-04-10 devnull typedef struct Formfield Formfield;
925 cfa37a7b 2004-04-10 devnull struct Formfield
926 cfa37a7b 2004-04-10 devnull {
927 cfa37a7b 2004-04-10 devnull Formfield* next;
928 cfa37a7b 2004-04-10 devnull int ftype;
929 cfa37a7b 2004-04-10 devnull int fieldid;
930 cfa37a7b 2004-04-10 devnull Form* form;
931 cfa37a7b 2004-04-10 devnull Rune* name;
932 cfa37a7b 2004-04-10 devnull Rune* value;
933 cfa37a7b 2004-04-10 devnull int size;
934 cfa37a7b 2004-04-10 devnull int maxlength;
935 cfa37a7b 2004-04-10 devnull int rows;
936 cfa37a7b 2004-04-10 devnull int cols;
937 cfa37a7b 2004-04-10 devnull uchar flags;
938 cfa37a7b 2004-04-10 devnull Option* options;
939 cfa37a7b 2004-04-10 devnull Item* image;
940 cfa37a7b 2004-04-10 devnull int ctlid;
941 cfa37a7b 2004-04-10 devnull SEvent* events;
942 cfa37a7b 2004-04-10 devnull };
943 cfa37a7b 2004-04-10 devnull .EE
944 cfa37a7b 2004-04-10 devnull .PP
945 cfa37a7b 2004-04-10 devnull Here,
946 cfa37a7b 2004-04-10 devnull .B next
947 cfa37a7b 2004-04-10 devnull points to the next field in the list.
948 cfa37a7b 2004-04-10 devnull .B Ftype
949 cfa37a7b 2004-04-10 devnull is the type of the field, which can be one of
950 cfa37a7b 2004-04-10 devnull .BR Ftext ,
951 cfa37a7b 2004-04-10 devnull .BR Fpassword ,
952 cfa37a7b 2004-04-10 devnull .BR Fcheckbox ,
953 cfa37a7b 2004-04-10 devnull .BR Fradio ,
954 cfa37a7b 2004-04-10 devnull .BR Fsubmit ,
955 cfa37a7b 2004-04-10 devnull .BR Fhidden ,
956 cfa37a7b 2004-04-10 devnull .BR Fimage ,
957 cfa37a7b 2004-04-10 devnull .BR Freset ,
958 cfa37a7b 2004-04-10 devnull .BR Ffile ,
959 cfa37a7b 2004-04-10 devnull .BR Fbutton ,
960 cfa37a7b 2004-04-10 devnull .B Fselect
961 cfa37a7b 2004-04-10 devnull or
962 cfa37a7b 2004-04-10 devnull .BR Ftextarea .
963 cfa37a7b 2004-04-10 devnull .B Fieldid
964 cfa37a7b 2004-04-10 devnull is a serial number for the field within the form.
965 cfa37a7b 2004-04-10 devnull .B Form
966 cfa37a7b 2004-04-10 devnull points back to the form containing this field.
967 cfa37a7b 2004-04-10 devnull .BR Name ,
968 cfa37a7b 2004-04-10 devnull .BR value ,
969 cfa37a7b 2004-04-10 devnull .BR size ,
970 cfa37a7b 2004-04-10 devnull .BR maxlength ,
971 cfa37a7b 2004-04-10 devnull .B rows
972 cfa37a7b 2004-04-10 devnull and
973 cfa37a7b 2004-04-10 devnull .B cols
974 cfa37a7b 2004-04-10 devnull each contain the values of corresponding attributes of the field, if present.
975 cfa37a7b 2004-04-10 devnull .B Flags
976 cfa37a7b 2004-04-10 devnull contains per-field flags, of which
977 cfa37a7b 2004-04-10 devnull .B FFchecked
978 cfa37a7b 2004-04-10 devnull and
979 cfa37a7b 2004-04-10 devnull .B FFmultiple
980 cfa37a7b 2004-04-10 devnull are defined.
981 cfa37a7b 2004-04-10 devnull .B Image
982 cfa37a7b 2004-04-10 devnull is only used for fields of type
983 cfa37a7b 2004-04-10 devnull .BR Fimage ;
984 cfa37a7b 2004-04-10 devnull it points to an image item containing the image to be displayed.
985 cfa37a7b 2004-04-10 devnull .B Ctlid
986 cfa37a7b 2004-04-10 devnull is reserved for use by the caller, typically to store a unique id
987 cfa37a7b 2004-04-10 devnull of an associated control used to implement the field.
988 cfa37a7b 2004-04-10 devnull .B Events
989 cfa37a7b 2004-04-10 devnull is the same as the corresponding field of the generic attributes
990 cfa37a7b 2004-04-10 devnull associated with the item containing this field.
991 cfa37a7b 2004-04-10 devnull .B Options
992 cfa37a7b 2004-04-10 devnull is only used by fields of type
993 cfa37a7b 2004-04-10 devnull .BR Fselect ;
994 cfa37a7b 2004-04-10 devnull it consists of a list of possible options that may be selected for that
995 cfa37a7b 2004-04-10 devnull field, using the following structure:
996 cfa37a7b 2004-04-10 devnull .PP
997 cfa37a7b 2004-04-10 devnull .EX
998 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Option* 'u
999 cfa37a7b 2004-04-10 devnull typedef struct Option Option;
1000 cfa37a7b 2004-04-10 devnull struct Option
1001 cfa37a7b 2004-04-10 devnull {
1002 cfa37a7b 2004-04-10 devnull Option* next;
1003 cfa37a7b 2004-04-10 devnull int selected;
1004 cfa37a7b 2004-04-10 devnull Rune* value;
1005 cfa37a7b 2004-04-10 devnull Rune* display;
1006 cfa37a7b 2004-04-10 devnull };
1007 cfa37a7b 2004-04-10 devnull .EE
1008 cfa37a7b 2004-04-10 devnull .PP
1009 cfa37a7b 2004-04-10 devnull .B Next
1010 cfa37a7b 2004-04-10 devnull points to the next element of the list.
1011 cfa37a7b 2004-04-10 devnull .B Selected
1012 cfa37a7b 2004-04-10 devnull is set if this option is to be displayed initially.
1013 cfa37a7b 2004-04-10 devnull .B Value
1014 cfa37a7b 2004-04-10 devnull is the value to send when the form is submitted if this option is selected.
1015 cfa37a7b 2004-04-10 devnull .B Display
1016 cfa37a7b 2004-04-10 devnull is the string to display on the screen for this option.
1017 cfa37a7b 2004-04-10 devnull .SS Tables
1018 cfa37a7b 2004-04-10 devnull .PP
1019 cfa37a7b 2004-04-10 devnull The library builds a list of all the tables in the document,
1020 cfa37a7b 2004-04-10 devnull headed by
1021 cfa37a7b 2004-04-10 devnull .BR Docinfo.tables .
1022 cfa37a7b 2004-04-10 devnull Each element of this list has the following format:
1023 cfa37a7b 2004-04-10 devnull .PP
1024 cfa37a7b 2004-04-10 devnull .EX
1025 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Tablecell*** 'u
1026 cfa37a7b 2004-04-10 devnull typedef struct Table Table;
1027 cfa37a7b 2004-04-10 devnull struct Table
1028 cfa37a7b 2004-04-10 devnull {
1029 cfa37a7b 2004-04-10 devnull Table* next;
1030 cfa37a7b 2004-04-10 devnull int tableid;
1031 cfa37a7b 2004-04-10 devnull Tablerow* rows;
1032 cfa37a7b 2004-04-10 devnull int nrow;
1033 cfa37a7b 2004-04-10 devnull Tablecol* cols;
1034 cfa37a7b 2004-04-10 devnull int ncol;
1035 cfa37a7b 2004-04-10 devnull Tablecell* cells;
1036 cfa37a7b 2004-04-10 devnull int ncell;
1037 cfa37a7b 2004-04-10 devnull Tablecell*** grid;
1038 cfa37a7b 2004-04-10 devnull Align align;
1039 cfa37a7b 2004-04-10 devnull Dimen width;
1040 cfa37a7b 2004-04-10 devnull int border;
1041 cfa37a7b 2004-04-10 devnull int cellspacing;
1042 cfa37a7b 2004-04-10 devnull int cellpadding;
1043 cfa37a7b 2004-04-10 devnull Background background;
1044 cfa37a7b 2004-04-10 devnull Item* caption;
1045 cfa37a7b 2004-04-10 devnull uchar caption_place;
1046 cfa37a7b 2004-04-10 devnull Lay* caption_lay;
1047 cfa37a7b 2004-04-10 devnull int totw;
1048 cfa37a7b 2004-04-10 devnull int toth;
1049 cfa37a7b 2004-04-10 devnull int caph;
1050 cfa37a7b 2004-04-10 devnull int availw;
1051 cfa37a7b 2004-04-10 devnull Token* tabletok;
1052 cfa37a7b 2004-04-10 devnull uchar flags;
1053 cfa37a7b 2004-04-10 devnull };
1054 cfa37a7b 2004-04-10 devnull .EE
1055 cfa37a7b 2004-04-10 devnull .PP
1056 cfa37a7b 2004-04-10 devnull .B Next
1057 cfa37a7b 2004-04-10 devnull points to the next element in the list of tables.
1058 cfa37a7b 2004-04-10 devnull .B Tableid
1059 cfa37a7b 2004-04-10 devnull is a serial number for the table within the document.
1060 cfa37a7b 2004-04-10 devnull .B Rows
1061 cfa37a7b 2004-04-10 devnull is an array of row specifications (described below) and
1062 cfa37a7b 2004-04-10 devnull .B nrow
1063 cfa37a7b 2004-04-10 devnull is the number of elements in this array.
1064 cfa37a7b 2004-04-10 devnull Similarly,
1065 cfa37a7b 2004-04-10 devnull .B cols
1066 cfa37a7b 2004-04-10 devnull is an array of column specifications, and
1067 cfa37a7b 2004-04-10 devnull .B ncol
1068 cfa37a7b 2004-04-10 devnull the size of this array.
1069 cfa37a7b 2004-04-10 devnull .B Cells
1070 cfa37a7b 2004-04-10 devnull is a list of all cells within the table (structure described below)
1071 cfa37a7b 2004-04-10 devnull and
1072 cfa37a7b 2004-04-10 devnull .B ncell
1073 cfa37a7b 2004-04-10 devnull is the number of elements in this list.
1074 cfa37a7b 2004-04-10 devnull Note that a cell may span multiple rows and/or columns, thus
1075 cfa37a7b 2004-04-10 devnull .B ncell
1076 cfa37a7b 2004-04-10 devnull may be smaller than
1077 cfa37a7b 2004-04-10 devnull .BR nrow*ncol .
1078 cfa37a7b 2004-04-10 devnull .B Grid
1079 cfa37a7b 2004-04-10 devnull is a two-dimensional array of cells within the table; the cell
1080 cfa37a7b 2004-04-10 devnull at row
1081 cfa37a7b 2004-04-10 devnull .B i
1082 cfa37a7b 2004-04-10 devnull and column
1083 cfa37a7b 2004-04-10 devnull .B j
1084 cfa37a7b 2004-04-10 devnull is
1085 cfa37a7b 2004-04-10 devnull .BR Table.grid[i][j] .
1086 cfa37a7b 2004-04-10 devnull A cell that spans multiple rows and/or columns will
1087 cfa37a7b 2004-04-10 devnull be referenced by
1088 cfa37a7b 2004-04-10 devnull .B grid
1089 cfa37a7b 2004-04-10 devnull multiple times, however it will only occur once in
1090 cfa37a7b 2004-04-10 devnull .BR cells .
1091 cfa37a7b 2004-04-10 devnull .B Align
1092 cfa37a7b 2004-04-10 devnull gives the alignment specification for the entire table,
1093 cfa37a7b 2004-04-10 devnull and
1094 cfa37a7b 2004-04-10 devnull .B width
1095 cfa37a7b 2004-04-10 devnull gives the requested width as a dimension specification.
1096 cfa37a7b 2004-04-10 devnull .BR Border ,
1097 cfa37a7b 2004-04-10 devnull .B cellspacing
1098 cfa37a7b 2004-04-10 devnull and
1099 cfa37a7b 2004-04-10 devnull .B cellpadding
1100 cfa37a7b 2004-04-10 devnull give the values of the corresponding attributes for the table,
1101 cfa37a7b 2004-04-10 devnull and
1102 cfa37a7b 2004-04-10 devnull .B background
1103 cfa37a7b 2004-04-10 devnull gives the requested background for the table.
1104 cfa37a7b 2004-04-10 devnull .B Caption
1105 cfa37a7b 2004-04-10 devnull is a linked list of items to be displayed as the caption of the
1106 cfa37a7b 2004-04-10 devnull table, either above or below depending on whether
1107 cfa37a7b 2004-04-10 devnull .B caption_place
1108 cfa37a7b 2004-04-10 devnull is
1109 cfa37a7b 2004-04-10 devnull .B ALtop
1110 cfa37a7b 2004-04-10 devnull or
1111 cfa37a7b 2004-04-10 devnull .BR ALbottom .
1112 cfa37a7b 2004-04-10 devnull Most of the remaining fields are reserved for use by the caller,
1113 cfa37a7b 2004-04-10 devnull except
1114 cfa37a7b 2004-04-10 devnull .BR tabletok ,
1115 cfa37a7b 2004-04-10 devnull which is reserved for internal use.
1116 cfa37a7b 2004-04-10 devnull The type
1117 cfa37a7b 2004-04-10 devnull .B Lay
1118 cfa37a7b 2004-04-10 devnull is not defined by the library; the caller can provide its
1119 cfa37a7b 2004-04-10 devnull own definition.
1120 cfa37a7b 2004-04-10 devnull .PP
1121 cfa37a7b 2004-04-10 devnull The
1122 cfa37a7b 2004-04-10 devnull .B Tablecol
1123 cfa37a7b 2004-04-10 devnull structure is defined for use by the caller.
1124 cfa37a7b 2004-04-10 devnull The library ensures that the correct number of these
1125 cfa37a7b 2004-04-10 devnull is allocated, but leaves them blank.
1126 cfa37a7b 2004-04-10 devnull The fields are as follows:
1127 cfa37a7b 2004-04-10 devnull .PP
1128 cfa37a7b 2004-04-10 devnull .EX
1129 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Point 'u
1130 cfa37a7b 2004-04-10 devnull typedef struct Tablecol Tablecol;
1131 cfa37a7b 2004-04-10 devnull struct Tablecol
1132 cfa37a7b 2004-04-10 devnull {
1133 cfa37a7b 2004-04-10 devnull int width;
1134 cfa37a7b 2004-04-10 devnull Align align;
1135 cfa37a7b 2004-04-10 devnull Point pos;
1136 cfa37a7b 2004-04-10 devnull };
1137 cfa37a7b 2004-04-10 devnull .EE
1138 cfa37a7b 2004-04-10 devnull .PP
1139 cfa37a7b 2004-04-10 devnull The rows in the table are specified as follows:
1140 cfa37a7b 2004-04-10 devnull .PP
1141 cfa37a7b 2004-04-10 devnull .EX
1142 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Background 'u
1143 cfa37a7b 2004-04-10 devnull typedef struct Tablerow Tablerow;
1144 cfa37a7b 2004-04-10 devnull struct Tablerow
1145 cfa37a7b 2004-04-10 devnull {
1146 cfa37a7b 2004-04-10 devnull Tablerow* next;
1147 cfa37a7b 2004-04-10 devnull Tablecell* cells;
1148 cfa37a7b 2004-04-10 devnull int height;
1149 cfa37a7b 2004-04-10 devnull int ascent;
1150 cfa37a7b 2004-04-10 devnull Align align;
1151 cfa37a7b 2004-04-10 devnull Background background;
1152 cfa37a7b 2004-04-10 devnull Point pos;
1153 cfa37a7b 2004-04-10 devnull uchar flags;
1154 cfa37a7b 2004-04-10 devnull };
1155 cfa37a7b 2004-04-10 devnull .EE
1156 cfa37a7b 2004-04-10 devnull .PP
1157 cfa37a7b 2004-04-10 devnull .B Next
1158 cfa37a7b 2004-04-10 devnull is only used during parsing; it should be ignored by the caller.
1159 cfa37a7b 2004-04-10 devnull .B Cells
1160 cfa37a7b 2004-04-10 devnull provides a list of all the cells in a row, linked through their
1161 cfa37a7b 2004-04-10 devnull .B nextinrow
1162 cfa37a7b 2004-04-10 devnull fields (see below).
1163 cfa37a7b 2004-04-10 devnull .BR Height ,
1164 cfa37a7b 2004-04-10 devnull .B ascent
1165 cfa37a7b 2004-04-10 devnull and
1166 cfa37a7b 2004-04-10 devnull .B pos
1167 cfa37a7b 2004-04-10 devnull are reserved for use by the caller.
1168 cfa37a7b 2004-04-10 devnull .B Align
1169 cfa37a7b 2004-04-10 devnull is the alignment specification for the row, and
1170 cfa37a7b 2004-04-10 devnull .B background
1171 cfa37a7b 2004-04-10 devnull is the background to use, if specified.
1172 cfa37a7b 2004-04-10 devnull .B Flags
1173 cfa37a7b 2004-04-10 devnull is used by the parser; ignore this field.
1174 cfa37a7b 2004-04-10 devnull .PP
1175 cfa37a7b 2004-04-10 devnull The individual cells of the table are described as follows:
1176 cfa37a7b 2004-04-10 devnull .PP
1177 cfa37a7b 2004-04-10 devnull .EX
1178 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Background 'u
1179 cfa37a7b 2004-04-10 devnull typedef struct Tablecell Tablecell;
1180 cfa37a7b 2004-04-10 devnull struct Tablecell
1181 cfa37a7b 2004-04-10 devnull {
1182 cfa37a7b 2004-04-10 devnull Tablecell* next;
1183 cfa37a7b 2004-04-10 devnull Tablecell* nextinrow;
1184 cfa37a7b 2004-04-10 devnull int cellid;
1185 cfa37a7b 2004-04-10 devnull Item* content;
1186 cfa37a7b 2004-04-10 devnull Lay* lay;
1187 cfa37a7b 2004-04-10 devnull int rowspan;
1188 cfa37a7b 2004-04-10 devnull int colspan;
1189 cfa37a7b 2004-04-10 devnull Align align;
1190 cfa37a7b 2004-04-10 devnull uchar flags;
1191 cfa37a7b 2004-04-10 devnull Dimen wspec;
1192 cfa37a7b 2004-04-10 devnull int hspec;
1193 cfa37a7b 2004-04-10 devnull Background background;
1194 cfa37a7b 2004-04-10 devnull int minw;
1195 cfa37a7b 2004-04-10 devnull int maxw;
1196 cfa37a7b 2004-04-10 devnull int ascent;
1197 cfa37a7b 2004-04-10 devnull int row;
1198 cfa37a7b 2004-04-10 devnull int col;
1199 cfa37a7b 2004-04-10 devnull Point pos;
1200 cfa37a7b 2004-04-10 devnull };
1201 cfa37a7b 2004-04-10 devnull .EE
1202 cfa37a7b 2004-04-10 devnull .PP
1203 cfa37a7b 2004-04-10 devnull .B Next
1204 cfa37a7b 2004-04-10 devnull is used to link together the list of all cells within a table
1205 cfa37a7b 2004-04-10 devnull .RB ( Table.cells ),
1206 cfa37a7b 2004-04-10 devnull whereas
1207 cfa37a7b 2004-04-10 devnull .B nextinrow
1208 cfa37a7b 2004-04-10 devnull is used to link together all the cells within a single row
1209 cfa37a7b 2004-04-10 devnull .RB ( Tablerow.cells ).
1210 cfa37a7b 2004-04-10 devnull .B Cellid
1211 cfa37a7b 2004-04-10 devnull provides a serial number for the cell within the table.
1212 cfa37a7b 2004-04-10 devnull .B Content
1213 cfa37a7b 2004-04-10 devnull is a linked list of the items to be laid out within the cell.
1214 cfa37a7b 2004-04-10 devnull .B Lay
1215 cfa37a7b 2004-04-10 devnull is reserved for the user to describe how these items have
1216 cfa37a7b 2004-04-10 devnull been laid out.
1217 cfa37a7b 2004-04-10 devnull .B Rowspan
1218 cfa37a7b 2004-04-10 devnull and
1219 cfa37a7b 2004-04-10 devnull .B colspan
1220 cfa37a7b 2004-04-10 devnull are the number of rows and columns spanned by this cell,
1221 cfa37a7b 2004-04-10 devnull respectively.
1222 cfa37a7b 2004-04-10 devnull .B Align
1223 cfa37a7b 2004-04-10 devnull is the alignment specification for the cell.
1224 cfa37a7b 2004-04-10 devnull .B Flags
1225 cfa37a7b 2004-04-10 devnull is some combination of
1226 cfa37a7b 2004-04-10 devnull .BR TFparsing ,
1227 cfa37a7b 2004-04-10 devnull .B TFnowrap
1228 cfa37a7b 2004-04-10 devnull and
1229 cfa37a7b 2004-04-10 devnull .B TFisth
1230 cfa37a7b 2004-04-10 devnull or'd together.
1231 cfa37a7b 2004-04-10 devnull Here
1232 cfa37a7b 2004-04-10 devnull .B TFparsing
1233 cfa37a7b 2004-04-10 devnull is used internally by the parser, and should be ignored.
1234 cfa37a7b 2004-04-10 devnull .B TFnowrap
1235 cfa37a7b 2004-04-10 devnull means that the contents of the cell should not be
1236 cfa37a7b 2004-04-10 devnull wrapped if they don't fit the available width,
1237 cfa37a7b 2004-04-10 devnull rather, the table should be expanded if need be
1238 cfa37a7b 2004-04-10 devnull (this is set when the nowrap attribute is supplied).
1239 cfa37a7b 2004-04-10 devnull .B TFisth
1240 cfa37a7b 2004-04-10 devnull means that the cell was created by the
1241 cfa37a7b 2004-04-10 devnull .B <th>
1242 cfa37a7b 2004-04-10 devnull element (rather than the
1243 cfa37a7b 2004-04-10 devnull .B <td>
1244 cfa37a7b 2004-04-10 devnull element),
1245 cfa37a7b 2004-04-10 devnull indicating that it is a header cell rather than a data cell.
1246 cfa37a7b 2004-04-10 devnull .B Wspec
1247 cfa37a7b 2004-04-10 devnull provides a suggested width as a dimension specification,
1248 cfa37a7b 2004-04-10 devnull and
1249 cfa37a7b 2004-04-10 devnull .B hspec
1250 cfa37a7b 2004-04-10 devnull provides a suggested height in pixels.
1251 cfa37a7b 2004-04-10 devnull .B Background
1252 cfa37a7b 2004-04-10 devnull gives a background specification for the individual cell.
1253 cfa37a7b 2004-04-10 devnull .BR Minw ,
1254 cfa37a7b 2004-04-10 devnull .BR maxw ,
1255 cfa37a7b 2004-04-10 devnull .B ascent
1256 cfa37a7b 2004-04-10 devnull and
1257 cfa37a7b 2004-04-10 devnull .B pos
1258 cfa37a7b 2004-04-10 devnull are reserved for use by the caller during layout.
1259 cfa37a7b 2004-04-10 devnull .B Row
1260 cfa37a7b 2004-04-10 devnull and
1261 cfa37a7b 2004-04-10 devnull .B col
1262 cfa37a7b 2004-04-10 devnull give the indices of the row and column of the top left-hand
1263 cfa37a7b 2004-04-10 devnull corner of the cell within the table grid.
1264 cfa37a7b 2004-04-10 devnull .SS Client-side Maps
1265 cfa37a7b 2004-04-10 devnull .PP
1266 cfa37a7b 2004-04-10 devnull The library builds a list of client-side maps, headed by
1267 cfa37a7b 2004-04-10 devnull .BR Docinfo.maps ,
1268 cfa37a7b 2004-04-10 devnull and having the following structure:
1269 cfa37a7b 2004-04-10 devnull .PP
1270 cfa37a7b 2004-04-10 devnull .EX
1271 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Rune* 'u
1272 cfa37a7b 2004-04-10 devnull typedef struct Map Map;
1273 cfa37a7b 2004-04-10 devnull struct Map
1274 cfa37a7b 2004-04-10 devnull {
1275 cfa37a7b 2004-04-10 devnull Map* next;
1276 cfa37a7b 2004-04-10 devnull Rune* name;
1277 cfa37a7b 2004-04-10 devnull Area* areas;
1278 cfa37a7b 2004-04-10 devnull };
1279 cfa37a7b 2004-04-10 devnull .EE
1280 cfa37a7b 2004-04-10 devnull .PP
1281 cfa37a7b 2004-04-10 devnull .B Next
1282 cfa37a7b 2004-04-10 devnull points to the next element in the list,
1283 cfa37a7b 2004-04-10 devnull .B name
1284 cfa37a7b 2004-04-10 devnull is the name of the map (use to bind it to an image), and
1285 cfa37a7b 2004-04-10 devnull .B areas
1286 cfa37a7b 2004-04-10 devnull is a list of the areas within the image that comprise the map,
1287 cfa37a7b 2004-04-10 devnull using the following structure:
1288 cfa37a7b 2004-04-10 devnull .PP
1289 cfa37a7b 2004-04-10 devnull .EX
1290 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Dimen* 'u
1291 cfa37a7b 2004-04-10 devnull typedef struct Area Area;
1292 cfa37a7b 2004-04-10 devnull struct Area
1293 cfa37a7b 2004-04-10 devnull {
1294 cfa37a7b 2004-04-10 devnull Area* next;
1295 cfa37a7b 2004-04-10 devnull int shape;
1296 cfa37a7b 2004-04-10 devnull Rune* href;
1297 cfa37a7b 2004-04-10 devnull int target;
1298 cfa37a7b 2004-04-10 devnull Dimen* coords;
1299 cfa37a7b 2004-04-10 devnull int ncoords;
1300 cfa37a7b 2004-04-10 devnull };
1301 cfa37a7b 2004-04-10 devnull .EE
1302 cfa37a7b 2004-04-10 devnull .PP
1303 cfa37a7b 2004-04-10 devnull .B Next
1304 cfa37a7b 2004-04-10 devnull points to the next element in the map's list of areas.
1305 cfa37a7b 2004-04-10 devnull .B Shape
1306 cfa37a7b 2004-04-10 devnull describes the shape of the area, and is one of
1307 cfa37a7b 2004-04-10 devnull .BR SHrect ,
1308 cfa37a7b 2004-04-10 devnull .B SHcircle
1309 cfa37a7b 2004-04-10 devnull or
1310 cfa37a7b 2004-04-10 devnull .BR SHpoly .
1311 cfa37a7b 2004-04-10 devnull .B Href
1312 cfa37a7b 2004-04-10 devnull is the URL associated with this area in its role as
1313 cfa37a7b 2004-04-10 devnull a hypertext link, and
1314 cfa37a7b 2004-04-10 devnull .B target
1315 cfa37a7b 2004-04-10 devnull is the target frame it should be loaded in.
1316 cfa37a7b 2004-04-10 devnull .B Coords
1317 cfa37a7b 2004-04-10 devnull is an array of coordinates for the shape, and
1318 cfa37a7b 2004-04-10 devnull .B ncoords
1319 cfa37a7b 2004-04-10 devnull is the size of this array (number of elements).
1320 cfa37a7b 2004-04-10 devnull .SS Frames
1321 cfa37a7b 2004-04-10 devnull .PP
1322 cfa37a7b 2004-04-10 devnull If the
1323 cfa37a7b 2004-04-10 devnull .B Docinfo.kidinfo
1324 cfa37a7b 2004-04-10 devnull field is set, the document is a frameset.
1325 cfa37a7b 2004-04-10 devnull In this case, it is typical for
1326 cfa37a7b 2004-04-10 devnull .I parsehtml
1327 cfa37a7b 2004-04-10 devnull to return nil, as a document which is a frameset should have no actual
1328 cfa37a7b 2004-04-10 devnull items that need to be laid out (such will appear only in subsidiary documents).
1329 cfa37a7b 2004-04-10 devnull It is possible that items will be returned by a malformed document; the caller
1330 cfa37a7b 2004-04-10 devnull should check for this and free any such items.
1331 cfa37a7b 2004-04-10 devnull .PP
1332 cfa37a7b 2004-04-10 devnull The
1333 cfa37a7b 2004-04-10 devnull .B Kidinfo
1334 cfa37a7b 2004-04-10 devnull structure itself reflects the fact that framesets can be nested within a document.
1335 cfa37a7b 2004-04-10 devnull If is defined as follows:
1336 cfa37a7b 2004-04-10 devnull .PP
1337 cfa37a7b 2004-04-10 devnull .EX
1338 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Kidinfo* 'u
1339 cfa37a7b 2004-04-10 devnull typedef struct Kidinfo Kidinfo;
1340 cfa37a7b 2004-04-10 devnull struct Kidinfo
1341 cfa37a7b 2004-04-10 devnull {
1342 cfa37a7b 2004-04-10 devnull Kidinfo* next;
1343 cfa37a7b 2004-04-10 devnull int isframeset;
1344 cfa37a7b 2004-04-10 devnull
1345 cfa37a7b 2004-04-10 devnull // fields for "frame"
1346 cfa37a7b 2004-04-10 devnull Rune* src;
1347 cfa37a7b 2004-04-10 devnull Rune* name;
1348 cfa37a7b 2004-04-10 devnull int marginw;
1349 cfa37a7b 2004-04-10 devnull int marginh;
1350 cfa37a7b 2004-04-10 devnull int framebd;
1351 cfa37a7b 2004-04-10 devnull int flags;
1352 cfa37a7b 2004-04-10 devnull
1353 cfa37a7b 2004-04-10 devnull // fields for "frameset"
1354 cfa37a7b 2004-04-10 devnull Dimen* rows;
1355 cfa37a7b 2004-04-10 devnull int nrows;
1356 cfa37a7b 2004-04-10 devnull Dimen* cols;
1357 cfa37a7b 2004-04-10 devnull int ncols;
1358 cfa37a7b 2004-04-10 devnull Kidinfo* kidinfos;
1359 cfa37a7b 2004-04-10 devnull Kidinfo* nextframeset;
1360 cfa37a7b 2004-04-10 devnull };
1361 cfa37a7b 2004-04-10 devnull .EE
1362 cfa37a7b 2004-04-10 devnull .PP
1363 cfa37a7b 2004-04-10 devnull .B Next
1364 cfa37a7b 2004-04-10 devnull is only used if this structure is part of a containing frameset; it points to the next
1365 cfa37a7b 2004-04-10 devnull element in the list of children of that frameset.
1366 cfa37a7b 2004-04-10 devnull .B Isframeset
1367 cfa37a7b 2004-04-10 devnull is set when this structure represents a frameset; if clear, it is an individual frame.
1368 cfa37a7b 2004-04-10 devnull .PP
1369 cfa37a7b 2004-04-10 devnull Some fields are used only for framesets.
1370 cfa37a7b 2004-04-10 devnull .B Rows
1371 cfa37a7b 2004-04-10 devnull is an array of dimension specifications for rows in the frameset, and
1372 cfa37a7b 2004-04-10 devnull .B nrows
1373 cfa37a7b 2004-04-10 devnull is the length of this array.
1374 cfa37a7b 2004-04-10 devnull .B Cols
1375 cfa37a7b 2004-04-10 devnull is the corresponding array for columns, of length
1376 cfa37a7b 2004-04-10 devnull .BR ncols .
1377 cfa37a7b 2004-04-10 devnull .B Kidinfos
1378 cfa37a7b 2004-04-10 devnull points to a list of components contained within this frameset, each
1379 cfa37a7b 2004-04-10 devnull of which may be a frameset or a frame.
1380 cfa37a7b 2004-04-10 devnull .B Nextframeset
1381 cfa37a7b 2004-04-10 devnull is only used during parsing, and should be ignored.
1382 cfa37a7b 2004-04-10 devnull .PP
1383 cfa37a7b 2004-04-10 devnull The remaining fields are used if the structure describes a frame, not a frameset.
1384 cfa37a7b 2004-04-10 devnull .B Src
1385 cfa37a7b 2004-04-10 devnull provides the URL for the document that should be initially loaded into this frame.
1386 cfa37a7b 2004-04-10 devnull Note that this may be a relative URL, in which case it should be interpretted
1387 cfa37a7b 2004-04-10 devnull using the containing document's URL as the base.
1388 cfa37a7b 2004-04-10 devnull .B Name
1389 cfa37a7b 2004-04-10 devnull gives the name of the frame, typically supplied via a name attribute in the HTML.
1390 cfa37a7b 2004-04-10 devnull If no name was given, the library allocates one.
1391 cfa37a7b 2004-04-10 devnull .BR Marginw ,
1392 cfa37a7b 2004-04-10 devnull .B marginh
1393 cfa37a7b 2004-04-10 devnull and
1394 cfa37a7b 2004-04-10 devnull .B framebd
1395 cfa37a7b 2004-04-10 devnull are the values of the marginwidth, marginheight and frameborder attributes, respectively.
1396 cfa37a7b 2004-04-10 devnull .B Flags
1397 cfa37a7b 2004-04-10 devnull can contain some combination of the following:
1398 cfa37a7b 2004-04-10 devnull .B FRnoresize
1399 cfa37a7b 2004-04-10 devnull (the frame had the noresize attribute set, and the user should not be allowed to resize it),
1400 cfa37a7b 2004-04-10 devnull .B FRnoscroll
1401 cfa37a7b 2004-04-10 devnull (the frame should not have any scroll bars),
1402 cfa37a7b 2004-04-10 devnull .B FRhscroll
1403 cfa37a7b 2004-04-10 devnull (the frame should have a horizontal scroll bar),
1404 cfa37a7b 2004-04-10 devnull .B FRvscroll
1405 cfa37a7b 2004-04-10 devnull (the frame should have a vertical scroll bar),
1406 cfa37a7b 2004-04-10 devnull .B FRhscrollauto
1407 cfa37a7b 2004-04-10 devnull (the frame should be automatically given a horizontal scroll bar if its contents
1408 cfa37a7b 2004-04-10 devnull would not otherwise fit), and
1409 cfa37a7b 2004-04-10 devnull .B FRvscrollauto
1410 cfa37a7b 2004-04-10 devnull (the frame gets a vertical scrollbar only if required).
1411 cfa37a7b 2004-04-10 devnull .SH SOURCE
1412 c3674de4 2005-01-11 devnull .B \*9/src/libhtml
1413 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
1414 d32deab1 2020-08-16 rsc .MR fmt (1)
1415 cfa37a7b 2004-04-10 devnull .PP
1416 cfa37a7b 2004-04-10 devnull W3C World Wide Web Consortium,
1417 cfa37a7b 2004-04-10 devnull ``HTML 4.01 Specification''.
1418 cfa37a7b 2004-04-10 devnull .SH BUGS
1419 cfa37a7b 2004-04-10 devnull The entire HTML document must be loaded into memory before
1420 cfa37a7b 2004-04-10 devnull any of it can be parsed.