1 cfa37a7b 2004-04-10 devnull .TH HTML 3
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,
14 cfa37a7b 2004-04-10 devnull \- HTML parser
15 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
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>
24 cfa37a7b 2004-04-10 devnull .ta \w'\fLToken* 'u
26 cfa37a7b 2004-04-10 devnull Item* parsehtml(uchar* data, int datalen, Rune* src, int mtype,
28 cfa37a7b 2004-04-10 devnull int chset, Docinfo** pdi)
31 cfa37a7b 2004-04-10 devnull void printitems(Item* items, char* msg)
34 cfa37a7b 2004-04-10 devnull int validitems(Item* items)
37 cfa37a7b 2004-04-10 devnull void freeitems(Item* items)
40 cfa37a7b 2004-04-10 devnull void freedocinfo(Docinfo* d)
43 cfa37a7b 2004-04-10 devnull int dimenkind(Dimen d)
46 cfa37a7b 2004-04-10 devnull int dimenspec(Dimen d)
49 cfa37a7b 2004-04-10 devnull int targetid(Rune* s)
52 cfa37a7b 2004-04-10 devnull Rune* targetname(int targid)
55 cfa37a7b 2004-04-10 devnull uchar* fromStr(Rune* buf, int n, int chset)
58 cfa37a7b 2004-04-10 devnull Rune* toStr(uchar* buf, int n, int chset)
59 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
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.
65 cfa37a7b 2004-04-10 devnull .I Parsehtml
66 cfa37a7b 2004-04-10 devnull parses an entire HTML document contained in the buffer
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 .
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
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 ,
84 cfa37a7b 2004-04-10 devnull .BR Unicode .
85 cfa37a7b 2004-04-10 devnull The return value is a linked list of
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.
94 cfa37a7b 2004-04-10 devnull The library expects two allocation routines to be provided by the
96 cfa37a7b 2004-04-10 devnull .B emalloc
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.
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
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
116 cfa37a7b 2004-04-10 devnull is everything is ok, and
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.
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 .
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.
137 cfa37a7b 2004-04-10 devnull .I Dimenkind
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" .
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
156 cfa37a7b 2004-04-10 devnull .BR FTblank .
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
163 cfa37a7b 2004-04-10 devnull .IR toStr .
164 cfa37a7b 2004-04-10 devnull .I FromStr
167 cfa37a7b 2004-04-10 devnull Unicode characters from
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
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:
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
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;
204 cfa37a7b 2004-04-10 devnull The field
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 ,
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:
220 cfa37a7b 2004-04-10 devnull .ta 6n +\w'IFindentshift = 'u
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
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,
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
270 cfa37a7b 2004-04-10 devnull .BR IFindentshift ,
271 cfa37a7b 2004-04-10 devnull indicate the current indent in tab stops.
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" .
278 cfa37a7b 2004-04-10 devnull Finally,
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
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
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:
299 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Rune* 'u
300 cfa37a7b 2004-04-10 devnull struct Itext
303 cfa37a7b 2004-04-10 devnull Rune* s;
304 cfa37a7b 2004-04-10 devnull int fnt;
306 cfa37a7b 2004-04-10 devnull uchar voff;
307 cfa37a7b 2004-04-10 devnull uchar ul;
313 cfa37a7b 2004-04-10 devnull is a null-terminated Unicode string of the actual characters making up this text item,
315 cfa37a7b 2004-04-10 devnull is the font number (described in the section
316 cfa37a7b 2004-04-10 devnull .IR "Font Numbers" ),
319 cfa37a7b 2004-04-10 devnull is the RGB encoded color for the text.
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
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.
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:
339 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Dimen 'u
340 cfa37a7b 2004-04-10 devnull struct Irule
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;
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,
356 cfa37a7b 2004-04-10 devnull is the height of the rule (as set by the size attribute),
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" ).
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:
367 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Iimage* 'u
368 cfa37a7b 2004-04-10 devnull struct Iimage
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;
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
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,
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 ).
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:
416 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Formfield* 'u
417 cfa37a7b 2004-04-10 devnull struct Iformfield
420 cfa37a7b 2004-04-10 devnull Formfield* formfield;
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 .
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:
434 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Table* 'u
435 cfa37a7b 2004-04-10 devnull struct Itable
438 cfa37a7b 2004-04-10 devnull Table* table;
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 .
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:
451 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Ifloat* 'u
452 cfa37a7b 2004-04-10 devnull struct Ifloat
455 cfa37a7b 2004-04-10 devnull Item* item;
458 cfa37a7b 2004-04-10 devnull uchar side;
459 cfa37a7b 2004-04-10 devnull uchar infloats;
460 cfa37a7b 2004-04-10 devnull Ifloat* nextfloat;
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
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
472 cfa37a7b 2004-04-10 devnull .BR ALright .
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.
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:
488 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Item; 'u
489 cfa37a7b 2004-04-10 devnull struct Ispacer
492 cfa37a7b 2004-04-10 devnull int spkind;
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
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:
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
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;
527 cfa37a7b 2004-04-10 devnull .BR id ,
528 cfa37a7b 2004-04-10 devnull .BR class ,
529 cfa37a7b 2004-04-10 devnull .B style
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:
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
542 cfa37a7b 2004-04-10 devnull SEvent* next;
543 cfa37a7b 2004-04-10 devnull int type;
544 cfa37a7b 2004-04-10 devnull Rune* script;
550 cfa37a7b 2004-04-10 devnull points to the next event in the list,
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
570 cfa37a7b 2004-04-10 devnull .BR SEonunload ,
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
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
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:
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
590 cfa37a7b 2004-04-10 devnull int kindspec;
594 cfa37a7b 2004-04-10 devnull Separate kind and spec values are extracted using
595 cfa37a7b 2004-04-10 devnull .I dimenkind
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
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
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:
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
622 cfa37a7b 2004-04-10 devnull Rune* image;
623 cfa37a7b 2004-04-10 devnull int color;
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
634 cfa37a7b 2004-04-10 devnull Certain items have alignment specifiers taken from the following
635 cfa37a7b 2004-04-10 devnull enumerated type:
641 cfa37a7b 2004-04-10 devnull ALnone = 0, ALleft, ALcenter, ALright, ALjustify,
642 cfa37a7b 2004-04-10 devnull ALchar, ALtop, ALmiddle, ALbottom, ALbaseline
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
651 cfa37a7b 2004-04-10 devnull .BR ALright ,
652 cfa37a7b 2004-04-10 devnull the library automatically encapsulates it inside a float item.
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:
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
663 cfa37a7b 2004-04-10 devnull uchar halign;
664 cfa37a7b 2004-04-10 devnull uchar valign;
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
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
684 cfa37a7b 2004-04-10 devnull .BR ALbaseline .
685 cfa37a7b 2004-04-10 devnull .SS Font Numbers
687 cfa37a7b 2004-04-10 devnull Text items have an associated font number (the
689 cfa37a7b 2004-04-10 devnull field), which is encoded as
690 cfa37a7b 2004-04-10 devnull .BR style*NumSize+size .
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 ,
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
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
713 cfa37a7b 2004-04-10 devnull Global information about an HTML page is stored in the following structure:
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
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;
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;
750 cfa37a7b 2004-04-10 devnull gives the URL of the original source of the document,
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" ,
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.
766 cfa37a7b 2004-04-10 devnull gives the default foregound text color of the document,
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
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
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.
800 cfa37a7b 2004-04-10 devnull .B Anchors
801 cfa37a7b 2004-04-10 devnull is a list of hyperlinks contained in the document,
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
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
815 cfa37a7b 2004-04-10 devnull The library builds two lists for all of the
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
821 cfa37a7b 2004-04-10 devnull attribute was supplied), the following structure is defined:
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
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;
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
842 cfa37a7b 2004-04-10 devnull .B anchorid
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.
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:
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
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;
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,
874 cfa37a7b 2004-04-10 devnull is the value of the name attribute, and
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
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:
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
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;
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.
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
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.
920 cfa37a7b 2004-04-10 devnull The individual fields in a form are described by the following structure:
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
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;
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
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.
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 ,
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
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:
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
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;
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
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:
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
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;
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)
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
1082 cfa37a7b 2004-04-10 devnull and column
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,
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
1099 cfa37a7b 2004-04-10 devnull .B cellpadding
1100 cfa37a7b 2004-04-10 devnull give the values of the corresponding attributes for the table,
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
1109 cfa37a7b 2004-04-10 devnull .B ALtop
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,
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
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.
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:
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
1133 cfa37a7b 2004-04-10 devnull int width;
1134 cfa37a7b 2004-04-10 devnull Align align;
1135 cfa37a7b 2004-04-10 devnull Point pos;
1139 cfa37a7b 2004-04-10 devnull The rows in the table are specified as follows:
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
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;
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
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.
1175 cfa37a7b 2004-04-10 devnull The individual cells of the table are described as follows:
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
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;
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.
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
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
1229 cfa37a7b 2004-04-10 devnull .B TFisth
1230 cfa37a7b 2004-04-10 devnull or'd together.
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,
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
1258 cfa37a7b 2004-04-10 devnull are reserved for use by the caller during layout.
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
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:
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
1275 cfa37a7b 2004-04-10 devnull Map* next;
1276 cfa37a7b 2004-04-10 devnull Rune* name;
1277 cfa37a7b 2004-04-10 devnull Area* areas;
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:
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
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;
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
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
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.
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:
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
1342 cfa37a7b 2004-04-10 devnull Kidinfo* next;
1343 cfa37a7b 2004-04-10 devnull int isframeset;
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;
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;
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.
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.
1383 cfa37a7b 2004-04-10 devnull The remaining fields are used if the structure describes a frame, not a frameset.
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
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 cfa37a7b 2004-04-10 devnull .IR fmt (1)
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.