1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski #ifndef _WRTHTML_HXX
24*b1cdbd2cSJim Jagielski #define _WRTHTML_HXX
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XIndexContainer.hpp>
28*b1cdbd2cSJim Jagielski #include <com/sun/star/form/XForm.hpp>
29*b1cdbd2cSJim Jagielski #include <vcl/field.hxx>
30*b1cdbd2cSJim Jagielski #define _SVSTDARR_STRINGSDTOR
31*b1cdbd2cSJim Jagielski #define _SVSTDARR_STRINGSSORTDTOR
32*b1cdbd2cSJim Jagielski #define _SVSTDARR_ULONGS
33*b1cdbd2cSJim Jagielski #include <svl/svstdarr.hxx>
34*b1cdbd2cSJim Jagielski #include <i18npool/lang.h>
35*b1cdbd2cSJim Jagielski #include <tools/stream.hxx>
36*b1cdbd2cSJim Jagielski
37*b1cdbd2cSJim Jagielski #include "shellio.hxx"
38*b1cdbd2cSJim Jagielski #include "wrt_fn.hxx"
39*b1cdbd2cSJim Jagielski
40*b1cdbd2cSJim Jagielski // einige Forward Deklarationen
41*b1cdbd2cSJim Jagielski class Color;
42*b1cdbd2cSJim Jagielski class SwFrmFmt;
43*b1cdbd2cSJim Jagielski class SwFlyFrmFmt;
44*b1cdbd2cSJim Jagielski class SwDrawFrmFmt;
45*b1cdbd2cSJim Jagielski class SwFmtINetFmt;
46*b1cdbd2cSJim Jagielski class SwFmtVertOrient;
47*b1cdbd2cSJim Jagielski class SwFmtFtn;
48*b1cdbd2cSJim Jagielski class SwStartNode;
49*b1cdbd2cSJim Jagielski class SwTableNode;
50*b1cdbd2cSJim Jagielski class SwPageDesc;
51*b1cdbd2cSJim Jagielski class SwNodeIndex;
52*b1cdbd2cSJim Jagielski class ImageMap;
53*b1cdbd2cSJim Jagielski class SwNumRule;
54*b1cdbd2cSJim Jagielski class SdrObject;
55*b1cdbd2cSJim Jagielski class SvxBrushItem;
56*b1cdbd2cSJim Jagielski class SvxFontItem;
57*b1cdbd2cSJim Jagielski class SwHTMLNumRuleInfo;
58*b1cdbd2cSJim Jagielski class SwHTMLPosFlyFrms;
59*b1cdbd2cSJim Jagielski class SwHTMLTxtFtns;
60*b1cdbd2cSJim Jagielski
61*b1cdbd2cSJim Jagielski extern SwAttrFnTab aHTMLAttrFnTab;
62*b1cdbd2cSJim Jagielski
63*b1cdbd2cSJim Jagielski //#define HTML_PARSPACE ((MM50 * 7) / 10)
64*b1cdbd2cSJim Jagielski #define HTML_PARSPACE (MM50)
65*b1cdbd2cSJim Jagielski
66*b1cdbd2cSJim Jagielski // Flags fuer die Ausgabe von Rahmen aller Art
67*b1cdbd2cSJim Jagielski // BORDER geht nur bei OutHTML_Image
68*b1cdbd2cSJim Jagielski // ANYSIZE gibt an, ob auch VAR_SIZE und MIN_SIZE angaben exportiert werden
69*b1cdbd2cSJim Jagielski // ABSSIZE gibt an, ob Abstand und Umrandung ignoriert werden sollen
70*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_ALIGN = 1<<0;
71*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_S_ALIGN = 1<<1;
72*b1cdbd2cSJim Jagielski
73*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_WIDTH = 1<<2;
74*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_HEIGHT = 1<<3;
75*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_SIZE = HTML_FRMOPT_WIDTH|HTML_FRMOPT_HEIGHT;
76*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_S_WIDTH = 1<<4;
77*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_S_HEIGHT = 1<<5;
78*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_S_SIZE = HTML_FRMOPT_S_WIDTH|HTML_FRMOPT_S_HEIGHT;
79*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_ANYSIZE = 1<<6;
80*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_ABSSIZE = 1<<7;
81*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_MARGINSIZE = 1<<8;
82*b1cdbd2cSJim Jagielski
83*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_SPACE = 1<<9;
84*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_S_SPACE = 1<<10;
85*b1cdbd2cSJim Jagielski
86*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_BORDER = 1<<11;
87*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_S_BORDER = 1<<12;
88*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_S_NOBORDER = 1<<13;
89*b1cdbd2cSJim Jagielski
90*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_S_BACKGROUND = 1<<14;
91*b1cdbd2cSJim Jagielski
92*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_NAME = 1<<15;
93*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_ALT = 1<<16;
94*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_BRCLEAR = 1<<17;
95*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_S_PIXSIZE = 1<<18;
96*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_ID = 1<<19;
97*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPT_DIR = 1<<20;
98*b1cdbd2cSJim Jagielski
99*b1cdbd2cSJim Jagielski
100*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPTS_GENIMG_ALL =
101*b1cdbd2cSJim Jagielski HTML_FRMOPT_ALT |
102*b1cdbd2cSJim Jagielski HTML_FRMOPT_SIZE |
103*b1cdbd2cSJim Jagielski HTML_FRMOPT_ABSSIZE |
104*b1cdbd2cSJim Jagielski HTML_FRMOPT_NAME;
105*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPTS_GENIMG_CNTNR = HTML_FRMOPTS_GENIMG_ALL;
106*b1cdbd2cSJim Jagielski const sal_uInt32 HTML_FRMOPTS_GENIMG =
107*b1cdbd2cSJim Jagielski HTML_FRMOPTS_GENIMG_ALL |
108*b1cdbd2cSJim Jagielski HTML_FRMOPT_ALIGN |
109*b1cdbd2cSJim Jagielski HTML_FRMOPT_SPACE |
110*b1cdbd2cSJim Jagielski HTML_FRMOPT_BRCLEAR;
111*b1cdbd2cSJim Jagielski
112*b1cdbd2cSJim Jagielski #define HTMLMODE_BLOCK_SPACER 0x00010000
113*b1cdbd2cSJim Jagielski #define HTMLMODE_FLOAT_FRAME 0x00020000
114*b1cdbd2cSJim Jagielski #define HTMLMODE_VERT_SPACER 0x00040000
115*b1cdbd2cSJim Jagielski #define HTMLMODE_NBSP_IN_TABLES 0x00080000
116*b1cdbd2cSJim Jagielski #define HTMLMODE_LSPACE_IN_NUMBUL 0x00100000
117*b1cdbd2cSJim Jagielski #define HTMLMODE_NO_BR_AT_PAREND 0x00200000
118*b1cdbd2cSJim Jagielski #define HTMLMODE_PRINT_EXT 0x00400000
119*b1cdbd2cSJim Jagielski #define HTMLMODE_ABS_POS_FLY 0x00800000
120*b1cdbd2cSJim Jagielski #define HTMLMODE_ABS_POS_DRAW 0x01000000
121*b1cdbd2cSJim Jagielski #define HTMLMODE_FLY_MARGINS 0x02000000
122*b1cdbd2cSJim Jagielski #define HTMLMODE_BORDER_NONE 0x04000000
123*b1cdbd2cSJim Jagielski #define HTMLMODE_FONT_GENERIC 0x08000000
124*b1cdbd2cSJim Jagielski #define HTMLMODE_FRSTLINE_IN_NUMBUL 0x10000000
125*b1cdbd2cSJim Jagielski #define HTMLMODE_NO_CONTROL_CENTERING 0x20000000
126*b1cdbd2cSJim Jagielski
127*b1cdbd2cSJim Jagielski #define HTML_DLCOLL_DD 0x4000
128*b1cdbd2cSJim Jagielski #define HTML_DLCOLL_DT 0x8000
129*b1cdbd2cSJim Jagielski
130*b1cdbd2cSJim Jagielski #define CSS1_FMT_ISTAG (USHRT_MAX)
131*b1cdbd2cSJim Jagielski #define CSS1_FMT_CMPREF (USHRT_MAX-1)
132*b1cdbd2cSJim Jagielski #define CSS1_FMT_SPECIAL (USHRT_MAX-1)
133*b1cdbd2cSJim Jagielski
134*b1cdbd2cSJim Jagielski // Die folgenden Flags bestimmen nur, welche Descriptoren, Tags, Optionen etc.
135*b1cdbd2cSJim Jagielski // ausgegeben werden ...
136*b1cdbd2cSJim Jagielski // bit 0,1,2
137*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_SPAN_NO_ON 0x0000U
138*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_SPAN_TAG_ON 0x0001U
139*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_STYLE_OPT_ON 0x0002U
140*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_RULE_ON 0x0003U
141*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_SPAN_TAG1_ON 0x0004U
142*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_ANY_ON 0x0007U
143*b1cdbd2cSJim Jagielski
144*b1cdbd2cSJim Jagielski // bit 3,4,5
145*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_SPAN_NO_OFF 0x0000U
146*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_SPAN_TAG_OFF ((sal_uInt16)(0x0001U << 3))
147*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_STYLE_OPT_OFF ((sal_uInt16)(0x0002U << 3))
148*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_RULE_OFF ((sal_uInt16)(0x0003U << 3))
149*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_SPAN_TAG1_OFF ((sal_uInt16)(0x0004U << 3))
150*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_ANY_OFF ((sal_uInt16)(0x0007U << 3))
151*b1cdbd2cSJim Jagielski
152*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_ONOFF(a) (CSS1_OUTMODE_##a##_ON|CSS1_OUTMODE_##a##_OFF)
153*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_SPAN_TAG CSS1_OUTMODE_ONOFF(SPAN_TAG)
154*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_STYLE_OPT CSS1_OUTMODE_ONOFF(STYLE_OPT)
155*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_RULE CSS1_OUTMODE_ONOFF(RULE)
156*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_SPAN_TAG1 CSS1_OUTMODE_ONOFF(TAG1)
157*b1cdbd2cSJim Jagielski
158*b1cdbd2cSJim Jagielski // Die folgenden Flags legen fest, was ausgegeben wird
159*b1cdbd2cSJim Jagielski // bit 6,7,8,9
160*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_TEMPLATE 0x0000U
161*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_BODY ((sal_uInt16)(0x0001U << 6))
162*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_PARA ((sal_uInt16)(0x0002U << 6))
163*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_HINT ((sal_uInt16)(0x0003U << 6))
164*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_FRAME ((sal_uInt16)(0x0004U << 6))
165*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_TABLE ((sal_uInt16)(0x0005U << 6))
166*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_TABLEBOX ((sal_uInt16)(0x0006U << 6))
167*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_DROPCAP ((sal_uInt16)(0x0007U << 6))
168*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_SECTION ((sal_uInt16)(0x0008U << 6))
169*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_SOURCE ((sal_uInt16)(0x000fU << 6))
170*b1cdbd2cSJim Jagielski
171*b1cdbd2cSJim Jagielski // bit 10
172*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_ENCODE ((sal_uInt16)(0x0001U << 10))
173*b1cdbd2cSJim Jagielski
174*b1cdbd2cSJim Jagielski // bit 11,12,13
175*b1cdbd2cSJim Jagielski // don't care about script
176*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_ANY_SCRIPT 0x0000U
177*b1cdbd2cSJim Jagielski // no cjk or ctl items
178*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_WESTERN ((sal_uInt16)(0x0001U << 11))
179*b1cdbd2cSJim Jagielski // no western or ctl items
180*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_CJK ((sal_uInt16)(0x0002U << 11))
181*b1cdbd2cSJim Jagielski // no western or cjk items
182*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_CTL ((sal_uInt16)(0x0003U << 11))
183*b1cdbd2cSJim Jagielski // no western, cjk or ctl items
184*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_NO_SCRIPT ((sal_uInt16)(0x0004U << 11))
185*b1cdbd2cSJim Jagielski #define CSS1_OUTMODE_SCRIPT ((sal_uInt16)(0x0007U << 11))
186*b1cdbd2cSJim Jagielski
187*b1cdbd2cSJim Jagielski // der HTML-Writer
188*b1cdbd2cSJim Jagielski struct HTMLControl;
189*b1cdbd2cSJim Jagielski SV_DECL_PTRARR_SORT_DEL( HTMLControls, HTMLControl*, 1, 1 )
190*b1cdbd2cSJim Jagielski SV_DECL_PTRARR( INetFmts, SwFmtINetFmt*, 1, 1 )
191*b1cdbd2cSJim Jagielski
192*b1cdbd2cSJim Jagielski struct SwHTMLFmtInfo;
193*b1cdbd2cSJim Jagielski SV_DECL_PTRARR_SORT_DEL( SwHTMLFmtInfos, SwHTMLFmtInfo*, 1, 1 )
194*b1cdbd2cSJim Jagielski
195*b1cdbd2cSJim Jagielski class IDocumentStylePoolAccess;
196*b1cdbd2cSJim Jagielski
197*b1cdbd2cSJim Jagielski class SwHTMLWriter : public Writer
198*b1cdbd2cSJim Jagielski {
199*b1cdbd2cSJim Jagielski SwHTMLPosFlyFrms *pHTMLPosFlyFrms;
200*b1cdbd2cSJim Jagielski SwHTMLNumRuleInfo *pNumRuleInfo;// aktuelle Numerierung
201*b1cdbd2cSJim Jagielski SwHTMLNumRuleInfo *pNextNumRuleInfo;
202*b1cdbd2cSJim Jagielski sal_uInt32 nHTMLMode; // Beschreibung der Export-Konfiguration
203*b1cdbd2cSJim Jagielski
204*b1cdbd2cSJim Jagielski FieldUnit eCSS1Unit;
205*b1cdbd2cSJim Jagielski
206*b1cdbd2cSJim Jagielski sal_uInt16 OutHeaderAttrs();
207*b1cdbd2cSJim Jagielski const SwPageDesc *MakeHeader( sal_uInt16& rHeaderAtrs );
208*b1cdbd2cSJim Jagielski void GetControls();
209*b1cdbd2cSJim Jagielski
210*b1cdbd2cSJim Jagielski void AddLinkTarget( const String& rURL );
211*b1cdbd2cSJim Jagielski void CollectLinkTargets();
212*b1cdbd2cSJim Jagielski
213*b1cdbd2cSJim Jagielski protected:
214*b1cdbd2cSJim Jagielski sal_uLong WriteStream();
215*b1cdbd2cSJim Jagielski
216*b1cdbd2cSJim Jagielski public:
217*b1cdbd2cSJim Jagielski #if defined(UNX)
218*b1cdbd2cSJim Jagielski static const sal_Char sNewLine; // nur \012 oder \015
219*b1cdbd2cSJim Jagielski #else
220*b1cdbd2cSJim Jagielski static const sal_Char __FAR_DATA sNewLine[]; // \015\012
221*b1cdbd2cSJim Jagielski #endif
222*b1cdbd2cSJim Jagielski
223*b1cdbd2cSJim Jagielski SvStringsDtor aImgMapNames; // geschriebene Image Maps
224*b1cdbd2cSJim Jagielski SvStringsSortDtor aImplicitMarks;// implizite Stprungmarken
225*b1cdbd2cSJim Jagielski SvStringsDtor aOutlineMarks; // geschriebene Image Maps
226*b1cdbd2cSJim Jagielski SvStringsSortDtor aNumRuleNames;// Names of exported num rules
227*b1cdbd2cSJim Jagielski SvStringsSortDtor aScriptParaStyles;// script dependent para styles
228*b1cdbd2cSJim Jagielski SvStringsSortDtor aScriptTextStyles;// script dependent text styles
229*b1cdbd2cSJim Jagielski SvULongs aOutlineMarkPoss;
230*b1cdbd2cSJim Jagielski HTMLControls aHTMLControls; // die zu schreibenden ::com::sun::star::form::Forms
231*b1cdbd2cSJim Jagielski SwHTMLFmtInfos aChrFmtInfos;
232*b1cdbd2cSJim Jagielski SwHTMLFmtInfos aTxtCollInfos;
233*b1cdbd2cSJim Jagielski INetFmts aINetFmts; // die "offenen" INet-Attribute
234*b1cdbd2cSJim Jagielski SwHTMLTxtFtns *pFootEndNotes;
235*b1cdbd2cSJim Jagielski
236*b1cdbd2cSJim Jagielski String aCSS1Selector; // der Selektor eines Styles
237*b1cdbd2cSJim Jagielski String aNonConvertableCharacters;
238*b1cdbd2cSJim Jagielski String aBulletGrfs[MAXLEVEL]; // die Grafiken fuer Listen
239*b1cdbd2cSJim Jagielski
240*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > *pxFormComps; // die aktuelle Form
241*b1cdbd2cSJim Jagielski
242*b1cdbd2cSJim Jagielski SwDoc *pTemplate; // die HTML-Vorlage
243*b1cdbd2cSJim Jagielski Color *pDfltColor; // default Farbe
244*b1cdbd2cSJim Jagielski SwNodeIndex *pStartNdIdx; // Index des ersten Absatz
245*b1cdbd2cSJim Jagielski const SwPageDesc *pCurrPageDesc;// Die aktuelle Seiten-Vorlage
246*b1cdbd2cSJim Jagielski const SwFmtFtn *pFmtFtn;
247*b1cdbd2cSJim Jagielski
248*b1cdbd2cSJim Jagielski sal_uInt32 aFontHeights[7]; // die Font-Hoehen 1-7
249*b1cdbd2cSJim Jagielski
250*b1cdbd2cSJim Jagielski sal_uInt32 nWarn; // Result-Code fuer Warnungen
251*b1cdbd2cSJim Jagielski sal_uInt32 nLastLFPos; // letzte Position eines LF
252*b1cdbd2cSJim Jagielski
253*b1cdbd2cSJim Jagielski sal_uInt16 nLastParaToken; // fuers Absaetze zusammenhalten
254*b1cdbd2cSJim Jagielski sal_Int32 nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
255*b1cdbd2cSJim Jagielski sal_uInt16 nImgMapCnt; // zum eindeutig
256*b1cdbd2cSJim Jagielski sal_uInt16 nFormCntrlCnt;
257*b1cdbd2cSJim Jagielski sal_uInt16 nEndNote;
258*b1cdbd2cSJim Jagielski sal_uInt16 nFootNote;
259*b1cdbd2cSJim Jagielski sal_Int32 nLeftMargin; // linker Einzug (z.B. aus Listen)
260*b1cdbd2cSJim Jagielski sal_Int32 nDfltLeftMargin; // die dafaults, der nicht geschrieben
261*b1cdbd2cSJim Jagielski sal_Int32 nDfltRightMargin; // werden muessen (aus der Vorlage)
262*b1cdbd2cSJim Jagielski short nFirstLineIndent; // Erstzeilen-Einzug (aus Listen)
263*b1cdbd2cSJim Jagielski short nDfltFirstLineIndent; // nicht zu schreibender default
264*b1cdbd2cSJim Jagielski sal_uInt16 nDfltTopMargin; // die defaults, der nicht geschrieben
265*b1cdbd2cSJim Jagielski sal_uInt16 nDfltBottomMargin; // werden muessen (aus der Vorlage)
266*b1cdbd2cSJim Jagielski sal_uInt16 nIndentLvl; // wie weit ist eingerueckt?
267*b1cdbd2cSJim Jagielski xub_StrLen nWhishLineLen; // wie lang darf eine Zeile werden?
268*b1cdbd2cSJim Jagielski sal_uInt16 nDefListLvl; // welcher DL-Level existiert gerade
269*b1cdbd2cSJim Jagielski sal_Int32 nDefListMargin; // Wie weit wird in DL eingerueckt
270*b1cdbd2cSJim Jagielski sal_uInt16 nHeaderFooterSpace;
271*b1cdbd2cSJim Jagielski sal_uInt16 nTxtAttrsToIgnore;
272*b1cdbd2cSJim Jagielski sal_uInt16 nExportMode;
273*b1cdbd2cSJim Jagielski sal_uInt16 nCSS1OutMode;
274*b1cdbd2cSJim Jagielski sal_uInt16 nCSS1Script; // contains default script (that's the one
275*b1cdbd2cSJim Jagielski // that is not contained in class names)
276*b1cdbd2cSJim Jagielski sal_uInt16 nDirection; // the current direction
277*b1cdbd2cSJim Jagielski
278*b1cdbd2cSJim Jagielski rtl_TextEncoding eDestEnc;
279*b1cdbd2cSJim Jagielski LanguageType eLang;
280*b1cdbd2cSJim Jagielski
281*b1cdbd2cSJim Jagielski // Beschreibung der Export-Konfiguration
282*b1cdbd2cSJim Jagielski // 0
283*b1cdbd2cSJim Jagielski sal_Bool bCfgOutStyles : 1; // Styles exportieren
284*b1cdbd2cSJim Jagielski sal_Bool bCfgPreferStyles : 1; // Styles herkoemmlichen Tags vorziehen
285*b1cdbd2cSJim Jagielski sal_Bool bCfgFormFeed : 1; // Form-Feeds exportieren
286*b1cdbd2cSJim Jagielski sal_Bool bCfgStarBasic : 1; // StarBasic exportieren
287*b1cdbd2cSJim Jagielski sal_Bool bCfgCpyLinkedGrfs : 1;
288*b1cdbd2cSJim Jagielski
289*b1cdbd2cSJim Jagielski // Beschreibung dessen, was exportiert wird
290*b1cdbd2cSJim Jagielski
291*b1cdbd2cSJim Jagielski sal_Bool bFirstLine : 1; // wird die 1. Zeile ausgegeben ?
292*b1cdbd2cSJim Jagielski sal_Bool bTagOn : 1; // Tag an oder aus/Attr-Start oder -Ende
293*b1cdbd2cSJim Jagielski
294*b1cdbd2cSJim Jagielski // Die folgenden beiden Flags geben an, wir Attribute exportiert werden:
295*b1cdbd2cSJim Jagielski // bTxtAttr bOutOpts
296*b1cdbd2cSJim Jagielski // 0 0 Style-Sheets
297*b1cdbd2cSJim Jagielski // 1 0 Hints: Jedes Attribut wird als eignes Tag
298*b1cdbd2cSJim Jagielski // geschrieben und es gibt ein End-Tag
299*b1cdbd2cSJim Jagielski // 0 1 (Absatz-)Attribute: Das Attribut wird als Option
300*b1cdbd2cSJim Jagielski // eines bereits geschrieben Tags exportiert. Es
301*b1cdbd2cSJim Jagielski // gibt kein End-Tag.
302*b1cdbd2cSJim Jagielski sal_Bool bTxtAttr : 1;
303*b1cdbd2cSJim Jagielski // 8
304*b1cdbd2cSJim Jagielski sal_Bool bOutOpts : 1;
305*b1cdbd2cSJim Jagielski
306*b1cdbd2cSJim Jagielski sal_Bool bOutTable : 1; // wird der Tabelleninhalt geschrieben?
307*b1cdbd2cSJim Jagielski sal_Bool bOutHeader : 1;
308*b1cdbd2cSJim Jagielski sal_Bool bOutFooter : 1;
309*b1cdbd2cSJim Jagielski sal_Bool bOutFlyFrame : 1;
310*b1cdbd2cSJim Jagielski
311*b1cdbd2cSJim Jagielski // Flags fuer Style-Export
312*b1cdbd2cSJim Jagielski
313*b1cdbd2cSJim Jagielski sal_Bool bFirstCSS1Rule : 1; // wurde schon eine Property ausgegeben
314*b1cdbd2cSJim Jagielski sal_Bool bFirstCSS1Property : 1; // wurde schon eine Property ausgegeben
315*b1cdbd2cSJim Jagielski sal_Bool bPoolCollTextModified : 1; // die Textkoerper-Vorlage wurde
316*b1cdbd2cSJim Jagielski // modifiziert.
317*b1cdbd2cSJim Jagielski // 16
318*b1cdbd2cSJim Jagielski sal_Bool bCSS1IgnoreFirstPageDesc : 1;
319*b1cdbd2cSJim Jagielski
320*b1cdbd2cSJim Jagielski // was muss/kann/darf nicht ausgegeben werden?
321*b1cdbd2cSJim Jagielski
322*b1cdbd2cSJim Jagielski sal_Bool bNoAlign : 1; // HTML-Tag erlaubt kein ALIGN=...
323*b1cdbd2cSJim Jagielski sal_Bool bClearLeft : 1; // <BR CLEAR=LEFT> am Absatz-Ende ausg.
324*b1cdbd2cSJim Jagielski sal_Bool bClearRight : 1; // <BR CLEAR=RIGHT> am Absatz-Ende ausg.
325*b1cdbd2cSJim Jagielski sal_Bool bLFPossible : 1; // ein Zeilenumbruch darf eingef. werden
326*b1cdbd2cSJim Jagielski
327*b1cdbd2cSJim Jagielski // sonstiges
328*b1cdbd2cSJim Jagielski
329*b1cdbd2cSJim Jagielski sal_Bool bPreserveForm : 1; // die aktuelle Form beibehalten
330*b1cdbd2cSJim Jagielski
331*b1cdbd2cSJim Jagielski sal_Bool bCfgNetscape4 : 1; // Netscape4 Hacks
332*b1cdbd2cSJim Jagielski // 23
333*b1cdbd2cSJim Jagielski
334*b1cdbd2cSJim Jagielski SwHTMLWriter( const String& rBaseURL );
335*b1cdbd2cSJim Jagielski virtual ~SwHTMLWriter();
336*b1cdbd2cSJim Jagielski
337*b1cdbd2cSJim Jagielski void Out_SwDoc( SwPaM* ); // schreibe den makierten Bereich
338*b1cdbd2cSJim Jagielski
339*b1cdbd2cSJim Jagielski // gebe alle an in aktuellen Ansatz stehenden ::com::sun::star::text::Bookmarks aus
340*b1cdbd2cSJim Jagielski void OutAnchor( const String& rName );
341*b1cdbd2cSJim Jagielski void OutBookmarks();
342*b1cdbd2cSJim Jagielski void OutImplicitMark( const String& rMark, const sal_Char *pMarkType );
343*b1cdbd2cSJim Jagielski void OutHyperlinkHRefValue( const String& rURL );
344*b1cdbd2cSJim Jagielski
345*b1cdbd2cSJim Jagielski // gebe die evt. an der akt. Position stehenden FlyFrame aus.
346*b1cdbd2cSJim Jagielski sal_Bool OutFlyFrm( sal_uLong nNdIdx, xub_StrLen nCntntIdx,
347*b1cdbd2cSJim Jagielski sal_uInt8 nPos, HTMLOutContext *pContext = 0 );
348*b1cdbd2cSJim Jagielski void OutFrmFmt( sal_uInt8 nType, const SwFrmFmt& rFmt,
349*b1cdbd2cSJim Jagielski const SdrObject *pSdrObj );
350*b1cdbd2cSJim Jagielski
351*b1cdbd2cSJim Jagielski void OutForm( sal_Bool bTagOn=sal_True, const SwStartNode *pStNd=0 );
352*b1cdbd2cSJim Jagielski void OutHiddenForms();
353*b1cdbd2cSJim Jagielski void OutHiddenForm( const ::com::sun::star::uno::Reference<
354*b1cdbd2cSJim Jagielski ::com::sun::star::form::XForm > & rForm );
355*b1cdbd2cSJim Jagielski
356*b1cdbd2cSJim Jagielski void OutForm( sal_Bool bOn, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > & rFormComps );
357*b1cdbd2cSJim Jagielski void OutHiddenControls( const ::com::sun::star::uno::Reference<
358*b1cdbd2cSJim Jagielski ::com::sun::star::container::XIndexContainer > & rFormComps,
359*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference<
360*b1cdbd2cSJim Jagielski ::com::sun::star::beans::XPropertySet > & rPropSet );
361*b1cdbd2cSJim Jagielski sal_Bool HasControls() const;
362*b1cdbd2cSJim Jagielski
363*b1cdbd2cSJim Jagielski void OutFootEndNoteInfo();
364*b1cdbd2cSJim Jagielski void OutFootEndNotes();
365*b1cdbd2cSJim Jagielski String GetFootEndNoteSym( const SwFmtFtn& rFmtFtn );
366*b1cdbd2cSJim Jagielski void OutFootEndNoteSym( const SwFmtFtn& rFmtFtn, const String& rNum,
367*b1cdbd2cSJim Jagielski sal_uInt16 nScript );
368*b1cdbd2cSJim Jagielski
369*b1cdbd2cSJim Jagielski #ifdef JAVA_BASIC_IDE
370*b1cdbd2cSJim Jagielski void OutBasicModule( const String& rName, const String& rLanguage );
371*b1cdbd2cSJim Jagielski #endif
372*b1cdbd2cSJim Jagielski void OutBasic();
373*b1cdbd2cSJim Jagielski
374*b1cdbd2cSJim Jagielski void OutAndSetDefList( sal_uInt16 nNewLvl );
375*b1cdbd2cSJim Jagielski
376*b1cdbd2cSJim Jagielski void OutStyleSheet( const SwPageDesc& rPageDesc, sal_Bool bUsed=sal_True );
377*b1cdbd2cSJim Jagielski
378*b1cdbd2cSJim Jagielski inline void OutCSS1_PropertyAscii( const sal_Char *pProp,
379*b1cdbd2cSJim Jagielski const sal_Char *pVal );
380*b1cdbd2cSJim Jagielski inline void OutCSS1_PropertyAscii( const sal_Char *pProp,
381*b1cdbd2cSJim Jagielski const ByteString& rVal );
382*b1cdbd2cSJim Jagielski inline void OutCSS1_Property( const sal_Char *pProp, const String& rVal );
383*b1cdbd2cSJim Jagielski void OutCSS1_Property( const sal_Char *pProp, const sal_Char *pVal,
384*b1cdbd2cSJim Jagielski const String *pSVal );
385*b1cdbd2cSJim Jagielski void OutCSS1_UnitProperty( const sal_Char *pProp, long nVal );
386*b1cdbd2cSJim Jagielski void OutCSS1_PixelProperty( const sal_Char *pProp, long nVal, sal_Bool bVert );
387*b1cdbd2cSJim Jagielski void OutCSS1_SfxItemSet( const SfxItemSet& rItemSet, sal_Bool bDeep=sal_True );
388*b1cdbd2cSJim Jagielski
389*b1cdbd2cSJim Jagielski // BODY-Tag-Events aus der SFX-Konfigaurion
390*b1cdbd2cSJim Jagielski void OutBasicBodyEvents();
391*b1cdbd2cSJim Jagielski
392*b1cdbd2cSJim Jagielski // BACKGROUND/BGCOLOR-Option
393*b1cdbd2cSJim Jagielski void OutBackground( const SvxBrushItem *pBrushItem, String& rEmbGrfNm,
394*b1cdbd2cSJim Jagielski sal_Bool bGraphic );
395*b1cdbd2cSJim Jagielski void OutBackground( const SfxItemSet& rItemSet, String &rEmbGrfName,
396*b1cdbd2cSJim Jagielski sal_Bool bGraphic );
397*b1cdbd2cSJim Jagielski
398*b1cdbd2cSJim Jagielski void OutLanguage( LanguageType eLang );
399*b1cdbd2cSJim Jagielski sal_uInt16 GetHTMLDirection( sal_uInt16 nDir ) const;
400*b1cdbd2cSJim Jagielski sal_uInt16 GetHTMLDirection( const SfxItemSet& rItemSet ) const;
401*b1cdbd2cSJim Jagielski void OutDirection( sal_uInt16 nDir );
402*b1cdbd2cSJim Jagielski
403*b1cdbd2cSJim Jagielski // ALT/ALIGN/WIDTH/HEIGHT/HSPACE/VSPACE-Optionen des aktuellen
404*b1cdbd2cSJim Jagielski // Frame-Formats ausgeben und ggf. ein <BR CLEAR=...> vorne an
405*b1cdbd2cSJim Jagielski // rEndTags anhaengen
406*b1cdbd2cSJim Jagielski void OutFrmFmtOptions( const SwFrmFmt& rFrmFmt, const String& rAltTxt,
407*b1cdbd2cSJim Jagielski ByteString &rEndTags, sal_uInt32 nFrmOpts );
408*b1cdbd2cSJim Jagielski void OutCSS1_TableFrmFmtOptions( const SwFrmFmt& rFrmFmt );
409*b1cdbd2cSJim Jagielski void OutCSS1_SectionFmtOptions( const SwFrmFmt& rFrmFmt );
410*b1cdbd2cSJim Jagielski void OutCSS1_FrmFmtOptions( const SwFrmFmt& rFrmFmt, sal_uInt32 nFrmOpts,
411*b1cdbd2cSJim Jagielski const SdrObject *pSdrObj=0,
412*b1cdbd2cSJim Jagielski const SfxItemSet *pItemSet=0 );
413*b1cdbd2cSJim Jagielski void OutCSS1_FrmFmtBackground( const SwFrmFmt& rFrmFmt );
414*b1cdbd2cSJim Jagielski
415*b1cdbd2cSJim Jagielski void ChangeParaToken( sal_uInt16 nNew );
416*b1cdbd2cSJim Jagielski
IncIndentLevel()417*b1cdbd2cSJim Jagielski void IncIndentLevel() { nIndentLvl++; }
DecIndentLevel()418*b1cdbd2cSJim Jagielski void DecIndentLevel() { if ( nIndentLvl ) nIndentLvl--; }
419*b1cdbd2cSJim Jagielski void GetIndentString( ByteString& rStr, sal_uInt16 nIncLvl=0 );
420*b1cdbd2cSJim Jagielski
GetLineLen()421*b1cdbd2cSJim Jagielski xub_StrLen GetLineLen() { return (xub_StrLen)(Strm().Tell()-nLastLFPos); }
422*b1cdbd2cSJim Jagielski void OutNewLine( sal_Bool bCheck=sal_False );
423*b1cdbd2cSJim Jagielski
424*b1cdbd2cSJim Jagielski // fuer HTMLSaveData
GetEndPaM()425*b1cdbd2cSJim Jagielski SwPaM* GetEndPaM() { return pOrigPam; }
SetEndPaM(SwPaM * pPam)426*b1cdbd2cSJim Jagielski void SetEndPaM( SwPaM* pPam ) { pOrigPam = pPam; }
427*b1cdbd2cSJim Jagielski
428*b1cdbd2cSJim Jagielski sal_uInt32 ToPixel( sal_uInt32 nVal ) const;
429*b1cdbd2cSJim Jagielski
430*b1cdbd2cSJim Jagielski sal_uInt16 GuessFrmType( const SwFrmFmt& rFrmFmt,
431*b1cdbd2cSJim Jagielski const SdrObject*& rpStrObj );
432*b1cdbd2cSJim Jagielski sal_uInt16 GuessOLENodeFrmType( const SwNode& rNd );
433*b1cdbd2cSJim Jagielski
434*b1cdbd2cSJim Jagielski void CollectFlyFrms();
435*b1cdbd2cSJim Jagielski
436*b1cdbd2cSJim Jagielski sal_uInt16 GetHTMLFontSize( sal_uInt32 nFontHeight ) const;
437*b1cdbd2cSJim Jagielski
438*b1cdbd2cSJim Jagielski // Die aktuelle Numerierungs-Information holen.
GetNumInfo()439*b1cdbd2cSJim Jagielski SwHTMLNumRuleInfo& GetNumInfo() { return *pNumRuleInfo; }
440*b1cdbd2cSJim Jagielski
441*b1cdbd2cSJim Jagielski // Die Numerierungs-Information des naechsten Absatz holen. Sie
442*b1cdbd2cSJim Jagielski // muss noch nicht vorhanden sein!
GetNextNumInfo()443*b1cdbd2cSJim Jagielski SwHTMLNumRuleInfo *GetNextNumInfo() { return pNextNumRuleInfo; }
444*b1cdbd2cSJim Jagielski
445*b1cdbd2cSJim Jagielski // Die Numerierungs-Information des naechsten Absatz setzen.
SetNextNumInfo(SwHTMLNumRuleInfo * pNxt)446*b1cdbd2cSJim Jagielski void SetNextNumInfo( SwHTMLNumRuleInfo *pNxt ) { pNextNumRuleInfo=pNxt; }
447*b1cdbd2cSJim Jagielski
448*b1cdbd2cSJim Jagielski // Die Numerierungs-Information des naeschten Absatz fuellen.
449*b1cdbd2cSJim Jagielski void FillNextNumInfo();
450*b1cdbd2cSJim Jagielski
451*b1cdbd2cSJim Jagielski // Die Numerierungs-Information des naeschten Absatz loeschen.
452*b1cdbd2cSJim Jagielski void ClearNextNumInfo();
453*b1cdbd2cSJim Jagielski
454*b1cdbd2cSJim Jagielski static const SdrObject *GetHTMLControl( const SwDrawFrmFmt& rFmt );
455*b1cdbd2cSJim Jagielski static const SdrObject *GetMarqueeTextObj( const SwDrawFrmFmt& rFmt );
456*b1cdbd2cSJim Jagielski static sal_uInt16 GetCSS1Selector( const SwFmt *pFmt, ByteString& rToken,
457*b1cdbd2cSJim Jagielski String& rClass, sal_uInt16& rRefPoolId,
458*b1cdbd2cSJim Jagielski String *pPseudo=0 );
459*b1cdbd2cSJim Jagielski
460*b1cdbd2cSJim Jagielski static const SwFmt *GetTemplateFmt( sal_uInt16 nPoolId, IDocumentStylePoolAccess* /*SwDoc*/ pTemplate );
461*b1cdbd2cSJim Jagielski static const SwFmt *GetParentFmt( const SwFmt& rFmt, sal_uInt16 nDeep );
462*b1cdbd2cSJim Jagielski
463*b1cdbd2cSJim Jagielski static void SubtractItemSet( SfxItemSet& rItemSet,
464*b1cdbd2cSJim Jagielski const SfxItemSet& rRefItemSet,
465*b1cdbd2cSJim Jagielski sal_Bool bSetDefaults,
466*b1cdbd2cSJim Jagielski sal_Bool bClearSame = sal_True,
467*b1cdbd2cSJim Jagielski const SfxItemSet *pRefScriptItemSet=0 );
468*b1cdbd2cSJim Jagielski static sal_Bool HasScriptDependentItems( const SfxItemSet& rItemSet,
469*b1cdbd2cSJim Jagielski sal_Bool bCheckDropCap );
470*b1cdbd2cSJim Jagielski
471*b1cdbd2cSJim Jagielski static void GetEEAttrsFromDrwObj( SfxItemSet& rItemSet,
472*b1cdbd2cSJim Jagielski const SdrObject *pObj,
473*b1cdbd2cSJim Jagielski sal_Bool bSetDefaults );
474*b1cdbd2cSJim Jagielski
475*b1cdbd2cSJim Jagielski static sal_uInt16 GetDefListLvl( const String& rNm, sal_uInt16 nPoolId );
476*b1cdbd2cSJim Jagielski
GetHTMLMode() const477*b1cdbd2cSJim Jagielski sal_uInt32 GetHTMLMode() const { return nHTMLMode; }
IsHTMLMode(sal_uInt32 nMode) const478*b1cdbd2cSJim Jagielski sal_Bool IsHTMLMode( sal_uInt32 nMode ) const { return (nHTMLMode & nMode) != 0; }
479*b1cdbd2cSJim Jagielski
480*b1cdbd2cSJim Jagielski inline sal_Bool IsCSS1Source( sal_uInt16 n ) const;
481*b1cdbd2cSJim Jagielski inline sal_Bool IsCSS1Script( sal_uInt16 n ) const;
482*b1cdbd2cSJim Jagielski
483*b1cdbd2cSJim Jagielski static const sal_Char *GetNumFormat( sal_uInt16 nFmt );
484*b1cdbd2cSJim Jagielski static void PrepareFontList( const SvxFontItem& rFontItem, String& rNames,
485*b1cdbd2cSJim Jagielski sal_Unicode cQuote, sal_Bool bGeneric );
486*b1cdbd2cSJim Jagielski static sal_uInt16 GetCSS1ScriptForScriptType( sal_uInt16 nScriptType );
487*b1cdbd2cSJim Jagielski static sal_uInt16 GetLangWhichIdFromScript( sal_uInt16 nScript );
488*b1cdbd2cSJim Jagielski
GetCSS1Unit() const489*b1cdbd2cSJim Jagielski FieldUnit GetCSS1Unit() const { return eCSS1Unit; }
490*b1cdbd2cSJim Jagielski };
491*b1cdbd2cSJim Jagielski
IsCSS1Source(sal_uInt16 n) const492*b1cdbd2cSJim Jagielski inline sal_Bool SwHTMLWriter::IsCSS1Source( sal_uInt16 n ) const
493*b1cdbd2cSJim Jagielski {
494*b1cdbd2cSJim Jagielski return n == (nCSS1OutMode & CSS1_OUTMODE_SOURCE);
495*b1cdbd2cSJim Jagielski }
496*b1cdbd2cSJim Jagielski
IsCSS1Script(sal_uInt16 n) const497*b1cdbd2cSJim Jagielski inline sal_Bool SwHTMLWriter::IsCSS1Script( sal_uInt16 n ) const
498*b1cdbd2cSJim Jagielski {
499*b1cdbd2cSJim Jagielski sal_uInt16 nScript = (nCSS1OutMode & CSS1_OUTMODE_SCRIPT);
500*b1cdbd2cSJim Jagielski return CSS1_OUTMODE_ANY_SCRIPT == nScript || n == nScript;
501*b1cdbd2cSJim Jagielski }
502*b1cdbd2cSJim Jagielski
OutCSS1_PropertyAscii(const sal_Char * pProp,const sal_Char * pVal)503*b1cdbd2cSJim Jagielski inline void SwHTMLWriter::OutCSS1_PropertyAscii( const sal_Char *pProp,
504*b1cdbd2cSJim Jagielski const sal_Char *pVal )
505*b1cdbd2cSJim Jagielski {
506*b1cdbd2cSJim Jagielski OutCSS1_Property( pProp, pVal, 0 );
507*b1cdbd2cSJim Jagielski }
508*b1cdbd2cSJim Jagielski
OutCSS1_PropertyAscii(const sal_Char * pProp,const ByteString & rVal)509*b1cdbd2cSJim Jagielski inline void SwHTMLWriter::OutCSS1_PropertyAscii( const sal_Char *pProp,
510*b1cdbd2cSJim Jagielski const ByteString& rVal )
511*b1cdbd2cSJim Jagielski {
512*b1cdbd2cSJim Jagielski OutCSS1_Property( pProp, rVal.GetBuffer(), 0 );
513*b1cdbd2cSJim Jagielski }
514*b1cdbd2cSJim Jagielski
OutCSS1_Property(const sal_Char * pProp,const String & rVal)515*b1cdbd2cSJim Jagielski inline void SwHTMLWriter::OutCSS1_Property( const sal_Char *pProp,
516*b1cdbd2cSJim Jagielski const String& rVal )
517*b1cdbd2cSJim Jagielski {
518*b1cdbd2cSJim Jagielski OutCSS1_Property( pProp, 0, &rVal );
519*b1cdbd2cSJim Jagielski }
520*b1cdbd2cSJim Jagielski
521*b1cdbd2cSJim Jagielski // Struktur speichert die aktuellen Daten des Writers zwischen, um
522*b1cdbd2cSJim Jagielski // einen anderen Dokument-Teil auszugeben, wie z.B. Header/Footer
523*b1cdbd2cSJim Jagielski // Mit den beiden USHORTs im CTOR wird ein neuer PaM erzeugt und auf
524*b1cdbd2cSJim Jagielski // die Position im Dokument gesetzt.
525*b1cdbd2cSJim Jagielski // Im Destructor werden alle Daten wieder restauriert und der angelegte
526*b1cdbd2cSJim Jagielski // Pam wieder geloescht.
527*b1cdbd2cSJim Jagielski
528*b1cdbd2cSJim Jagielski struct HTMLSaveData
529*b1cdbd2cSJim Jagielski {
530*b1cdbd2cSJim Jagielski SwHTMLWriter& rWrt;
531*b1cdbd2cSJim Jagielski SwPaM* pOldPam, *pOldEnd;
532*b1cdbd2cSJim Jagielski SwHTMLNumRuleInfo *pOldNumRuleInfo; // Owner = this
533*b1cdbd2cSJim Jagielski SwHTMLNumRuleInfo *pOldNextNumRuleInfo; // Owner = HTML-Writer
534*b1cdbd2cSJim Jagielski sal_uInt16 nOldDefListLvl;
535*b1cdbd2cSJim Jagielski sal_uInt16 nOldDirection;
536*b1cdbd2cSJim Jagielski sal_Bool bOldWriteAll : 1;
537*b1cdbd2cSJim Jagielski sal_Bool bOldOutHeader : 1;
538*b1cdbd2cSJim Jagielski sal_Bool bOldOutFooter : 1;
539*b1cdbd2cSJim Jagielski sal_Bool bOldOutFlyFrame : 1;
540*b1cdbd2cSJim Jagielski const SwFlyFrmFmt* pOldFlyFmt;
541*b1cdbd2cSJim Jagielski
542*b1cdbd2cSJim Jagielski HTMLSaveData( SwHTMLWriter&, sal_uLong nStt, sal_uLong nEnd,
543*b1cdbd2cSJim Jagielski sal_Bool bSaveNum=sal_True,
544*b1cdbd2cSJim Jagielski const SwFrmFmt *pFrmFmt=0 );
545*b1cdbd2cSJim Jagielski ~HTMLSaveData();
546*b1cdbd2cSJim Jagielski };
547*b1cdbd2cSJim Jagielski
548*b1cdbd2cSJim Jagielski
549*b1cdbd2cSJim Jagielski // einige Funktions-Deklarationen
550*b1cdbd2cSJim Jagielski Writer& OutHTML_FrmFmtOLENode( Writer& rWrt, const SwFrmFmt& rFmt,
551*b1cdbd2cSJim Jagielski sal_Bool bInCntnr );
552*b1cdbd2cSJim Jagielski Writer& OutHTML_FrmFmtOLENodeGrf( Writer& rWrt, const SwFrmFmt& rFmt,
553*b1cdbd2cSJim Jagielski sal_Bool bInCntnr );
554*b1cdbd2cSJim Jagielski
555*b1cdbd2cSJim Jagielski Writer& OutHTML_SwTxtNode( Writer&, const SwCntntNode& );
556*b1cdbd2cSJim Jagielski Writer& OutHTML_SwTblNode( Writer& , SwTableNode &, const SwFrmFmt *,
557*b1cdbd2cSJim Jagielski const String* pCaption=0, sal_Bool bTopCaption=sal_False );
558*b1cdbd2cSJim Jagielski
559*b1cdbd2cSJim Jagielski Writer& OutHTML_DrawFrmFmtAsControl( Writer& rWrt, const SwDrawFrmFmt& rFmt,
560*b1cdbd2cSJim Jagielski const SdrObject& rSdrObj, sal_Bool bInCntnr );
561*b1cdbd2cSJim Jagielski Writer& OutHTML_DrawFrmFmtAsMarquee( Writer& rWrt, const SwDrawFrmFmt& rFmt,
562*b1cdbd2cSJim Jagielski const SdrObject& rSdrObj );
563*b1cdbd2cSJim Jagielski
564*b1cdbd2cSJim Jagielski Writer& OutHTML_HeaderFooter( Writer& rWrt, const SwFrmFmt& rFrmFmt,
565*b1cdbd2cSJim Jagielski sal_Bool bHeader );
566*b1cdbd2cSJim Jagielski
567*b1cdbd2cSJim Jagielski Writer& OutHTML_Image( Writer&, const SwFrmFmt& rFmt,
568*b1cdbd2cSJim Jagielski const String& rGrfName, const String& rAlternateTxt,
569*b1cdbd2cSJim Jagielski const Size& rRealSize, sal_uInt32 nFrmOpts,
570*b1cdbd2cSJim Jagielski const sal_Char *pMarkType = 0,
571*b1cdbd2cSJim Jagielski const ImageMap *pGenImgMap = 0 );
572*b1cdbd2cSJim Jagielski Writer& OutHTML_BulletImage( Writer& rWrt, const sal_Char *pTag,
573*b1cdbd2cSJim Jagielski const SvxBrushItem* pBrush, String &rGrfName,
574*b1cdbd2cSJim Jagielski const Size &rSize,
575*b1cdbd2cSJim Jagielski const SwFmtVertOrient* pVertOrient );
576*b1cdbd2cSJim Jagielski
577*b1cdbd2cSJim Jagielski Writer& OutHTML_SwFmtFld( Writer& rWrt, const SfxPoolItem& rHt );
578*b1cdbd2cSJim Jagielski Writer& OutHTML_SwFmtFtn( Writer& rWrt, const SfxPoolItem& rHt );
579*b1cdbd2cSJim Jagielski Writer& OutHTML_INetFmt( Writer&, const SwFmtINetFmt& rINetFmt, sal_Bool bOn );
580*b1cdbd2cSJim Jagielski
581*b1cdbd2cSJim Jagielski Writer& OutCSS1_BodyTagStyleOpt( Writer& rWrt, const SfxItemSet& rItemSet,
582*b1cdbd2cSJim Jagielski String aEmbBGGrfName );
583*b1cdbd2cSJim Jagielski Writer& OutCSS1_ParaTagStyleOpt( Writer& rWrt, const SfxItemSet& rItemSet );
584*b1cdbd2cSJim Jagielski
585*b1cdbd2cSJim Jagielski Writer& OutCSS1_HintSpanTag( Writer& rWrt, const SfxPoolItem& rHt );
586*b1cdbd2cSJim Jagielski Writer& OutCSS1_HintStyleOpt( Writer& rWrt, const SfxPoolItem& rHt );
587*b1cdbd2cSJim Jagielski
588*b1cdbd2cSJim Jagielski Writer& OutCSS1_TableBGStyleOpt( Writer& rWrt, const SfxPoolItem& rHt );
589*b1cdbd2cSJim Jagielski Writer& OutCSS1_NumBulListStyleOpt( Writer& rWrt, const SwNumRule& rNumRule,
590*b1cdbd2cSJim Jagielski sal_uInt8 nLevel );
591*b1cdbd2cSJim Jagielski
592*b1cdbd2cSJim Jagielski Writer& OutHTML_NumBulListStart( SwHTMLWriter& rWrt,
593*b1cdbd2cSJim Jagielski const SwHTMLNumRuleInfo& rInfo );
594*b1cdbd2cSJim Jagielski Writer& OutHTML_NumBulListEnd( SwHTMLWriter& rWrt,
595*b1cdbd2cSJim Jagielski const SwHTMLNumRuleInfo& rNextInfo );
596*b1cdbd2cSJim Jagielski
597*b1cdbd2cSJim Jagielski
598*b1cdbd2cSJim Jagielski #endif // _WRTHTML_HXX
599*b1cdbd2cSJim Jagielski
600