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 #ifndef _ATTRIBUTEOUTPUTBASE_HXX_
25 #define _ATTRIBUTEOUTPUTBASE_HXX_
26 
27 #include "fields.hxx"
28 #include "WW8TableInfo.hxx"
29 
30 #include <rtl/textenc.h>
31 #include <editeng/svxenum.hxx>
32 #include <tools/solar.h>
33 
34 #include <swtypes.hxx>
35 #include <wrtswtbl.hxx>
36 #include <fldbas.hxx>
37 
38 #include <vector>
39 
40 class Point;
41 class SvxCaseMapItem;
42 class SvxColorItem;
43 class SvxContourItem;
44 class SvxCrossedOutItem;
45 class SvxEscapementItem;
46 class SvxFontItem;
47 class SvxFontHeightItem;
48 class SvxKerningItem;
49 class SvxLanguageItem;
50 class SvxPostureItem;
51 class SvxShadowedItem;
52 class SvxUnderlineItem;
53 class SvxWeightItem;
54 class SvxAutoKernItem;
55 class SvxBlinkItem;
56 class SvxBrushItem;
57 class SvxFontItem;
58 class SvxFontHeightItem;
59 class SvxLanguageItem;
60 class SvxPostureItem;
61 class SvxWeightItem;
62 class SvxFontItem;
63 class SvxFontHeightItem;
64 class SvxLanguageItem;
65 class SvxPostureItem;
66 class SvxWeightItem;
67 class SvxCharRotateItem;
68 class SvxEmphasisMarkItem;
69 class SvxTwoLinesItem;
70 class SvxCharScaleWidthItem;
71 class SvxCharReliefItem;
72 class SvxCharHiddenItem;
73 class SwFmtINetFmt;
74 class SwFmtCharFmt;
75 class SwFmtFld;
76 class SwFmtFlyCnt;
77 class SwFmtFtn;
78 class SwFmtHardBlank;
79 class SvxLineSpacingItem;
80 class SvxAdjustItem;
81 class SvxFmtSplitItem;
82 class SvxWidowsItem;
83 class SvxTabStopItem;
84 class SvxHyphenZoneItem;
85 class SwNumRuleItem;
86 class SfxBoolItem;
87 class SfxPoolItem;
88 class SfxItemSet;
89 class SvxParaVertAlignItem;
90 class SvxParaGridItem;
91 class SwFmtFrmSize;
92 class SvxPaperBinItem;
93 class SvxLRSpaceItem;
94 class SvxULSpaceItem;
95 class SwFmtPageDesc;
96 class SvxFmtBreakItem;
97 class SwFmtSurround;
98 class SwFmtVertOrient;
99 class SwFmtHoriOrient;
100 class SwFmtAnchor;
101 class SvxBrushItem;
102 class SvxBoxItem;
103 class SwFmtCol;
104 class SvxFmtKeepItem;
105 class SwTextGridItem;
106 class SwFmtLineNumber;
107 class SvxFrameDirectionItem;
108 class SwFmtRuby;
109 class SwTxtNode;
110 class SwTOXMark;
111 class SwRedlineData;
112 class SwSection;
113 class SwFmtDrop;
114 class SwFrmFmt;
115 class SwNumFmt;
116 class SwFmt;
117 class SwTableNode;
118 struct WW8_SepInfo;
119 struct WW8_PdAttrDesc;
120 class SwLineNumberInfo;
121 class SwNumRule;
122 class wwFont;
123 
124 class String;
125 
126 class MSWordExportBase;
127 
128 namespace sw { class Frame; }
129 
130 namespace msword {
131     const sal_uInt8 ColumnBreak = 0xE;
132     const sal_uInt8 PageBreak   = 0xC;
133 }
134 
135 class AttributeOutputBase
136 {
137 public:
138     /// Export the state of RTL/CJK.
139     virtual void RTLAndCJKState( bool bIsRTL, sal_uInt16 nScript ) = 0;
140 
141     /// Start of the paragraph.
142     virtual void StartParagraph( ww8::WW8TableNodeInfo::Pointer_t pTextNodeInfo ) = 0;
143 
144     /// End of the paragraph.
145     virtual void EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pTextNodeInfoInner ) = 0;
146 
147     /// Called before we start outputting the attributes.
148     virtual void StartParagraphProperties( const SwTxtNode& rNode ) = 0;
149 
150     /// Called after we end outputting the attributes.
151     virtual void EndParagraphProperties() = 0;
152 
153     /// Empty paragraph.
154     virtual void EmptyParagraph() = 0;
155 
156     /// Start of the text run.
157     virtual void StartRun( const SwRedlineData* pRedlineData ) = 0;
158 
159     /// End of the text run.
160     virtual void EndRun() = 0;
161 
162     /// Called before we start outputting the attributes.
163     virtual void StartRunProperties() = 0;
164 
165     /// Called after we end outputting the attributes.
166     virtual void EndRunProperties( const SwRedlineData* pRedlineData ) = 0;
167 
168     /// for docx w:commentRangeStart
WritePostitFieldStart()169     virtual void WritePostitFieldStart() {};
170 
171     /// for docx w:commentRangeEnd
WritePostitFieldEnd()172     virtual void WritePostitFieldEnd() {};
173 
174     /// Output text (inside a run).
175     virtual void RunText( const String& rText, rtl_TextEncoding eCharSet ) = 0;
176 
177     /// Output text (without markup).
178     virtual void RawText( const String& rText, bool bForceUnicode, rtl_TextEncoding eCharSet ) = 0;
179 
180     /// Output ruby start.
181     virtual void StartRuby( const SwTxtNode& rNode, const SwFmtRuby& rRuby ) = 0;
182 
183     /// Output ruby end.
184     virtual void EndRuby() = 0;
185 
186     /// Output URL start.
187     virtual bool StartURL( const String& rUrl, const String& rTarget ) = 0;
188 
189     /// Output URL end.
190     virtual bool EndURL() = 0;
191 
192     virtual void FieldVanish( const String& rTxt, ww::eField eType ) = 0;
193 
194     void StartTOX( const SwSection& rSect );
195 
196     void EndTOX( const SwSection& rSect,bool bCareEnd=true );
197 
OnTOXEnding()198     virtual void OnTOXEnding() {}
199 
200     virtual void TOXMark( const SwTxtNode& rNode, const SwTOXMark& rAttr );
201 
202     /// Output redlining.
203     virtual void Redline( const SwRedlineData* pRedline ) = 0;
204 
205     virtual void FormatDrop( const SwTxtNode& rNode, const SwFmtDrop& rSwFmtDrop, sal_uInt16 nStyle, ww8::WW8TableNodeInfo::Pointer_t pTextNodeInfo, ww8::WW8TableNodeInfoInner::Pointer_t pTextNodeInfoInner ) = 0;
206 
207     /// Output FKP (Formatted disK Page) - necessary for binary formats only.
208     /// FIXME having it in AttributeOutputBase is probably a hack, it
209     /// should be in WW8AttributeOutput only...
OutputFKP()210     virtual void OutputFKP() {}
211 
212     /// Output style.
213     virtual void ParagraphStyle( sal_uInt16 nStyle ) = 0;
214 
215     virtual void TableInfoCell( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
216 
217     virtual void TableInfoRow( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
218 
219     virtual void TableDefinition( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
220 
221     virtual void TableDefaultBorders( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
222 
223     virtual void TableBackgrounds( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
224 
225     virtual void TableHeight( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
226 
227     virtual void TableCanSplit( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
228 
229     virtual void TableBidi( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
230 
231     virtual void TableVerticalCell( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
232 
233     virtual void TableNodeInfo( ww8::WW8TableNodeInfo::Pointer_t pNodeInfo ) = 0;
234 
235     virtual void TableNodeInfoInner( ww8::WW8TableNodeInfoInner::Pointer_t pNodeInfoInner ) = 0;
236 
237     virtual void TableOrientation( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner ) = 0;
238 
239     virtual void TableSpacing( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner ) = 0;
240 
241     virtual void TableRowEnd( sal_uInt32 nDepth ) = 0;
242 
243     /// Start of the styles table.
244     virtual void StartStyles() = 0;
245 
246     /// End of the styles table.
247     virtual void EndStyles( sal_uInt16 nNumberOfStyles ) = 0;
248 
249     /// Write default style.
250     virtual void DefaultStyle( sal_uInt16 nStyle ) = 0;
251 
252     /// Start of a style in the styles table.
253     virtual void StartStyle( const String& rName, bool bPapFmt,
254             sal_uInt16 nBase, sal_uInt16 nNext, sal_uInt16 nWwId, sal_uInt16 nId ) = 0;
255 
256     /// End of a style in the styles table.
257     virtual void EndStyle() = 0;
258 
259     /// Start of (paragraph or run) properties of a style.
260     virtual void StartStyleProperties( bool bParProp, sal_uInt16 nStyle ) = 0;
261 
262     /// End of (paragraph or run) properties of a style.
263     virtual void EndStyleProperties( bool bParProp ) = 0;
264 
265     /// Numbering rule and Id.
266     virtual void OutlineNumbering( sal_uInt8 nLvl, const SwNumFmt& rNFmt, const SwFmt& rFmt ) = 0;
267 
268     /// Page break
269     /// As a paragraph property - the paragraph should be on the next page.
270     virtual void PageBreakBefore( bool bBreak ) = 0;
271 
272     /// Write a section break
273     /// msword::ColumnBreak or msword::PageBreak
274     virtual void SectionBreak( sal_uInt8 nC, const WW8_SepInfo* pSectionInfo = NULL ) = 0;
275 
276     /// Start of the section properties.
277     virtual void StartSection() = 0;
278 
279     /// End of the section properties.
280     virtual void EndSection() = 0;
281 
282     /// Protection of forms.
283     virtual void SectionFormProtection( bool bProtected ) = 0;
284 
285     /// Numbering of the lines in the document.
286     virtual void SectionLineNumbering( sal_uLong nRestartNo, const SwLineNumberInfo& rLnNumInfo ) = 0;
287 
288     /// Has different headers/footers for the title page.
289     virtual void SectionTitlePage() = 0;
290 
291     /// Description of the page borders.
292     virtual void SectionPageBorders( const SwFrmFmt* pFmt, const SwFrmFmt* pFirstPageFmt ) = 0;
293 
294     /// Columns populated from right/numbers on the right side?
295     virtual void SectionBiDi( bool bBiDi ) = 0;
296 
297     /// The style of the page numbers.
298     ///
299     /// nPageRestartNumberr being 0 means no restart.
300     virtual void SectionPageNumbering( sal_uInt16 nNumType, sal_uInt16 nPageRestartNumber ) = 0;
301 
302     /// The type of breaking.
303     virtual void SectionType( sal_uInt8 nBreakCode ) = 0;
304 
305     /// Special header/footer flags, needed for old versions only.
SectionWW6HeaderFooterFlags(sal_uInt8)306     virtual void SectionWW6HeaderFooterFlags( sal_uInt8 /*nHeadFootFlags*/ ) {}
307 
308     /// Definition of a numbering instance.
309     virtual void NumberingDefinition( sal_uInt16 nId, const SwNumRule &rRule ) = 0;
310 
311     /// Start of the abstract numbering definition instance.
StartAbstractNumbering(sal_uInt16)312     virtual void StartAbstractNumbering( sal_uInt16 /*nId*/ ) {}
313 
314     /// End of the abstract numbering definition instance.
EndAbstractNumbering()315     virtual void EndAbstractNumbering() {}
316 
317     /// All the numbering level information.
318     virtual void NumberingLevel( sal_uInt8 nLevel,
319         sal_uInt16 nStart,
320         sal_uInt16 nNumberingType,
321         SvxAdjust eAdjust,
322         const sal_uInt8 *pNumLvlPos,
323         sal_uInt8 nFollow,
324         const wwFont *pFont,
325         const SfxItemSet *pOutSet,
326         sal_Int16 nIndentAt,
327         sal_Int16 nFirstLineIndex,
328         sal_Int16 nListTabPos,
329         const String &rNumberingString ,
330 	const SvxBrushItem* pBrush = 0) = 0;//For i120928,to export graphic of bullet
331 
332 protected:
333 
334     void GetNumberPara( String& rStr, const SwField& rFld );
335 
336     /// Output frames - the implementation.
337     virtual void OutputFlyFrame_Impl( const sw::Frame& rFmt, const Point& rNdTopLeft ) = 0;
338 
339     /// Sfx item Sfx item RES_CHRATR_CASEMAP
340     virtual void CharCaseMap( const SvxCaseMapItem& ) = 0;
341 
342     /// Sfx item Sfx item RES_CHRATR_COLOR
343     virtual void CharColor( const SvxColorItem& ) = 0;
344 
345     /// Sfx item Sfx item RES_CHRATR_CONTOUR
346     virtual void CharContour( const SvxContourItem& ) = 0;
347 
348     /// Sfx item RES_CHRATR_CROSSEDOUT
349     virtual void CharCrossedOut( const SvxCrossedOutItem& ) = 0;
350 
351     /// Sfx item RES_CHRATR_ESCAPEMENT
352     virtual void CharEscapement( const SvxEscapementItem& ) = 0;
353 
354     /// Sfx item RES_CHRATR_FONT
355     virtual void CharFont( const SvxFontItem& ) = 0;
356 
357     /// Sfx item RES_CHRATR_FONTSIZE
358     virtual void CharFontSize( const SvxFontHeightItem& ) = 0;
359 
360     /// Sfx item RES_CHRATR_KERNING
361     virtual void CharKerning( const SvxKerningItem& ) = 0;
362 
363     /// Sfx item RES_CHRATR_LANGUAGE
364     virtual void CharLanguage( const SvxLanguageItem& ) = 0;
365 
366     /// Sfx item RES_CHRATR_POSTURE
367     virtual void CharPosture( const SvxPostureItem& ) = 0;
368 
369     /// Sfx item RES_CHRATR_SHADOWED
370     virtual void CharShadow( const SvxShadowedItem& ) = 0;
371 
372     /// Sfx item RES_CHRATR_UNDERLINE
373     virtual void CharUnderline( const SvxUnderlineItem& ) = 0;
374 
375     /// Sfx item RES_CHRATR_WEIGHT
376     virtual void CharWeight( const SvxWeightItem& ) = 0;
377 
378     /// Sfx item RES_CHRATR_AUTOKERN
379     virtual void CharAutoKern( const SvxAutoKernItem& ) = 0;
380 
381     /// Sfx item RES_CHRATR_BLINK
382     virtual void CharAnimatedText( const SvxBlinkItem& ) = 0;
383 
384     /// Sfx item RES_CHRATR_BACKGROUND
385     virtual void CharBackground( const SvxBrushItem& ) = 0;
386 
387     /// Sfx item RES_CHRATR_CJK_FONT
388     virtual void CharFontCJK( const SvxFontItem& ) = 0;
389 
390     /// Sfx item RES_CHRATR_CJK_FONTSIZE
391     virtual void CharFontSizeCJK( const SvxFontHeightItem& ) = 0;
392 
393     /// Sfx item RES_CHRATR_CJK_LANGUAGE
394     virtual void CharLanguageCJK( const SvxLanguageItem& ) = 0;
395 
396     /// Sfx item RES_CHRATR_CJK_POSTURE
397     virtual void CharPostureCJK( const SvxPostureItem& ) = 0;
398 
399     /// Sfx item RES_CHRATR_CJK_WEIGHT
400     virtual void CharWeightCJK( const SvxWeightItem& ) = 0;
401 
402     /// Sfx item RES_CHRATR_CTL_FONT
403     virtual void CharFontCTL( const SvxFontItem& ) = 0;
404 
405     /// Sfx item RES_CHRATR_CTL_FONTSIZE
406     virtual void CharFontSizeCTL( const SvxFontHeightItem& ) = 0;
407 
408     /// Sfx item RES_CHRATR_CTL_LANGUAGE
409     virtual void CharLanguageCTL( const SvxLanguageItem& ) = 0;
410 
411     /// Sfx item RES_CHRATR_CTL_POSTURE
412     virtual void CharPostureCTL( const SvxPostureItem& ) = 0;
413 
414     /// Sfx item RES_CHRATR_CTL_WEIGHT
415     virtual void CharWeightCTL( const SvxWeightItem& ) = 0;
416 
417 	/// Sfx item RES_CHRATR_BidiRTL
418     virtual void CharBidiRTL( const SfxPoolItem& ) = 0;
419 
420     /// Sfx item RES_CHRATR_IdctHint
421     virtual void CharIdctHint( const SfxPoolItem& ) = 0;
422     /// Sfx item RES_CHRATR_ROTATE
423     virtual void CharRotate( const SvxCharRotateItem& ) = 0;
424 
425     /// Sfx item RES_CHRATR_EMPHASIS_MARK
426     virtual void CharEmphasisMark( const SvxEmphasisMarkItem& ) = 0;
427 
428     /// Sfx item RES_CHRATR_TWO_LINES
429     virtual void CharTwoLines( const SvxTwoLinesItem& ) = 0;
430 
431     /// Sfx item RES_CHRATR_SCALEW
432     virtual void CharScaleWidth( const SvxCharScaleWidthItem& ) = 0;
433 
434     /// Sfx item RES_CHRATR_RELIEF
435     virtual void CharRelief( const SvxCharReliefItem& ) = 0;
436 
437     /// Sfx item RES_CHRATR_HIDDEN
438     virtual void CharHidden( const SvxCharHiddenItem& ) = 0;
439 
440     /// Sfx item RES_TXTATR_INETFMT
441     virtual void TextINetFormat( const SwFmtINetFmt& ) = 0;
442 
443     /// Sfx item RES_TXTATR_CHARFMT
444     virtual void TextCharFormat( const SwFmtCharFmt& ) = 0;
445 
446     /// Sfx item RES_TXTATR_FIELD, RES_TXTATR_ANNOTATION and RES_TXTATR_INPUTFIELD
447     void TextField( const SwFmtFld& );
448 
449     /// Sfx item RES_TXTATR_FLYCNT
450     virtual void TextFlyContent( const SwFmtFlyCnt& );
451 
452     /// Sfx item RES_TXTATR_FTN
453     ///
454     /// This one is common for both WW8AttributeOutput as well as
455     /// DocxAttributeOutput.
456     void TextFootnote( const SwFmtFtn& );
457 
458     /// Sfx item RES_TXTATR_FTN
459     virtual void TextFootnote_Impl( const SwFmtFtn& ) = 0;
460 
461     /// Sfx item RES_PARATR_LINESPACING
462     void ParaLineSpacing( const SvxLineSpacingItem& );
463 
464     /// Count the values in ParaLineSpacing, and pass theme here.
465     virtual void ParaLineSpacing_Impl( short nSpace, short nMulti ) = 0;
466 
467     /// Sfx item RES_PARATR_ADJUST
468     virtual void ParaAdjust( const SvxAdjustItem& ) = 0;
469 
470     /// Sfx item RES_PARATR_SPLIT
471     virtual void ParaSplit( const SvxFmtSplitItem& ) = 0;
472 
473     /// Sfx item RES_PARATR_WIDOWS
474     virtual void ParaWidows( const SvxWidowsItem& ) = 0;
475 
476     /// Sfx item RES_PARATR_TABSTOP
477     virtual void ParaTabStop( const SvxTabStopItem& ) = 0;
478 
479     /// Sfx item RES_PARATR_HYPHENZONE
480     virtual void ParaHyphenZone( const SvxHyphenZoneItem& ) = 0;
481 
482     /// Sfx item RES_PARATR_NUMRULE
483     void ParaNumRule( const SwNumRuleItem& );
484 
485     /// Numbering - the implementation.
486     virtual void ParaNumRule_Impl( const SwTxtNode *pTxtNd, sal_Int32 nLvl, sal_Int32 nNumId ) = 0;
487 
488     /// Sfx item RES_PARATR_SCRIPTSPACE
489     virtual void ParaScriptSpace( const SfxBoolItem& ) = 0;
490 
491     /// Sfx item RES_PARATR_HANGINGPUNCTUATION
ParaHangingPunctuation(const SfxBoolItem & rHt)492     void ParaHangingPunctuation( const SfxBoolItem& rHt ) { ParaScriptSpace( rHt ); };
493 
494     /// Sfx item RES_PARATR_FORBIDDEN_RULES
ParaForbiddenRules(const SfxBoolItem & rHt)495     void ParaForbiddenRules( const SfxBoolItem& rHt ) { ParaScriptSpace( rHt ); };
496 
497     /// Sfx item RES_PARATR_VERTALIGN
498     virtual void ParaVerticalAlign( const SvxParaVertAlignItem& ) = 0;
499 
500     /// Sfx item RES_PARATR_SNAPTOGRID
501     virtual void ParaSnapToGrid( const SvxParaGridItem& ) = 0;
502 
503     /// Sfx item RES_FRM_SIZE
504     virtual void FormatFrameSize( const SwFmtFrmSize& ) = 0;
505 
506     /// Sfx item RES_PAPER_BIN
507     virtual void FormatPaperBin( const SvxPaperBinItem& ) = 0;
508 
509     /// Sfx item RES_LR_SPACE
510     virtual void FormatLRSpace( const SvxLRSpaceItem& ) = 0;
511 
512     /// Sfx item RES_UL_SPACE
513     virtual void FormatULSpace( const SvxULSpaceItem& ) = 0;
514 
515     /// Sfx item RES_PAGEDESC
516     void FormatPageDescription( const SwFmtPageDesc& );
517 
518     /// Sfx item RES_BREAK
519     void FormatBreak( const SvxFmtBreakItem& );
520 
521     /// Sfx item RES_SURROUND
522     virtual void FormatSurround( const SwFmtSurround& ) = 0;
523 
524     /// Sfx item RES_VERT_ORIENT
525     virtual void FormatVertOrientation( const SwFmtVertOrient& ) = 0;
526 
527     /// Sfx item RES_HORI_ORIENT
528     virtual void FormatHorizOrientation( const SwFmtHoriOrient& ) = 0;
529 
530     /// Sfx item RES_ANCHOR
531     virtual void FormatAnchor( const SwFmtAnchor& ) = 0;
532 
533     /// Sfx item RES_BACKGROUND
534     virtual void FormatBackground( const SvxBrushItem& ) = 0;
535 
536     /// Sfx item RES_BOX
537     virtual void FormatBox( const SvxBoxItem& ) = 0;
538 
539     /// Sfx item RES_COL
540     void FormatColumns( const SwFmtCol& );
541 
542     virtual void FormatColumns_Impl( sal_uInt16 nCols, const SwFmtCol & rCol, bool bEven, SwTwips nPageSize ) = 0;
543 
544     /// Sfx item RES_KEEP
545     virtual void FormatKeep( const SvxFmtKeepItem& ) = 0;
546 
547     /// Sfx item RES_TEXTGRID
548     virtual void FormatTextGrid( const SwTextGridItem& ) = 0;
549 
550     /// Sfx item RES_LINENUMBER
551     virtual void FormatLineNumbering( const SwFmtLineNumber& ) = 0;
552 
553     /// Sfx item RES_FRAMEDIR
554     virtual void FormatFrameDirection( const SvxFrameDirectionItem& ) = 0;
555 
556     /// Write the expanded field
557     virtual void WriteExpand( const SwField* pFld ) = 0;
558 
559     virtual void RefField( const SwField& rFld, const String& rRef ) = 0;
560     virtual void HiddenField( const SwField& rFld ) = 0;
561     virtual void SetField( const SwField& rFld, ww::eField eType, const String& rCmd ) = 0;
562     virtual void PostitField( const SwField* pFld ) = 0;
563     virtual bool DropdownField( const SwField* pFld ) = 0;
564 
565     virtual bool AnalyzeURL( const String& rUrl, const String& rTarget, String* pLinkURL, String* pMark );
566 
567     ww8::GridColsPtr GetGridCols( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner );
568 
569 public:
AttributeOutputBase()570     AttributeOutputBase() {}
~AttributeOutputBase()571     virtual ~AttributeOutputBase() {}
572 
573     /// Return the right export class.
574     virtual MSWordExportBase& GetExport() = 0;
575 
576     /// Call the right virtual function according to the type of the item.
577     void OutputItem( const SfxPoolItem& rHt );
578 
579     /// Use OutputItem() on an item set - for styles.
580     void OutputStyleItemSet( const SfxItemSet& rSet, sal_Bool bDeep, sal_Bool bTestForDefault );
581 
582     /// Output frames.
583     void OutputFlyFrame( const sw::Frame& rFmt );
584 
585     void GetTablePageSize
586     ( ww8::WW8TableNodeInfoInner * pTableTextNodeInfoInner,
587       sal_uInt32& rPageSize, bool& rRelBoxSize );
588 
589 };
590 
591 #endif // _ATTRIBUTEOUTPUTBASE_HXX_
592 
593 /* vi:set tabstop=4 shiftwidth=4 expandtab: */
594