~ubuntu-branches/ubuntu/warty/lynx/warty-security

« back to all changes in this revision

Viewing changes to src/DefaultStyle.c

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2004-09-16 12:14:10 UTC
  • Revision ID: james.westby@ubuntu.com-20040916121410-cz1gu92c4nqfeyrg
Tags: upstream-2.8.5
ImportĀ upstreamĀ versionĀ 2.8.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*      A real style sheet for the Character Grid browser
 
2
**
 
3
**      The dimensions are all in characters!
 
4
*/
 
5
 
 
6
#include <HTUtils.h>
 
7
#include <HTFont.h>
 
8
#include <HTStyle.h>
 
9
 
 
10
#include <LYLeaks.h>
 
11
 
 
12
/*      Tab arrays:
 
13
*/
 
14
PRIVATE CONST HTTabStop tabs_8[] = {
 
15
        { 0, 8 }, {0, 16}, {0, 24}, {0, 32}, {0, 40},
 
16
        { 0, 48 }, {0, 56}, {0, 64}, {0, 72}, {0, 80},
 
17
        { 0, 88 }, {0, 96}, {0, 104}, {0, 112}, {0, 120},
 
18
        { 0, 128 }, {0, 136}, {0, 144}, {0, 152}, {0, 160},
 
19
        {0, 168}, {0, 176},
 
20
        {0, 0 }         /* Terminate */
 
21
};
 
22
 
 
23
/* Template:
 
24
**      link to next, name, name id (enum), tag,
 
25
**      font, size, colour, superscript, anchor id,
 
26
**      indents: 1st, left, right, alignment    lineheight, descent,    tabs,
 
27
**      word wrap, free format, space: before, after, flags.
 
28
*/
 
29
 
 
30
PRIVATE HTStyle HTStyleNormal = {
 
31
        0,  "Normal", ST_Normal, "P",
 
32
        HT_FONT, 1, HT_BLACK,           0, 0,
 
33
        3, 3, 6, HT_LEFT,               1, 0,   tabs_8,
 
34
        YES, YES, 1, 0,                 0 };
 
35
 
 
36
PRIVATE HTStyle HTStyleDivCenter = {
 
37
        &HTStyleNormal,  "DivCenter", ST_DivCenter, "DCENTER",
 
38
        HT_FONT, 1, HT_BLACK,           0, 0,
 
39
        3, 3, 6, HT_CENTER,             1, 0,   tabs_8,
 
40
        YES, YES, 1, 0,                 0 };
 
41
 
 
42
PRIVATE HTStyle HTStyleDivLeft = {
 
43
        &HTStyleDivCenter,  "DivLeft", ST_DivLeft, "DLEFT",
 
44
        HT_FONT, 1, HT_BLACK,           0, 0,
 
45
        3, 3, 6, HT_LEFT,               1, 0,   tabs_8,
 
46
        YES, YES, 1, 0,                 0 };
 
47
 
 
48
PRIVATE HTStyle HTStyleDivRight = {
 
49
        &HTStyleDivLeft,  "DivRight", ST_DivRight, "DRIGHT",
 
50
        HT_FONT, 1, HT_BLACK,           0, 0,
 
51
        3, 3, 6, HT_RIGHT,              1, 0,   tabs_8,
 
52
        YES, YES, 1, 0,                 0 };
 
53
 
 
54
PRIVATE HTStyle HTStyleBanner = {
 
55
        &HTStyleDivRight,  "Banner", ST_Banner, "BANNER",
 
56
        HT_FONT, 1, HT_BLACK,           0, 0,
 
57
        3, 3, 6, HT_LEFT,               1, 0,   tabs_8,
 
58
        YES, YES, 1, 0,                 0 };
 
59
 
 
60
PRIVATE HTStyle HTStyleBlockquote = {
 
61
        &HTStyleBanner,  "Blockquote", ST_Blockquote, "BLOCKQUOTE",
 
62
        HT_FONT, 1, HT_BLACK,           0, 0,
 
63
        5, 5, 7, HT_LEFT,               1, 0,   tabs_8,
 
64
        YES, YES, 1, 0,                 0 };
 
65
 
 
66
PRIVATE HTStyle HTStyleBq = { /* HTML 3.0 BLOCKQUOTE - FM */
 
67
        &HTStyleBlockquote,  "Bq", ST_Bq, "BQ",
 
68
        HT_FONT, 1, HT_BLACK,           0, 0,
 
69
        5, 5, 7, HT_LEFT,               1, 0,   tabs_8,
 
70
        YES, YES, 1, 0,                 0 };
 
71
 
 
72
PRIVATE HTStyle HTStyleFootnote = { /* HTML 3.0 FN - FM */
 
73
        &HTStyleBq,  "Footnote", ST_Footnote, "FN",
 
74
        HT_FONT, 1, HT_BLACK,           0, 0,
 
75
        5, 5, 7, HT_LEFT,               1, 0,   tabs_8,
 
76
        YES, YES, 1, 0,                 0 };
 
77
 
 
78
PRIVATE HTStyle HTStyleList = {
 
79
        &HTStyleFootnote,  "List", ST_List, "UL",
 
80
        HT_FONT, 1, HT_BLACK,           0, 0,
 
81
        3, 7, 6, HT_LEFT,               1, 0,   0,
 
82
        YES, YES, 0, 0,                 0 };
 
83
 
 
84
PRIVATE HTStyle HTStyleList1 = {
 
85
        &HTStyleList,  "List1", ST_List1, "UL",
 
86
        HT_FONT, 1, HT_BLACK,           0, 0,
 
87
        8, 12, 6, HT_LEFT,              1, 0,   0,
 
88
        YES, YES, 0, 0,                 0 };
 
89
 
 
90
PRIVATE HTStyle HTStyleList2 = {
 
91
        &HTStyleList1,  "List2", ST_List2, "UL",
 
92
        HT_FONT, 1, HT_BLACK,           0, 0,
 
93
        13, 17, 6, HT_LEFT,             1, 0,   0,
 
94
        YES, YES, 0, 0,                 0 };
 
95
 
 
96
PRIVATE HTStyle HTStyleList3 = {
 
97
        &HTStyleList2,  "List3", ST_List3, "UL",
 
98
        HT_FONT, 1, HT_BLACK,           0, 0,
 
99
        18, 22, 6, HT_LEFT,             1, 0,   0,
 
100
        YES, YES, 0, 0,                 0 };
 
101
 
 
102
PRIVATE HTStyle HTStyleList4 = {
 
103
        &HTStyleList3,  "List4", ST_List4, "UL",
 
104
        HT_FONT, 1, HT_BLACK,           0, 0,
 
105
        23, 27, 6, HT_LEFT,             1, 0,   0,
 
106
        YES, YES, 0, 0,                 0 };
 
107
 
 
108
PRIVATE HTStyle HTStyleList5 = {
 
109
        &HTStyleList4,  "List5", ST_List5, "UL",
 
110
        HT_FONT, 1, HT_BLACK,           0, 0,
 
111
        28, 32, 6, HT_LEFT,             1, 0,   0,
 
112
        YES, YES, 0, 0,                 0 };
 
113
 
 
114
PRIVATE HTStyle HTStyleList6 = {
 
115
        &HTStyleList5,  "List6", ST_List6, "UL",
 
116
        HT_FONT, 1, HT_BLACK,           0, 0,
 
117
        33, 37, 6, HT_LEFT,             1, 0,   0,
 
118
        YES, YES, 0, 0,                 0 };
 
119
 
 
120
PRIVATE HTStyle HTStyleMenu = {
 
121
        &HTStyleList6,  "Menu", ST_Menu, "MENU",
 
122
        HT_FONT, 1, HT_BLACK,           0, 0,
 
123
        3, 7, 6, HT_LEFT,               1, 0,   0,
 
124
        YES, YES, 0, 0,                 0
 
125
};
 
126
 
 
127
PRIVATE HTStyle HTStyleMenu1 = {
 
128
        &HTStyleMenu,  "Menu1", ST_Menu1, "MENU",
 
129
        HT_FONT, 1, HT_BLACK,           0, 0,
 
130
        8, 12, 6, HT_LEFT,              1, 0,   0,
 
131
        YES, YES, 0, 0,                 0
 
132
};
 
133
 
 
134
PRIVATE HTStyle HTStyleMenu2= {
 
135
        &HTStyleMenu1,  "Menu2", ST_Menu2, "MENU",
 
136
        HT_FONT, 1, HT_BLACK,           0, 0,
 
137
        13, 17, 6, HT_LEFT,             1, 0,   0,
 
138
        YES, YES, 0, 0,                 0
 
139
};
 
140
 
 
141
PRIVATE HTStyle HTStyleMenu3= {
 
142
        &HTStyleMenu2,  "Menu3", ST_Menu3, "MENU",
 
143
        HT_FONT, 1, HT_BLACK,           0, 0,
 
144
        18, 22, 6, HT_LEFT,             1, 0,   0,
 
145
        YES, YES, 0, 0,                 0
 
146
};
 
147
 
 
148
PRIVATE HTStyle HTStyleMenu4= {
 
149
        &HTStyleMenu3,  "Menu4", ST_Menu4, "MENU",
 
150
        HT_FONT, 1, HT_BLACK,           0, 0,
 
151
        23, 27, 6, HT_LEFT,             1, 0,   0,
 
152
        YES, YES, 0, 0,                 0
 
153
};
 
154
 
 
155
PRIVATE HTStyle HTStyleMenu5= {
 
156
        &HTStyleMenu4,  "Menu5", ST_Menu5, "MENU",
 
157
        HT_FONT, 1, HT_BLACK,           0, 0,
 
158
        28, 33, 6, HT_LEFT,             1, 0,   0,
 
159
        YES, YES, 0, 0,                 0
 
160
};
 
161
 
 
162
PRIVATE HTStyle HTStyleMenu6= {
 
163
        &HTStyleMenu5,  "Menu6", ST_Menu6, "MENU",
 
164
        HT_FONT, 1, HT_BLACK,           0, 0,
 
165
        33, 38, 6, HT_LEFT,             1, 0,   0,
 
166
        YES, YES, 0, 0,                 0
 
167
};
 
168
 
 
169
PRIVATE HTStyle HTStyleGlossary = {
 
170
        &HTStyleMenu6,  "Glossary", ST_Glossary, "DL",
 
171
        HT_FONT, 1, HT_BLACK,           0, 0,
 
172
        3, 10, 6, HT_LEFT,              1, 0,   0,
 
173
        YES, YES, 1, 1,                 0
 
174
};
 
175
 
 
176
PRIVATE HTStyle HTStyleGlossary1 = {
 
177
        &HTStyleGlossary,  "Glossary1", ST_Glossary1, "DL",
 
178
        HT_FONT, 1, HT_BLACK,           0, 0,
 
179
        8, 16, 6, HT_LEFT,              1, 0,   0,
 
180
        YES, YES, 1, 1,                 0
 
181
};
 
182
 
 
183
PRIVATE HTStyle HTStyleGlossary2 = {
 
184
        &HTStyleGlossary1,  "Glossary2", ST_Glossary2, "DL",
 
185
        HT_FONT, 1, HT_BLACK,           0, 0,
 
186
        14, 22, 6, HT_LEFT,             1, 0,   0,
 
187
        YES, YES, 1, 1,                 0
 
188
};
 
189
 
 
190
PRIVATE HTStyle HTStyleGlossary3 = {
 
191
        &HTStyleGlossary2,  "Glossary3", ST_Glossary3, "DL",
 
192
        HT_FONT, 1, HT_BLACK,           0, 0,
 
193
        20, 28, 6, HT_LEFT,             1, 0,   0,
 
194
        YES, YES, 1, 1,                 0
 
195
};
 
196
 
 
197
PRIVATE HTStyle HTStyleGlossary4 = {
 
198
        &HTStyleGlossary3,  "Glossary4", ST_Glossary4, "DL",
 
199
        HT_FONT, 1, HT_BLACK,           0, 0,
 
200
        26, 34, 6, HT_LEFT,             1, 0,   0,
 
201
        YES, YES, 1, 1,                 0
 
202
};
 
203
 
 
204
PRIVATE HTStyle HTStyleGlossary5 = {
 
205
        &HTStyleGlossary4,  "Glossary5", ST_Glossary5, "DL",
 
206
        HT_FONT, 1, HT_BLACK,           0, 0,
 
207
        32, 40, 6, HT_LEFT,             1, 0,   0,
 
208
        YES, YES, 1, 1,                 0
 
209
};
 
210
 
 
211
PRIVATE HTStyle HTStyleGlossary6 = {
 
212
        &HTStyleGlossary5,  "Glossary6", ST_Glossary6, "DL",
 
213
        HT_FONT, 1, HT_BLACK,           0, 0,
 
214
        38, 46, 6, HT_LEFT,             1, 0,   0,
 
215
        YES, YES, 1, 1,                 0
 
216
};
 
217
 
 
218
PRIVATE HTStyle HTStyleGlossaryCompact = {
 
219
        &HTStyleGlossary6,  "GlossaryCompact", ST_GlossaryCompact, "DLC",
 
220
        HT_FONT, 1, HT_BLACK,           0, 0,
 
221
        3, 10, 6, HT_LEFT,              1, 0,   0,
 
222
        YES, YES, 0, 0,                 0
 
223
};
 
224
 
 
225
PRIVATE HTStyle HTStyleGlossaryCompact1 = {
 
226
        &HTStyleGlossaryCompact,  "GlossaryCompact1", ST_GlossaryCompact1, "DLC",
 
227
        HT_FONT, 1, HT_BLACK,           0, 0,
 
228
        8, 15, 6, HT_LEFT,              1, 0,   0,
 
229
        YES, YES, 0, 0,                 0
 
230
};
 
231
 
 
232
PRIVATE HTStyle HTStyleGlossaryCompact2 = {
 
233
        &HTStyleGlossaryCompact1,  "GlossaryCompact2", ST_GlossaryCompact2, "DLC",
 
234
        HT_FONT, 1, HT_BLACK,           0, 0,
 
235
        13, 20, 6, HT_LEFT,             1, 0,   0,
 
236
        YES, YES, 0, 0,                 0
 
237
};
 
238
 
 
239
PRIVATE HTStyle HTStyleGlossaryCompact3 = {
 
240
        &HTStyleGlossaryCompact2,  "GlossaryCompact3", ST_GlossaryCompact3, "DLC",
 
241
        HT_FONT, 1, HT_BLACK,           0, 0,
 
242
        18, 25, 6, HT_LEFT,             1, 0,   0,
 
243
        YES, YES, 0, 0,                 0
 
244
};
 
245
 
 
246
PRIVATE HTStyle HTStyleGlossaryCompact4 = {
 
247
        &HTStyleGlossaryCompact3,  "GlossaryCompact4", ST_GlossaryCompact4, "DLC",
 
248
        HT_FONT, 1, HT_BLACK,           0, 0,
 
249
        23, 30, 6, HT_LEFT,             1, 0,   0,
 
250
        YES, YES, 0, 0,                 0
 
251
};
 
252
 
 
253
PRIVATE HTStyle HTStyleGlossaryCompact5 = {
 
254
        &HTStyleGlossaryCompact4,  "GlossaryCompact5", ST_GlossaryCompact5, "DLC",
 
255
        HT_FONT, 1, HT_BLACK,           0, 0,
 
256
        28, 35, 6, HT_LEFT,             1, 0,   0,
 
257
        YES, YES, 0, 0,                 0
 
258
};
 
259
 
 
260
PRIVATE HTStyle HTStyleGlossaryCompact6 = {
 
261
        &HTStyleGlossaryCompact5,  "GlossaryCompact6", ST_GlossaryCompact6, "DLC",
 
262
        HT_FONT, 1, HT_BLACK,           0, 0,
 
263
        33, 40, 6, HT_LEFT,             1, 0,   0,
 
264
        YES, YES, 0, 0,                 0
 
265
};
 
266
 
 
267
PRIVATE HTStyle HTStyleExample = {
 
268
        &HTStyleGlossaryCompact6,  "Example", ST_Example, "XMP",
 
269
        HT_FONT, 1, HT_BLACK,           0, 0,
 
270
        0, 0, 0, HT_LEFT,               1, 0,   tabs_8,
 
271
        NO, NO, 0, 0,                   0
 
272
};
 
273
 
 
274
PRIVATE HTStyle HTStylePreformatted = {
 
275
        &HTStyleExample,        "Preformatted", ST_Preformatted, "PRE",
 
276
        HT_FONT, 1, HT_BLACK,           0, 0,
 
277
        0, 0, 0, HT_LEFT,               1, 0,   tabs_8,
 
278
        NO, NO, 0, 0,                   0
 
279
};
 
280
 
 
281
PRIVATE HTStyle HTStyleListing = {
 
282
        &HTStylePreformatted,  "Listing", ST_Listing, "LISTING",
 
283
        HT_FONT, 1, HT_BLACK,           0, 0,
 
284
        0, 0, 0, HT_LEFT,               1, 0,   tabs_8,
 
285
        NO, NO, 0, 0,                   0 };
 
286
 
 
287
PRIVATE HTStyle HTStyleAddress = {
 
288
        &HTStyleListing,  "Address", ST_Address, "ADDRESS",
 
289
        HT_FONT, 1, HT_BLACK,           0, 0,
 
290
        4, 4, 7, HT_LEFT,               1, 0,   tabs_8,
 
291
        YES, YES, 2, 0,                 0 };
 
292
 
 
293
PRIVATE HTStyle HTStyleNote = { /* HTML 3.0 NOTE - FM */
 
294
        &HTStyleAddress,  "Note", ST_Note, "NOTE",
 
295
        HT_FONT, 1, HT_BLACK,           0, 0,
 
296
        5, 5, 7, HT_LEFT,               1, 0,   tabs_8,
 
297
        YES, YES, 1, 0,                 0 };
 
298
 
 
299
PRIVATE HTStyle HTStyleHeading1 = {
 
300
        &HTStyleNote,  "Heading1", ST_Heading1, "H1",
 
301
        HT_FONT+HT_BOLD, 1, HT_BLACK,   0, 0,
 
302
        0, 0, 0, HT_CENTER,             1, 0,   0,
 
303
        YES, YES, 1, 1,                 0 };
 
304
 
 
305
PRIVATE HTStyle HTStyleHeading2 = {
 
306
        &HTStyleHeading1,  "Heading2", ST_Heading2, "H2",
 
307
        HT_FONT+HT_BOLD, 1, HT_BLACK,   0, 0,
 
308
        0, 0, 0, HT_LEFT,               1, 0,   0,
 
309
        YES, YES, 1, 1,                 0 };
 
310
 
 
311
PRIVATE HTStyle HTStyleHeading3 = {
 
312
        &HTStyleHeading2,  "Heading3", ST_Heading3, "H3",
 
313
        HT_FONT+HT_BOLD, 1, HT_BLACK,   0, 0,
 
314
        2, 2, 0, HT_LEFT,               1, 0,   0,
 
315
        YES, YES, 1, 0,                 0 };
 
316
 
 
317
PRIVATE HTStyle HTStyleHeading4 = {
 
318
        &HTStyleHeading3,  "Heading4", ST_Heading4, "H4",
 
319
        HT_FONT+HT_BOLD, 1, HT_BLACK,   0, 0,
 
320
        4, 4, 0, HT_LEFT,               1, 0,   0,
 
321
        YES, YES, 1, 0,                 0 };
 
322
 
 
323
PRIVATE HTStyle HTStyleHeading5 = {
 
324
        &HTStyleHeading4,  "Heading5", ST_Heading5, "H5",
 
325
        HT_FONT+HT_BOLD, 1, HT_BLACK,   0, 0,
 
326
        6, 6, 0, HT_LEFT,               1, 0,   0,
 
327
        YES, YES, 1, 0,                 0 };
 
328
 
 
329
PRIVATE HTStyle HTStyleHeading6 = {
 
330
        &HTStyleHeading5,  "Heading6", ST_Heading6, "H6",
 
331
        HT_FONT+HT_BOLD, 1, HT_BLACK,   0, 0,
 
332
        8, 8, 0, HT_LEFT,               1, 0,   0,
 
333
        YES, YES, 1, 0,                 0 };
 
334
 
 
335
PRIVATE HTStyle HTStyleHeadingCenter = {
 
336
        &HTStyleHeading6,  "HeadingCenter", ST_HeadingCenter, "HCENTER",
 
337
        HT_FONT+HT_BOLD, 1, HT_BLACK,   0, 0,
 
338
        0, 0, 3, HT_CENTER,             1, 0,   tabs_8,
 
339
        YES, YES, 1, 0,                 0 };
 
340
 
 
341
PRIVATE HTStyle HTStyleHeadingLeft = {
 
342
        &HTStyleHeadingCenter,  "HeadingLeft", ST_HeadingLeft, "HLEFT",
 
343
        HT_FONT+HT_BOLD, 1, HT_BLACK,   0, 0,
 
344
        0, 0, 3, HT_LEFT,               1, 0,   tabs_8,
 
345
        YES, YES, 1, 0,                 0 };
 
346
 
 
347
PRIVATE HTStyle HTStyleHeadingRight = {
 
348
        &HTStyleHeadingLeft,  "HeadingRight", ST_HeadingRight, "HRIGHT",
 
349
        HT_FONT+HT_BOLD, 1, HT_BLACK,   0, 0,
 
350
        0, 0, 3, HT_RIGHT,              1, 0,   tabs_8,
 
351
        YES, YES, 1, 0,                 0 };
 
352
 
 
353
/* Style sheet points to the last in the list:
 
354
*/
 
355
PRIVATE HTStyleSheet sheet = { "default.style",
 
356
                                &HTStyleHeadingRight }; /* sheet */
 
357
 
 
358
PRIVATE HTStyle * st_array[ST_HeadingRight + 1] = { NULL };
 
359
 
 
360
PRIVATE HTStyleSheet *result = NULL;
 
361
 
 
362
#ifdef LY_FIND_LEAKS
 
363
PRIVATE void FreeDefaultStyle NOARGS
 
364
{
 
365
    HTStyle * style;
 
366
    while((style=result->styles)!=0) {
 
367
        result->styles = style->next;
 
368
        FREE(style);
 
369
    }
 
370
    FREE(result);
 
371
}
 
372
#endif /* LY_FIND_LEAKS */
 
373
 
 
374
PUBLIC HTStyleSheet * DefaultStyle ARGS1 (HTStyle ***, result_array)
 
375
{
 
376
    HTStyle *p, *q;
 
377
 
 
378
    /*
 
379
     * The first time we're called, allocate a copy of the 'sheet' linked
 
380
     * list.  Thereafter, simply copy the data from 'sheet' into our copy
 
381
     * (preserving the copy's linked-list pointers).  We do this to reset the
 
382
     * parameters of a style that might be altered while processing a page.
 
383
     */
 
384
    if (result == 0) {  /* allocate & copy */
 
385
        result = HTStyleSheetNew ();
 
386
        *result = sheet;
 
387
        result->styles = 0;
 
388
#ifdef LY_FIND_LEAKS
 
389
        atexit(FreeDefaultStyle);
 
390
#endif
 
391
        for (p = sheet.styles; p != 0; p = p->next) {
 
392
            q = HTStyleNew ();
 
393
            *q = *p;
 
394
            st_array[q->id] = q;
 
395
            q->next = result->styles;
 
396
            result->styles = q;
 
397
        }
 
398
    } else {            /* recopy the data */
 
399
        for (q = result->styles, p = sheet.styles;
 
400
                p != 0 && q != 0;
 
401
                p = p->next, q = q->next) {
 
402
            HTStyle *r = q->next;
 
403
            *q = *p;
 
404
            st_array[q->id] = q;
 
405
            q->next = r;
 
406
        }
 
407
    }
 
408
    *result_array = st_array;
 
409
    return result;
 
410
}