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 INCLUDED_SW_SOURCE_FILTER_WW8_ATTRIBUTEOUTPUTBASE_HXX
21 : #define INCLUDED_SW_SOURCE_FILTER_WW8_ATTRIBUTEOUTPUTBASE_HXX
22 :
23 : #include "fields.hxx"
24 : #include "WW8TableInfo.hxx"
25 : #include "wrtww8.hxx"
26 :
27 : #include <rtl/textenc.h>
28 : #include <editeng/svxenum.hxx>
29 : #include <tools/solar.h>
30 : #include <boost/optional.hpp>
31 :
32 : #include <swtypes.hxx>
33 : #include <wrtswtbl.hxx>
34 : #include <fldbas.hxx>
35 : #include <IDocumentRedlineAccess.hxx>
36 :
37 : #include <vector>
38 :
39 : class Point;
40 : class SvxCaseMapItem;
41 : class SvxColorItem;
42 : class SvxContourItem;
43 : class SvxCrossedOutItem;
44 : class SvxEscapementItem;
45 : class SvxFontItem;
46 : class SvxFontHeightItem;
47 : class SvxKerningItem;
48 : class SvxLanguageItem;
49 : class SvxPostureItem;
50 : class SvxShadowedItem;
51 : class SvxUnderlineItem;
52 : class SvxWeightItem;
53 : class SvxAutoKernItem;
54 : class SvxBlinkItem;
55 : class SvxBrushItem;
56 : class XFillStyleItem;
57 : class XFillGradientItem;
58 : class SvxFontItem;
59 : class SvxFontHeightItem;
60 : class SvxLanguageItem;
61 : class SvxPostureItem;
62 : class SvxWeightItem;
63 : class SvxFontItem;
64 : class SvxFontHeightItem;
65 : class SvxLanguageItem;
66 : class SvxPostureItem;
67 : class SvxWeightItem;
68 : class SvxCharRotateItem;
69 : class SvxEmphasisMarkItem;
70 : class SvxTwoLinesItem;
71 : class SvxCharScaleWidthItem;
72 : class SvxCharReliefItem;
73 : class SvxCharHiddenItem;
74 : class SvxBoxItem;
75 : class SwFormatINetFormat;
76 : class SwFormatCharFormat;
77 : class SwFormatField;
78 : class SwFormatFlyCnt;
79 : class SwFormatFootnote;
80 : class SvxLineSpacingItem;
81 : class SvxAdjustItem;
82 : class SvxFormatSplitItem;
83 : class SvxWidowsItem;
84 : class SvxTabStopItem;
85 : class SvxHyphenZoneItem;
86 : class SwNumRuleItem;
87 : class SfxBoolItem;
88 : class SfxPoolItem;
89 : class SfxItemSet;
90 : class SvxParaVertAlignItem;
91 : class SvxParaGridItem;
92 : class SwFormatFrmSize;
93 : class SvxPaperBinItem;
94 : class SvxLRSpaceItem;
95 : class SvxULSpaceItem;
96 : class SwFormatPageDesc;
97 : class SvxFormatBreakItem;
98 : class SwFormatSurround;
99 : class SwFormatVertOrient;
100 : class SwFormatHoriOrient;
101 : class SwFormatAnchor;
102 : class SvxBrushItem;
103 : class SvxBoxItem;
104 : class SwFormatCol;
105 : class SvxFormatKeepItem;
106 : class SwTextGridItem;
107 : class SwFormatLineNumber;
108 : class SvxFrameDirectionItem;
109 : class SfxGrabBagItem;
110 : class SfxUInt16Item;
111 : class SwFormatRuby;
112 : class SwTextNode;
113 : class SwTOXMark;
114 : class SwRedlineData;
115 : class SwSection;
116 : class SwFormatDrop;
117 : class SwFrameFormat;
118 : class SwNumFormat;
119 : class SwFormat;
120 : struct WW8_SepInfo;
121 : class SwLineNumberInfo;
122 : class SwNumRule;
123 : class wwFont;
124 :
125 : namespace editeng { class SvxBorderLine; }
126 :
127 : namespace rtl { class OUString; }
128 :
129 : class MSWordExportBase;
130 :
131 : namespace sw { class Frame; }
132 :
133 : namespace msword {
134 : const sal_uInt8 ColumnBreak = 0xE;
135 : const sal_uInt8 PageBreak = 0xC;
136 : }
137 :
138 : /// Type of a style in the style table.
139 : enum StyleType
140 : {
141 : STYLE_TYPE_PARA,
142 : STYLE_TYPE_CHAR,
143 : STYLE_TYPE_LIST
144 : };
145 :
146 : class AttributeOutputBase
147 : {
148 : public:
149 : /// Export the state of RTL/CJK.
150 : virtual void RTLAndCJKState( bool bIsRTL, sal_uInt16 nScript ) = 0;
151 :
152 : /// Start of the paragraph.
153 : virtual void StartParagraph( ww8::WW8TableNodeInfo::Pointer_t pTextNodeInfo ) = 0;
154 :
155 : /// End of the paragraph.
156 : virtual void EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pTextNodeInfoInner ) = 0;
157 :
158 : /// Called in order to output section breaks.
159 : virtual void SectionBreaks(const SwTextNode& rNode) = 0;
160 :
161 : /// Called before we start outputting the attributes.
162 : virtual void StartParagraphProperties() = 0;
163 :
164 : /// Called after we end outputting the attributes.
165 : virtual void EndParagraphProperties(const SfxItemSet& rParagraphMarkerProperties, const SwRedlineData* pRedlineData, const SwRedlineData* pRedlineParagraphMarkerDeleted, const SwRedlineData* pRedlineParagraphMarkerInserted) = 0;
166 :
167 : /// Empty paragraph.
168 : virtual void EmptyParagraph() = 0;
169 :
170 : /// Start of the text run.
171 : virtual void StartRun( const SwRedlineData* pRedlineData, bool bSingleEmptyRun = false ) = 0;
172 :
173 : /// End of the text run.
174 : virtual void EndRun() = 0;
175 :
176 : /// Called before we start outputting the attributes.
177 : virtual void StartRunProperties() = 0;
178 :
179 : /// Called after we end outputting the attributes.
180 : virtual void EndRunProperties( const SwRedlineData* pRedlineData ) = 0;
181 :
182 : /// docx requires footnoteRef/endnoteRef tag at the beginning of each of them
183 4 : virtual void FootnoteEndnoteRefTag() {};
184 :
185 : /// for docx footnotePr/endnotePr inside sectPr
186 40 : virtual void SectFootnoteEndnotePr() {};
187 :
188 : /// for docx w:commentReference
189 1552 : virtual void WritePostitFieldReference() {};
190 :
191 : /// Output text (inside a run).
192 : virtual void RunText( const OUString& rText, rtl_TextEncoding eCharSet ) = 0;
193 :
194 : /// Output text (without markup).
195 : virtual void RawText( const OUString& rText, bool bForceUnicode, rtl_TextEncoding eCharSet ) = 0;
196 :
197 : /// Output ruby start.
198 : virtual void StartRuby( const SwTextNode& rNode, sal_Int32 nPos, const SwFormatRuby& rRuby ) = 0;
199 :
200 : /// Output ruby end.
201 : virtual void EndRuby() = 0;
202 :
203 : /// Output URL start.
204 : virtual bool StartURL( const OUString& rUrl, const OUString& rTarget ) = 0;
205 :
206 : /// Output URL end.
207 : virtual bool EndURL(bool isAtEndOfParagraph) = 0;
208 :
209 : virtual void FieldVanish( const OUString& rText, ww::eField eType ) = 0;
210 :
211 : void StartTOX( const SwSection& rSect );
212 :
213 : void EndTOX( const SwSection& rSect,bool bCareEnd=true );
214 :
215 1 : virtual void OnTOXEnding() {}
216 :
217 : void TOXMark( const SwTextNode& rNode, const SwTOXMark& rAttr );
218 :
219 : /// Output redlining.
220 : virtual void Redline( const SwRedlineData* pRedline ) = 0;
221 :
222 : virtual void FormatDrop( const SwTextNode& rNode, const SwFormatDrop& rSwFormatDrop, sal_uInt16 nStyle, ww8::WW8TableNodeInfo::Pointer_t pTextNodeInfo, ww8::WW8TableNodeInfoInner::Pointer_t pTextNodeInfoInner ) = 0;
223 :
224 : /// Output FKP (Formatted disK Page) - necessary for binary formats only.
225 : /// FIXME having it in AttributeOutputBase is probably a hack, it
226 : /// should be in WW8AttributeOutput only...
227 8062 : virtual void OutputFKP(bool /*bForce*/ = false) {}
228 :
229 : /// Output style.
230 : virtual void ParagraphStyle( sal_uInt16 nStyle ) = 0;
231 :
232 : virtual void TableInfoCell( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
233 :
234 : virtual void TableInfoRow( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
235 :
236 : virtual void TableDefinition( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
237 :
238 : virtual void TableDefaultBorders( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
239 :
240 : virtual void TableBackgrounds( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
241 :
242 : virtual void TableRowRedline( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
243 :
244 : virtual void TableCellRedline( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
245 :
246 : virtual void TableHeight( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
247 :
248 : virtual void TableCanSplit( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
249 :
250 : virtual void TableBidi( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
251 :
252 : virtual void TableVerticalCell( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) = 0;
253 :
254 : virtual void TableNodeInfo( ww8::WW8TableNodeInfo::Pointer_t pNodeInfo ) = 0;
255 :
256 : virtual void TableNodeInfoInner( ww8::WW8TableNodeInfoInner::Pointer_t pNodeInfoInner ) = 0;
257 :
258 : virtual void TableOrientation( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner ) = 0;
259 :
260 : virtual void TableSpacing( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner ) = 0;
261 :
262 : virtual void TableRowEnd( sal_uInt32 nDepth ) = 0;
263 :
264 : /// Start of the styles table.
265 : virtual void StartStyles() = 0;
266 :
267 : /// End of the styles table.
268 : virtual void EndStyles( sal_uInt16 nNumberOfStyles ) = 0;
269 :
270 : /// Write default style.
271 : virtual void DefaultStyle( sal_uInt16 nStyle ) = 0;
272 :
273 : /// Start of a style in the styles table.
274 : virtual void StartStyle( const OUString& rName, StyleType eType,
275 : sal_uInt16 nBase, sal_uInt16 nNext, sal_uInt16 nWwId, sal_uInt16 nId,
276 : bool bAutoUpdate ) = 0;
277 :
278 : /// End of a style in the styles table.
279 : virtual void EndStyle() = 0;
280 :
281 : /// Start of (paragraph or run) properties of a style.
282 : virtual void StartStyleProperties( bool bParProp, sal_uInt16 nStyle ) = 0;
283 :
284 : /// End of (paragraph or run) properties of a style.
285 : virtual void EndStyleProperties( bool bParProp ) = 0;
286 :
287 : /// Numbering rule and Id.
288 : virtual void OutlineNumbering( sal_uInt8 nLvl, const SwNumFormat& rNFormat, const SwFormat& rFormat ) = 0;
289 :
290 : /// Page break
291 : /// As a paragraph property - the paragraph should be on the next page.
292 : virtual void PageBreakBefore( bool bBreak ) = 0;
293 :
294 : /// Write a section break
295 : /// msword::ColumnBreak or msword::PageBreak
296 : virtual void SectionBreak( sal_uInt8 nC, const WW8_SepInfo* pSectionInfo = NULL ) = 0;
297 :
298 : /// Start of the section properties.
299 : virtual void StartSection() = 0;
300 :
301 : /// End of the section properties.
302 : virtual void EndSection() = 0;
303 :
304 : /// Protection of forms.
305 : virtual void SectionFormProtection( bool bProtected ) = 0;
306 :
307 : /// Numbering of the lines in the document.
308 : virtual void SectionLineNumbering( sal_uLong nRestartNo, const SwLineNumberInfo& rLnNumInfo ) = 0;
309 :
310 : /// Has different headers/footers for the title page.
311 : virtual void SectionTitlePage() = 0;
312 :
313 : /// Set the state of the Fly at current position
314 1552 : virtual void SetStateOfFlyFrame( FlyProcessingState /*nStateOfFlyFrame*/ ){};
315 : /// If the node has an anchor linked.
316 1564 : virtual void SetAnchorIsLinkedToNode( bool /*bAnchorLinkedToNode*/){};
317 :
318 : /// Is processing of fly postponed ?
319 2811 : virtual bool IsFlyProcessingPostponed(){ return false; };
320 :
321 : /// Reset the flag for FlyProcessing
322 12 : virtual void ResetFlyProcessingFlag(){};
323 :
324 : /// Description of the page borders.
325 : virtual void SectionPageBorders( const SwFrameFormat* pFormat, const SwFrameFormat* pFirstPageFormat ) = 0;
326 :
327 : /// Columns populated from right/numbers on the right side?
328 : virtual void SectionBiDi( bool bBiDi ) = 0;
329 :
330 : /// The style of the page numbers.
331 : ///
332 : virtual void SectionPageNumbering( sal_uInt16 nNumType, const ::boost::optional<sal_uInt16>& oPageRestartNumber ) = 0;
333 :
334 : /// The type of breaking.
335 : virtual void SectionType( sal_uInt8 nBreakCode ) = 0;
336 :
337 : /// Special header/footer flags, needed for old versions only.
338 506 : virtual void SectionWW6HeaderFooterFlags( sal_uInt8 /*nHeadFootFlags*/ ) {}
339 :
340 : /// Definition of a numbering instance.
341 : virtual void NumberingDefinition( sal_uInt16 nId, const SwNumRule &rRule ) = 0;
342 :
343 : /// Start of the abstract numbering definition instance.
344 21 : virtual void StartAbstractNumbering( sal_uInt16 /*nId*/ ) {}
345 :
346 : /// End of the abstract numbering definition instance.
347 21 : virtual void EndAbstractNumbering() {}
348 :
349 : /// All the numbering level information.
350 : virtual void NumberingLevel( sal_uInt8 nLevel,
351 : sal_uInt16 nStart,
352 : sal_uInt16 nNumberingType,
353 : SvxAdjust eAdjust,
354 : const sal_uInt8 *pNumLvlPos,
355 : sal_uInt8 nFollow,
356 : const wwFont *pFont,
357 : const SfxItemSet *pOutSet,
358 : sal_Int16 nIndentAt,
359 : sal_Int16 nFirstLineIndex,
360 : sal_Int16 nListTabPos,
361 : const OUString &rNumberingString,
362 : const SvxBrushItem* pBrush = 0) = 0; // #i120928 export graphic of bullet
363 :
364 : protected:
365 :
366 : static void GetNumberPara( OUString& rStr, const SwField& rField );
367 :
368 : /// Output frames - the implementation.
369 : virtual void OutputFlyFrame_Impl( const sw::Frame& rFormat, const Point& rNdTopLeft ) = 0;
370 :
371 : /// Sfx item Sfx item RES_CHRATR_CASEMAP
372 : virtual void CharCaseMap( const SvxCaseMapItem& ) = 0;
373 :
374 : /// Sfx item Sfx item RES_CHRATR_COLOR
375 : virtual void CharColor( const SvxColorItem& ) = 0;
376 :
377 : /// Sfx item Sfx item RES_CHRATR_CONTOUR
378 : virtual void CharContour( const SvxContourItem& ) = 0;
379 :
380 : /// Sfx item RES_CHRATR_CROSSEDOUT
381 : virtual void CharCrossedOut( const SvxCrossedOutItem& ) = 0;
382 :
383 : /// Sfx item RES_CHRATR_ESCAPEMENT
384 : virtual void CharEscapement( const SvxEscapementItem& ) = 0;
385 :
386 : /// Sfx item RES_CHRATR_FONT
387 : virtual void CharFont( const SvxFontItem& ) = 0;
388 :
389 : /// Sfx item RES_CHRATR_FONTSIZE
390 : virtual void CharFontSize( const SvxFontHeightItem& ) = 0;
391 :
392 : /// Sfx item RES_CHRATR_KERNING
393 : virtual void CharKerning( const SvxKerningItem& ) = 0;
394 :
395 : /// Sfx item RES_CHRATR_LANGUAGE
396 : virtual void CharLanguage( const SvxLanguageItem& ) = 0;
397 :
398 : /// Sfx item RES_CHRATR_POSTURE
399 : virtual void CharPosture( const SvxPostureItem& ) = 0;
400 :
401 : /// Sfx item RES_CHRATR_SHADOWED
402 : virtual void CharShadow( const SvxShadowedItem& ) = 0;
403 :
404 : /// Sfx item RES_CHRATR_UNDERLINE
405 : virtual void CharUnderline( const SvxUnderlineItem& ) = 0;
406 :
407 : /// Sfx item RES_CHRATR_WEIGHT
408 : virtual void CharWeight( const SvxWeightItem& ) = 0;
409 :
410 : /// Sfx item RES_CHRATR_AUTOKERN
411 : virtual void CharAutoKern( const SvxAutoKernItem& ) = 0;
412 :
413 : /// Sfx item RES_CHRATR_BLINK
414 : virtual void CharAnimatedText( const SvxBlinkItem& ) = 0;
415 :
416 : /// Sfx item RES_CHRATR_BACKGROUND
417 : void CharBackgroundBase( const SvxBrushItem& );
418 : virtual void CharBackground( const SvxBrushItem& ) = 0;
419 :
420 : /// Sfx item RES_CHRATR_CJK_FONT
421 : virtual void CharFontCJK( const SvxFontItem& ) = 0;
422 :
423 : /// Sfx item RES_CHRATR_CJK_FONTSIZE
424 : virtual void CharFontSizeCJK( const SvxFontHeightItem& ) = 0;
425 :
426 : /// Sfx item RES_CHRATR_CJK_LANGUAGE
427 : virtual void CharLanguageCJK( const SvxLanguageItem& ) = 0;
428 :
429 : /// Sfx item RES_CHRATR_CJK_POSTURE
430 : virtual void CharPostureCJK( const SvxPostureItem& ) = 0;
431 :
432 : /// Sfx item RES_CHRATR_CJK_WEIGHT
433 : virtual void CharWeightCJK( const SvxWeightItem& ) = 0;
434 :
435 : /// Sfx item RES_CHRATR_CTL_FONT
436 : virtual void CharFontCTL( const SvxFontItem& ) = 0;
437 :
438 : /// Sfx item RES_CHRATR_CTL_FONTSIZE
439 : virtual void CharFontSizeCTL( const SvxFontHeightItem& ) = 0;
440 :
441 : /// Sfx item RES_CHRATR_CTL_LANGUAGE
442 : virtual void CharLanguageCTL( const SvxLanguageItem& ) = 0;
443 :
444 : /// Sfx item RES_CHRATR_CTL_POSTURE
445 : virtual void CharPostureCTL( const SvxPostureItem& ) = 0;
446 :
447 : /// Sfx item RES_CHRATR_CTL_WEIGHT
448 : virtual void CharWeightCTL( const SvxWeightItem& ) = 0;
449 :
450 : /// Sfx item RES_CHRATR_BidiRTL
451 : virtual void CharBidiRTL( const SfxPoolItem& ) = 0;
452 :
453 : /// Sfx item RES_CHRATR_IdctHint
454 : virtual void CharIdctHint( const SfxPoolItem& ) = 0;
455 :
456 : /// Sfx item RES_CHRATR_ROTATE
457 : virtual void CharRotate( const SvxCharRotateItem& ) = 0;
458 :
459 : /// Sfx item RES_CHRATR_EMPHASIS_MARK
460 : virtual void CharEmphasisMark( const SvxEmphasisMarkItem& ) = 0;
461 :
462 : /// Sfx item RES_CHRATR_TWO_LINES
463 : virtual void CharTwoLines( const SvxTwoLinesItem& ) = 0;
464 :
465 : /// Sfx item RES_CHRATR_SCALEW
466 : virtual void CharScaleWidth( const SvxCharScaleWidthItem& ) = 0;
467 :
468 : /// Sfx item RES_CHRATR_RELIEF
469 : virtual void CharRelief( const SvxCharReliefItem& ) = 0;
470 :
471 : /// Sfx item RES_CHRATR_HIDDEN
472 : virtual void CharHidden( const SvxCharHiddenItem& ) = 0;
473 :
474 : /// Sfx item RES_CHRATR_BOX
475 : void FormatCharBorder( const SvxBoxItem& rBox );
476 : virtual void CharBorder( const ::editeng::SvxBorderLine* pAllBorder, const sal_uInt16 nDist, const bool bShadow ) = 0;
477 :
478 : /// Sfx item RES_CHRATR_HIGHLIGHT
479 : virtual void CharHighlight( const SvxBrushItem& ) = 0;
480 :
481 : /// Sfx item RES_TXTATR_INETFMT
482 : virtual void TextINetFormat( const SwFormatINetFormat& ) = 0;
483 :
484 : /// Sfx item RES_TXTATR_CHARFMT
485 : virtual void TextCharFormat( const SwFormatCharFormat& ) = 0;
486 :
487 : /// Sfx item RES_TXTATR_FIELD, RES_TXTATR_ANNOTATION and RES_TXTATR_INPUTFIELD
488 : void TextField( const SwFormatField& );
489 :
490 : /// Sfx item RES_TXTATR_FLYCNT
491 : void TextFlyContent( const SwFormatFlyCnt& );
492 :
493 : /// Sfx item RES_TXTATR_FTN
494 : ///
495 : /// This one is common for both WW8AttributeOutput as well as
496 : /// DocxAttributeOutput.
497 : void TextFootnote( const SwFormatFootnote& );
498 :
499 : /// Sfx item RES_TXTATR_FTN
500 : virtual void TextFootnote_Impl( const SwFormatFootnote& ) = 0;
501 :
502 : /// Sfx item RES_PARATR_LINESPACING
503 : void ParaLineSpacing( const SvxLineSpacingItem& );
504 :
505 : /// Count the values in ParaLineSpacing, and pass theme here.
506 : virtual void ParaLineSpacing_Impl( short nSpace, short nMulti ) = 0;
507 :
508 : /// Sfx item RES_PARATR_ADJUST
509 : virtual void ParaAdjust( const SvxAdjustItem& ) = 0;
510 :
511 : /// Sfx item RES_PARATR_SPLIT
512 : virtual void ParaSplit( const SvxFormatSplitItem& ) = 0;
513 :
514 : /// Sfx item RES_PARATR_WIDOWS
515 : virtual void ParaWidows( const SvxWidowsItem& ) = 0;
516 :
517 : /// Sfx item RES_PARATR_TABSTOP
518 : virtual void ParaTabStop( const SvxTabStopItem& ) = 0;
519 :
520 : /// Sfx item RES_PARATR_HYPHENZONE
521 : virtual void ParaHyphenZone( const SvxHyphenZoneItem& ) = 0;
522 :
523 : /// Sfx item RES_PARATR_NUMRULE
524 : void ParaNumRule( const SwNumRuleItem& );
525 :
526 : /// Numbering - the implementation.
527 : virtual void ParaNumRule_Impl( const SwTextNode *pTextNd, sal_Int32 nLvl, sal_Int32 nNumId ) = 0;
528 :
529 : /// Sfx item RES_PARATR_SCRIPTSPACE
530 : virtual void ParaScriptSpace( const SfxBoolItem& ) = 0;
531 :
532 : /// Sfx item RES_PARATR_HANGINGPUNCTUATION
533 : virtual void ParaHangingPunctuation( const SfxBoolItem& ) = 0;
534 :
535 : /// Sfx item RES_PARATR_FORBIDDEN_RULES
536 : virtual void ParaForbiddenRules( const SfxBoolItem& ) = 0;
537 :
538 : /// Sfx item RES_PARATR_VERTALIGN
539 : virtual void ParaVerticalAlign( const SvxParaVertAlignItem& ) = 0;
540 :
541 : /// Sfx item RES_PARATR_SNAPTOGRID
542 : virtual void ParaSnapToGrid( const SvxParaGridItem& ) = 0;
543 :
544 : /// Sfx item RES_FRM_SIZE
545 : virtual void FormatFrameSize( const SwFormatFrmSize& ) = 0;
546 :
547 : /// Sfx item RES_PAPER_BIN
548 : virtual void FormatPaperBin( const SvxPaperBinItem& ) = 0;
549 :
550 : /// Sfx item RES_LR_SPACE
551 : virtual void FormatLRSpace( const SvxLRSpaceItem& ) = 0;
552 :
553 : /// Sfx item RES_UL_SPACE
554 : virtual void FormatULSpace( const SvxULSpaceItem& ) = 0;
555 :
556 : /// Sfx item RES_PAGEDESC
557 : void FormatPageDescription( const SwFormatPageDesc& );
558 :
559 : /// Sfx item RES_BREAK
560 : void FormatBreak( const SvxFormatBreakItem& );
561 :
562 : /// Sfx item RES_SURROUND
563 : virtual void FormatSurround( const SwFormatSurround& ) = 0;
564 :
565 : /// Sfx item RES_VERT_ORIENT
566 : virtual void FormatVertOrientation( const SwFormatVertOrient& ) = 0;
567 :
568 : /// Sfx item RES_HORI_ORIENT
569 : virtual void FormatHorizOrientation( const SwFormatHoriOrient& ) = 0;
570 :
571 : /// Sfx item RES_ANCHOR
572 : virtual void FormatAnchor( const SwFormatAnchor& ) = 0;
573 :
574 : /// Sfx item RES_BACKGROUND
575 : virtual void FormatBackground( const SvxBrushItem& ) = 0;
576 :
577 : /// Sfx item RES_FILL_STYLE
578 : virtual void FormatFillStyle( const XFillStyleItem& ) = 0;
579 :
580 : /// Sfx item RES_FILL_GRADIENT
581 : virtual void FormatFillGradient( const XFillGradientItem& ) = 0;
582 :
583 : /// Sfx item RES_BOX
584 : virtual void FormatBox( const SvxBoxItem& ) = 0;
585 :
586 : /// Sfx item RES_COL
587 : void FormatColumns( const SwFormatCol& );
588 :
589 : virtual void FormatColumns_Impl( sal_uInt16 nCols, const SwFormatCol & rCol, bool bEven, SwTwips nPageSize ) = 0;
590 :
591 : /// Sfx item RES_KEEP
592 : virtual void FormatKeep( const SvxFormatKeepItem& ) = 0;
593 :
594 : /// Compute the grid character pitch
595 : sal_uInt32 GridCharacterPitch( const SwTextGridItem& rGrid ) const;
596 :
597 : /// Sfx item RES_TEXTGRID
598 : virtual void FormatTextGrid( const SwTextGridItem& ) = 0;
599 :
600 : /// Sfx item RES_LINENUMBER
601 : virtual void FormatLineNumbering( const SwFormatLineNumber& ) = 0;
602 :
603 : /// Sfx item RES_FRAMEDIR
604 : virtual void FormatFrameDirection( const SvxFrameDirectionItem& ) = 0;
605 :
606 : /// Sfx item RES_PARATR_GRABBAG
607 : virtual void ParaGrabBag( const SfxGrabBagItem& ) = 0;
608 :
609 : /// Sfx item RES_CHRATR_GRABBAG
610 : virtual void CharGrabBag( const SfxGrabBagItem& ) = 0;
611 :
612 : /// Sfx item RES_PARATR_OUTLINELEVEL
613 : virtual void ParaOutlineLevel( const SfxUInt16Item& ) = 0;
614 :
615 : /// Write the expanded field
616 : virtual void WriteExpand( const SwField* pField ) = 0;
617 :
618 : virtual void RefField( const SwField& rField, const OUString& rRef ) = 0;
619 : virtual void HiddenField( const SwField& rField ) = 0;
620 : virtual void SetField( const SwField& rField, ww::eField eType, const OUString& rCmd ) = 0;
621 : virtual void PostitField( const SwField* pField ) = 0;
622 : virtual bool DropdownField( const SwField* pField ) = 0;
623 : virtual bool PlaceholderField( const SwField* pField ) = 0;
624 :
625 : virtual bool AnalyzeURL( const OUString& rUrl, const OUString& rTarget, OUString* pLinkURL, OUString* pMark );
626 :
627 : ww8::GridColsPtr GetGridCols( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner );
628 : ww8::WidthsPtr GetColumnWidths( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner );
629 :
630 : public:
631 610 : AttributeOutputBase() {}
632 610 : virtual ~AttributeOutputBase() {}
633 :
634 : /// Return the right export class.
635 : virtual MSWordExportBase& GetExport() = 0;
636 :
637 : /// @overload
638 501 : const MSWordExportBase& GetExport() const { return const_cast< AttributeOutputBase* >( this )->GetExport(); }
639 :
640 : /// Call the right virtual function according to the type of the item.
641 : void OutputItem( const SfxPoolItem& rHt );
642 :
643 : /// Use OutputItem() on an item set - for styles.
644 : void OutputStyleItemSet( const SfxItemSet& rSet, bool bDeep, bool bTestForDefault );
645 :
646 : /// Output frames.
647 : void OutputFlyFrame( const sw::Frame& rFormat );
648 :
649 : void GetTablePageSize
650 : ( ww8::WW8TableNodeInfoInner * pTableTextNodeInfoInner,
651 : long& rPageSize, bool& rRelBoxSize );
652 :
653 : /// Exports the definition (image, size) of a single numbering picture bullet.
654 0 : virtual void BulletDefinition(int /*nId*/, const Graphic& /*rGraphic*/, Size /*aSize*/) {}
655 :
656 : // Returns whether or not the 'SwTextNode' has a paragraph marker inserted \ deleted (using 'track changes')
657 : const SwRedlineData* GetParagraphMarkerRedline( const SwTextNode& rNode, RedlineType_t aRedlineType );
658 : };
659 :
660 : #endif // INCLUDED_SW_SOURCE_FILTER_WW8_ATTRIBUTEOUTPUTBASE_HXX
661 :
662 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|