aboutsummaryrefslogtreecommitdiff
path: root/man/man3/html.html
diff options
context:
space:
mode:
Diffstat (limited to 'man/man3/html.html')
-rw-r--r--man/man3/html.html1206
1 files changed, 1206 insertions, 0 deletions
diff --git a/man/man3/html.html b/man/man3/html.html
new file mode 100644
index 00000000..465edcdb
--- /dev/null
+++ b/man/man3/html.html
@@ -0,0 +1,1206 @@
+<head>
+<title>html(3) - Plan 9 from User Space</title>
+<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
+</head>
+<body bgcolor=#ffffff>
+<table border=0 cellpadding=0 cellspacing=0 width=100%>
+<tr height=10><td>
+<tr><td width=20><td>
+<tr><td width=20><td><b>HTML(3)</b><td align=right><b>HTML(3)</b>
+<tr><td width=20><td colspan=2>
+ <br>
+<p><font size=+1><b>NAME </b></font><br>
+
+<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ parsehtml, printitems, validitems, freeitems, freedocinfo, dimenkind,
+ dimenspec, targetid, targetname, fromStr, toStr &ndash; HTML parser<br>
+
+</table>
+<p><font size=+1><b>SYNOPSIS </b></font><br>
+
+<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+
+<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ <tt><font size=+1>#include &lt;u.h&gt;<br>
+ #include &lt;libc.h&gt;<br>
+ #include &lt;html.h&gt;<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Item* &nbsp;&nbsp;&nbsp;parsehtml(uchar* data, int datalen, Rune* src, int mtype,<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ int chset, Docinfo** pdi)<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ </table>
+
+ </table>
+ </font></tt>
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+
+
+ </table>
+
+ </table>
+ <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;printitems(Item* items, char* msg)<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;validitems(Item* items)<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;freeitems(Item* items)<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;freedocinfo(Docinfo* d)<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dimenkind(Dimen d)<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dimenspec(Dimen d)<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;targetid(Rune* s)<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Rune* &nbsp;&nbsp;&nbsp;targetname(int targid)<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>uchar* fromStr(Rune* buf, int n, int chset)<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Rune* &nbsp;&nbsp;&nbsp;toStr(uchar* buf, int n, int chset)<br>
+ </font></tt>
+</table>
+<p><font size=+1><b>DESCRIPTION </b></font><br>
+
+<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+
+<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ This library implements a parser for HTML 4.0 documents. The parsed
+ HTML is converted into an intermediate representation that describes
+ how the formatted HTML should be laid out.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <i>Parsehtml</i> parses an entire HTML document contained in the buffer
+ <i>data</i> and having length <i>datalen</i>. The URL of the document should
+ be passed in as <i>src</i>. <i>Mtype</i> is the media type of the document,
+ which should be either <tt><font size=+1>TextHtml</font></tt> or <tt><font size=+1>TextPlain</font></tt>. The character set
+ of the document is described in <i>chset</i>, which can be
+ one of <tt><font size=+1>US_Ascii</font></tt>, <tt><font size=+1>ISO_8859_1</font></tt>, <tt><font size=+1>UTF_8</font></tt> or <tt><font size=+1>Unicode</font></tt>. The return value
+ is a linked list of <tt><font size=+1>Item</font></tt> structures, described in detail below.
+ As a side effect, <tt><font size=+1>*</font></tt><i>pdi</i> is set to point to a newly created <tt><font size=+1>Docinfo</font></tt>
+ structure, containing information pertaining to the entire document.
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ The library expects two allocation routines to be provided by
+ the caller, <tt><font size=+1>emalloc</font></tt> and <tt><font size=+1>erealloc</font></tt>. These routines are analogous
+ to the standard malloc and realloc routines, except that they
+ should not return if the memory allocation fails. In addition,
+ <tt><font size=+1>emalloc</font></tt> is required to zero the memory.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ For debugging purposes, <i>printitems</i> may be called to display the
+ contents of an item list; individual items may be printed using
+ the <tt><font size=+1>%I</font></tt> print verb, installed on the first call to <i>parsehtml</i>. <i>validitems</i>
+ traverses the item list, checking that all of the pointers are
+ valid. It returns <tt><font size=+1>1</font></tt> is everything is ok, and <tt><font size=+1>0</font></tt> if an error was
+ found. Normally, one would not call these routines directly. Instead,
+ one sets the global variable <i>dbgbuild</i> and the library calls them
+ automatically. One can also set <i>warn</i>, to cause the library to
+ print a warning whenever it finds a problem with the input document,
+ and <i>dbglex</i>, to print debugging information in the
+ lexer.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ When an item list is finished with, it should be freed with <i>freeitems</i>.
+ Then, <i>freedocinfo</i> should be called on the pointer returned in
+ <tt><font size=+1>*</font></tt><i>pdi</i>.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <i>Dimenkind</i> and <i>dimenspec</i> are provided to interpret the <tt><font size=+1>Dimen</font></tt> type,
+ as described in the section <i>Dimension Specifications</i>.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ Frame target names are mapped to integer ids via a global, permanent
+ mapping. To find the value for a given name, call <i>targetid</i>, which
+ allocates a new id if the name hasn&#8217;t been seen before. The name
+ of a given, known id may be retrieved using <i>targetname</i>. The library
+ predefines <tt><font size=+1>FTtop</font></tt>, <tt><font size=+1>FTself</font></tt>, <tt><font size=+1>FTparent</font></tt> and
+ <tt><font size=+1>FTblank</font></tt>.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ The library handles all text as Unicode strings (type <tt><font size=+1>Rune*</font></tt>).
+ Character set conversion is provided by <i>fromStr</i> and <i>toStr</i>. <i>FromStr</i>
+ takes <i>n</i> Unicode characters from <i>buf</i> and converts them to the character
+ set described by <i>chset</i>. <i>ToStr</i> takes <i>n</i> bytes from <i>buf</i>, interpretted
+ as belonging to character set <i>chset</i>, and converts
+ them to a Unicode string. Both routines null-terminate the result,
+ and use <tt><font size=+1>emalloc</font></tt> to allocate space for it.<br>
+ <p><font size=+1><b>Items </b></font><br>
+ The return value of <i>parsehtml</i> is a linked list of variant structures,
+ with the generic portion described by the following definition:
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Item Item;<br>
+ struct Item<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Item* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ascent;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anchorid;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state;<br>
+ Genattr* genattr;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tag;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ The field <tt><font size=+1>next</font></tt> points to the successor in the linked list of items,
+ while <tt><font size=+1>width</font></tt>, <tt><font size=+1>height</font></tt>, and <tt><font size=+1>ascent</font></tt> are intended for use by the caller
+ as part of the layout process. <tt><font size=+1>Anchorid</font></tt>, if non-zero, gives the
+ integer id assigned by the parser to the anchor that this item
+ is in (see section <i>Anchors</i>). <tt><font size=+1>State</font></tt> is a collection of
+ flags and values described as follows:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>enum<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ IFbrk = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x80000000,<br>
+ IFbrksp = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x40000000,<br>
+ IFnobrk = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x20000000,<br>
+ IFcleft = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x10000000,<br>
+ IFcright = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x08000000,<br>
+ IFwrap = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x04000000,<br>
+ IFhang = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x02000000,<br>
+ IFrjust = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x01000000,<br>
+ IFcjust = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00800000,<br>
+ IFsmap = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00400000,<br>
+ IFindentshift = 8,<br>
+ IFindentmask = &nbsp;&nbsp;&nbsp;(255&lt;&lt;IFindentshift),<br>
+ IFhangmask = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;255<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>IFbrk</font></tt> is set if a break is to be forced before placing this item.
+ <tt><font size=+1>IFbrksp</font></tt> is set if a 1 line space should be added to the break
+ (in which case <tt><font size=+1>IFbrk</font></tt> is also set). <tt><font size=+1>IFnobrk</font></tt> is set if a break is
+ not permitted before the item. <tt><font size=+1>IFcleft</font></tt> is set if left floats should
+ be cleared (that is, if the list of pending left floats should
+ be placed) before this item is placed, and <tt><font size=+1>IFcright</font></tt> is set for
+ right floats. In both cases, IFbrk is also set. <tt><font size=+1>IFwrap</font></tt> is set
+ if the line containing this item is allowed to wrap. <tt><font size=+1>IFhang</font></tt> is
+ set if this item hangs into the left indent. <tt><font size=+1>IFrjust</font></tt> is set if
+ the line containing this item should be right justified, and <tt><font size=+1>IFcjust</font></tt>
+ is
+ set for center justified lines. <tt><font size=+1>IFsmap</font></tt> is used to indicate that
+ an image is a server-side map. The low 8 bits, represented by
+ <tt><font size=+1>IFhangmask</font></tt>, indicate the current hang into left indent, in tenths
+ of a tabstop. The next 8 bits, represented by <tt><font size=+1>IFindentmask</font></tt> and
+ <tt><font size=+1>IFindentshift</font></tt>, indicate the current indent in tab
+ stops.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ The field <tt><font size=+1>genattr</font></tt> is an optional pointer to an auxiliary structure,
+ described in the section <i>Generic Attributes</i>.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ Finally, <tt><font size=+1>tag</font></tt> describes which variant type this item has. It can
+ have one of the values <tt><font size=+1>Itexttag</font></tt>, <tt><font size=+1>Iruletag</font></tt>, <tt><font size=+1>Iimagetag</font></tt>, <tt><font size=+1>Iformfieldtag</font></tt>,
+ <tt><font size=+1>Itabletag</font></tt>, <tt><font size=+1>Ifloattag</font></tt> or <tt><font size=+1>Ispacertag</font></tt>. For each of these values,
+ there is an additional structure defined, which includes Item
+ as an unnamed initial substructure,
+ and then defines additional fields.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ Items of type <tt><font size=+1>Itexttag</font></tt> represent a piece of text, using the following
+ structure:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>struct Itext<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Item;<br>
+ Rune* s;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;fnt;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;fg;<br>
+ uchar voff;<br>
+ uchar ul;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ Here <tt><font size=+1>s</font></tt> is a null-terminated Unicode string of the actual characters
+ making up this text item, <tt><font size=+1>fnt</font></tt> is the font number (described in
+ the section <i>Font Numbers</i>), and <tt><font size=+1>fg</font></tt> is the RGB encoded color for
+ the text. <tt><font size=+1>Voff</font></tt> measures the vertical offset from the baseline;
+ subtract <tt><font size=+1>Voffbias</font></tt> to get the actual value (negative values
+ represent a displacement down the page). The field <tt><font size=+1>ul</font></tt> is the underline
+ style: <tt><font size=+1>ULnone</font></tt> if no underline, <tt><font size=+1>ULunder</font></tt> for conventional underline,
+ and <tt><font size=+1>ULmid</font></tt> for strike-through.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ Items of type <tt><font size=+1>Iruletag</font></tt> represent a horizontal rule, as follows:
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>struct Irule<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Item;<br>
+ uchar align;<br>
+ uchar noshade;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;size;<br>
+ Dimen wspec;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ Here <tt><font size=+1>align</font></tt> is the alignment specification (described in the corresponding
+ section), <tt><font size=+1>noshade</font></tt> is set if the rule should not be shaded, <tt><font size=+1>size</font></tt>
+ is the height of the rule (as set by the size attribute), and
+ <tt><font size=+1>wspec</font></tt> is the desired width (see section <i>Dimension Specifications</i>).
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ Items of type <tt><font size=+1>Iimagetag</font></tt> describe embedded images, for which the
+ following structure is defined:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>struct Iimage<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Item;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;imsrc;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imwidth;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imheight;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;altrep;<br>
+ Map* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctlid;<br>
+ uchar &nbsp;&nbsp;&nbsp;&nbsp;align;<br>
+ uchar &nbsp;&nbsp;&nbsp;&nbsp;hspace;<br>
+ uchar &nbsp;&nbsp;&nbsp;&nbsp;vspace;<br>
+ uchar &nbsp;&nbsp;&nbsp;&nbsp;border;<br>
+ Iimage* nextimage;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ Here <tt><font size=+1>imsrc</font></tt> is the URL of the image source, <tt><font size=+1>imwidth</font></tt> and <tt><font size=+1>imheight</font></tt>,
+ if non-zero, contain the specified width and height for the image,
+ and <tt><font size=+1>altrep</font></tt> is the text to use as an alternative to the image,
+ if the image is not displayed. <tt><font size=+1>Map</font></tt>, if set, points to a structure
+ describing an associated client-side image map.
+ <tt><font size=+1>Ctlid</font></tt> is reserved for use by the application, for handling animated
+ images. <tt><font size=+1>Align</font></tt> encodes the alignment specification of the image.
+ <tt><font size=+1>Hspace</font></tt> contains the number of pixels to pad the image with on
+ either side, and <tt><font size=+1>Vspace</font></tt> the padding above and below. <tt><font size=+1>Border</font></tt> is
+ the width of the border to draw around the
+ image. <tt><font size=+1>Nextimage</font></tt> points to the next image in the document (the
+ head of this list is <tt><font size=+1>Docinfo.images</font></tt>).
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ For items of type <tt><font size=+1>Iformfieldtag</font></tt>, the following structure is defined:
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>struct Iformfield<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Item;<br>
+ Formfield* formfield;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ This adds a single field, <tt><font size=+1>formfield</font></tt>, which points to a structure
+ describing a field in a form, described in section <i>Forms</i>.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ For items of type <tt><font size=+1>Itabletag</font></tt>, the following structure is defined:
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>struct Itable<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Item;<br>
+ Table* table;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Table</font></tt> points to a structure describing the table, described in
+ the section <i>Tables</i>.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ For items of type <tt><font size=+1>Ifloattag</font></tt>, the following structure is defined:
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>struct Ifloat<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Item;<br>
+ Item* &nbsp;&nbsp;&nbsp;&nbsp;item;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y;<br>
+ uchar &nbsp;&nbsp;&nbsp;&nbsp;side;<br>
+ uchar &nbsp;&nbsp;&nbsp;&nbsp;infloats;<br>
+ Ifloat* nextfloat;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ The <tt><font size=+1>item</font></tt> points to a single item (either a table or an image)
+ that floats (the text of the document flows around it), and <tt><font size=+1>side</font></tt>
+ indicates the margin that this float sticks to; it is either <tt><font size=+1>ALleft</font></tt>
+ or <tt><font size=+1>ALright</font></tt>. <tt><font size=+1>X</font></tt> and <tt><font size=+1>y</font></tt> are reserved for use by the caller; these
+ are typically used for the coordinates of the top of the float.
+ <tt><font size=+1>Infloats</font></tt> is used by the caller to keep track of whether it has
+ placed the float. <tt><font size=+1>Nextfloat</font></tt> is used by the caller to link together
+ all of the floats that it has placed.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ For items of type <tt><font size=+1>Ispacertag</font></tt>, the following structure is defined:
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>struct Ispacer<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Item;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;spkind;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Spkind</font></tt> encodes the kind of spacer, and may be one of <tt><font size=+1>ISPnull</font></tt> (zero
+ height and width), <tt><font size=+1>ISPvline</font></tt> (takes on height and ascent of the
+ current font), <tt><font size=+1>ISPhspace</font></tt> (has the width of a space in the current
+ font) and <tt><font size=+1>ISPgeneral</font></tt> (for all other purposes, such as between
+ markers and lists).
+ <p><font size=+1><b>Generic Attributes </b></font><br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ The genattr field of an item, if non-nil, points to a structure
+ that holds the values of attributes not specific to any particular
+ item type, as they occur on a wide variety of underlying HTML
+ tags. The structure is as follows:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Genattr Genattr;<br>
+ struct Genattr<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;id;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;class;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;style;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;title;<br>
+ SEvent* events;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ Fields <tt><font size=+1>id</font></tt>, <tt><font size=+1>class</font></tt>, <tt><font size=+1>style</font></tt> and <tt><font size=+1>title</font></tt>, when non-nil, contain values
+ of correspondingly named attributes of the HTML tag associated
+ with this item. <tt><font size=+1>Events</font></tt> is a linked list of events (with corresponding
+ scripted actions) associated with the item:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct SEvent SEvent;<br>
+ struct SEvent<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ SEvent* next;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;script;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ Here, <tt><font size=+1>next</font></tt> points to the next event in the list, <tt><font size=+1>type</font></tt> is one of
+ <tt><font size=+1>SEonblur</font></tt>, <tt><font size=+1>SEonchange</font></tt>, <tt><font size=+1>SEonclick</font></tt>, <tt><font size=+1>SEondblclick</font></tt>, <tt><font size=+1>SEonfocus</font></tt>, <tt><font size=+1>SEonkeypress</font></tt>,
+ <tt><font size=+1>SEonkeyup</font></tt>, <tt><font size=+1>SEonload</font></tt>, <tt><font size=+1>SEonmousedown</font></tt>, <tt><font size=+1>SEonmousemove</font></tt>, <tt><font size=+1>SEonmouseout</font></tt>,
+ <tt><font size=+1>SEonmouseover</font></tt>, <tt><font size=+1>SEonmouseup</font></tt>, <tt><font size=+1>SEonreset</font></tt>, <tt><font size=+1>SEonselect</font></tt>,
+ <tt><font size=+1>SEonsubmit</font></tt> or <tt><font size=+1>SEonunload</font></tt>, and <tt><font size=+1>script</font></tt> is the text of the associated
+ script.<br>
+ <p><font size=+1><b>Dimension Specifications </b></font><br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ Some structures include a dimension specification, used where
+ a number can be followed by a <tt><font size=+1>%</font></tt> or a <tt><font size=+1>*</font></tt> to indicate percentage
+ of total or relative weight. This is encoded using the following
+ structure:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Dimen Dimen;<br>
+ struct Dimen<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ int kindspec;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ Separate kind and spec values are extracted using <i>dimenkind</i> and
+ <i>dimenspec</i>. <i>Dimenkind</i> returns one of <tt><font size=+1>Dnone</font></tt>, <tt><font size=+1>Dpixels</font></tt>, <tt><font size=+1>Dpercent</font></tt> or
+ <tt><font size=+1>Drelative</font></tt>. <tt><font size=+1>Dnone</font></tt> means that no dimension was specified. In all
+ other cases, <i>dimenspec</i> should be called to find the absolute number
+ of pixels, the percentage of total, or the
+ relative weight.<br>
+ <p><font size=+1><b>Background Specifications </b></font><br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ It is possible to set the background of the entire document, and
+ also for some parts of the document (such as tables). This is
+ encoded as follows:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Background Background;<br>
+ struct Background<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Rune* image;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;color;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Image</font></tt>, if non-nil, is the URL of an image to use as the background.
+ If this is nil, <tt><font size=+1>color</font></tt> is used instead, as the RGB value for a
+ solid fill color.<br>
+ <p><font size=+1><b>Alignment Specifications </b></font><br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ Certain items have alignment specifiers taken from the following
+ enumerated type:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>enum<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ ALnone = 0, ALleft, ALcenter, ALright, ALjustify,<br>
+ ALchar, ALtop, ALmiddle, ALbottom, ALbaseline<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ These values correspond to the various alignment types named in
+ the HTML 4.0 standard. If an item has an alignment of <tt><font size=+1>ALleft</font></tt> or
+ <tt><font size=+1>ALright</font></tt>, the library automatically encapsulates it inside a float
+ item.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ Tables, and the various rows, columns and cells within them, have
+ a more complex alignment specification, composed of separate vertical
+ and horizontal alignments:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Align Align;<br>
+ struct Align<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ uchar halign;<br>
+ uchar valign;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Halign</font></tt> can be one of <tt><font size=+1>ALnone</font></tt>, <tt><font size=+1>ALleft</font></tt>, <tt><font size=+1>ALcenter</font></tt>, <tt><font size=+1>ALright</font></tt>, <tt><font size=+1>ALjustify</font></tt>
+ or <tt><font size=+1>ALchar</font></tt>. <tt><font size=+1>Valign</font></tt> can be one of <tt><font size=+1>ALnone</font></tt>, <tt><font size=+1>ALmiddle</font></tt>, <tt><font size=+1>ALbottom</font></tt>, <tt><font size=+1>ALtop</font></tt>
+ or <tt><font size=+1>ALbaseline</font></tt>.<br>
+ <p><font size=+1><b>Font Numbers </b></font><br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ Text items have an associated font number (the <tt><font size=+1>fnt</font></tt> field), which
+ is encoded as <tt><font size=+1>style*NumSize+size</font></tt>. Here, <tt><font size=+1>style</font></tt> is one of <tt><font size=+1>FntR</font></tt>,
+ <tt><font size=+1>FntI</font></tt>, <tt><font size=+1>FntB</font></tt> or <tt><font size=+1>FntT</font></tt>, for roman, italic, bold and typewriter font
+ styles, respectively, and size is <tt><font size=+1>Tiny</font></tt>, <tt><font size=+1>Small</font></tt>, <tt><font size=+1>Normal</font></tt>, <tt><font size=+1>Large</font></tt> or
+ <tt><font size=+1>Verylarge</font></tt>. The total number of possible
+ font numbers is <tt><font size=+1>NumFnt</font></tt>, and the default font number is <tt><font size=+1>DefFnt</font></tt>
+ (which is roman style, normal size).<br>
+ <p><font size=+1><b>Document Info </b></font><br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ Global information about an HTML page is stored in the following
+ structure:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Docinfo Docinfo;<br>
+ struct Docinfo<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ // stuff from HTTP headers, doc head, and body tag<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doctitle;<br>
+ Background &nbsp;&nbsp;&nbsp;background;<br>
+ Iimage* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;backgrounditem;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vlink;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alink;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chset;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mediatype;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scripttype;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hasscripts;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;refresh;<br>
+ Kidinfo* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kidinfo;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frameid;<br>
+ // info needed to respond to user actions<br>
+ Anchor* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anchors;<br>
+ DestAnchor* dests;<br>
+ Form* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;forms;<br>
+ Table* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tables;<br>
+ Map* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maps;<br>
+ Iimage* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;images;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Src</font></tt> gives the URL of the original source of the document, and
+ <tt><font size=+1>base</font></tt> is the base URL. <tt><font size=+1>Doctitle</font></tt> is the document&#8217;s title, as set
+ by a <tt><font size=+1>&lt;title&gt;</font></tt> element. <tt><font size=+1>Background</font></tt> is as described in the section
+ <i>Background Specifications</i>, and <tt><font size=+1>backgrounditem</font></tt> is set to be an
+ image item for the document&#8217;s background image
+ (if given as a URL), or else nil. <tt><font size=+1>Text</font></tt> gives the default foregound
+ text color of the document, <tt><font size=+1>link</font></tt> the unvisited hyperlink color,
+ <tt><font size=+1>vlink</font></tt> the visited hyperlink color, and <tt><font size=+1>alink</font></tt> the color for highlighting
+ hyperlinks (all in 24-bit RGB format). <tt><font size=+1>Target</font></tt> is the default target
+ frame id. <tt><font size=+1>Chset</font></tt> and <tt><font size=+1>mediatype</font></tt> are as for
+ the <i>chset</i> and <i>mtype</i> parameters to <i>parsehtml</i>. <tt><font size=+1>Scripttype</font></tt> is the
+ type of any scripts contained in the document, and is always <tt><font size=+1>TextJavascript</font></tt>.
+ <tt><font size=+1>Hasscripts</font></tt> is set if the document contains any scripts. Scripting
+ is currently unsupported. <tt><font size=+1>Refresh</font></tt> is the contents of a <tt><font size=+1>&lt;meta http&#8722;equiv=Refresh
+ ...&gt;</font></tt> tag, if any. <tt><font size=+1>Kidinfo</font></tt> is set if this document is a frameset
+ (see section <i>Frames</i>). <tt><font size=+1>Frameid</font></tt> is this document&#8217;s frame id.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>Anchors</font></tt> is a list of hyperlinks contained in the document, and
+ <tt><font size=+1>dests</font></tt> is a list of hyperlink destinations within the page (see
+ the following section for details). <tt><font size=+1>Forms</font></tt>, <tt><font size=+1>tables</font></tt> and <tt><font size=+1>maps</font></tt> are
+ lists of the various forms, tables and client-side maps contained
+ in the document, as described in subsequent sections.
+ <tt><font size=+1>Images</font></tt> is a list of all the image items in the document.<br>
+ <p><font size=+1><b>Anchors </b></font><br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ The library builds two lists for all of the <tt><font size=+1>&lt;a&gt;</font></tt> elements (anchors)
+ in a document. Each anchor is assigned a unique anchor id within
+ the document. For anchors which are hyperlinks (the <tt><font size=+1>href</font></tt> attribute
+ was supplied), the following structure is defined:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Anchor Anchor;<br>
+ struct Anchor<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Anchor* next;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;name;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;href;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Next</font></tt> points to the next anchor in the list (the head of this list
+ is <tt><font size=+1>Docinfo.anchors</font></tt>). <tt><font size=+1>Index</font></tt> is the anchor id; each item within
+ this hyperlink is tagged with this value in its <tt><font size=+1>anchorid</font></tt> field.
+ <tt><font size=+1>Name</font></tt> and <tt><font size=+1>href</font></tt> are the values of the correspondingly named attributes
+ of the anchor (in particular, href is the URL to go
+ to). <tt><font size=+1>Target</font></tt> is the value of the target attribute (if provided)
+ converted to a frame id.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ Destinations within the document (anchors with the name attribute
+ set) are held in the <tt><font size=+1>Docinfo.dests</font></tt> list, using the following structure:
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct DestAnchor DestAnchor;<br>
+ struct DestAnchor<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ DestAnchor* next;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name;<br>
+ Item* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Next</font></tt> is the next element of the list, <tt><font size=+1>index</font></tt> is the anchor id,
+ <tt><font size=+1>name</font></tt> is the value of the name attribute, and <tt><font size=+1>item</font></tt> is points to
+ the item within the parsed document that should be considered
+ to be the destination.<br>
+ <p><font size=+1><b>Forms </b></font><br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ Any forms within a document are kept in a list, headed by <tt><font size=+1>Docinfo.forms</font></tt>.
+ The elements of this list are as follows:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Form Form;<br>
+ struct Form<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Form* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formid;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nfields;<br>
+ Formfield* fields;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Next</font></tt> points to the next form in the list. <tt><font size=+1>Formid</font></tt> is a serial number
+ for the form within the document. <tt><font size=+1>Name</font></tt> is the value of the form&#8217;s
+ name or id attribute. <tt><font size=+1>Action</font></tt> is the value of any action attribute.
+ <tt><font size=+1>Target</font></tt> is the value of the target attribute (if any) converted
+ to a frame target id. <tt><font size=+1>Method</font></tt> is one of <tt><font size=+1>HGet</font></tt> or
+ <tt><font size=+1>HPost</font></tt>. <tt><font size=+1>Nfields</font></tt> is the number of fields in the form, and <tt><font size=+1>fields</font></tt>
+ is a linked list of the actual fields.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ The individual fields in a form are described by the following
+ structure:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Formfield Formfield;<br>
+ struct Formfield<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Formfield* next;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ftype;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldid;<br>
+ Form* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxlength;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rows;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cols;<br>
+ uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags;<br>
+ Option* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options;<br>
+ Item* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctlid;<br>
+ SEvent* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;events;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ Here, <tt><font size=+1>next</font></tt> points to the next field in the list. <tt><font size=+1>Ftype</font></tt> is the
+ type of the field, which can be one of <tt><font size=+1>Ftext</font></tt>, <tt><font size=+1>Fpassword</font></tt>, <tt><font size=+1>Fcheckbox</font></tt>,
+ <tt><font size=+1>Fradio</font></tt>, <tt><font size=+1>Fsubmit</font></tt>, <tt><font size=+1>Fhidden</font></tt>, <tt><font size=+1>Fimage</font></tt>, <tt><font size=+1>Freset</font></tt>, <tt><font size=+1>Ffile</font></tt>, <tt><font size=+1>Fbutton</font></tt>, <tt><font size=+1>Fselect</font></tt>
+ or <tt><font size=+1>Ftextarea</font></tt>. <tt><font size=+1>Fieldid</font></tt> is a serial number for the field within
+ the form. <tt><font size=+1>Form</font></tt> points back
+ to the form containing this field. <tt><font size=+1>Name</font></tt>, <tt><font size=+1>value</font></tt>, <tt><font size=+1>size</font></tt>, <tt><font size=+1>maxlength</font></tt>,
+ <tt><font size=+1>rows</font></tt> and <tt><font size=+1>cols</font></tt> each contain the values of corresponding attributes
+ of the field, if present. <tt><font size=+1>Flags</font></tt> contains per-field flags, of which
+ <tt><font size=+1>FFchecked</font></tt> and <tt><font size=+1>FFmultiple</font></tt> are defined. <tt><font size=+1>Image</font></tt> is only used for fields
+ of type <tt><font size=+1>Fimage</font></tt>; it points to an
+ image item containing the image to be displayed. <tt><font size=+1>Ctlid</font></tt> is reserved
+ for use by the caller, typically to store a unique id of an associated
+ control used to implement the field. <tt><font size=+1>Events</font></tt> is the same as the
+ corresponding field of the generic attributes associated with
+ the item containing this field. <tt><font size=+1>Options</font></tt> is only used by
+ fields of type <tt><font size=+1>Fselect</font></tt>; it consists of a list of possible options
+ that may be selected for that field, using the following structure:
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Option Option;<br>
+ struct Option<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Option* next;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selected;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;value;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;display;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Next</font></tt> points to the next element of the list. <tt><font size=+1>Selected</font></tt> is set if
+ this option is to be displayed initially. <tt><font size=+1>Value</font></tt> is the value to
+ send when the form is submitted if this option is selected. <tt><font size=+1>Display</font></tt>
+ is the string to display on the screen for this option.<br>
+ <p><font size=+1><b>Tables </b></font><br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ The library builds a list of all the tables in the document, headed
+ by <tt><font size=+1>Docinfo.tables</font></tt>. Each element of this list has the following
+ format:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Table Table;<br>
+ struct Table<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Table* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tableid;<br>
+ Tablerow* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rows;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nrow;<br>
+ Tablecol* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cols;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ncol;<br>
+ Tablecell* &nbsp;&nbsp;&nbsp;&nbsp;cells;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ncell;<br>
+ Tablecell*** grid;<br>
+ Align &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;align;<br>
+ Dimen &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cellspacing;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cellpadding;<br>
+ Background &nbsp;&nbsp;&nbsp;&nbsp;background;<br>
+ Item* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;caption;<br>
+ uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;caption_place;<br>
+ Lay* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;caption_lay;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;totw;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toth;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;caph;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;availw;<br>
+ Token* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabletok;<br>
+ uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Next</font></tt> points to the next element in the list of tables. <tt><font size=+1>Tableid</font></tt>
+ is a serial number for the table within the document. <tt><font size=+1>Rows</font></tt> is
+ an array of row specifications (described below) and <tt><font size=+1>nrow</font></tt> is the
+ number of elements in this array. Similarly, <tt><font size=+1>cols</font></tt> is an array
+ of column specifications, and <tt><font size=+1>ncol</font></tt> the size of this array.
+ <tt><font size=+1>Cells</font></tt> is a list of all cells within the table (structure described
+ below) and <tt><font size=+1>ncell</font></tt> is the number of elements in this list. Note
+ that a cell may span multiple rows and/or columns, thus <tt><font size=+1>ncell</font></tt>
+ may be smaller than <tt><font size=+1>nrow*ncol</font></tt>. <tt><font size=+1>Grid</font></tt> is a two-dimensional array
+ of cells within the table; the cell at row <tt><font size=+1>i</font></tt> and column <tt><font size=+1>j</font></tt> is
+ <tt><font size=+1>Table.grid[i][j]</font></tt>. A cell that spans multiple rows and/or columns
+ will be referenced by <tt><font size=+1>grid</font></tt> multiple times, however it will only
+ occur once in <tt><font size=+1>cells</font></tt>. <tt><font size=+1>Align</font></tt> gives the alignment specification for
+ the entire table, and <tt><font size=+1>width</font></tt> gives the requested width as a dimension
+ specification. <tt><font size=+1>Border</font></tt>, <tt><font size=+1>cellspacing
+ </font></tt>and <tt><font size=+1>cellpadding</font></tt> give the values of the corresponding attributes
+ for the table, and <tt><font size=+1>background</font></tt> gives the requested background for
+ the table. <tt><font size=+1>Caption</font></tt> is a linked list of items to be displayed as
+ the caption of the table, either above or below depending on whether
+ <tt><font size=+1>caption_place</font></tt> is <tt><font size=+1>ALtop</font></tt> or <tt><font size=+1>ALbottom</font></tt>.
+ Most of the remaining fields are reserved for use by the caller,
+ except <tt><font size=+1>tabletok</font></tt>, which is reserved for internal use. The type
+ <tt><font size=+1>Lay</font></tt> is not defined by the library; the caller can provide its
+ own definition.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ The <tt><font size=+1>Tablecol</font></tt> structure is defined for use by the caller. The library
+ ensures that the correct number of these is allocated, but leaves
+ them blank. The fields are as follows:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Tablecol Tablecol;<br>
+ struct Tablecol<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ int &nbsp;&nbsp;&nbsp;&nbsp;width;<br>
+ Align align;<br>
+ Point pos;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ The rows in the table are specified as follows:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Tablerow Tablerow;<br>
+ struct Tablerow<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Tablerow* &nbsp;&nbsp;&nbsp;next;<br>
+ Tablecell* cells;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ascent;<br>
+ Align &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;align;<br>
+ Background background;<br>
+ Point &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos;<br>
+ uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Next</font></tt> is only used during parsing; it should be ignored by the
+ caller. <tt><font size=+1>Cells</font></tt> provides a list of all the cells in a row, linked
+ through their <tt><font size=+1>nextinrow</font></tt> fields (see below). <tt><font size=+1>Height</font></tt>, <tt><font size=+1>ascent</font></tt> and
+ <tt><font size=+1>pos</font></tt> are reserved for use by the caller. <tt><font size=+1>Align</font></tt> is the alignment
+ specification for the row, and <tt><font size=+1>background</font></tt> is the
+ background to use, if specified. <tt><font size=+1>Flags</font></tt> is used by the parser;
+ ignore this field.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ The individual cells of the table are described as follows:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Tablecell Tablecell;<br>
+ struct Tablecell<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Tablecell* next;<br>
+ Tablecell* nextinrow;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cellid;<br>
+ Item* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content;<br>
+ Lay* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lay;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowspan;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;colspan;<br>
+ Align &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;align;<br>
+ uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags;<br>
+ Dimen &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wspec;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hspec;<br>
+ Background background;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minw;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxw;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ascent;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;row;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col;<br>
+ Point &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Next</font></tt> is used to link together the list of all cells within a table
+ (<tt><font size=+1>Table.cells</font></tt>), whereas <tt><font size=+1>nextinrow</font></tt> is used to link together all
+ the cells within a single row (<tt><font size=+1>Tablerow.cells</font></tt>). <tt><font size=+1>Cellid</font></tt> provides
+ a serial number for the cell within the table. <tt><font size=+1>Content</font></tt> is a linked
+ list of the items to be laid out within the cell. <tt><font size=+1>Lay
+ </font></tt>is reserved for the user to describe how these items have been
+ laid out. <tt><font size=+1>Rowspan</font></tt> and <tt><font size=+1>colspan</font></tt> are the number of rows and columns
+ spanned by this cell, respectively. <tt><font size=+1>Align</font></tt> is the alignment specification
+ for the cell. <tt><font size=+1>Flags</font></tt> is some combination of <tt><font size=+1>TFparsing</font></tt>, <tt><font size=+1>TFnowrap</font></tt>
+ and <tt><font size=+1>TFisth</font></tt> or&#8217;d together. Here
+ <tt><font size=+1>TFparsing</font></tt> is used internally by the parser, and should be ignored.
+ <tt><font size=+1>TFnowrap</font></tt> means that the contents of the cell should not be wrapped
+ if they don&#8217;t fit the available width, rather, the table should
+ be expanded if need be (this is set when the nowrap attribute
+ is supplied). <tt><font size=+1>TFisth</font></tt> means that the cell was created
+ by the <tt><font size=+1>&lt;th&gt;</font></tt> element (rather than the <tt><font size=+1>&lt;td&gt;</font></tt> element), indicating that
+ it is a header cell rather than a data cell. <tt><font size=+1>Wspec</font></tt> provides a
+ suggested width as a dimension specification, and <tt><font size=+1>hspec</font></tt> provides
+ a suggested height in pixels. <tt><font size=+1>Background</font></tt> gives a background specification
+ for the individual cell. <tt><font size=+1>Minw</font></tt>, <tt><font size=+1>maxw</font></tt>,
+ <tt><font size=+1>ascent</font></tt> and <tt><font size=+1>pos</font></tt> are reserved for use by the caller during layout.
+ <tt><font size=+1>Row</font></tt> and <tt><font size=+1>col</font></tt> give the indices of the row and column of the top
+ left-hand corner of the cell within the table grid.<br>
+ <p><font size=+1><b>Client-side Maps </b></font><br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ The library builds a list of client-side maps, headed by <tt><font size=+1>Docinfo.maps</font></tt>,
+ and having the following structure:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Map Map;<br>
+ struct Map<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Map* &nbsp;&nbsp;&nbsp;next;<br>
+ Rune* name;<br>
+ Area* areas;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Next</font></tt> points to the next element in the list, <tt><font size=+1>name</font></tt> is the name
+ of the map (use to bind it to an image), and <tt><font size=+1>areas</font></tt> is a list of
+ the areas within the image that comprise the map, using the following
+ structure:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Area Area;<br>
+ struct Area<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Area* &nbsp;&nbsp;&nbsp;next;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape;<br>
+ Rune* &nbsp;&nbsp;&nbsp;href;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target;<br>
+ Dimen* coords;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ncoords;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Next</font></tt> points to the next element in the map&#8217;s list of areas. <tt><font size=+1>Shape</font></tt>
+ describes the shape of the area, and is one of <tt><font size=+1>SHrect</font></tt>, <tt><font size=+1>SHcircle</font></tt>
+ or <tt><font size=+1>SHpoly</font></tt>. <tt><font size=+1>Href</font></tt> is the URL associated with this area in its role
+ as a hypertext link, and <tt><font size=+1>target</font></tt> is the target frame it should
+ be loaded in. <tt><font size=+1>Coords</font></tt> is an array of coordinates for
+ the shape, and <tt><font size=+1>ncoords</font></tt> is the size of this array (number of elements).<br>
+ <p><font size=+1><b>Frames </b></font><br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ If the <tt><font size=+1>Docinfo.kidinfo</font></tt> field is set, the document is a frameset.
+ In this case, it is typical for <i>parsehtml</i> to return nil, as a
+ document which is a frameset should have no actual items that
+ need to be laid out (such will appear only in subsidiary documents).
+ It is possible that items will be returned by a malformed
+ document; the caller should check for this and free any such items.
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ The <tt><font size=+1>Kidinfo</font></tt> structure itself reflects the fact that framesets
+ can be nested within a document. If is defined as follows:
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ <tt><font size=+1>typedef struct Kidinfo Kidinfo;<br>
+ struct Kidinfo<br>
+ {<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ Kidinfo* next;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isframeset;<br>
+ // fields for &quot;frame&quot;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src;<br>
+ Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;marginw;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;marginh;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;framebd;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags;<br>
+ // fields for &quot;frameset&quot;<br>
+ Dimen* &nbsp;&nbsp;&nbsp;&nbsp;rows;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nrows;<br>
+ Dimen* &nbsp;&nbsp;&nbsp;&nbsp;cols;<br>
+ int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ncols;<br>
+ Kidinfo* kidinfos;<br>
+ Kidinfo* nextframeset;<br>
+
+ </table>
+ };<br>
+
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+ </font></tt>
+ <tt><font size=+1>Next</font></tt> is only used if this structure is part of a containing frameset;
+ it points to the next element in the list of children of that
+ frameset. <tt><font size=+1>Isframeset</font></tt> is set when this structure represents a frameset;
+ if clear, it is an individual frame.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ Some fields are used only for framesets. <tt><font size=+1>Rows</font></tt> is an array of dimension
+ specifications for rows in the frameset, and <tt><font size=+1>nrows</font></tt> is the length
+ of this array. <tt><font size=+1>Cols</font></tt> is the corresponding array for columns, of
+ length <tt><font size=+1>ncols</font></tt>. <tt><font size=+1>Kidinfos</font></tt> points to a list of components contained
+ within this frameset, each of which may be a
+ frameset or a frame. <tt><font size=+1>Nextframeset</font></tt> is only used during parsing,
+ and should be ignored.
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ The remaining fields are used if the structure describes a frame,
+ not a frameset. <tt><font size=+1>Src</font></tt> provides the URL for the document that should
+ be initially loaded into this frame. Note that this may be a relative
+ URL, in which case it should be interpretted using the containing
+ document&#8217;s URL as the base. <tt><font size=+1>Name</font></tt> gives the name of
+ the frame, typically supplied via a name attribute in the HTML.
+ If no name was given, the library allocates one. <tt><font size=+1>Marginw</font></tt>, <tt><font size=+1>marginh</font></tt>
+ and <tt><font size=+1>framebd</font></tt> are the values of the marginwidth, marginheight and
+ frameborder attributes, respectively. <tt><font size=+1>Flags</font></tt> can contain some combination
+ of the following: <tt><font size=+1>FRnoresize</font></tt> (the
+ frame had the noresize attribute set, and the user should not
+ be allowed to resize it), <tt><font size=+1>FRnoscroll</font></tt> (the frame should not have
+ any scroll bars), <tt><font size=+1>FRhscroll</font></tt> (the frame should have a horizontal
+ scroll bar), <tt><font size=+1>FRvscroll</font></tt> (the frame should have a vertical scroll
+ bar), <tt><font size=+1>FRhscrollauto</font></tt> (the frame should be automatically
+ given a horizontal scroll bar if its contents would not otherwise
+ fit), and <tt><font size=+1>FRvscrollauto</font></tt> (the frame gets a vertical scrollbar only
+ if required).<br>
+
+</table>
+<p><font size=+1><b>SOURCE </b></font><br>
+
+<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ <tt><font size=+1>/usr/local/plan9/src/libhtml<br>
+ </font></tt>
+</table>
+<p><font size=+1><b>SEE ALSO </b></font><br>
+
+<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ <a href="../man1/fmt.html"><i>fmt</i>(1)</a>
+ <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
+
+ W3C World Wide Web Consortium, &#8220;HTML 4.01 Specification&#8221;.<br>
+
+</table>
+<p><font size=+1><b>BUGS </b></font><br>
+
+<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
+
+ The entire HTML document must be loaded into memory before any
+ of it can be parsed.<br>
+
+</table>
+
+<td width=20>
+<tr height=20><td>
+</table>
+<!-- TRAILER -->
+<table border=0 cellpadding=0 cellspacing=0 width=100%>
+<tr height=15><td width=10><td><td width=10>
+<tr><td><td>
+<center>
+<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
+</center>
+</table>
+<!-- TRAILER -->
+</body></html>