Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #ifndef _ATTRIBUTEOUTPUTBASE_HXX_
21 : #define _ATTRIBUTEOUTPUTBASE_HXX_
22 :
23 : #include "fields.hxx"
24 : #include "WW8TableInfo.hxx"
25 :
26 : #include <rtl/textenc.h>
27 : #include <editeng/svxenum.hxx>
28 : #include <tools/solar.h>
29 :
30 : #include <swtypes.hxx>
31 : #include <wrtswtbl.hxx>
32 : #include <fldbas.hxx>
33 :
34 : #include <vector>
35 :
36 : class Point;
37 : class SvxCaseMapItem;
38 : class SvxColorItem;
39 : class SvxContourItem;
40 : class SvxCrossedOutItem;
41 : class SvxEscapementItem;
42 : class SvxFontItem;
43 : class SvxFontHeightItem;
44 : class SvxKerningItem;
45 : class SvxLanguageItem;
46 : class SvxPostureItem;
47 : class SvxShadowedItem;
48 : class SvxUnderlineItem;
49 : class SvxWeightItem;
50 : class SvxAutoKernItem;
51 : class SvxBlinkItem;
52 : class SvxBrushItem;
53 : class SvxFontItem;
54 : class SvxFontHeightItem;
55 : class SvxLanguageItem;
56 : class SvxPostureItem;
57 : class SvxWeightItem;
58 : class SvxFontItem;
59 : class SvxFontHeightItem;
60 : class SvxLanguageItem;
61 : class SvxPostureItem;
62 : class SvxWeightItem;
63 : class SvxCharRotateItem;
64 : class SvxEmphasisMarkItem;
65 : class SvxTwoLinesItem;
66 : class SvxCharScaleWidthItem;
67 : class SvxCharReliefItem;
68 : class SvxCharHiddenItem;
69 : class SwFmtINetFmt;
70 : class SwFmtCharFmt;
71 : class SwFmtFld;
72 : class SwFmtFlyCnt;
73 : class SwFmtFtn;
74 : class SvxLineSpacingItem;
75 : class SvxAdjustItem;
76 : class SvxFmtSplitItem;
77 : class SvxWidowsItem;
78 : class SvxTabStopItem;
79 : class SvxHyphenZoneItem;
80 : class SwNumRuleItem;
81 : class SfxBoolItem;
82 : class SfxPoolItem;
83 : class SfxItemSet;
84 : class SvxParaVertAlignItem;
85 : class SvxParaGridItem;
86 : class SwFmtFrmSize;
87 : class SvxPaperBinItem;
88 : class SvxLRSpaceItem;
89 : class SvxULSpaceItem;
90 : class SwFmtPageDesc;
91 : class SvxFmtBreakItem;
92 : class SwFmtSurround;
93 : class SwFmtVertOrient;
94 : class SwFmtHoriOrient;
95 : class SwFmtAnchor;
96 : class SvxBrushItem;
97 : class SvxBoxItem;
98 : class SwFmtCol;
99 : class SvxFmtKeepItem;
100 : class SwTextGridItem;
101 : class SwFmtLineNumber;
102 : class SvxFrameDirectionItem;
103 : class SwFmtRuby;
104 : class SwTxtNode;
105 : class SwTOXMark;
106 : class SwRedlineData;
107 : class SwSection;
108 : class SwFmtDrop;
109 : class SwFrmFmt;
110 : class SwNumFmt;
111 : class SwFmt;
112 : struct WW8_SepInfo;
113 : class SwLineNumberInfo;
114 : class SwNumRule;
115 : class wwFont;
116 :
117 : class String;
118 :
119 : class MSWordExportBase;
120 :
121 : namespace sw { class Frame; }
122 :
123 : namespace msword {
124 : const sal_uInt8 ColumnBreak = 0xE;
125 : const sal_uInt8 PageBreak = 0xC;
126 : }
127 :
128 : class AttributeOutputBase
129 : {
130 : public:
131 : /// Export the state of RTL/CJK.
132 : virtual void RTLAndCJKState( bool bIsRTL, sal_uInt16 nScript ) = 0;
133 :
134 : /// Start of the paragraph.
135 : virtual void StartParagraph( ww8::WW8TableNodeInfo::Pointer_t pTextNodeInfo ) = 0;
136 :
137 : /// End of the paragraph.
138 : virtual void EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pTextNodeInfoInner ) = 0;
139 :
140 : /// Called before we start outputting the attributes.
141 : virtual void StartParagraphProperties( const SwTxtNode& rNode ) = 0;
142 :
143 : /// Called after we end outputting the attributes.
144 : virtual void EndParagraphProperties() = 0;
145 :
146 : /// Empty paragraph.
147 : virtual void EmptyParagraph() = 0;
148 :
149 : /// Start of the text run.
150 : virtual void StartRun( const SwRedlineData* pRedlineData, bool bSingleEmptyRun = false ) = 0;
151 :
152 : /// End of the text run.
153 : virtual void EndRun() = 0;
154 :
155 : /// Called before we start outputting the attributes.
156 : virtual void StartRunProperties() = 0;
157 :
158 : /// Called after we end outputting the attributes.
159 : virtual void EndRunProperties( const SwRedlineData* pRedlineData ) = 0;
160 :
161 : /// docx requires footnoteRef/endnoteRef tag at the beginning of each of them
162 3 : virtual void FootnoteEndnoteRefTag() {};
163 :
164 : /// for docx footnotePr/endnotePr inside sectPr
165 6 : virtual void SectFootnoteEndnotePr() {};
166 :
167 : /// for docx w:commentReference
168 123 : virtual void WritePostitFieldReference() {};
169 :
170 : /// for docx w:commentRangeStart
171 0 : virtual void WritePostitFieldStart() {};
172 :
173 : /// for docx w:commentRangeEnd
174 0 : virtual void WritePostitFieldEnd() {};
175 :
176 : /// Output text (inside a run).
177 : virtual void RunText( const String& rText, rtl_TextEncoding eCharSet ) = 0;
178 :
179 : /// Output text (without markup).
180 : virtual void RawText( const String& rText, bool bForceUnicode, rtl_TextEncoding eCharSet ) = 0;
181 :
182 : /// Output ruby start.
183 : virtual void StartRuby( const SwTxtNode& rNode, xub_StrLen nPos, const SwFmtRuby& rRuby ) = 0;
184 :
185 : /// Output ruby end.
186 : virtual void EndRuby() = 0;
187 :
188 : /// Output URL start.
189 : virtual bool StartURL( const String& rUrl, const String& rTarget ) = 0;
190 :
191 : /// Output URL end.
192 : virtual bool EndURL() = 0;
193 :
194 : virtual void FieldVanish( const String& rTxt, ww::eField eType ) = 0;
195 :
196 : void StartTOX( const SwSection& rSect );
197 :
198 : void EndTOX( const SwSection& rSect );
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...
210 153 : 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,
255 : bool bAutoUpdate ) = 0;
256 :
257 : /// End of a style in the styles table.
258 : virtual void EndStyle() = 0;
259 :
260 : /// Start of (paragraph or run) properties of a style.
261 : virtual void StartStyleProperties( bool bParProp, sal_uInt16 nStyle ) = 0;
262 :
263 : /// End of (paragraph or run) properties of a style.
264 : virtual void EndStyleProperties( bool bParProp ) = 0;
265 :
266 : /// Numbering rule and Id.
267 : virtual void OutlineNumbering( sal_uInt8 nLvl, const SwNumFmt& rNFmt, const SwFmt& rFmt ) = 0;
268 :
269 : /// Page break
270 : /// As a paragraph property - the paragraph should be on the next page.
271 : virtual void PageBreakBefore( bool bBreak ) = 0;
272 :
273 : /// Write a section break
274 : /// msword::ColumnBreak or msword::PageBreak
275 : virtual void SectionBreak( sal_uInt8 nC, const WW8_SepInfo* pSectionInfo = NULL ) = 0;
276 :
277 : /// Start of the section properties.
278 : virtual void StartSection() = 0;
279 :
280 : /// End of the section properties.
281 : virtual void EndSection() = 0;
282 :
283 : /// Protection of forms.
284 : virtual void SectionFormProtection( bool bProtected ) = 0;
285 :
286 : /// Numbering of the lines in the document.
287 : virtual void SectionLineNumbering( sal_uLong nRestartNo, const SwLineNumberInfo& rLnNumInfo ) = 0;
288 :
289 : /// Has different headers/footers for the title page.
290 : virtual void SectionTitlePage() = 0;
291 :
292 : /// Description of the page borders.
293 : virtual void SectionPageBorders( const SwFrmFmt* pFmt, const SwFrmFmt* pFirstPageFmt ) = 0;
294 :
295 : /// Columns populated from right/numbers on the right side?
296 : virtual void SectionBiDi( bool bBiDi ) = 0;
297 :
298 : /// The style of the page numbers.
299 : ///
300 : /// nPageRestartNumberr being 0 means no restart.
301 : virtual void SectionPageNumbering( sal_uInt16 nNumType, sal_uInt16 nPageRestartNumber ) = 0;
302 :
303 : /// The type of breaking.
304 : virtual void SectionType( sal_uInt8 nBreakCode ) = 0;
305 :
306 : /// Special header/footer flags, needed for old versions only.
307 25 : virtual void SectionWW6HeaderFooterFlags( sal_uInt8 /*nHeadFootFlags*/ ) {}
308 :
309 : /// Definition of a numbering instance.
310 : virtual void NumberingDefinition( sal_uInt16 nId, const SwNumRule &rRule ) = 0;
311 :
312 : /// Start of the abstract numbering definition instance.
313 1 : virtual void StartAbstractNumbering( sal_uInt16 /*nId*/ ) {}
314 :
315 : /// End of the abstract numbering definition instance.
316 1 : virtual void EndAbstractNumbering() {}
317 :
318 : /// All the numbering level information.
319 : virtual void NumberingLevel( sal_uInt8 nLevel,
320 : sal_uInt16 nStart,
321 : sal_uInt16 nNumberingType,
322 : SvxAdjust eAdjust,
323 : const sal_uInt8 *pNumLvlPos,
324 : sal_uInt8 nFollow,
325 : const wwFont *pFont,
326 : const SfxItemSet *pOutSet,
327 : sal_Int16 nIndentAt,
328 : sal_Int16 nFirstLineIndex,
329 : sal_Int16 nListTabPos,
330 : const String &rNumberingString ) = 0;
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_ROTATE
418 : virtual void CharRotate( const SvxCharRotateItem& ) = 0;
419 :
420 : /// Sfx item RES_CHRATR_EMPHASIS_MARK
421 : virtual void CharEmphasisMark( const SvxEmphasisMarkItem& ) = 0;
422 :
423 : /// Sfx item RES_CHRATR_TWO_LINES
424 : virtual void CharTwoLines( const SvxTwoLinesItem& ) = 0;
425 :
426 : /// Sfx item RES_CHRATR_SCALEW
427 : virtual void CharScaleWidth( const SvxCharScaleWidthItem& ) = 0;
428 :
429 : /// Sfx item RES_CHRATR_RELIEF
430 : virtual void CharRelief( const SvxCharReliefItem& ) = 0;
431 :
432 : /// Sfx item RES_CHRATR_HIDDEN
433 : virtual void CharHidden( const SvxCharHiddenItem& ) = 0;
434 :
435 : /// Sfx item RES_TXTATR_INETFMT
436 : virtual void TextINetFormat( const SwFmtINetFmt& ) = 0;
437 :
438 : /// Sfx item RES_TXTATR_CHARFMT
439 : virtual void TextCharFormat( const SwFmtCharFmt& ) = 0;
440 :
441 : /// Sfx item RES_TXTATR_FIELD
442 : void TextField( const SwFmtFld& );
443 :
444 : /// Sfx item RES_TXTATR_FLYCNT
445 : virtual void TextFlyContent( const SwFmtFlyCnt& );
446 :
447 : /// Sfx item RES_TXTATR_FTN
448 : ///
449 : /// This one is common for both WW8AttributeOutput as well as
450 : /// DocxAttributeOutput.
451 : void TextFootnote( const SwFmtFtn& );
452 :
453 : /// Sfx item RES_TXTATR_FTN
454 : virtual void TextFootnote_Impl( const SwFmtFtn& ) = 0;
455 :
456 : /// Sfx item RES_PARATR_LINESPACING
457 : void ParaLineSpacing( const SvxLineSpacingItem& );
458 :
459 : /// Count the values in ParaLineSpacing, and pass theme here.
460 : virtual void ParaLineSpacing_Impl( short nSpace, short nMulti ) = 0;
461 :
462 : /// Sfx item RES_PARATR_ADJUST
463 : virtual void ParaAdjust( const SvxAdjustItem& ) = 0;
464 :
465 : /// Sfx item RES_PARATR_SPLIT
466 : virtual void ParaSplit( const SvxFmtSplitItem& ) = 0;
467 :
468 : /// Sfx item RES_PARATR_WIDOWS
469 : virtual void ParaWidows( const SvxWidowsItem& ) = 0;
470 :
471 : /// Sfx item RES_PARATR_TABSTOP
472 : virtual void ParaTabStop( const SvxTabStopItem& ) = 0;
473 :
474 : /// Sfx item RES_PARATR_HYPHENZONE
475 : virtual void ParaHyphenZone( const SvxHyphenZoneItem& ) = 0;
476 :
477 : /// Sfx item RES_PARATR_NUMRULE
478 : void ParaNumRule( const SwNumRuleItem& );
479 :
480 : /// Numbering - the implementation.
481 : virtual void ParaNumRule_Impl( const SwTxtNode *pTxtNd, sal_Int32 nLvl, sal_Int32 nNumId ) = 0;
482 :
483 : /// Sfx item RES_PARATR_SCRIPTSPACE
484 : virtual void ParaScriptSpace( const SfxBoolItem& ) = 0;
485 :
486 : /// Sfx item RES_PARATR_HANGINGPUNCTUATION
487 12 : void ParaHangingPunctuation( const SfxBoolItem& rHt ) { ParaScriptSpace( rHt ); };
488 :
489 : /// Sfx item RES_PARATR_FORBIDDEN_RULES
490 11 : void ParaForbiddenRules( const SfxBoolItem& rHt ) { ParaScriptSpace( rHt ); };
491 :
492 : /// Sfx item RES_PARATR_VERTALIGN
493 : virtual void ParaVerticalAlign( const SvxParaVertAlignItem& ) = 0;
494 :
495 : /// Sfx item RES_PARATR_SNAPTOGRID
496 : virtual void ParaSnapToGrid( const SvxParaGridItem& ) = 0;
497 :
498 : /// Sfx item RES_FRM_SIZE
499 : virtual void FormatFrameSize( const SwFmtFrmSize& ) = 0;
500 :
501 : /// Sfx item RES_PAPER_BIN
502 : virtual void FormatPaperBin( const SvxPaperBinItem& ) = 0;
503 :
504 : /// Sfx item RES_LR_SPACE
505 : virtual void FormatLRSpace( const SvxLRSpaceItem& ) = 0;
506 :
507 : /// Sfx item RES_UL_SPACE
508 : virtual void FormatULSpace( const SvxULSpaceItem& ) = 0;
509 :
510 : /// Sfx item RES_PAGEDESC
511 : void FormatPageDescription( const SwFmtPageDesc& );
512 :
513 : /// Sfx item RES_BREAK
514 : void FormatBreak( const SvxFmtBreakItem& );
515 :
516 : /// Sfx item RES_SURROUND
517 : virtual void FormatSurround( const SwFmtSurround& ) = 0;
518 :
519 : /// Sfx item RES_VERT_ORIENT
520 : virtual void FormatVertOrientation( const SwFmtVertOrient& ) = 0;
521 :
522 : /// Sfx item RES_HORI_ORIENT
523 : virtual void FormatHorizOrientation( const SwFmtHoriOrient& ) = 0;
524 :
525 : /// Sfx item RES_ANCHOR
526 : virtual void FormatAnchor( const SwFmtAnchor& ) = 0;
527 :
528 : /// Sfx item RES_BACKGROUND
529 : virtual void FormatBackground( const SvxBrushItem& ) = 0;
530 :
531 : /// Sfx item RES_BOX
532 : virtual void FormatBox( const SvxBoxItem& ) = 0;
533 :
534 : /// Sfx item RES_COL
535 : void FormatColumns( const SwFmtCol& );
536 :
537 : virtual void FormatColumns_Impl( sal_uInt16 nCols, const SwFmtCol & rCol, bool bEven, SwTwips nPageSize ) = 0;
538 :
539 : /// Sfx item RES_KEEP
540 : virtual void FormatKeep( const SvxFmtKeepItem& ) = 0;
541 :
542 : /// Compute the grid character pitch
543 : sal_uInt32 GridCharacterPitch( const SwTextGridItem& rGrid ) const;
544 :
545 : /// Sfx item RES_TEXTGRID
546 : virtual void FormatTextGrid( const SwTextGridItem& ) = 0;
547 :
548 : /// Sfx item RES_LINENUMBER
549 : virtual void FormatLineNumbering( const SwFmtLineNumber& ) = 0;
550 :
551 : /// Sfx item RES_FRAMEDIR
552 : virtual void FormatFrameDirection( const SvxFrameDirectionItem& ) = 0;
553 :
554 : /// Write the expanded field
555 : virtual void WriteExpand( const SwField* pFld ) = 0;
556 :
557 : virtual void RefField( const SwField& rFld, const String& rRef ) = 0;
558 : virtual void HiddenField( const SwField& rFld ) = 0;
559 : virtual void SetField( const SwField& rFld, ww::eField eType, const String& rCmd ) = 0;
560 : virtual void PostitField( const SwField* pFld ) = 0;
561 : virtual bool DropdownField( const SwField* pFld ) = 0;
562 :
563 : virtual bool AnalyzeURL( const String& rUrl, const String& rTarget, String* pLinkURL, String* pMark );
564 :
565 : ww8::GridColsPtr GetGridCols( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner );
566 :
567 : public:
568 57 : AttributeOutputBase() {}
569 57 : virtual ~AttributeOutputBase() {}
570 :
571 : /// Return the right export class.
572 : virtual MSWordExportBase& GetExport() = 0;
573 :
574 : /// @overload
575 25 : const MSWordExportBase& GetExport() const { return const_cast< AttributeOutputBase* >( this )->GetExport(); }
576 :
577 : /// Call the right virtual function according to the type of the item.
578 : void OutputItem( const SfxPoolItem& rHt );
579 :
580 : /// Use OutputItem() on an item set - for styles.
581 : void OutputStyleItemSet( const SfxItemSet& rSet, sal_Bool bDeep, sal_Bool bTestForDefault );
582 :
583 : /// Output frames.
584 : void OutputFlyFrame( const sw::Frame& rFmt );
585 :
586 : void GetTablePageSize
587 : ( ww8::WW8TableNodeInfoInner * pTableTextNodeInfoInner,
588 : sal_uInt32& rPageSize, bool& rRelBoxSize );
589 :
590 : };
591 :
592 : #endif // _ATTRIBUTEOUTPUTBASE_HXX_
593 :
594 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|