Cancel redefinition of DOSBase for the 'cdrom' test utility. Now the
[AROS.git] / workbench / classes / datatypes / html / tables.c
blob3e72065feb558d65b8d55fa1eeeaf6140cbe3a5a
1 /*
2 Copyright © 2004, Martin Gierich. All rights reserved.
3 Licensed under the terms of the AROS Public License (APL)
4 $Id$
6 Desc: Tables with HTML tags, attributes, character entities and other stuff
7 */
9 #include <stdlib.h>
10 #include <stdio.h>
12 #include "common.h"
13 #include "parse.h"
14 #include "tables.h"
16 /*******************************************************************************************/
17 /* Data Arrays */
19 /*-----------------------------------------------------------------------------------------*/
20 /* HTML Tags */
21 tag_struct List_of_Tags[MAX_Tags] =
23 /* XHTML Structure Module */
24 {"html", &tag_html_open, NULL, LEVEL_top, LEVEL_html, TSF_HASNOTEXT},
25 {"head", NULL, NULL, LEVEL_html, LEVEL_head, TSF_HASNOTEXT},
26 {"title", NULL, &tag_title_close, LEVEL_head, LEVEL_inline, TSF_PRELAYOUT},
27 {"body", NULL, NULL, LEVEL_html, LEVEL_block, 0},
28 {"!--", &tag_comment, NULL, LEVEL_none, LEVEL_none, TSF_NOCLOSETAG}, /* all levels */
29 /* XHTML Text Module */
30 {"br", &tag_br, NULL, LEVEL_inline, LEVEL_inline, TSF_INLINE | TSF_NOCLOSETAG},
31 {"div", NULL, NULL, LEVEL_block, LEVEL_block, TSF_NESTING},
32 {"h1", &tag_h1_open, NULL, LEVEL_block, LEVEL_inline, TSF_PARAGRAPH},
33 {"h2", &tag_h2_open, NULL, LEVEL_block, LEVEL_inline, TSF_PARAGRAPH},
34 {"p", &tag_p_open, NULL, LEVEL_block, LEVEL_inline, TSF_PARAGRAPH},
35 {"pre", &tag_pre_open, NULL, LEVEL_block, LEVEL_inline, TSF_PARAGRAPH | TSF_PRELAYOUT},
36 {"span", NULL, NULL, LEVEL_inline, LEVEL_inline, TSF_INLINE | TSF_NESTING},
37 /* XHTML Presentation Module */
38 {"b", &tag_b_open, NULL, LEVEL_inline, LEVEL_inline, TSF_INLINE},
39 {"big", &tag_big_open, NULL, LEVEL_inline, LEVEL_inline, TSF_INLINE | TSF_NESTING},
40 {"hr", &tag_hr, NULL, LEVEL_block, LEVEL_block, TSF_PARAGRAPH | TSF_NOCLOSETAG},
41 {"i", &tag_i_open, NULL, LEVEL_inline, LEVEL_inline, TSF_INLINE},
42 {"small", &tag_small_open, NULL, LEVEL_inline, LEVEL_inline, TSF_INLINE | TSF_NESTING},
43 {"tt", &tag_tt_open, NULL, LEVEL_inline, LEVEL_inline, TSF_INLINE},
44 /* XHTML Hypertext Module */
45 {"a", &tag_a_open, NULL, LEVEL_inline, LEVEL_inline, TSF_INLINE},
46 /* XHTML Image Module */
47 {"img", &tag_img, NULL, LEVEL_inline, LEVEL_inline, TSF_INLINE | TSF_NOCLOSETAG},
50 /*-----------------------------------------------------------------------------------------*/
51 /* HTML Tag Attributes */
52 attr_struct List_of_Attrs[MAX_Attrs] =
54 {"href", 0},
55 {"src", 0},
56 {"alt", 0},
59 /*-----------------------------------------------------------------------------------------*/
60 /* Paragraphs */
61 para_struct List_of_Paras[MAX_Paras] =
63 /* PARA_h1 */ {paramask: {fl:{ align: ALIGN_CENTER }},
64 paraflags: {fl:{ align: ALIGN_CENTER }},
65 stylemask: {fl:{ bold: 1, fontsize: 10 }},
66 styleflags: {fl:{ bold: 1, fontsize: 10 }},
67 fontname: "arial",
68 fontsize: 20,
69 indent: 0 },
70 /* PARA_h2 */ {paramask: {fl:{ align: ALIGN_CENTER }},
71 paraflags: {fl:{ align: ALIGN_CENTER }},
72 stylemask: {fl:{ bold: 1, fontsize: 9 }},
73 styleflags: {fl:{ bold: 1, fontsize: 9 }},
74 fontname: "arial",
75 fontsize: 16,
76 indent: 0 },
77 /* PARA_p */ {paramask: {fl:{ align: ALIGN_LEFT }},
78 paraflags: {fl:{ align: ALIGN_LEFT }},
79 stylemask: {fl:{ }},
80 styleflags: {fl:{ }},
81 fontname: "arial",
82 fontsize: 13,
83 indent: 0 },
84 /* PARA_pre */ {paramask: {fl:{ align: ALIGN_LEFT, nowordwrap: 1 }},
85 paraflags: {fl:{ align: ALIGN_LEFT, nowordwrap: 1 }},
86 stylemask: {fl:{ fixedwidth: 1 }},
87 styleflags: {fl:{ fixedwidth: 1 }},
88 fontname: "ttcourier",
89 fontsize: 12,
90 indent: 20 },
93 /*-----------------------------------------------------------------------------------------*/
94 /* Escape sequences */
95 esc_struct List_of_Escs[MAX_Escs] =
97 {"quot", 34},
98 {"amp", 38},
99 {"lt", 60},
100 {"gt", 62},
101 {"euro", 128},
102 {"nbsp", 160},
103 {"iexcl", 161},
104 {"cent", 162},
105 {"pound", 163},
106 {"curren", 164},
107 {"yen", 165},
108 {"brvbar", 166},
109 {"sect", 167},
110 {"uml", 168},
111 {"copy", 169},
112 {"ordf", 170},
113 {"laquo", 171},
114 {"not", 172},
115 {"shy", 173},
116 {"reg", 174},
117 {"macr", 175},
118 {"deg", 176},
119 {"plusmn", 177},
120 {"sup2", 178},
121 {"sup3", 179},
122 {"acute", 180},
123 {"micro", 181},
124 {"para", 182},
125 {"middot", 183},
126 {"cedil", 184},
127 {"sup1", 185},
128 {"ordm", 186},
129 {"raquo", 187},
130 {"frac14", 188},
131 {"frac12", 189},
132 {"frac34", 190},
133 {"iquest", 191},
134 {"Agrave", 192},
135 {"Aacute", 193},
136 {"Acirc", 194},
137 {"Atilde", 195},
138 {"Auml", 196},
139 {"Aring", 197},
140 {"AElig", 198},
141 {"Ccedil", 199},
142 {"Egrave", 200},
143 {"Eacute", 201},
144 {"Ecirc", 202},
145 {"Euml", 203},
146 {"Igrave", 204},
147 {"Iacute", 205},
148 {"Icirc", 206},
149 {"Iuml", 207},
150 {"ETH", 208},
151 {"Ntilde", 209},
152 {"Ograve", 210},
153 {"Oacute", 211},
154 {"Ocirc", 212},
155 {"Otilde", 213},
156 {"Ouml", 214},
157 {"times", 215},
158 {"Oslash", 216},
159 {"Ugrave", 217},
160 {"Uacute", 218},
161 {"Ucirc", 219},
162 {"Uuml", 220},
163 {"Yacute", 221},
164 {"THORN", 222},
165 {"szlig", 223},
166 {"agrave", 224},
167 {"aacute", 225},
168 {"acirc", 226},
169 {"atilde", 227},
170 {"auml", 228},
171 {"aring", 229},
172 {"aelig", 230},
173 {"ccedil", 231},
174 {"egrave", 232},
175 {"eacute", 233},
176 {"ecirc", 234},
177 {"euml", 235},
178 {"igrave", 236},
179 {"iacute", 237},
180 {"icirc", 238},
181 {"iuml", 239},
182 {"eth", 240},
183 {"ntilde", 241},
184 {"ograve", 242},
185 {"oacute", 243},
186 {"ocirc", 244},
187 {"otilde", 245},
188 {"ouml", 246},
189 {"divide", 247},
190 {"oslash", 248},
191 {"ugrave", 249},
192 {"uacute", 250},
193 {"ucirc", 251},
194 {"uuml", 252},
195 {"yacute", 253},
196 {"thorn", 254},
197 {"yuml", 255},
200 /*-----------------------------------------------------------------------------------------*/
201 /* Colors */
202 color_struct List_of_Colors[MAX_Colors] =
204 {"black", 0x000000},
205 {"green", 0x008000},
206 {"silver", 0xc0c0c0},
207 {"lime", 0x00ff00},
208 {"gray", 0x808080},
209 {"olive", 0x808000},
210 {"white", 0xffffff},
211 {"yellow", 0xffff00},
212 {"maroon", 0x800000},
213 {"navy", 0x000080},
214 {"red", 0xff0000},
215 {"blue", 0x0000ff},
216 {"purple", 0x800080},
217 {"teal", 0x008080},
218 {"fuchsia", 0xff00ff},
219 {"aqua", 0x00ffff},
222 /*-----------------------------------------------------------------------------------------*/
223 /* Levels */
224 string List_of_Levels[MAX_Levels] =
226 "none", "top", "html", "head", "block", "inline", "list", "table",
229 /*-----------------------------------------------------------------------------------------*/
230 /* Charlist */
231 char charlist[256] =
233 /* 00-0f */ CHRGROUP_CTRL, CHRGROUP_CTRL, CHRGROUP_CTRL, CHRGROUP_CTRL,
234 CHRGROUP_CTRL, CHRGROUP_CTRL, CHRGROUP_CTRL, CHRGROUP_CTRL,
235 CHRGROUP_CTRL, CHRGROUP_SPACE /*TAB*/, CHRGROUP_SPACE /*LF*/, CHRGROUP_CTRL,
236 CHRGROUP_CTRL, CHRGROUP_SPACE /*CR*/, CHRGROUP_CTRL, CHRGROUP_CTRL,
237 /* 10-1f */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
238 /* 20-2f */ CHRGROUP_SPACE /*SPACE*/, 0, CHR_QUOTE /*"*/, 0, 0, 0, CHR_ESCAPE /*&*/, 0,
239 0, 0, 0, 0, 0, 0, 0, 0,
240 /* 30-3f */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CHR_TAGSTART /*<*/, 0, CHR_TAGEND /*>*/, 0,
241 /* 40-4f */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
242 /* 50-5f */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
243 /* 60-6f */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
244 /* 70-7f */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CHRGROUP_CTRL,
245 /* 80-8f */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
246 /* 90-9f */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
247 /* a0-af */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
248 /* b0-bf */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
249 /* c0-cf */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
250 /* d0-df */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
251 /* e0-ef */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
252 /* f0-ff */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
254 /*-----------------------------------------------------------------------------------------*/