Blame


1 7f11104a 2003-12-11 devnull #ifndef _HTML_H_
2 7f11104a 2003-12-11 devnull #define _HTML_H_ 1
3 7f11104a 2003-12-11 devnull #ifdef __cplusplus
4 7f11104a 2003-12-11 devnull extern "C" {
5 7f11104a 2003-12-11 devnull #endif
6 7f11104a 2003-12-11 devnull
7 1a0954ab 2005-01-04 devnull AUTOLIB(html)
8 7f11104a 2003-12-11 devnull /*
9 7f11104a 2003-12-11 devnull #pragma lib "libhtml.a"
10 7f11104a 2003-12-11 devnull #pragma src "/sys/src/libhtml"
11 7f11104a 2003-12-11 devnull */
12 7f11104a 2003-12-11 devnull
13 cbeb0b26 2006-04-01 devnull /* UTILS */
14 7f11104a 2003-12-11 devnull extern uchar* fromStr(Rune* buf, int n, int chset);
15 7f11104a 2003-12-11 devnull extern Rune* toStr(uchar* buf, int n, int chset);
16 7f11104a 2003-12-11 devnull
17 cbeb0b26 2006-04-01 devnull /* Common LEX and BUILD enums */
18 7f11104a 2003-12-11 devnull
19 cbeb0b26 2006-04-01 devnull /* Media types */
20 7f11104a 2003-12-11 devnull enum
21 7f11104a 2003-12-11 devnull {
22 7f11104a 2003-12-11 devnull ApplMsword,
23 7f11104a 2003-12-11 devnull ApplOctets,
24 7f11104a 2003-12-11 devnull ApplPdf,
25 7f11104a 2003-12-11 devnull ApplPostscript,
26 7f11104a 2003-12-11 devnull ApplRtf,
27 7f11104a 2003-12-11 devnull ApplFramemaker,
28 7f11104a 2003-12-11 devnull ApplMsexcel,
29 7f11104a 2003-12-11 devnull ApplMspowerpoint,
30 7f11104a 2003-12-11 devnull UnknownType,
31 7f11104a 2003-12-11 devnull Audio32kadpcm,
32 7f11104a 2003-12-11 devnull AudioBasic,
33 7f11104a 2003-12-11 devnull ImageCgm,
34 7f11104a 2003-12-11 devnull ImageG3fax,
35 7f11104a 2003-12-11 devnull ImageGif,
36 7f11104a 2003-12-11 devnull ImageIef,
37 7f11104a 2003-12-11 devnull ImageJpeg,
38 7f11104a 2003-12-11 devnull ImagePng,
39 7f11104a 2003-12-11 devnull ImageTiff,
40 7f11104a 2003-12-11 devnull ImageXBit,
41 7f11104a 2003-12-11 devnull ImageXBit2,
42 7f11104a 2003-12-11 devnull ImageXBitmulti,
43 7f11104a 2003-12-11 devnull ImageXXBitmap,
44 7f11104a 2003-12-11 devnull ModelVrml,
45 7f11104a 2003-12-11 devnull MultiDigest,
46 7f11104a 2003-12-11 devnull MultiMixed,
47 7f11104a 2003-12-11 devnull TextCss,
48 7f11104a 2003-12-11 devnull TextEnriched,
49 7f11104a 2003-12-11 devnull TextHtml,
50 7f11104a 2003-12-11 devnull TextJavascript,
51 7f11104a 2003-12-11 devnull TextPlain,
52 7f11104a 2003-12-11 devnull TextRichtext,
53 7f11104a 2003-12-11 devnull TextSgml,
54 7f11104a 2003-12-11 devnull TextTabSeparatedValues,
55 7f11104a 2003-12-11 devnull TextXml,
56 7f11104a 2003-12-11 devnull VideoMpeg,
57 7f11104a 2003-12-11 devnull VideoQuicktime,
58 7f11104a 2003-12-11 devnull NMEDIATYPES
59 7f11104a 2003-12-11 devnull };
60 7f11104a 2003-12-11 devnull
61 cbeb0b26 2006-04-01 devnull /* HTTP methods */
62 7f11104a 2003-12-11 devnull enum
63 7f11104a 2003-12-11 devnull {
64 7f11104a 2003-12-11 devnull HGet,
65 7f11104a 2003-12-11 devnull HPost
66 7f11104a 2003-12-11 devnull };
67 7f11104a 2003-12-11 devnull
68 cbeb0b26 2006-04-01 devnull /* Charsets */
69 7f11104a 2003-12-11 devnull enum
70 7f11104a 2003-12-11 devnull {
71 7f11104a 2003-12-11 devnull UnknownCharset,
72 7f11104a 2003-12-11 devnull US_Ascii,
73 7f11104a 2003-12-11 devnull ISO_8859_1,
74 7f11104a 2003-12-11 devnull UTF_8,
75 7f11104a 2003-12-11 devnull Unicode,
76 7f11104a 2003-12-11 devnull NCHARSETS
77 7f11104a 2003-12-11 devnull };
78 7f11104a 2003-12-11 devnull
79 cbeb0b26 2006-04-01 devnull /* Frame Target IDs */
80 7f11104a 2003-12-11 devnull enum {
81 7f11104a 2003-12-11 devnull FTtop,
82 7f11104a 2003-12-11 devnull FTself,
83 7f11104a 2003-12-11 devnull FTparent,
84 7f11104a 2003-12-11 devnull FTblank
85 7f11104a 2003-12-11 devnull };
86 7f11104a 2003-12-11 devnull
87 cbeb0b26 2006-04-01 devnull /* LEX */
88 7f11104a 2003-12-11 devnull typedef struct Token Token;
89 7f11104a 2003-12-11 devnull typedef struct Attr Attr;
90 7f11104a 2003-12-11 devnull
91 cbeb0b26 2006-04-01 devnull /* BUILD */
92 7f11104a 2003-12-11 devnull
93 7f11104a 2003-12-11 devnull typedef struct Item Item;
94 7f11104a 2003-12-11 devnull typedef struct Itext Itext;
95 7f11104a 2003-12-11 devnull typedef struct Irule Irule;
96 7f11104a 2003-12-11 devnull typedef struct Iimage Iimage;
97 7f11104a 2003-12-11 devnull typedef struct Iformfield Iformfield;
98 7f11104a 2003-12-11 devnull typedef struct Itable Itable;
99 7f11104a 2003-12-11 devnull typedef struct Ifloat Ifloat;
100 7f11104a 2003-12-11 devnull typedef struct Ispacer Ispacer;
101 7f11104a 2003-12-11 devnull typedef struct Genattr Genattr;
102 7f11104a 2003-12-11 devnull typedef struct SEvent SEvent;
103 7f11104a 2003-12-11 devnull typedef struct Formfield Formfield;
104 7f11104a 2003-12-11 devnull typedef struct Option Option;
105 7f11104a 2003-12-11 devnull typedef struct Form Form;
106 7f11104a 2003-12-11 devnull typedef struct Table Table;
107 7f11104a 2003-12-11 devnull typedef struct Tablecol Tablecol;
108 7f11104a 2003-12-11 devnull typedef struct Tablerow Tablerow;
109 7f11104a 2003-12-11 devnull typedef struct Tablecell Tablecell;
110 7f11104a 2003-12-11 devnull typedef struct Align Align;
111 7f11104a 2003-12-11 devnull typedef struct Dimen Dimen;
112 7f11104a 2003-12-11 devnull typedef struct Anchor Anchor;
113 7f11104a 2003-12-11 devnull typedef struct DestAnchor DestAnchor;
114 7f11104a 2003-12-11 devnull typedef struct Map Map;
115 7f11104a 2003-12-11 devnull typedef struct Area Area;
116 7f11104a 2003-12-11 devnull typedef struct Background Background;
117 7f11104a 2003-12-11 devnull typedef struct Kidinfo Kidinfo;
118 7f11104a 2003-12-11 devnull typedef struct Docinfo Docinfo;
119 7f11104a 2003-12-11 devnull typedef struct Stack Stack;
120 7f11104a 2003-12-11 devnull typedef struct Pstate Pstate;
121 7f11104a 2003-12-11 devnull typedef struct ItemSource ItemSource;
122 cbeb0b26 2006-04-01 devnull typedef struct Lay Lay; /* defined in Layout module */
123 7f11104a 2003-12-11 devnull
124 cbeb0b26 2006-04-01 devnull /* Alignment types */
125 7f11104a 2003-12-11 devnull enum {
126 7f11104a 2003-12-11 devnull ALnone = 0, ALleft, ALcenter, ALright, ALjustify,
127 7f11104a 2003-12-11 devnull ALchar, ALtop, ALmiddle, ALbottom, ALbaseline
128 7f11104a 2003-12-11 devnull };
129 7f11104a 2003-12-11 devnull
130 7f11104a 2003-12-11 devnull struct Align
131 7f11104a 2003-12-11 devnull {
132 cbeb0b26 2006-04-01 devnull uchar halign; /* one of ALnone, ALleft, etc. */
133 cbeb0b26 2006-04-01 devnull uchar valign; /* one of ALnone, ALtop, etc. */
134 7f11104a 2003-12-11 devnull };
135 7f11104a 2003-12-11 devnull
136 cbeb0b26 2006-04-01 devnull /* A Dimen holds a dimension specification, especially for those */
137 cbeb0b26 2006-04-01 devnull /* cases when a number can be followed by a % or a * to indicate */
138 cbeb0b26 2006-04-01 devnull /* percentage of total or relative weight. */
139 cbeb0b26 2006-04-01 devnull /* Dnone means no dimension was specified */
140 7f11104a 2003-12-11 devnull
141 cbeb0b26 2006-04-01 devnull /* To fit in a word, use top bits to identify kind, rest for value */
142 7f11104a 2003-12-11 devnull enum {
143 7f11104a 2003-12-11 devnull Dnone = 0,
144 7f11104a 2003-12-11 devnull Dpixels = (1<<29),
145 7f11104a 2003-12-11 devnull Dpercent = (2<<29),
146 7f11104a 2003-12-11 devnull Drelative = (3<<29),
147 7f11104a 2003-12-11 devnull Dkindmask = (3<<29),
148 7f11104a 2003-12-11 devnull Dspecmask = (~Dkindmask)
149 7f11104a 2003-12-11 devnull };
150 7f11104a 2003-12-11 devnull
151 7f11104a 2003-12-11 devnull struct Dimen
152 7f11104a 2003-12-11 devnull {
153 cbeb0b26 2006-04-01 devnull int kindspec; /* kind | spec */
154 7f11104a 2003-12-11 devnull };
155 7f11104a 2003-12-11 devnull
156 cbeb0b26 2006-04-01 devnull /* Background is either an image or a color. */
157 cbeb0b26 2006-04-01 devnull /* If both are set, the image has precedence. */
158 7f11104a 2003-12-11 devnull struct Background
159 7f11104a 2003-12-11 devnull {
160 cbeb0b26 2006-04-01 devnull Rune* image; /* url */
161 7f11104a 2003-12-11 devnull int color;
162 7f11104a 2003-12-11 devnull };
163 7f11104a 2003-12-11 devnull
164 7f11104a 2003-12-11 devnull
165 cbeb0b26 2006-04-01 devnull /* There are about a half dozen Item variants. */
166 cbeb0b26 2006-04-01 devnull /* The all look like this at the start (using Plan 9 C's */
167 cbeb0b26 2006-04-01 devnull /* anonymous structure member mechanism), */
168 cbeb0b26 2006-04-01 devnull /* and then the tag field dictates what extra fields there are. */
169 7f11104a 2003-12-11 devnull struct Item
170 7f11104a 2003-12-11 devnull {
171 cbeb0b26 2006-04-01 devnull Item* next; /* successor in list of items */
172 cbeb0b26 2006-04-01 devnull int width; /* width in pixels (0 for floating items) */
173 cbeb0b26 2006-04-01 devnull int height; /* height in pixels */
174 f054210f 2005-12-30 devnull Rectangle r;
175 cbeb0b26 2006-04-01 devnull int ascent; /* ascent (from top to baseline) in pixels */
176 cbeb0b26 2006-04-01 devnull int anchorid; /* if nonzero, which anchor we're in */
177 cbeb0b26 2006-04-01 devnull int state; /* flags and values (see below) */
178 cbeb0b26 2006-04-01 devnull Genattr* genattr; /* generic attributes and events */
179 cbeb0b26 2006-04-01 devnull int tag; /* variant discriminator: Itexttag, etc. */
180 7f11104a 2003-12-11 devnull };
181 7f11104a 2003-12-11 devnull
182 cbeb0b26 2006-04-01 devnull /* Item variant tags */
183 7f11104a 2003-12-11 devnull enum {
184 7f11104a 2003-12-11 devnull Itexttag,
185 7f11104a 2003-12-11 devnull Iruletag,
186 7f11104a 2003-12-11 devnull Iimagetag,
187 7f11104a 2003-12-11 devnull Iformfieldtag,
188 7f11104a 2003-12-11 devnull Itabletag,
189 7f11104a 2003-12-11 devnull Ifloattag,
190 7f11104a 2003-12-11 devnull Ispacertag
191 7f11104a 2003-12-11 devnull };
192 7f11104a 2003-12-11 devnull
193 7f11104a 2003-12-11 devnull struct Itext
194 7f11104a 2003-12-11 devnull {
195 cbeb0b26 2006-04-01 devnull Item item; /* (with tag ==Itexttag) */
196 cbeb0b26 2006-04-01 devnull Rune* s; /* the characters */
197 cbeb0b26 2006-04-01 devnull int fnt; /* style*NumSize+size (see font stuff, below) */
198 cbeb0b26 2006-04-01 devnull int fg; /* Pixel (color) for text */
199 cbeb0b26 2006-04-01 devnull uchar voff; /* Voffbias+vertical offset from baseline, in pixels (+ve == down) */
200 cbeb0b26 2006-04-01 devnull uchar ul; /* ULnone, ULunder, or ULmid */
201 7f11104a 2003-12-11 devnull };
202 7f11104a 2003-12-11 devnull
203 7f11104a 2003-12-11 devnull struct Irule
204 7f11104a 2003-12-11 devnull {
205 cbeb0b26 2006-04-01 devnull Item item; /* (with tag ==Iruletag) */
206 cbeb0b26 2006-04-01 devnull uchar align; /* alignment spec */
207 cbeb0b26 2006-04-01 devnull uchar noshade; /* if true, don't shade */
208 cbeb0b26 2006-04-01 devnull int size; /* size attr (rule height) */
209 cbeb0b26 2006-04-01 devnull Dimen wspec; /* width spec */
210 7f11104a 2003-12-11 devnull };
211 7f11104a 2003-12-11 devnull
212 7f11104a 2003-12-11 devnull
213 7f11104a 2003-12-11 devnull struct Iimage
214 7f11104a 2003-12-11 devnull {
215 cbeb0b26 2006-04-01 devnull Item item; /* (with tag ==Iimagetag) */
216 cbeb0b26 2006-04-01 devnull Rune* imsrc; /* image src url */
217 cbeb0b26 2006-04-01 devnull int imwidth; /* spec width (actual, if no spec) */
218 cbeb0b26 2006-04-01 devnull int imheight; /* spec height (actual, if no spec) */
219 cbeb0b26 2006-04-01 devnull Rune* altrep; /* alternate representation, in absence of image */
220 cbeb0b26 2006-04-01 devnull Map* map; /* if non-nil, client side map */
221 cbeb0b26 2006-04-01 devnull int ctlid; /* if animated */
222 cbeb0b26 2006-04-01 devnull uchar align; /* vertical alignment */
223 cbeb0b26 2006-04-01 devnull uchar hspace; /* in pixels; buffer space on each side */
224 cbeb0b26 2006-04-01 devnull uchar vspace; /* in pixels; buffer space on top and bottom */
225 cbeb0b26 2006-04-01 devnull uchar border; /* in pixels: border width to draw around image */
226 cbeb0b26 2006-04-01 devnull Iimage* nextimage; /* next in list of document's images */
227 f054210f 2005-12-30 devnull void *aux;
228 7f11104a 2003-12-11 devnull };
229 7f11104a 2003-12-11 devnull
230 7f11104a 2003-12-11 devnull
231 7f11104a 2003-12-11 devnull struct Iformfield
232 7f11104a 2003-12-11 devnull {
233 cbeb0b26 2006-04-01 devnull Item item; /* (with tag ==Iformfieldtag) */
234 7f11104a 2003-12-11 devnull Formfield* formfield;
235 f054210f 2005-12-30 devnull void *aux;
236 7f11104a 2003-12-11 devnull };
237 7f11104a 2003-12-11 devnull
238 7f11104a 2003-12-11 devnull
239 7f11104a 2003-12-11 devnull struct Itable
240 7f11104a 2003-12-11 devnull {
241 cbeb0b26 2006-04-01 devnull Item item; /* (with tag ==Itabletag) */
242 7f11104a 2003-12-11 devnull Table* table;
243 7f11104a 2003-12-11 devnull };
244 7f11104a 2003-12-11 devnull
245 7f11104a 2003-12-11 devnull
246 7f11104a 2003-12-11 devnull struct Ifloat
247 7f11104a 2003-12-11 devnull {
248 cbeb0b26 2006-04-01 devnull Item _item; /* (with tag ==Ifloattag) */
249 cbeb0b26 2006-04-01 devnull Item* item; /* table or image item that floats */
250 cbeb0b26 2006-04-01 devnull int x; /* x coord of top (from right, if ALright) */
251 cbeb0b26 2006-04-01 devnull int y; /* y coord of top */
252 cbeb0b26 2006-04-01 devnull uchar side; /* margin it floats to: ALleft or ALright */
253 cbeb0b26 2006-04-01 devnull uchar infloats; /* true if this has been added to a lay.floats */
254 cbeb0b26 2006-04-01 devnull Ifloat* nextfloat; /* in list of floats */
255 7f11104a 2003-12-11 devnull };
256 7f11104a 2003-12-11 devnull
257 7f11104a 2003-12-11 devnull
258 7f11104a 2003-12-11 devnull struct Ispacer
259 7f11104a 2003-12-11 devnull {
260 cbeb0b26 2006-04-01 devnull Item item; /* (with tag ==Ispacertag) */
261 cbeb0b26 2006-04-01 devnull int spkind; /* ISPnull, etc. */
262 7f11104a 2003-12-11 devnull };
263 7f11104a 2003-12-11 devnull
264 cbeb0b26 2006-04-01 devnull /* Item state flags and value fields */
265 7f11104a 2003-12-11 devnull enum {
266 cbeb0b26 2006-04-01 devnull /* IFbrk = 0x80000000, // forced break before this item */
267 a0f1e21f 2004-04-20 devnull #define IFbrk 0x80000000 /* too big for sun */
268 cbeb0b26 2006-04-01 devnull IFbrksp = 0x40000000, /* add 1 line space to break (IFbrk set too) */
269 cbeb0b26 2006-04-01 devnull IFnobrk = 0x20000000, /* break not allowed before this item */
270 cbeb0b26 2006-04-01 devnull IFcleft = 0x10000000, /* clear left floats (IFbrk set too) */
271 cbeb0b26 2006-04-01 devnull IFcright = 0x08000000, /* clear right floats (IFbrk set too) */
272 cbeb0b26 2006-04-01 devnull IFwrap = 0x04000000, /* in a wrapping (non-pre) line */
273 cbeb0b26 2006-04-01 devnull IFhang = 0x02000000, /* in a hanging (into left indent) item */
274 cbeb0b26 2006-04-01 devnull IFrjust = 0x01000000, /* right justify current line */
275 cbeb0b26 2006-04-01 devnull IFcjust = 0x00800000, /* center justify current line */
276 cbeb0b26 2006-04-01 devnull IFsmap = 0x00400000, /* image is server-side map */
277 7f11104a 2003-12-11 devnull IFindentshift = 8,
278 cbeb0b26 2006-04-01 devnull IFindentmask = (255<<IFindentshift), /* current indent, in tab stops */
279 cbeb0b26 2006-04-01 devnull IFhangmask = 255 /* current hang into left indent, in 1/10th tabstops */
280 7f11104a 2003-12-11 devnull };
281 7f11104a 2003-12-11 devnull
282 cbeb0b26 2006-04-01 devnull /* Bias added to Itext's voff field */
283 7f11104a 2003-12-11 devnull enum { Voffbias = 128 };
284 7f11104a 2003-12-11 devnull
285 cbeb0b26 2006-04-01 devnull /* Spacer kinds */
286 7f11104a 2003-12-11 devnull enum {
287 cbeb0b26 2006-04-01 devnull ISPnull, /* 0 height and width */
288 cbeb0b26 2006-04-01 devnull ISPvline, /* height and ascent of current font */
289 cbeb0b26 2006-04-01 devnull ISPhspace, /* width of space in current font */
290 cbeb0b26 2006-04-01 devnull ISPgeneral /* other purposes (e.g., between markers and list) */
291 7f11104a 2003-12-11 devnull };
292 7f11104a 2003-12-11 devnull
293 cbeb0b26 2006-04-01 devnull /* Generic attributes and events (not many elements will have any of these set) */
294 7f11104a 2003-12-11 devnull struct Genattr
295 7f11104a 2003-12-11 devnull {
296 7f11104a 2003-12-11 devnull Rune* id;
297 7f11104a 2003-12-11 devnull Rune* class;
298 7f11104a 2003-12-11 devnull Rune* style;
299 7f11104a 2003-12-11 devnull Rune* title;
300 7f11104a 2003-12-11 devnull SEvent* events;
301 7f11104a 2003-12-11 devnull };
302 7f11104a 2003-12-11 devnull
303 7f11104a 2003-12-11 devnull struct SEvent
304 7f11104a 2003-12-11 devnull {
305 cbeb0b26 2006-04-01 devnull SEvent* next; /* in list of events */
306 cbeb0b26 2006-04-01 devnull int type; /* SEonblur, etc. */
307 7f11104a 2003-12-11 devnull Rune* script;
308 7f11104a 2003-12-11 devnull };
309 7f11104a 2003-12-11 devnull
310 7f11104a 2003-12-11 devnull enum {
311 7f11104a 2003-12-11 devnull SEonblur, SEonchange, SEonclick, SEondblclick,
312 7f11104a 2003-12-11 devnull SEonfocus, SEonkeypress, SEonkeyup, SEonload,
313 7f11104a 2003-12-11 devnull SEonmousedown, SEonmousemove, SEonmouseout,
314 7f11104a 2003-12-11 devnull SEonmouseover, SEonmouseup, SEonreset, SEonselect,
315 7f11104a 2003-12-11 devnull SEonsubmit, SEonunload,
316 7f11104a 2003-12-11 devnull Numscriptev
317 7f11104a 2003-12-11 devnull };
318 7f11104a 2003-12-11 devnull
319 cbeb0b26 2006-04-01 devnull /* Form field types */
320 7f11104a 2003-12-11 devnull enum {
321 7f11104a 2003-12-11 devnull Ftext,
322 7f11104a 2003-12-11 devnull Fpassword,
323 7f11104a 2003-12-11 devnull Fcheckbox,
324 7f11104a 2003-12-11 devnull Fradio,
325 7f11104a 2003-12-11 devnull Fsubmit,
326 7f11104a 2003-12-11 devnull Fhidden,
327 7f11104a 2003-12-11 devnull Fimage,
328 7f11104a 2003-12-11 devnull Freset,
329 7f11104a 2003-12-11 devnull Ffile,
330 7f11104a 2003-12-11 devnull Fbutton,
331 7f11104a 2003-12-11 devnull Fselect,
332 7f11104a 2003-12-11 devnull Ftextarea
333 7f11104a 2003-12-11 devnull };
334 7f11104a 2003-12-11 devnull
335 cbeb0b26 2006-04-01 devnull /* Information about a field in a form */
336 7f11104a 2003-12-11 devnull struct Formfield
337 7f11104a 2003-12-11 devnull {
338 cbeb0b26 2006-04-01 devnull Formfield* next; /* in list of fields for a form */
339 cbeb0b26 2006-04-01 devnull int ftype; /* Ftext, Fpassword, etc. */
340 cbeb0b26 2006-04-01 devnull int fieldid; /* serial no. of field within its form */
341 cbeb0b26 2006-04-01 devnull Form* form; /* containing form */
342 cbeb0b26 2006-04-01 devnull Rune* name; /* name attr */
343 cbeb0b26 2006-04-01 devnull Rune* value; /* value attr */
344 cbeb0b26 2006-04-01 devnull int size; /* size attr */
345 cbeb0b26 2006-04-01 devnull int maxlength; /* maxlength attr */
346 cbeb0b26 2006-04-01 devnull int rows; /* rows attr */
347 cbeb0b26 2006-04-01 devnull int cols; /* cols attr */
348 cbeb0b26 2006-04-01 devnull uchar flags; /* FFchecked, etc. */
349 cbeb0b26 2006-04-01 devnull Option* options; /* for Fselect fields */
350 cbeb0b26 2006-04-01 devnull Item* image; /* image item, for Fimage fields */
351 cbeb0b26 2006-04-01 devnull int ctlid; /* identifies control for this field in layout */
352 cbeb0b26 2006-04-01 devnull SEvent* events; /* same as genattr->events of containing item */
353 7f11104a 2003-12-11 devnull };
354 7f11104a 2003-12-11 devnull
355 7f11104a 2003-12-11 devnull enum {
356 7f11104a 2003-12-11 devnull FFchecked = (1<<7),
357 7f11104a 2003-12-11 devnull FFmultiple = (1<<6)
358 7f11104a 2003-12-11 devnull };
359 7f11104a 2003-12-11 devnull
360 cbeb0b26 2006-04-01 devnull /* Option holds info about an option in a "select" form field */
361 7f11104a 2003-12-11 devnull struct Option
362 7f11104a 2003-12-11 devnull {
363 cbeb0b26 2006-04-01 devnull Option* next; /* next in list of options for a field */
364 cbeb0b26 2006-04-01 devnull int selected; /* true if selected initially */
365 cbeb0b26 2006-04-01 devnull Rune* value; /* value attr */
366 cbeb0b26 2006-04-01 devnull Rune* display; /* display string */
367 7f11104a 2003-12-11 devnull };
368 7f11104a 2003-12-11 devnull
369 cbeb0b26 2006-04-01 devnull /* Form holds info about a form */
370 7f11104a 2003-12-11 devnull struct Form
371 7f11104a 2003-12-11 devnull {
372 cbeb0b26 2006-04-01 devnull Form* next; /* in list of forms for document */
373 cbeb0b26 2006-04-01 devnull int formid; /* serial no. of form within its doc */
374 cbeb0b26 2006-04-01 devnull Rune* name; /* name or id attr (netscape uses name, HTML 4.0 uses id) */
375 cbeb0b26 2006-04-01 devnull Rune* action; /* action attr */
376 cbeb0b26 2006-04-01 devnull int target; /* target attr as targetid */
377 cbeb0b26 2006-04-01 devnull int method; /* HGet or HPost */
378 cbeb0b26 2006-04-01 devnull int nfields; /* number of fields */
379 cbeb0b26 2006-04-01 devnull Formfield* fields; /* field's forms, in input order */
380 7f11104a 2003-12-11 devnull };
381 7f11104a 2003-12-11 devnull
382 cbeb0b26 2006-04-01 devnull /* Flags used in various table structures */
383 7f11104a 2003-12-11 devnull enum {
384 7f11104a 2003-12-11 devnull TFparsing = (1<<7),
385 7f11104a 2003-12-11 devnull TFnowrap = (1<<6),
386 7f11104a 2003-12-11 devnull TFisth = (1<<5)
387 7f11104a 2003-12-11 devnull };
388 7f11104a 2003-12-11 devnull
389 7f11104a 2003-12-11 devnull
390 cbeb0b26 2006-04-01 devnull /* Information about a table */
391 7f11104a 2003-12-11 devnull struct Table
392 7f11104a 2003-12-11 devnull {
393 cbeb0b26 2006-04-01 devnull Table* next; /* next in list of document's tables */
394 cbeb0b26 2006-04-01 devnull int tableid; /* serial no. of table within its doc */
395 cbeb0b26 2006-04-01 devnull Tablerow* rows; /* array of row specs (list during parsing) */
396 cbeb0b26 2006-04-01 devnull int nrow; /* total number of rows */
397 cbeb0b26 2006-04-01 devnull Tablecol* cols; /* array of column specs */
398 cbeb0b26 2006-04-01 devnull int ncol; /* total number of columns */
399 cbeb0b26 2006-04-01 devnull Tablecell* cells; /* list of unique cells */
400 cbeb0b26 2006-04-01 devnull int ncell; /* total number of cells */
401 cbeb0b26 2006-04-01 devnull Tablecell*** grid; /* 2-D array of cells */
402 cbeb0b26 2006-04-01 devnull Align align; /* alignment spec for whole table */
403 cbeb0b26 2006-04-01 devnull Dimen width; /* width spec for whole table */
404 cbeb0b26 2006-04-01 devnull int border; /* border attr */
405 cbeb0b26 2006-04-01 devnull int cellspacing; /* cellspacing attr */
406 cbeb0b26 2006-04-01 devnull int cellpadding; /* cellpadding attr */
407 cbeb0b26 2006-04-01 devnull Background background; /* table background */
408 cbeb0b26 2006-04-01 devnull Item* caption; /* linked list of Items, giving caption */
409 cbeb0b26 2006-04-01 devnull uchar caption_place; /* ALtop or ALbottom */
410 cbeb0b26 2006-04-01 devnull Lay* caption_lay; /* layout of caption */
411 cbeb0b26 2006-04-01 devnull int totw; /* total width */
412 cbeb0b26 2006-04-01 devnull int toth; /* total height */
413 cbeb0b26 2006-04-01 devnull int caph; /* caption height */
414 cbeb0b26 2006-04-01 devnull int availw; /* used for previous 3 sizes */
415 cbeb0b26 2006-04-01 devnull Token* tabletok; /* token that started the table */
416 cbeb0b26 2006-04-01 devnull uchar flags; /* Lchanged, perhaps */
417 7f11104a 2003-12-11 devnull };
418 7f11104a 2003-12-11 devnull
419 7f11104a 2003-12-11 devnull
420 7f11104a 2003-12-11 devnull struct Tablecol
421 7f11104a 2003-12-11 devnull {
422 7f11104a 2003-12-11 devnull int width;
423 7f11104a 2003-12-11 devnull Align align;
424 7f11104a 2003-12-11 devnull Point pos;
425 7f11104a 2003-12-11 devnull };
426 7f11104a 2003-12-11 devnull
427 7f11104a 2003-12-11 devnull
428 7f11104a 2003-12-11 devnull struct Tablerow
429 7f11104a 2003-12-11 devnull {
430 cbeb0b26 2006-04-01 devnull Tablerow* next; /* Next in list of rows, during parsing */
431 cbeb0b26 2006-04-01 devnull Tablecell* cells; /* Cells in row, linked through nextinrow */
432 7f11104a 2003-12-11 devnull int height;
433 7f11104a 2003-12-11 devnull int ascent;
434 7f11104a 2003-12-11 devnull Align align;
435 7f11104a 2003-12-11 devnull Background background;
436 7f11104a 2003-12-11 devnull Point pos;
437 cbeb0b26 2006-04-01 devnull uchar flags; /* 0 or TFparsing */
438 7f11104a 2003-12-11 devnull };
439 7f11104a 2003-12-11 devnull
440 7f11104a 2003-12-11 devnull
441 cbeb0b26 2006-04-01 devnull /* A Tablecell is one cell of a table. */
442 cbeb0b26 2006-04-01 devnull /* It may span multiple rows and multiple columns. */
443 cbeb0b26 2006-04-01 devnull /* Cells are linked on two lists: the list for all the cells of */
444 cbeb0b26 2006-04-01 devnull /* a document (the next pointers), and the list of all the */
445 cbeb0b26 2006-04-01 devnull /* cells that start in a given row (the nextinrow pointers) */
446 7f11104a 2003-12-11 devnull struct Tablecell
447 7f11104a 2003-12-11 devnull {
448 cbeb0b26 2006-04-01 devnull Tablecell* next; /* next in list of table's cells */
449 cbeb0b26 2006-04-01 devnull Tablecell* nextinrow; /* next in list of row's cells */
450 cbeb0b26 2006-04-01 devnull int cellid; /* serial no. of cell within table */
451 cbeb0b26 2006-04-01 devnull Item* content; /* contents before layout */
452 cbeb0b26 2006-04-01 devnull Lay* lay; /* layout of cell */
453 cbeb0b26 2006-04-01 devnull int rowspan; /* number of rows spanned by this cell */
454 cbeb0b26 2006-04-01 devnull int colspan; /* number of cols spanned by this cell */
455 cbeb0b26 2006-04-01 devnull Align align; /* alignment spec */
456 cbeb0b26 2006-04-01 devnull uchar flags; /* TFparsing, TFnowrap, TFisth */
457 cbeb0b26 2006-04-01 devnull Dimen wspec; /* suggested width */
458 cbeb0b26 2006-04-01 devnull int hspec; /* suggested height */
459 cbeb0b26 2006-04-01 devnull Background background; /* cell background */
460 cbeb0b26 2006-04-01 devnull int minw; /* minimum possible width */
461 cbeb0b26 2006-04-01 devnull int maxw; /* maximum width */
462 cbeb0b26 2006-04-01 devnull int ascent; /* cell's ascent */
463 cbeb0b26 2006-04-01 devnull int row; /* row of upper left corner */
464 cbeb0b26 2006-04-01 devnull int col; /* col of upper left corner */
465 cbeb0b26 2006-04-01 devnull Point pos; /* nw corner of cell contents, in cell */
466 7f11104a 2003-12-11 devnull };
467 7f11104a 2003-12-11 devnull
468 cbeb0b26 2006-04-01 devnull /* Anchor is for info about hyperlinks that go somewhere */
469 7f11104a 2003-12-11 devnull struct Anchor
470 7f11104a 2003-12-11 devnull {
471 cbeb0b26 2006-04-01 devnull Anchor* next; /* next in list of document's anchors */
472 cbeb0b26 2006-04-01 devnull int index; /* serial no. of anchor within its doc */
473 cbeb0b26 2006-04-01 devnull Rune* name; /* name attr */
474 cbeb0b26 2006-04-01 devnull Rune* href; /* href attr */
475 cbeb0b26 2006-04-01 devnull int target; /* target attr as targetid */
476 7f11104a 2003-12-11 devnull };
477 7f11104a 2003-12-11 devnull
478 7f11104a 2003-12-11 devnull
479 cbeb0b26 2006-04-01 devnull /* DestAnchor is for info about hyperlinks that are destinations */
480 7f11104a 2003-12-11 devnull struct DestAnchor
481 7f11104a 2003-12-11 devnull {
482 cbeb0b26 2006-04-01 devnull DestAnchor* next; /* next in list of document's destanchors */
483 cbeb0b26 2006-04-01 devnull int index; /* serial no. of anchor within its doc */
484 cbeb0b26 2006-04-01 devnull Rune* name; /* name attr */
485 cbeb0b26 2006-04-01 devnull Item* item; /* the destination */
486 7f11104a 2003-12-11 devnull };
487 7f11104a 2003-12-11 devnull
488 7f11104a 2003-12-11 devnull
489 cbeb0b26 2006-04-01 devnull /* Maps (client side) */
490 7f11104a 2003-12-11 devnull struct Map
491 7f11104a 2003-12-11 devnull {
492 cbeb0b26 2006-04-01 devnull Map* next; /* next in list of document's maps */
493 cbeb0b26 2006-04-01 devnull Rune* name; /* map name */
494 cbeb0b26 2006-04-01 devnull Area* areas; /* list of map areas */
495 7f11104a 2003-12-11 devnull };
496 7f11104a 2003-12-11 devnull
497 7f11104a 2003-12-11 devnull
498 7f11104a 2003-12-11 devnull struct Area
499 7f11104a 2003-12-11 devnull {
500 cbeb0b26 2006-04-01 devnull Area* next; /* next in list of a map's areas */
501 cbeb0b26 2006-04-01 devnull int shape; /* SHrect, etc. */
502 cbeb0b26 2006-04-01 devnull Rune* href; /* associated hypertext link */
503 cbeb0b26 2006-04-01 devnull int target; /* associated target frame */
504 cbeb0b26 2006-04-01 devnull Dimen* coords; /* array of coords for shape */
505 cbeb0b26 2006-04-01 devnull int ncoords; /* size of coords array */
506 7f11104a 2003-12-11 devnull };
507 7f11104a 2003-12-11 devnull
508 cbeb0b26 2006-04-01 devnull /* Area shapes */
509 7f11104a 2003-12-11 devnull enum {
510 7f11104a 2003-12-11 devnull SHrect, SHcircle, SHpoly
511 7f11104a 2003-12-11 devnull };
512 7f11104a 2003-12-11 devnull
513 cbeb0b26 2006-04-01 devnull /* Fonts are represented by integers: style*NumSize + size */
514 7f11104a 2003-12-11 devnull
515 cbeb0b26 2006-04-01 devnull /* Font styles */
516 7f11104a 2003-12-11 devnull enum {
517 cbeb0b26 2006-04-01 devnull FntR, /* roman */
518 cbeb0b26 2006-04-01 devnull FntI, /* italic */
519 cbeb0b26 2006-04-01 devnull FntB, /* bold */
520 cbeb0b26 2006-04-01 devnull FntT, /* typewriter */
521 7f11104a 2003-12-11 devnull NumStyle
522 7f11104a 2003-12-11 devnull };
523 7f11104a 2003-12-11 devnull
524 cbeb0b26 2006-04-01 devnull /* Font sizes */
525 7f11104a 2003-12-11 devnull enum {
526 7f11104a 2003-12-11 devnull Tiny,
527 7f11104a 2003-12-11 devnull Small,
528 7f11104a 2003-12-11 devnull Normal,
529 7f11104a 2003-12-11 devnull Large,
530 7f11104a 2003-12-11 devnull Verylarge,
531 7f11104a 2003-12-11 devnull NumSize
532 7f11104a 2003-12-11 devnull };
533 7f11104a 2003-12-11 devnull
534 7f11104a 2003-12-11 devnull enum {
535 7f11104a 2003-12-11 devnull NumFnt = (NumStyle*NumSize),
536 7f11104a 2003-12-11 devnull DefFnt = (FntR*NumSize+Normal)
537 7f11104a 2003-12-11 devnull };
538 7f11104a 2003-12-11 devnull
539 cbeb0b26 2006-04-01 devnull /* Lines are needed through some text items, for underlining or strikethrough */
540 7f11104a 2003-12-11 devnull enum {
541 7f11104a 2003-12-11 devnull ULnone, ULunder, ULmid
542 7f11104a 2003-12-11 devnull };
543 7f11104a 2003-12-11 devnull
544 cbeb0b26 2006-04-01 devnull /* Kidinfo flags */
545 7f11104a 2003-12-11 devnull enum {
546 7f11104a 2003-12-11 devnull FRnoresize = (1<<0),
547 7f11104a 2003-12-11 devnull FRnoscroll = (1<<1),
548 7f11104a 2003-12-11 devnull FRhscroll = (1<<2),
549 7f11104a 2003-12-11 devnull FRvscroll = (1<<3),
550 7f11104a 2003-12-11 devnull FRhscrollauto = (1<<4),
551 7f11104a 2003-12-11 devnull FRvscrollauto = (1<<5)
552 7f11104a 2003-12-11 devnull };
553 7f11104a 2003-12-11 devnull
554 cbeb0b26 2006-04-01 devnull /* Information about child frame or frameset */
555 7f11104a 2003-12-11 devnull struct Kidinfo
556 7f11104a 2003-12-11 devnull {
557 cbeb0b26 2006-04-01 devnull Kidinfo* next; /* in list of kidinfos for a frameset */
558 7f11104a 2003-12-11 devnull int isframeset;
559 7f11104a 2003-12-11 devnull
560 cbeb0b26 2006-04-01 devnull /* fields for "frame" */
561 cbeb0b26 2006-04-01 devnull Rune* src; /* only nil if a "dummy" frame or this is frameset */
562 cbeb0b26 2006-04-01 devnull Rune* name; /* always non-empty if this isn't frameset */
563 7f11104a 2003-12-11 devnull int marginw;
564 7f11104a 2003-12-11 devnull int marginh;
565 7f11104a 2003-12-11 devnull int framebd;
566 7f11104a 2003-12-11 devnull int flags;
567 7f11104a 2003-12-11 devnull
568 cbeb0b26 2006-04-01 devnull /* fields for "frameset" */
569 cbeb0b26 2006-04-01 devnull Dimen* rows; /* array of row dimensions */
570 cbeb0b26 2006-04-01 devnull int nrows; /* length of rows */
571 cbeb0b26 2006-04-01 devnull Dimen* cols; /* array of col dimensions */
572 cbeb0b26 2006-04-01 devnull int ncols; /* length of cols */
573 7f11104a 2003-12-11 devnull Kidinfo* kidinfos;
574 cbeb0b26 2006-04-01 devnull Kidinfo* nextframeset; /* parsing stack */
575 7f11104a 2003-12-11 devnull };
576 7f11104a 2003-12-11 devnull
577 7f11104a 2003-12-11 devnull
578 cbeb0b26 2006-04-01 devnull /* Document info (global information about HTML page) */
579 7f11104a 2003-12-11 devnull struct Docinfo
580 7f11104a 2003-12-11 devnull {
581 cbeb0b26 2006-04-01 devnull /* stuff from HTTP headers, doc head, and body tag */
582 cbeb0b26 2006-04-01 devnull Rune* src; /* original source of doc */
583 cbeb0b26 2006-04-01 devnull Rune* base; /* base URL of doc */
584 cbeb0b26 2006-04-01 devnull Rune* doctitle; /* from <title> element */
585 cbeb0b26 2006-04-01 devnull Background background; /* background specification */
586 cbeb0b26 2006-04-01 devnull Iimage* backgrounditem; /* Image Item for doc background image, or nil */
587 cbeb0b26 2006-04-01 devnull int text; /* doc foreground (text) color */
588 cbeb0b26 2006-04-01 devnull int link; /* unvisited hyperlink color */
589 cbeb0b26 2006-04-01 devnull int vlink; /* visited hyperlink color */
590 cbeb0b26 2006-04-01 devnull int alink; /* highlighting hyperlink color */
591 cbeb0b26 2006-04-01 devnull int target; /* target frame default */
592 cbeb0b26 2006-04-01 devnull int chset; /* ISO_8859, etc. */
593 cbeb0b26 2006-04-01 devnull int mediatype; /* TextHtml, etc. */
594 cbeb0b26 2006-04-01 devnull int scripttype; /* TextJavascript, etc. */
595 cbeb0b26 2006-04-01 devnull int hasscripts; /* true if scripts used */
596 cbeb0b26 2006-04-01 devnull Rune* refresh; /* content of <http-equiv=Refresh ...> */
597 cbeb0b26 2006-04-01 devnull Kidinfo* kidinfo; /* if a frameset */
598 cbeb0b26 2006-04-01 devnull int frameid; /* id of document frame */
599 7f11104a 2003-12-11 devnull
600 cbeb0b26 2006-04-01 devnull /* info needed to respond to user actions */
601 cbeb0b26 2006-04-01 devnull Anchor* anchors; /* list of href anchors */
602 cbeb0b26 2006-04-01 devnull DestAnchor* dests; /* list of destination anchors */
603 cbeb0b26 2006-04-01 devnull Form* forms; /* list of forms */
604 cbeb0b26 2006-04-01 devnull Table* tables; /* list of tables */
605 cbeb0b26 2006-04-01 devnull Map* maps; /* list of maps */
606 cbeb0b26 2006-04-01 devnull Iimage* images; /* list of image items (through nextimage links) */
607 7f11104a 2003-12-11 devnull };
608 7f11104a 2003-12-11 devnull
609 7f11104a 2003-12-11 devnull extern int dimenkind(Dimen d);
610 7f11104a 2003-12-11 devnull extern int dimenspec(Dimen d);
611 7f11104a 2003-12-11 devnull extern void freedocinfo(Docinfo* d);
612 7f11104a 2003-12-11 devnull extern void freeitems(Item* ithead);
613 7f11104a 2003-12-11 devnull extern Item* parsehtml(uchar* data, int datalen, Rune* src, int mtype, int chset, Docinfo** pdi);
614 7f11104a 2003-12-11 devnull extern void printitems(Item* items, char* msg);
615 7f11104a 2003-12-11 devnull extern int targetid(Rune* s);
616 7f11104a 2003-12-11 devnull extern Rune* targetname(int targid);
617 7f11104a 2003-12-11 devnull extern int validitems(Item* i);
618 7f11104a 2003-12-11 devnull
619 650deb79 2004-04-08 devnull /* #pragma varargck type "I" Item* */
620 7f11104a 2003-12-11 devnull
621 cbeb0b26 2006-04-01 devnull /* Control print output */
622 7f11104a 2003-12-11 devnull extern int warn;
623 7f11104a 2003-12-11 devnull extern int dbglex;
624 7f11104a 2003-12-11 devnull extern int dbgbuild;
625 7f11104a 2003-12-11 devnull
626 cbeb0b26 2006-04-01 devnull /* To be provided by caller */
627 cbeb0b26 2006-04-01 devnull /* emalloc and erealloc should not return if can't get memory. */
628 cbeb0b26 2006-04-01 devnull /* emalloc should zero its memory. */
629 7f11104a 2003-12-11 devnull extern void* emalloc(ulong);
630 7f11104a 2003-12-11 devnull extern void* erealloc(void* p, ulong size);
631 7f11104a 2003-12-11 devnull #ifdef __cpluspplus
632 7f11104a 2003-12-11 devnull }
633 7f11104a 2003-12-11 devnull #endif
634 7f11104a 2003-12-11 devnull #endif