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_WW8ATTRIBUTEOUTPUT_HXX 21 #define INCLUDED_SW_SOURCE_FILTER_WW8_WW8ATTRIBUTEOUTPUT_HXX 22 23 #include "attributeoutputbase.hxx" 24 #include "wrtww8.hxx" 25 #include <editeng/boxitem.hxx> 26 #include <sfx2/docfile.hxx> 27 28 class WW8AttributeOutput : public AttributeOutputBase 29 { 30 public: 31 /// Export the state of RTL/CJK. 32 virtual void RTLAndCJKState( bool bIsRTL, sal_uInt16 nScript ) override; 33 34 /// Start of the paragraph. StartParagraph(ww8::WW8TableNodeInfo::Pointer_t,bool)35 virtual sal_Int32 StartParagraph( ww8::WW8TableNodeInfo::Pointer_t /*pTextNodeInfo*/, bool /*bGenerateParaId*/ ) override { return 0; } 36 37 /// End of the paragraph. 38 virtual void EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pTextNodeInfoInner ) override; 39 40 /// Called in order to output section breaks. SectionBreaks(const SwNode &)41 virtual void SectionBreaks(const SwNode& /*rNode*/) override {} 42 43 /// Called before we start outputting the attributes. StartParagraphProperties()44 virtual void StartParagraphProperties() override {} 45 46 /// Called after we end outputting the attributes. EndParagraphProperties(const SfxItemSet &,const SwRedlineData *,const SwRedlineData *,const SwRedlineData *)47 virtual void EndParagraphProperties(const SfxItemSet& /*rParagraphMarkerProperties*/, const SwRedlineData* /*pRedlineData*/, const SwRedlineData* /*pRedlineParagraphMarkerDeleted*/, const SwRedlineData* /*pRedlineParagraphMarkerInserted*/) override {} 48 49 /// Empty paragraph. 50 virtual void EmptyParagraph() override; 51 52 /// Start of the text run. 53 /// 54 virtual void StartRun( const SwRedlineData* pRedlineData, sal_Int32 nPos, bool bSingleEmptyRun = false ) override; 55 56 virtual void OnTOXEnding() override; 57 58 /// End of the text run. 59 /// 60 /// No-op for binary filters. 61 virtual void EndRun(const SwTextNode* pNode, sal_Int32 nPos, bool bLastRun = false) override; 62 63 /// Before we start outputting the attributes. 64 virtual void StartRunProperties() override; 65 66 /// After we end outputting the attributes. 67 virtual void EndRunProperties( const SwRedlineData* pRedlineData ) override; 68 69 /// Output text. 70 virtual void RunText( const OUString& rText, rtl_TextEncoding eCharSet = RTL_TEXTENCODING_UTF8 ) override; 71 72 /// Output text (without markup). 73 virtual void RawText(const OUString& rText, rtl_TextEncoding eCharSet) override; 74 75 /// Output ruby start. 76 virtual void StartRuby( const SwTextNode& rNode, sal_Int32 nPos, const SwFormatRuby& rRuby ) override; 77 78 /// Output ruby end. 79 virtual void EndRuby(const SwTextNode& rNode, sal_Int32 nPos) override; 80 81 /// Output URL start. 82 virtual bool StartURL( const OUString &rUrl, const OUString &rTarget ) override; 83 84 /// Output URL end. 85 virtual bool EndURL(bool) override; 86 87 virtual void FieldVanish(const OUString& rText, ww::eField eType, OUString const*) override; 88 89 /// Output redlining. 90 virtual void Redline( const SwRedlineData* pRedline ) override; 91 92 virtual void FormatDrop( const SwTextNode& rNode, const SwFormatDrop &rSwFormatDrop, sal_uInt16 nStyle, ww8::WW8TableNodeInfo::Pointer_t pTextNodeInfo, ww8::WW8TableNodeInfoInner::Pointer_t pTextNodeInfoInner ) override; 93 94 /// Output FKP (Formatted disK Page) - necessary for binary formats only. 95 /// FIXME having it in AttributeOutputBase is probably a hack, it 96 /// should be in WW8AttributeOutput only... 97 virtual void OutputFKP(bool bForce) override; 98 99 /// Output style. 100 virtual void ParagraphStyle( sal_uInt16 nStyle ) override; 101 102 virtual void TableInfoCell( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) override; 103 virtual void TableInfoRow( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) override; 104 virtual void TableDefinition( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) override; 105 virtual void TableDefaultBorders( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) override; 106 virtual void TableBackgrounds( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) override; 107 virtual void TableRowRedline( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) override; 108 virtual void TableCellRedline( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) override; 109 virtual void TableHeight( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) override; 110 virtual void TableCanSplit( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) override; 111 virtual void TableBidi( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) override; 112 virtual void TableVerticalCell( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo ) override; 113 virtual void TableNodeInfoInner( ww8::WW8TableNodeInfoInner::Pointer_t pNodeInfoInner ) override; 114 virtual void TableOrientation( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner ) override; 115 virtual void TableSpacing( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner ) override; 116 virtual void TableRowEnd( sal_uInt32 nDepth ) override; 117 118 /// Start of the styles table. 119 virtual void StartStyles() override; 120 121 /// End of the styles table. 122 virtual void EndStyles( sal_uInt16 nNumberOfStyles ) override; 123 124 /// Write default style. 125 virtual void DefaultStyle() override; 126 127 /// Start of a style in the styles table. 128 virtual void StartStyle( const OUString& rName, StyleType eType, 129 sal_uInt16 nBase, sal_uInt16 nNext, sal_uInt16 nWwIdi, sal_uInt16 nId, 130 bool bAutoUpdate ) override; 131 132 /// End of a style in the styles table. 133 virtual void EndStyle() override; 134 135 /// Start of (paragraph or run) properties of a style. 136 virtual void StartStyleProperties( bool bParProp, sal_uInt16 nStyle ) override; 137 138 /// End of (paragraph or run) properties of a style. 139 virtual void EndStyleProperties( bool bParProp ) override; 140 141 /// Numbering rule and Id. 142 virtual void OutlineNumbering(sal_uInt8 nLvl) override; 143 144 /// Page break 145 /// As a paragraph property - the paragraph should be on the next page. 146 virtual void PageBreakBefore( bool bBreak ) override; 147 148 /// Write a section break 149 /// msword::ColumnBreak or msword::PageBreak 150 virtual void SectionBreak( sal_uInt8 nC, bool bBreakAfter, const WW8_SepInfo* pSectionInfo = nullptr, bool bExtraPageBreak = false ) override; 151 152 // preserve DOC page vertical alignment 153 virtual void TextVerticalAdjustment( const css::drawing::TextVerticalAdjust ) override; 154 155 /// Start of the section properties. 156 virtual void StartSection() override; 157 158 // footnote / endnote section properties 159 virtual void SectFootnoteEndnotePr() override; 160 161 /// End of the section properties. 162 /// 163 /// No-op for binary filters. EndSection()164 virtual void EndSection() override {} 165 166 /// Protection of forms. 167 virtual void SectionFormProtection( bool bProtected ) override; 168 169 /// Numbering of the lines in the document. 170 virtual void SectionLineNumbering( sal_uLong nRestartNo, const SwLineNumberInfo& rLnNumInfo ) override; 171 172 /// Has different headers/footers for the title page. 173 virtual void SectionTitlePage() override; 174 175 /// Description of the page borders. 176 virtual void SectionPageBorders( const SwFrameFormat* pFormat, const SwFrameFormat* pFirstPageFormat ) override; 177 178 /// Columns populated from right/numbers on the right side? 179 virtual void SectionBiDi( bool bBiDi ) override; 180 181 /// The style of the page numbers. 182 /// 183 virtual void SectionPageNumbering( sal_uInt16 nNumType, const ::std::optional<sal_uInt16>& oPageRestartNumber ) override; 184 185 /// The type of breaking. 186 virtual void SectionType( sal_uInt8 nBreakCode ) override; 187 188 /// Definition of a numbering instance. 189 virtual void NumberingDefinition( sal_uInt16 nId, const SwNumRule &rRule ) override; 190 191 /// All the numbering level information. 192 virtual void NumberingLevel( sal_uInt8 nLevel, 193 sal_uInt16 nStart, 194 sal_uInt16 nNumberingType, 195 SvxAdjust eAdjust, 196 const sal_uInt8 *pNumLvlPos, 197 sal_uInt8 nFollow, 198 const wwFont *pFont, 199 const SfxItemSet *pOutSet, 200 sal_Int16 nIndentAt, 201 sal_Int16 nFirstLineIndex, 202 sal_Int16 nListTabPos, 203 const OUString &rNumberingString, 204 const SvxBrushItem* pBrush) override; //For i120928,transfer graphic of bullet 205 206 protected: 207 /// Output frames - the implementation. 208 void OutputFlyFrame_Impl( const ww8::Frame& rFormat, const Point& rNdTopLeft ) override; 209 210 /// Sfx item Sfx item RES_CHRATR_CASEMAP 211 virtual void CharCaseMap( const SvxCaseMapItem& ) override; 212 213 /// Sfx item Sfx item RES_CHRATR_COLOR 214 virtual void CharColor( const SvxColorItem& ) override; 215 216 /// Sfx item Sfx item RES_CHRATR_CONTOUR 217 virtual void CharContour( const SvxContourItem& ) override; 218 219 /// Sfx item RES_CHRATR_CROSSEDOUT 220 virtual void CharCrossedOut( const SvxCrossedOutItem& rHt ) override; 221 222 /// Sfx item RES_CHRATR_ESCAPEMENT 223 virtual void CharEscapement( const SvxEscapementItem& ) override; 224 225 /// Sfx item RES_CHRATR_FONT 226 virtual void CharFont( const SvxFontItem& ) override; 227 228 /// Sfx item RES_CHRATR_FONTSIZE 229 virtual void CharFontSize( const SvxFontHeightItem& ) override; 230 231 /// Sfx item RES_CHRATR_KERNING 232 virtual void CharKerning( const SvxKerningItem& ) override; 233 234 /// Sfx item RES_CHRATR_LANGUAGE 235 virtual void CharLanguage( const SvxLanguageItem& ) override; 236 237 /// Sfx item RES_CHRATR_POSTURE 238 virtual void CharPosture( const SvxPostureItem& ) override; 239 240 /// Sfx item RES_CHRATR_SHADOWED 241 virtual void CharShadow( const SvxShadowedItem& ) override; 242 243 /// Sfx item RES_CHRATR_UNDERLINE 244 virtual void CharUnderline( const SvxUnderlineItem& ) override; 245 246 /// Sfx item RES_CHRATR_WEIGHT 247 virtual void CharWeight( const SvxWeightItem& ) override; 248 249 /// Sfx item RES_CHRATR_AUTOKERN 250 virtual void CharAutoKern( const SvxAutoKernItem& ) override; 251 252 /// Sfx item RES_CHRATR_BLINK 253 virtual void CharAnimatedText( const SvxBlinkItem& ) override; 254 255 /// Sfx item RES_CHRATR_BACKGROUND 256 virtual void CharBackground( const SvxBrushItem& ) override; 257 258 /// Sfx item RES_CHRATR_CJK_FONT 259 virtual void CharFontCJK( const SvxFontItem& ) override; 260 261 /// Sfx item RES_CHRATR_CJK_FONTSIZE CharFontSizeCJK(const SvxFontHeightItem & rHt)262 virtual void CharFontSizeCJK( const SvxFontHeightItem& rHt ) override { CharFontSize( rHt ); } 263 264 /// Sfx item RES_CHRATR_CJK_LANGUAGE CharLanguageCJK(const SvxLanguageItem & rHt)265 virtual void CharLanguageCJK( const SvxLanguageItem& rHt ) override { CharLanguage( rHt ); } 266 267 /// Sfx item RES_CHRATR_CJK_POSTURE CharPostureCJK(const SvxPostureItem & rHt)268 virtual void CharPostureCJK( const SvxPostureItem& rHt ) override { CharPosture( rHt ); } 269 270 /// Sfx item RES_CHRATR_CJK_WEIGHT CharWeightCJK(const SvxWeightItem & rHt)271 virtual void CharWeightCJK( const SvxWeightItem& rHt ) override { CharWeight( rHt ); } 272 273 /// Sfx item RES_CHRATR_CTL_FONT 274 virtual void CharFontCTL( const SvxFontItem& ) override; 275 276 /// Sfx item RES_CHRATR_CTL_FONTSIZE CharFontSizeCTL(const SvxFontHeightItem & rHt)277 virtual void CharFontSizeCTL( const SvxFontHeightItem& rHt ) override { CharFontSize( rHt ); } 278 279 /// Sfx item RES_CHRATR_CTL_LANGUAGE CharLanguageCTL(const SvxLanguageItem & rHt)280 virtual void CharLanguageCTL( const SvxLanguageItem& rHt ) override { CharLanguage( rHt ); } 281 282 /// Sfx item RES_CHRATR_CTL_POSTURE 283 virtual void CharPostureCTL( const SvxPostureItem& ) override; 284 285 /// Sfx item RES_CHRATR_CTL_WEIGHT 286 virtual void CharWeightCTL( const SvxWeightItem& ) override; 287 288 /// Sfx item RES_CHRATR_BidiRTL 289 virtual void CharBidiRTL( const SfxPoolItem& rHt ) override; 290 291 /// Sfx item RES_CHRATR_IdctHint 292 virtual void CharIdctHint( const SfxPoolItem& rHt ) override; 293 294 /// Sfx item RES_CHRATR_ROTATE 295 virtual void CharRotate( const SvxCharRotateItem& ) override; 296 297 /// Sfx item RES_CHRATR_EMPHASIS_MARK 298 virtual void CharEmphasisMark( const SvxEmphasisMarkItem& rHt ) override; 299 300 /// Sfx item RES_CHRATR_TWO_LINES 301 virtual void CharTwoLines( const SvxTwoLinesItem& ) override; 302 303 /// Sfx item RES_CHRATR_SCALEW 304 virtual void CharScaleWidth( const SvxCharScaleWidthItem& ) override; 305 306 /// Sfx item RES_CHRATR_RELIEF 307 virtual void CharRelief( const SvxCharReliefItem& ) override; 308 309 /// Sfx item RES_CHRATR_HIDDEN 310 virtual void CharHidden( const SvxCharHiddenItem& ) override; 311 312 /// Sfx item RES_CHRATR_BOX 313 virtual void CharBorder( const ::editeng::SvxBorderLine* pAllBorder, const sal_uInt16 nDist, const bool bShadow ) override; 314 315 /// Sfx item RES_CHRATR_HIGHLIGHT 316 virtual void CharHighlight( const SvxBrushItem& ) override; 317 318 /// Sfx item RES_TXTATR_INETFMT 319 virtual void TextINetFormat( const SwFormatINetFormat& ) override; 320 321 /// Sfx item RES_TXTATR_CHARFMT 322 virtual void TextCharFormat( const SwFormatCharFormat& ) override; 323 324 /// Sfx item RES_TXTATR_FTN 325 virtual void TextFootnote_Impl( const SwFormatFootnote& ) override; 326 327 /// Sfx item RES_PARATR_LINESPACING 328 virtual void ParaLineSpacing_Impl( short nSpace, short nMulti ) override; 329 330 /// Sfx item RES_PARATR_ADJUST 331 virtual void ParaAdjust( const SvxAdjustItem& rHt ) override; 332 333 /// Sfx item RES_PARATR_SPLIT 334 virtual void ParaSplit( const SvxFormatSplitItem& ) override; 335 336 /// Sfx item RES_PARATR_WIDOWS 337 virtual void ParaWidows( const SvxWidowsItem& rHt ) override; 338 339 /// Sfx item RES_PARATR_TABSTOP 340 virtual void ParaTabStop( const SvxTabStopItem& rHt ) override; 341 342 /// Sfx item RES_PARATR_HYPHENZONE 343 virtual void ParaHyphenZone( const SvxHyphenZoneItem& ) override; 344 345 /// Sfx item RES_PARATR_NUMRULE 346 virtual void ParaNumRule_Impl( const SwTextNode *pTextNd, sal_Int32 nLvl, sal_Int32 nNumId ) override; 347 348 /// Sfx item RES_PARATR_SCRIPTSPACE 349 virtual void ParaScriptSpace( const SfxBoolItem& ) override; 350 351 /// Sfx item RES_PARATR_HANGINGPUNCTUATION 352 virtual void ParaHangingPunctuation( const SfxBoolItem& ) override; 353 354 /// Sfx item RES_PARATR_FORBIDDEN_RULES 355 virtual void ParaForbiddenRules( const SfxBoolItem& ) override; 356 357 /// Sfx item RES_PARATR_VERTALIGN 358 virtual void ParaVerticalAlign( const SvxParaVertAlignItem& ) override; 359 360 /// Sfx item RES_PARATR_SNAPTOGRID 361 virtual void ParaSnapToGrid( const SvxParaGridItem& ) override; 362 363 /// Sfx item RES_FRM_SIZE 364 virtual void FormatFrameSize( const SwFormatFrameSize& ) override; 365 366 /// Sfx item RES_PAPER_BIN 367 virtual void FormatPaperBin( const SvxPaperBinItem& ) override; 368 369 /// Sfx item RES_LR_SPACE 370 virtual void FormatLRSpace( const SvxLRSpaceItem& ) override; 371 372 /// Sfx item RES_UL_SPACE 373 virtual void FormatULSpace( const SvxULSpaceItem& rHt ) override; 374 375 /// Sfx item RES_SURROUND 376 virtual void FormatSurround( const SwFormatSurround& ) override; 377 378 /// Sfx item RES_VERT_ORIENT 379 virtual void FormatVertOrientation( const SwFormatVertOrient& ) override; 380 381 /// Sfx item RES_HORI_ORIENT 382 virtual void FormatHorizOrientation( const SwFormatHoriOrient& ) override; 383 384 /// Sfx item RES_ANCHOR 385 virtual void FormatAnchor( const SwFormatAnchor& ) override; 386 387 /// Sfx item RES_BACKGROUND 388 virtual void FormatBackground( const SvxBrushItem& ) override; 389 390 /// Sfx item RES_FILL_STYLE 391 virtual void FormatFillStyle( const XFillStyleItem& ) override; 392 393 /// Sfx item RES_FILL_GRADIENT 394 virtual void FormatFillGradient( const XFillGradientItem& ) override; 395 396 /// Sfx item RES_BOX 397 virtual void FormatBox( const SvxBoxItem& ) override; 398 399 /// Sfx item RES_COL 400 virtual void FormatColumns_Impl( sal_uInt16 nCols, const SwFormatCol & rCol, bool bEven, SwTwips nPageSize ) override; 401 402 /// Sfx item RES_KEEP 403 virtual void FormatKeep( const SvxFormatKeepItem& ) override; 404 405 /// Sfx item RES_TEXTGRID 406 virtual void FormatTextGrid( const SwTextGridItem& ) override; 407 408 /// Sfx item RES_LINENUMBER 409 virtual void FormatLineNumbering( const SwFormatLineNumber& ) override; 410 411 /// Sfx item RES_FRAMEDIR 412 virtual void FormatFrameDirection( const SvxFrameDirectionItem& ) override; 413 414 /// Sfx item RES_PARATR_GRABBAG 415 virtual void ParaGrabBag( const SfxGrabBagItem& ) override; 416 417 /// Sfx item RES_TXTATR_GRABBAG 418 virtual void CharGrabBag( const SfxGrabBagItem& ) override; 419 420 // Sfx item RES_PARATR_OUTLINELEVEL 421 virtual void ParaOutlineLevel( const SfxUInt16Item& ) override; 422 423 /// Write the expanded field 424 virtual void WriteExpand( const SwField* pField ) override; 425 426 virtual void RefField ( const SwField& rField, const OUString& rRef ) override; 427 virtual void HiddenField( const SwField& rField ) override; 428 virtual void SetField( const SwField& rField, ww::eField eType, const OUString& rCmd ) override; 429 virtual void PostitField( const SwField* pField ) override; 430 virtual bool DropdownField( const SwField* pField ) override; 431 virtual bool PlaceholderField( const SwField* pField ) override; 432 433 virtual bool AnalyzeURL( const OUString& rURL, const OUString& rTarget, OUString* pLinkURL, OUString* pMark ) override; 434 435 virtual void WriteBookmarkInActParagraph( const OUString& rName, sal_Int32 nFirstRunPos, sal_Int32 nLastRunPos ) override; 436 437 void SectionRtlGutter( const SfxBoolItem& rRtlGutter) override; 438 439 /// Reference to the export, where to get the data from 440 WW8Export &m_rWW8Export; 441 442 /// For output of styles. 443 /// 444 /// We have to remember these positions between the StartStyle() and 445 /// EndStyle(). 446 sal_uInt16 nPOPosStdLen1, nPOPosStdLen2; 447 448 /// For output of styles. 449 /// 450 /// We have to remember this position between StartStyleProperties() and 451 /// EndStyleProperties(). 452 sal_uInt16 m_nStyleStartSize, m_nStyleLenPos; 453 454 /// For output of styles. 455 /// 456 /// Used between StartStyles() and EndStyles(). 457 sal_uLong m_nStyleCountPos; 458 459 /// For output of run properties. 460 /// 461 /// We have to remember the number of field results, and do not export end 462 /// of the field results if we were forced to split text. 463 sal_uInt16 m_nFieldResults; 464 465 bool mbOnTOXEnding; 466 467 /// Bookmarks of the current paragraph 468 std::multimap<sal_Int32, OUString> m_aBookmarksOfParagraphStart; 469 std::multimap<sal_Int32, OUString> m_aBookmarksOfParagraphEnd; 470 471 public: WW8AttributeOutput(WW8Export & rWW8Export)472 explicit WW8AttributeOutput( WW8Export &rWW8Export ) 473 : AttributeOutputBase(rWW8Export.GetWriter().GetMedia()->GetURLObject().GetMainURL( 474 INetURLObject::DecodeMechanism::NONE)) 475 , m_rWW8Export(rWW8Export) 476 , nPOPosStdLen1(0) 477 , nPOPosStdLen2(0) 478 , m_nStyleStartSize(0) 479 , m_nStyleLenPos(0) 480 , m_nStyleCountPos(0) 481 , m_nFieldResults(0) 482 , mbOnTOXEnding(false) 483 { 484 } 485 486 /// Return the right export class. GetExport()487 virtual WW8Export& GetExport() override { return m_rWW8Export; } 488 489 protected: 490 /// Output the bold etc. attributes 491 void OutputWW8Attribute( sal_uInt8 nId, bool bVal ); 492 493 /// Output the bold etc. attributes, the Complex Text Layout version 494 void OutputWW8AttributeCTL( sal_uInt8 nId, bool bVal ); 495 496 void TableCellBorders( 497 ww8::WW8TableNodeInfoInner::Pointer_t const & pTableTextNodeInfoInner ); 498 499 private: 500 501 editeng::WordPageMargins m_pageMargins; 502 bool m_bFromEdge = false; 503 504 }; 505 506 #endif // INCLUDED_SW_SOURCE_FILTER_WW8_WW8ATTRIBUTEOUTPUT_HXX 507 508 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 509