xref: /AOO41X/main/sw/source/filter/html/htmlflyt.cxx (revision efeef26f81c84063fb0a91bde3856d4a51172d90)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sw.hxx"
26 
27 #include "htmlfly.hxx"
28 
29 
30 #define TE(t,p,c) (sal_uInt8)( HTML_OUT_##t | HTML_POS_##p | HTML_CNTNR_##c )
31 
32 sal_uInt8 aHTMLOutFrmPageFlyTable[MAX_FRMTYPES][MAX_BROWSERS] =
33 {
34     {
35         // Textrahmen mit Tabelle
36         TE(TBLNODE, BEFORE, NONE),      // HTML 3.2
37         TE(DIV,     PREFIX, NONE),      // IE 4
38         TE(DIV,     PREFIX, NONE),      // SW
39         TE(DIV,     PREFIX, NONE)       // Netscape 4!
40     },
41     {
42         // Textrahmen mit Tabelle und Ueberschrift
43         TE(TBLNODE, BEFORE, NONE),      // HTML 3.2
44         TE(DIV,     PREFIX, NONE),      // IE 4
45         TE(DIV,     PREFIX, NONE),      // SW
46         TE(DIV,     PREFIX, NONE)       // Netscape 4
47     },
48     {
49         // spaltiger Rahmen
50         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
51         TE(GRFFRM,  PREFIX, NONE),      // IE 4
52         TE(MULTICOL,PREFIX, NONE),      // SW
53         TE(MULTICOL,PREFIX, DIV)        // Netscape 4
54     },
55     {
56         // leerer Textreahmen
57         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
58         TE(DIV,     PREFIX, NONE),      // IE 4
59         TE(DIV,     PREFIX, NONE),      // SW
60         TE(DIV,     PREFIX, NONE)       // Netscape 4
61     },
62     {
63         // sonstiger Textreahmen
64         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
65         TE(DIV,     PREFIX, NONE),      // IE 4
66         TE(DIV,     PREFIX, NONE),      // SW
67         TE(DIV,     PREFIX, NONE)       // Netscape 4
68     },
69     {
70         // Grafik-Node
71         TE(GRFNODE, INSIDE, NONE),      // HTML 3.2
72         TE(GRFNODE, PREFIX, NONE),      // IE 4
73         TE(GRFNODE, PREFIX, NONE),      // SW
74         TE(GRFNODE, PREFIX, SPAN)       // Netscape 4
75     },
76     {
77         // Plugin
78         TE(OLENODE, INSIDE, NONE),      // HTML 3.2
79         TE(OLENODE, PREFIX, NONE),      // IE 4
80         TE(OLENODE, PREFIX, NONE),      // SW
81         TE(OLENODE, PREFIX, SPAN)       // Netscape 4
82     },
83     {
84         // Applet
85         TE(OLENODE, INSIDE, NONE),      // HTML 3.2
86         TE(OLENODE, PREFIX, NONE),      // IE 4
87         TE(OLENODE, PREFIX, NONE),      // SW
88         TE(OLENODE, PREFIX, SPAN)       // Netscape 4
89     },
90     {
91         // Floating-Frame
92         TE(OLEGRF,  INSIDE, NONE),      // HTML 3.2
93         TE(OLENODE, PREFIX, NONE),      // IE 4
94         TE(OLENODE, PREFIX, NONE),      // SW
95         TE(OLEGRF,  PREFIX, SPAN)       // Netscape 4
96     },
97     {
98         // sonstige OLE-Objekte
99         TE(OLEGRF,  INSIDE, NONE),      // HTML 3.2
100         TE(OLEGRF,  PREFIX, NONE),      // IE 4
101         TE(OLEGRF,  PREFIX, NONE),      // SW
102         TE(OLEGRF,  PREFIX, SPAN)       // Netscape 4
103     },
104     {
105         // Laufschrift
106         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
107         TE(AMARQUEE,PREFIX, NONE),      // IE 4
108         TE(AMARQUEE,PREFIX, NONE),      // SW
109         TE(GRFFRM,  PREFIX, SPAN)       // Netscape 4
110     },
111     {
112         // Controls
113         TE(CONTROL, INSIDE, NONE),      // HTML 3.2
114         TE(CONTROL, PREFIX, NONE),      // IE 4
115         TE(CONTROL, PREFIX, NONE),      // SW
116         // Netscape schaltet FORM bei Controls in abs.-pos. SPAN aus.
117         TE(CONTROL, INSIDE, NONE)       // Netscape 4
118     },
119     {
120         // sonstige Zeichen-Objekte
121         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
122         TE(GRFFRM,  PREFIX, NONE),      // IE 4
123         TE(GRFFRM,  PREFIX, NONE),      // SW
124         TE(GRFFRM,  PREFIX, SPAN)       // Netscape 4
125     }
126 };
127 
128 sal_uInt8 aHTMLOutFrmParaFrameTable[MAX_FRMTYPES][MAX_BROWSERS] =
129 {
130     {
131         // Textrahmen mit Tabelle
132         TE(TBLNODE, BEFORE, NONE),      // HTML 3.2
133         TE(TBLNODE, BEFORE, NONE),      // IE 4
134         TE(TBLNODE, BEFORE, NONE),      // SW
135         TE(TBLNODE, BEFORE, NONE)       // Netscape 4
136     },
137     {
138         // Textrahmen mit Tabelle und Ueberschrift
139         TE(TBLNODE, BEFORE, NONE),      // HTML 3.2
140         TE(DIV,     BEFORE, NONE),      // IE 4
141         TE(DIV,     BEFORE, NONE),      // SW
142         TE(TBLNODE, BEFORE, NONE)       // Netscape 4
143     },
144     {
145         // spaltiger Rahmen
146         TE(GRFFRM,  BEFORE, NONE),      // HTML 3.2
147         TE(GRFFRM,  BEFORE, NONE),      // IE 4
148         TE(MULTICOL,BEFORE, NONE),      // SW
149         TE(MULTICOL,BEFORE, DIV)        // Netscape 4
150     },
151     {
152         // leerer Textreahmen
153         TE(GRFFRM,  BEFORE, NONE),      // HTML 3.2
154         TE(DIV,     BEFORE, NONE),      // IE 4
155         TE(SPACER,  BEFORE, NONE),      // SW
156         TE(SPACER,  BEFORE, NONE)       // Netscape 4
157     },
158     {
159         // sonstiger Textreahmen
160         TE(GRFFRM,  BEFORE, NONE),      // HTML 3.2
161         TE(DIV,     BEFORE, NONE),      // IE 4
162         TE(DIV,     BEFORE, NONE),      // SW
163         TE(DIV,     BEFORE, NONE)       // Netscape 4
164     },
165     {
166         // Grafik-Node
167         TE(GRFNODE, BEFORE, NONE),      // HTML 3.2
168         TE(GRFNODE, BEFORE, NONE),      // IE 4
169         TE(GRFNODE, BEFORE, NONE),      // SW
170         TE(GRFNODE, BEFORE, NONE)       // Netscape 4
171     },
172     {
173         // Plugin
174         TE(OLENODE, BEFORE, NONE),      // HTML 3.2
175         TE(OLENODE, BEFORE, NONE),      // IE 4
176         TE(OLENODE, BEFORE, NONE),      // SW
177         TE(OLENODE, BEFORE, NONE)       // Netscape 4
178     },
179     {
180         // Applet
181         TE(OLENODE, BEFORE, NONE),      // HTML 3.2
182         TE(OLENODE, BEFORE, NONE),      // IE 4
183         TE(OLENODE, BEFORE, NONE),      // SW
184         TE(OLENODE, BEFORE, NONE)       // Netscape 4
185     },
186     {
187         // Floating-Frame
188         TE(OLEGRF,  BEFORE, NONE),      // HTML 3.2
189         TE(OLENODE, BEFORE, NONE),      // IE 4
190         TE(OLENODE, BEFORE, NONE),      // SW
191         TE(OLEGRF,  BEFORE, NONE)       // Netscape 4
192     },
193     {
194         // sonstige OLE-Objekte
195         TE(OLEGRF,  BEFORE, NONE),      // HTML 3.2
196         TE(OLEGRF,  BEFORE, NONE),      // IE 4
197         TE(OLEGRF,  BEFORE, NONE),      // SW
198         TE(OLEGRF,  BEFORE, NONE)       // Netscape 4
199     },
200     {
201         // Laufschrift (fuer Netscape 4 im Container, damit
202         // die LAufschrift an der richtigen Stelle erscheint
203         TE(GRFFRM,  BEFORE, NONE),      // HTML 3.2
204         TE(AMARQUEE,BEFORE, NONE),      // IE 4
205         TE(AMARQUEE,BEFORE, NONE),      // SW
206         TE(GRFFRM,  BEFORE, NONE)       // Netscape 4
207     },
208     {
209         // Controls
210         TE(CONTROL, INSIDE, NONE),      // HTML 3.2
211         TE(CONTROL, BEFORE, NONE),      // IE 4
212         TE(CONTROL, BEFORE, NONE),      // SW
213         // hier koennte man einen Container draus machen (Import fehlt)
214         TE(CONTROL, BEFORE, NONE)       // Netscape 4
215     },
216     {
217         // sonstige Zeichen-Objekte
218         TE(GRFFRM,  BEFORE, NONE),      // HTML 3.2
219         TE(GRFFRM,  BEFORE, NONE),      // IE 4
220         TE(GRFFRM,  BEFORE, NONE),      // SW
221         TE(GRFFRM,  BEFORE, NONE)       // Netscape 4
222     }
223 };
224 
225 sal_uInt8 aHTMLOutFrmParaPrtAreaTable[MAX_FRMTYPES][MAX_BROWSERS] =
226 {
227     {
228         // Textrahmen mit Tabelle
229         TE(TBLNODE, INSIDE, NONE),      // HTML 3.2
230         TE(TBLNODE, INSIDE, NONE),      // IE 4
231         TE(TBLNODE, INSIDE, NONE),      // SW
232         TE(TBLNODE, INSIDE, NONE)       // Netscape 4
233     },
234     {
235         // Textrahmen mit Tabelle und Ueberschrift
236         TE(TBLNODE, INSIDE, NONE),      // HTML 3.2
237         TE(SPAN,    INSIDE, NONE),      // IE 4
238         TE(SPAN,    INSIDE, NONE),      // SW
239         TE(SPAN,    INSIDE, NONE)       // Netscape 4
240     },
241     {
242         // spaltiger Rahmen
243         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
244         TE(GRFFRM,  INSIDE, NONE),      // IE 4
245         TE(MULTICOL,INSIDE, NONE),      // SW
246         TE(MULTICOL,INSIDE, SPAN)       // Netscape 4
247     },
248     {
249         // leerer Textreahmen
250         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
251         TE(SPAN,    INSIDE, NONE),      // IE 4
252         TE(SPACER,  INSIDE, NONE),      // SW
253         TE(SPACER,  INSIDE, NONE)       // Netscape 4
254     },
255     {
256         // sonstiger Textreahmen
257         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
258         TE(SPAN,    INSIDE, NONE),      // IE 4
259         TE(SPAN,    INSIDE, NONE),      // SW
260         TE(SPAN,    INSIDE, NONE)       // Netscape 4
261     },
262     {
263         // Grafik-Node
264         TE(GRFNODE, INSIDE, NONE),      // HTML 3.2
265         TE(GRFNODE, INSIDE, NONE),      // IE 4
266         TE(GRFNODE, INSIDE, NONE),      // SW
267         TE(GRFNODE, INSIDE, NONE)       // Netscape 4
268     },
269     {
270         // Plugin
271         TE(OLENODE, INSIDE, NONE),      // HTML 3.2
272         TE(OLENODE, INSIDE, NONE),      // IE 4
273         TE(OLENODE, INSIDE, NONE),      // SW
274         TE(OLENODE, INSIDE, NONE)       // Netscape 4
275     },
276     {
277         // Applet
278         TE(OLENODE, INSIDE, NONE),      // HTML 3.2
279         TE(OLENODE, INSIDE, NONE),      // IE 4
280         TE(OLENODE, INSIDE, NONE),      // SW
281         TE(OLENODE, INSIDE, NONE)       // Netscape 4
282     },
283     {
284         // Floating-Frame
285         TE(OLEGRF,  INSIDE, NONE),      // HTML 3.2
286         TE(OLENODE, INSIDE, NONE),      // IE 4
287         TE(OLENODE, INSIDE, NONE),      // SW
288         TE(OLEGRF,  INSIDE, NONE)       // Netscape 4
289     },
290     {
291         // sonstige OLE-Objekte
292         TE(OLEGRF,  INSIDE, NONE),      // HTML 3.2
293         TE(OLEGRF,  INSIDE, NONE),      // IE 4
294         TE(OLEGRF,  INSIDE, NONE),      // SW
295         TE(OLEGRF,  INSIDE, NONE)       // Netscape 4
296     },
297     {
298         // Laufschrift
299         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
300         TE(AMARQUEE,INSIDE, NONE),      // IE 4
301         TE(AMARQUEE,INSIDE, NONE),      // SW
302         TE(GRFFRM,  INSIDE, NONE)       // Netscape 4
303     },
304     {
305         // Controls
306         TE(CONTROL, INSIDE, NONE),      // HTML 3.2
307         TE(CONTROL, INSIDE, NONE),      // IE 4
308         TE(CONTROL, INSIDE, NONE),      // SW
309         // hier koennte man einen Container draus machen (Import fehlt)
310         TE(CONTROL, INSIDE, NONE)       // Netscape 4
311     },
312     {
313         // sonstige Zeichen-Objekte
314         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
315         TE(GRFFRM,  INSIDE, NONE),      // IE 4
316         TE(GRFFRM,  INSIDE, NONE),      // SW
317         TE(GRFFRM,  INSIDE, NONE)       // Netscape 4
318     }
319 };
320 
321 sal_uInt8 aHTMLOutFrmParaOtherTable[MAX_FRMTYPES][MAX_BROWSERS] =
322 {
323     {
324         // Textrahmen mit Tabelle
325         TE(TBLNODE, BEFORE, NONE),      // HTML 3.2
326         TE(SPAN,    INSIDE, NONE),      // IE 4
327         TE(SPAN,    INSIDE, NONE),      // SW
328         TE(SPAN,    INSIDE, NONE)       // Netscape 4
329     },
330     {
331         // Textrahmen mit Tabelle und Ueberschrift
332         TE(TBLNODE, BEFORE, NONE),      // HTML 3.2
333         TE(SPAN,    INSIDE, NONE),      // IE 4
334         TE(SPAN,    INSIDE, NONE),      // SW
335         TE(SPAN,    INSIDE, NONE)       // Netscape 4
336     },
337     {
338         // spaltiger Rahmen
339         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
340         TE(GRFFRM,  INSIDE, NONE),      // IE 4
341         TE(MULTICOL,INSIDE, NONE),      // SW
342         TE(MULTICOL,INSIDE, SPAN)       // Netscape 4
343     },
344     {
345         // leerer Textreahmen
346         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
347         TE(SPAN,    INSIDE, NONE),      // IE 4
348         TE(SPAN,    INSIDE, NONE),      // SW
349         TE(SPAN,    INSIDE, NONE)       // Netscape 4
350     },
351     {
352         // sonstiger Textreahmen
353         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
354         TE(SPAN,    INSIDE, NONE),      // IE 4
355         TE(SPAN,    INSIDE, NONE),      // SW
356         TE(SPAN,    INSIDE, NONE)       // Netscape 4
357     },
358     {
359         // Grafik-Node
360         TE(GRFNODE, INSIDE, NONE),      // HTML 3.2
361         TE(GRFNODE, INSIDE, NONE),      // IE 4
362         TE(GRFNODE, INSIDE, NONE),      // SW
363         TE(GRFNODE, INSIDE, SPAN)       // Netscape 4
364     },
365     {
366         // Plugin
367         TE(OLENODE, INSIDE, NONE),      // HTML 3.2
368         TE(OLENODE, INSIDE, NONE),      // IE 4
369         TE(OLENODE, INSIDE, NONE),      // SW
370         TE(OLENODE, INSIDE, SPAN)       // Netscape 4
371     },
372     {
373         // Applet
374         TE(OLENODE, INSIDE, NONE),      // HTML 3.2
375         TE(OLENODE, INSIDE, NONE),      // IE 4
376         TE(OLENODE, INSIDE, NONE),      // SW
377         TE(OLENODE, INSIDE, SPAN)       // Netscape 4
378     },
379     {
380         // Floating-Frame
381         TE(OLEGRF,  INSIDE, NONE),      // HTML 3.2
382         TE(OLENODE, INSIDE, NONE),      // IE 4
383         TE(OLENODE, INSIDE, NONE),      // SW
384         TE(OLEGRF,  INSIDE, SPAN)       // Netscape 4
385     },
386     {
387         // sonstige OLE-Objekte
388         TE(OLEGRF,  INSIDE, NONE),      // HTML 3.2
389         TE(OLEGRF,  INSIDE, NONE),      // IE 4
390         TE(OLEGRF,  INSIDE, NONE),      // SW
391         TE(OLEGRF,  INSIDE, SPAN)       // Netscape 4
392     },
393     {
394         // Laufschrift
395         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
396         TE(AMARQUEE,INSIDE, NONE),      // IE 4
397         TE(AMARQUEE,INSIDE, NONE),      // SW
398         TE(GRFFRM,  INSIDE, SPAN)       // Netscape 4
399     },
400     {
401         // Controls
402         TE(CONTROL, INSIDE, NONE),      // HTML 3.2
403         TE(CONTROL, INSIDE, NONE),      // IE 4
404         TE(CONTROL, INSIDE, NONE),      // SW
405         // Netscape schaltet FORM bei Controls in abs.-pos. SPAN aus.
406         TE(CONTROL, INSIDE, NONE)       // Netscape 4
407     },
408     {
409         // sonstige Zeichen-Objekte
410         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
411         TE(GRFFRM,  INSIDE, NONE),      // IE 4
412         TE(GRFFRM,  INSIDE, NONE),      // SW
413         TE(GRFFRM,  INSIDE, SPAN)       // Netscape 4
414     }
415 };
416 
417 sal_uInt8 aHTMLOutFrmAsCharTable[MAX_FRMTYPES][MAX_BROWSERS] =
418 {
419     {
420         // Textrahmen mit Tabelle
421         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
422         TE(GRFFRM,  INSIDE, NONE),      // IE 4
423         TE(GRFFRM,  INSIDE, NONE),      // SW
424         TE(GRFFRM,  INSIDE, NONE)       // Netscape 4
425     },
426     {
427         // Textrahmen mit Tabelle und Ueberschrift
428         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
429         TE(GRFFRM,  INSIDE, NONE),      // IE 4
430         TE(GRFFRM,  INSIDE, NONE),      // SW
431         TE(GRFFRM,  INSIDE, NONE)       // Netscape 4
432     },
433     {
434         // spaltiger Rahmen
435         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
436         TE(GRFFRM,  INSIDE, NONE),      // IE 4
437         TE(MULTICOL,INSIDE, NONE),      // SW
438         TE(MULTICOL,INSIDE, NONE)       // Netscape 4
439     },
440     {
441         // leerer Textreahmen
442         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
443         TE(GRFFRM,  INSIDE, NONE),      // IE 4
444         TE(SPACER,  INSIDE, NONE),      // SW
445         TE(SPACER,  INSIDE, NONE)       // Netscape 4
446     },
447     {
448         // sonstiger Textreahmen
449         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
450         TE(GRFFRM,  INSIDE, NONE),      // IE 4
451         TE(GRFFRM,  INSIDE, NONE),      // SW
452         TE(GRFFRM,  INSIDE, NONE)       // Netscape 4
453     },
454     {
455         // Grafik-Node
456         TE(GRFNODE, INSIDE, NONE),      // HTML 3.2
457         TE(GRFNODE, INSIDE, NONE),      // IE 4
458         TE(GRFNODE, INSIDE, NONE),      // SW
459         TE(GRFNODE, INSIDE, NONE)       // Netscape 4
460     },
461     {
462         // Plugin
463         TE(OLENODE, INSIDE, NONE),      // HTML 3.2
464         TE(OLENODE, INSIDE, NONE),      // IE 4
465         TE(OLENODE, INSIDE, NONE),      // SW
466         TE(OLENODE, INSIDE, NONE)       // Netscape 4
467     },
468     {
469         // Applet
470         TE(OLENODE, INSIDE, NONE),      // HTML 3.2
471         TE(OLENODE, INSIDE, NONE),      // IE 4
472         TE(OLENODE, INSIDE, NONE),      // SW
473         TE(OLENODE, INSIDE, NONE)       // Netscape 4
474     },
475     {
476         // Floating-Frame
477         TE(OLEGRF,  INSIDE, NONE),      // HTML 3.2
478         TE(OLENODE, INSIDE, NONE),      // IE 4
479         TE(OLENODE, INSIDE, NONE),      // SW
480         TE(OLEGRF,  INSIDE, NONE)       // Netscape 4
481     },
482     {
483         // sonstige OLE-Objekte
484         TE(OLEGRF,  INSIDE, NONE),      // HTML 3.2
485         TE(OLEGRF,  INSIDE, NONE),      // IE 4
486         TE(OLEGRF,  INSIDE, NONE),      // SW
487         TE(OLEGRF,  INSIDE, NONE)       // Netscape 4
488     },
489     {
490         // Laufschrift (kann immer als MARQUEE exportiert werden, weil
491         // der Inhalt an der richtigen Stelle erscheint
492         TE(MARQUEE, INSIDE, NONE),      // HTML 3.2
493         TE(MARQUEE, INSIDE, NONE),      // IE 4
494         TE(MARQUEE, INSIDE, NONE),      // SW
495         TE(MARQUEE, INSIDE, NONE)       // Netscape 4
496     },
497     {
498         // Controls
499         TE(CONTROL, INSIDE, NONE),      // HTML 3.2
500         TE(CONTROL, INSIDE, NONE),      // IE 4
501         TE(CONTROL, INSIDE, NONE),      // SW
502         TE(CONTROL, INSIDE, NONE)       // Netscape 4
503     },
504     {
505         // sonstige Zeichen-Objekte
506         TE(GRFFRM,  INSIDE, NONE),      // HTML 3.2
507         TE(GRFFRM,  INSIDE, NONE),      // IE 4
508         TE(GRFFRM,  INSIDE, NONE),      // SW
509         TE(GRFFRM,  INSIDE, NONE)       // Netscape 4
510     }
511 };
512 
513