27#include <officecfg/Office/Common.hxx>
80#include <com/sun/star/drawing/XShape.hpp>
81#include <com/sun/star/i18n/BreakIterator.hpp>
82#include <com/sun/star/i18n/ScriptType.hpp>
83#include <com/sun/star/i18n/WordType.hpp>
84#include <com/sun/star/text/RubyPosition.hpp>
119 return " FORMDROPDOWN ";
121 return " FORMCHECKBOX ";
123 return " ODFFORMDATE ";
124 if ( pFieldmark->GetFieldname( ) ==
ODF_TOC )
127 return " HYPERLINK ";
130 return pFieldmark->GetFieldname();
145 if ( pFieldmark->GetFieldname( ) ==
ODF_TOC )
156 const uno::Reference<beans::XPropertySetInfo>& rPropertySetInfo)
158 OUString sLinkChainName;
159 if (rPropertySetInfo->hasPropertyByName(
"LinkDisplayName"))
161 rPropertySet->getPropertyValue(
"LinkDisplayName") >>= sLinkChainName;
162 if (!sLinkChainName.isEmpty())
163 return sLinkChainName;
165 if (rPropertySetInfo->hasPropertyByName(
"ChainName"))
166 rPropertySet->getPropertyValue(
"ChainName") >>= sLinkChainName;
167 return sLinkChainName;
171 : m_pOld( rExport.m_pChpIter ), m_rExport( rExport )
206 m_pCurRedline(nullptr),
209 mrSwFormatDrop(rTextNd.GetSwAttrSet().GetDrop())
234 aFlyFrame.ForceTreatAsInline();
250 if ( pos1 >= 0 && pos2 >= 0 )
257 return std::max(pos1, pos2);
268 if (0 <= fieldEndPos && fieldEndPos < nStartPos)
275 if (0 <= formElementPos && formElementPos < nStartPos)
293 if (
i >= nStartPos &&
i < nMinPos )
311 auto [pStt, pEnd] = pRedl->
StartEnd();
313 if( pStt->GetNode() ==
m_rNode )
315 const sal_Int32
i = pStt->GetContentIndex();
316 if(
i >= nStartPos &&
i < nMinPos )
322 if( pEnd->GetNode() ==
m_rNode )
324 const sal_Int32
i = pEnd->GetContentIndex();
325 if(
i >= nStartPos &&
i < nMinPos )
343 for(
size_t i = 0;
i < pTextAttrs->Count(); ++
i )
347 if(
nPos >= nStartPos &&
nPos <= nMinPos )
353 if(
nPos >= nStartPos &&
nPos <= nMinPos )
360 if(
nPos >= nStartPos &&
nPos <= nMinPos )
374 sal_Int32 nNextFlyPos = 0;
376 while (aTmpFlyIter !=
maFlyFrames.end() && nNextFlyPos < nStartPos)
378 const SwPosition &rAnchor = aTmpFlyIter->GetPosition();
383 if (nNextFlyPos >= nStartPos && nNextFlyPos < nMinPos)
384 nMinPos = nNextFlyPos;
423 aExportSet.ClearItem(nFontId);
431 for(
size_t i = 0;
i < pTextAttrs->Count(); ++
i )
434 const sal_Int32* pEnd = pHt->
End();
436 if (pEnd ? ( nSwPos >= pHt->
GetStart() && nSwPos < *pEnd)
443 const std::shared_ptr<SfxItemSet>& pSet = rAutoFormat.
GetStyleHandle();
449 if( SfxItemState::SET == aIter.
GetItemState(
false, &pItem ))
451 if (nWhichId == nFontId)
452 pFont = &(item_cast<SvxFontItem>(*pItem));
456 aRangeItems[nWhichId] = pItem;
462 aRangeItems[nWhich] = (&(pHt->
GetAttr()));
464 else if (nSwPos < pHt->GetStart())
477 if ( pCharFormatItem )
492 std::unique_ptr<SfxGrabBagItem> pNewCharFmtGrabBag(pCharFmtGrabBag->Clone());
493 assert(pNewCharFmtGrabBag);
494 auto & rNewFmtMap = pNewCharFmtGrabBag->GetGrabBag();
495 for (
auto const & item : pAutoFmtGrabBag->GetGrabBag())
497 if (item.second.hasValue())
498 rNewFmtMap.erase(item.first);
500 aExportSet.Put(std::move(pNewCharFmtGrabBag));
510 for (
const auto& aRangeItem : aRangeItems )
512 aExportItems[aRangeItem.first] = aRangeItem.second;
515 if ( !aExportItems.empty() )
522 const SvxFontItem * pFontToOutput = ( rParentFont != *pFont )? pFont :
nullptr;
534 OSL_ENSURE( pFont,
"must be *some* font associated with this txtnode" );
539 if ( rParentFont != aFont )
564 if (rExportSet.
HasItem(nWhich) || !pValue)
567 bool hasPropertyInCharStyle =
false;
568 bool hasPropertyInParaStyle =
false;
575 if (
const SfxPoolItem* pItem = pCharFormat->GetAttrSet().GetItem(nWhich))
577 hasPropertyInCharStyle = (*pItem == *pValue);
586 nStyle = ( nStyle != 0xfff ) ? nStyle : 0;
592 hasPropertyInParaStyle = (*pItem == *pValue);
598 if (hasPropertyInCharStyle && hasPropertyInParaStyle)
600 rExportSet.
Put(*pValue);
615 if (VMLExport::IsWaterMarkShape(pSdrObj->
GetName()))
632 return nNodePos ==
maFlyIter->GetPosition().GetNodeIndex();
639 const SwPosition& rAnchor = rFly.GetPosition();
656 uno::Reference< drawing::XShape > xShape;
660 xShape.set(
const_cast<SdrObject*
>(pSdrObj)->getUnoShape(), uno::UNO_QUERY);
661 uno::Reference< beans::XPropertySet > xPropertySet(xShape, uno::UNO_QUERY);
662 uno::Reference< beans::XPropertySetInfo > xPropertySetInfo;
663 if( xPropertySet.is() )
664 xPropertySetInfo = xPropertySet->getPropertySetInfo();
665 if( xPropertySetInfo.is() )
671 if( xPropertySetInfo->hasPropertyByName(
"ChainNextName") )
672 xPropertySet->getPropertyValue(
"ChainNextName") >>= aLinkedTextboxInfo.
sNextChain;
673 if( xPropertySetInfo->hasPropertyByName(
"ChainPrevName") )
674 xPropertySet->getPropertyValue(
"ChainPrevName") >>= aLinkedTextboxInfo.
sPrevChain;
679 assert( !sLinkChainName.isEmpty() );
692 ++linkedTextboxesIter;
699 ++linkedTextboxesIter;
707 ++linkedTextboxesIter;
726 assert(
nPos >= nSwPos &&
"a fly must get flagged as a nextAttr/CurrentPos");
727 if (
nPos != nSwPos )
734 if (VMLExport::IsWaterMarkShape(pSdrObj->
GetName()))
768 for (
size_t i = 0;
i < pTextAttrs->Count(); ++
i)
778 else if (nSwPos < pHt->GetStart())
792 for (
size_t i = 0;
i < pTextAttrs->Count(); ++
i)
794 const SwTextAttr* pHt = pTextAttrs->GetSortedByEnd(
i);
795 const sal_Int32 nStart = pHt->
GetStart();
796 const sal_Int32 nEnd = pHt->
End() ? *pHt->
End() : INT_MAX;
797 if (nSwPos >= nStart && nSwPos < nEnd)
820 if(nSwPos == nWordLen && nSwPos != 0)
825 if (nSwPos == nDropChars && nSwPos != 0)
834 [
this](
const aBookmarkPair& rBookmarkPair) { return rBookmarkPair.second == m_rNode.GetIndex(); });
848 for (
size_t i = 0;
i < pTextAttrs->
Count(); ++
i)
852 const sal_Int32 * pAtrEnd =
nullptr;
853 if(
nullptr != ( pAtrEnd = pHt->
End() ) &&
854 nTmpSwPos >= pHt->
GetStart() && nTmpSwPos < *pAtrEnd )
856 if ( nWhich == pItem->
Which() )
875 else if (nTmpSwPos < pHt->GetStart())
884 rItems.insert(rItems.end(),
m_pO->begin(),
m_pO->end());
890 return pRet ? *pRet :
m_rNode.SwContentNode::GetAttr(nWhich);
904 aStr +=
"(\\s\\up " + OUString::number((aWW8Ruby.
GetBaseHeight() + 10) / 20 - 1) +
"(";
926 if ( rRet.getLength() > 40 )
927 rRet = rRet.copy( 0, 40 );
928 OSL_ENSURE( rRet.getLength() <= 40,
"Word cannot have bookmarks longer than 40 chars" );
934 OUString sURL = rUrl;
938 OUString sParentPath = sConvertedParent.isEmpty() ?
m_sBaseURL : sConvertedParent;
944 if ( anAbsoluteParent.
GetNewAbsURL( rUrl, &anAbsoluteNew ) )
949 OUString sToConvert = rUrl.replaceAll(
"\\",
"/" );
953 if ( !sRelative.isEmpty() )
962 bool bBookMarkOnly =
false;
967 if ( rUrl.getLength() > 1 && rUrl[0] ==
'#' )
973 const OUString sRefType(
nPos>=0 &&
nPos+1<sMark.getLength() ?
974 sMark.copy(
nPos+1).replaceAll(
" ",
"") :
978 if ( !sRefType.isEmpty() &&
979 (sRefType ==
"outline" || sRefType ==
"graphic" || sRefType ==
"frame" || sRefType ==
"ole" || sRefType ==
"region" || sRefType ==
"table") )
981 for (
const auto& rBookmarkPair :
GetExport().m_aImplicitBookmarks )
983 if ( rBookmarkPair.first == sMark )
985 sMark =
"_toc" + OUString::number( sal_Int32(rBookmarkPair.second) );
998 if ( aProtocol == INetProtocol::File || aProtocol == INetProtocol::NotValid )
1006 if ( !sMark.isEmpty() && sURL.isEmpty() )
1007 bBookMarkOnly =
true;
1011 return bBookMarkOnly;
1018 OUString sURL = *pLinkURL;
1020 if ( !sURL.isEmpty() )
1031 if ( !pMark->isEmpty() )
1032 sURL +=
" \\l \"" + *pMark +
"\"";
1039 return bBookMarkOnly;
1066 0x03, 0x6a, 0,0,0,0,
1080 sURL =
aURL.GetURLNoMark();
1084 OUString sRelativeURL;
1085 if ( !rUrl.isEmpty() )
1087 bool bAbsolute = sRelativeURL == rUrl;
1092 0,0,0,0,0,0,0,0,0,0,
1093 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1094 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1095 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1100 0xD0,0xC9,0xEA,0x79,0xF9,0xBA,0xCE,0x11,
1101 0x8C,0x82,0x00,0xAA,0x00,0x4B,0xA9,0x0B
1107 if ( !sMark.isEmpty() )
1114 sal_uInt32 nFlag = bBookMarkOnly ? 0 : 0x01;
1117 if ( !sMark.isEmpty() )
1122 if ( eProto == INetProtocol::File || eProto == INetProtocol::Smb )
1127 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1128 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
1133 0xFF, 0xFF, 0xAD, 0xDE, 0x00, 0x00, 0x00, 0x00,
1134 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1135 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1140 if ( eProto == INetProtocol::File && sURL.startsWith(
"/" ) )
1141 sURL =
aURL.PathToFileName();
1145 if (sURL.getLength()>=3)
1148 if ( sURL[0]==
'/' && sURL[2]==
':' &&
1149 ( (aDrive>=
'A' && aDrive<=
'Z' ) || (aDrive>=
'a' && aDrive<=
'z') ) )
1151 sURL = sURL.copy(1).replaceAll(
"/",
"\\");
1156 const char pSmb[] =
"smb://";
1157 if ( eProto == INetProtocol::Smb && sURL.startsWith( pSmb ) )
1159 sURL = sURL.copy(
sizeof(pSmb)-3 ).replaceAll(
"/",
"\\" );
1165 RTL_TEXTENCODING_MS_1252 );
1173 else if ( eProto != INetProtocol::NotValid )
1180 0xE0,0xC9,0xEA,0x79,0xF9,0xBA,0xCE,0x11,
1181 0x8C,0x82,0x00,0xAA,0x00,0x4B,0xA9,0x0B
1189 if ( !sMark.isEmpty() )
1209 sal_Int32 nTrim = 0;
1212 static constexpr OUStringLiteral MoveFrom_Bookmark_NamePrefix =
u"__RefMoveFrom__";
1213 static constexpr OUStringLiteral MoveTo_Bookmark_NamePrefix =
u"__RefMoveTo__";
1218 nTrim = MoveFrom_Bookmark_NamePrefix.getLength();
1224 nTrim = MoveTo_Bookmark_NamePrefix.getLength();
1228 OUString(rBookmark.substr(nTrim)).replace(
' ',
'_'),
1252 [nSplitEndPos](
const CharRunEntry& rCharRun) { return rCharRun.mnEndPos >= nSplitEndPos; });
1253 if (aIter ==
maCharRuns.end() || aIter->mnEndPos == nSplitEndPos)
1271 aItems.push_back( 1 );
1273 sal_uInt16 nStt_sprmCFSpec = aItems.size();
1277 aItems.push_back( 1 );
1297 const sal_Int32* pTextEnd = rTextTOXMark.
End();
1301 *pTextEnd - rTextTOXMark.
GetStart() );
1306 OUString sUserTypeName;
1312 if ( !sUserTypeName.isEmpty() )
1329 sText =
" XE \"" + sText +
"\" ";
1331 if (!sUserTypeName.isEmpty())
1333 sText +=
"\\f \"" + sUserTypeName +
"\" ";
1343 sText =
" TC \"" + sText;
1344 sal_uInt16 nLvl = rAttr.
GetLevel();
1348 sText +=
"\" \\l " + OUString::number(nLvl) +
" ";
1352 OSL_ENSURE(
false,
"Unhandled option for toc export" );
1356 if (!sText.isEmpty())
1358 OUString
const* pBookmarkName(
nullptr);
1359 if (
auto const it =
GetExport().m_TOXMarkBookmarksByTOXMark.find(&rAttr);
1360 it !=
GetExport().m_TOXMarkBookmarksByTOXMark.end())
1362 pBookmarkName = &it->second;
1374 const sal_Int32* pEnd;
1376 for (
size_t i = 0;
i < pTextAttrs->Count(); ++
i)
1378 const SwTextAttr* pHt = pTextAttrs->GetSortedByEnd(
i);
1380 switch ( pItem->
Which() )
1407 if (nPos < pHt->GetAnyEnd())
1410 for (
size_t i = 0;
i < pTextAttrs->Count(); ++
i )
1414 switch ( pItem->
Which() )
1461 if (nPos < pHt->GetStart())
1532 const SwPosition* pCheckedStt = pRedl->Start();
1539 if (pRedl->GetType() == RedlineType::ParagraphFormat)
1559 case RedlineType::Insert:
1560 case RedlineType::Delete:
1561 case RedlineType::Format:
1579 auto [pStt, pEnd] = pRedl->
StartEnd();
1581 if( pStt->GetNode() ==
m_rNode )
1583 if( pStt->GetContentIndex() >=
nPos )
1585 if( pStt->GetContentIndex() ==
nPos )
1589 case RedlineType::Insert:
1590 case RedlineType::Delete:
1591 case RedlineType::Format:
1607 if( pEnd->GetNode() ==
m_rNode &&
1608 pEnd->GetContentIndex() <
nPos )
1645 nDir = SvxFrameDirection::Horizontal_RL_TB;
1647 nDir = SvxFrameDirection::Horizontal_LR_TB;
1651 if ( nDir == SvxFrameDirection::Environment )
1655 nDir = SvxFrameDirection::Horizontal_RL_TB;
1657 nDir = SvxFrameDirection::Horizontal_LR_TB;
1667 while ( pFlyFormat )
1670 if ( SvxFrameDirection::Environment == pItem->GetValue() )
1674 if ((RndStdIds::FLY_AT_PAGE != pAnchor->
GetAnchorId()) &&
1680 pFlyFormat =
nullptr;
1683 pFlyFormat =
nullptr;
1688 nRet = pItem->GetValue();
1692 OSL_ENSURE( nRet != SvxFrameDirection::Environment,
"leaving with environment direction" );
1727 if ((RndStdIds::FLY_AT_PAGE != pAnchor->
GetAnchorId()) &&
1734 pFlyFormat =
nullptr;
1737 pFlyFormat =
nullptr;
1744 std::shared_ptr<SvxBrushItem> aRet(std::make_shared<SvxBrushItem>(aTmpColor,
RES_BACKGROUND));
1748 aRet.reset(pRet->
Clone());
1760 sal_Int32 nLen)
const
1765 OUString aSnippet(rStr.copy(nCurrentPos, nLen));
1769 aSnippet = aSnippet.replace(0x0A, 0x0B);
1788 switch (nScriptType)
1790 case i18n::ScriptType::ASIAN:
1793 case i18n::ScriptType::COMPLEX:
1796 case i18n::ScriptType::LATIN:
1803 aFontHelper.
SetCaseMap(SvxCaseMap::Capitalize);
1804 aFontHelper.SetLanguage(nLanguage);
1812 i18n::WordType::ANYWORD_IGNOREWHITESPACES ) )
1814 aSnippet = OUStringChar(rStr[nCurrentPos]) + aSnippet.subView(1);
1832 while(
nPos < nMax )
1835 auto [pStt, pEnd] = pRedl->
StartEnd();
1838 pEnd->GetNode() == *pTextNode && pStt->GetNode() != *pTextNode &&
1852 short nDropLines = rSwFormatDrop.
GetLines();
1854 int rFontHeight, rDropHeight, rDropDescent;
1857 ShortToSVBT16( nStyle, nSty );
1867 int nDCS = ( nDropLines << 3 ) | 0x01;
1873 if ( rNode.
GetDropSize( rFontHeight, rDropHeight, rDropDescent ) )
1882 if ( pTextNodeInfo )
1885 SAL_INFO(
"sw.ww8", pTextNodeInfo->toString());
1893 if ( rNode.
GetDropSize( rFontHeight, rDropHeight, rDropDescent ) )
1896 if ( pSwCharFormat )
1916 const sal_Int32 nNextPos = aAttrIter->
WhereNext();
1917 sal_Int32 nNextBookmark = nNextPos;
1918 sal_Int32 nNextAnnotationMark = nNextPos;
1920 if( nNextBookmark > nCurrentPos )
1927 return std::min( nNextPos,
std::min( nNextBookmark, nNextAnnotationMark ) );
1938 if( nCurrentPos == aAttrIter->
WhereNext() && ( !bNextBookmark || nNextPos > aAttrIter->
WhereNext() ) )
1948 for ( sal_Int32
i = 0;
i < nMarks;
i++ )
1977 bool bIsStartOk = ( pMark->
GetMarkStart().
GetNode() == rNd ) && ( nBStart >= nStt ) && ( nBStart <= nEnd );
1978 bool bIsEndOk = ( pMark->
GetMarkEnd().
GetNode() == rNd ) && ( nBEnd >= nStt ) && ( nBEnd <= nEnd );
1980 if ( bIsStartOk || bIsEndOk )
1982 rArr.push_back( pMark );
1986 return ( !rArr.empty() );
1996 for ( sal_Int32
i = 0;
i < nMarks;
i++ )
2008 bool bIsStartOk = ( pMark->
GetMarkStart().
GetNode() == rNd ) && ( nBStart >= nStt ) && ( nBStart <= nEnd );
2009 bool bIsEndOk = ( pMark->
GetMarkEnd().
GetNode() == rNd ) && ( nBEnd >= nStt ) && ( nBEnd <= nEnd );
2022 bSingleChar =
false;
2026 if ( ( bIsStartOk || bIsEndOk ) && !bSingleChar )
2028 rArr.push_back( pMark );
2032 return ( !rArr.empty() );
2037class CompareMarksEnd
2040 bool operator() (
const IMark * pOneB,
const IMark * pTwoB )
const
2045 return nOEnd < nTEnd;
2053 bool bHasBookmark =
false;
2059 if( !bNextPositionOnly || (nNext > nCurrentPos ))
2062 bHasBookmark =
true;
2070 if( !bNextPositionOnly || nNext > nCurrentPos )
2072 if ( !bHasBookmark )
2075 rNearest =
std::min( rNearest, nNext );
2076 bHasBookmark =
true;
2080 return bHasBookmark;
2085 bool bHasAnnotationMark =
false;
2091 if( !bNextPositionOnly || (nNext > nCurrentPos ))
2094 bHasAnnotationMark =
true;
2102 if( !bNextPositionOnly || nNext > nCurrentPos )
2104 if ( !bHasAnnotationMark )
2107 rNearest =
std::min( rNearest, nNext );
2119 for (
IMark* pMark : aMarksStart )
2122 const sal_Int32 nStart = pMark->GetMarkStart().GetContentIndex();
2123 const sal_Int32 nEnd = pMark->GetMarkEnd().GetContentIndex();
2126 if ( nStart > nCurrentPos && ( pMark->GetMarkStart().GetNode() == rNode) )
2127 aSortedStart.push_back( pMark );
2129 if ( nEnd > nCurrentPos && nEnd <= ( nCurrentPos + nLen ) && (pMark->GetMarkEnd().GetNode() == rNode) )
2130 aSortedEnd.push_back( pMark );
2134 std::sort( aSortedEnd.begin(), aSortedEnd.end(), CompareMarksEnd() );
2149 if (
GetBookmarks( rNode, nCurrentPos, nCurrentPos + nLen, aMarksStart ) )
2153 for (
IMark* pMark : aMarksStart )
2156 const sal_Int32 nStart = pMark->GetMarkStart().GetContentIndex();
2157 const sal_Int32 nEnd = pMark->GetMarkEnd().GetContentIndex();
2159 if ( nStart > nCurrentPos && (pMark->GetMarkStart().GetNode() == rNode) )
2160 aSortedStart.push_back( pMark );
2162 if ( nEnd > nCurrentPos && nEnd <= ( nCurrentPos + nLen ) && (pMark->GetMarkEnd().GetNode() == rNode) )
2163 aSortedEnd.push_back( pMark );
2167 std::sort( aSortedEnd.begin(), aSortedEnd.end(), CompareMarksEnd() );
2205 for (
auto const& it : tmp)
2212 if (pMark->GetMarkEnd().GetNode() != rNd)
2217 pos = pMark->GetMarkEnd().GetContentIndex();
2228OUString lcl_GetSymbolFont(
SwAttrPool& rPool,
const SwTextNode* pTextNode,
int nStart,
int nEnd)
2231 if ( pTextNode && pTextNode->
GetParaAttr(aSet, nStart, nEnd) )
2237 if (pFontItem->
GetCharSet() == RTL_TEXTENCODING_SYMBOL)
2248 SAL_INFO(
"sw.ww8",
"<OutWW8_SwTextNode>" );
2253 bool bLastCR =
false;
2254 bool bExported =
false;
2258 if (aNextIdx == aLastIdx)
2281 rtl_TextEncoding eChrSet = aAttrIter.
GetCharSet();
2308 pFormula->PtrToBoxNm( &pTableNode->
GetTable() );
2341 auto aBreakIt = softBreakList.
begin();
2345 sal_Int32 nCurrentPos = *aBreakIt;
2347 if( softBreakList.
size() > 1 )
2350 if ( pNextSplitParaPageDesc == pNextSplitParaPageDesc->
GetFollow() )
2351 aBreakIt = --softBreakList.
end();
2379 OUString sBkmkName =
"_toc" + OUString::number( sal_Int32(rNode.
GetIndex()) );
2389 sal_Int32
const nEnd = bNeedParaSplit ? *aBreakIt :
aStr.getLength();
2390 bool bIsEndOfCell =
false;
2391 bool bIncludeEndOfParaCRInRedlineProperties =
false;
2392 sal_Int32 nOpenAttrWithRange = 0;
2395 if ( pTextNodeInfo )
2397 pTextNodeInfoInner = pTextNodeInfo->getFirstInner();
2398 if (pTextNodeInfoInner && pTextNodeInfoInner->isEndOfCell())
2399 bIsEndOfCell =
true;
2405 bool bPostponeWritingText = false ;
2406 bool bStartedPostponedRunProperties =
false;
2407 OUString aSavedSnippet ;
2409 sal_Int32 nNextAttr =
GetNextPos( &aAttrIter, rNode, nCurrentPos );
2414 nCurrentPos = nNextAttr;
2421 bool bSingleEmptyRun = nCurrentPos == 0 && nNextAttr == 0;
2424 if( nNextAttr > nEnd )
2448 bPostponeWritingText = true ;
2456 AppendBookmarks( rNode, nCurrentPos, nNextAttr - nCurrentPos, pRedlineData );
2463 if (nCurrentPos == 0)
2466 bool bTextAtr = aAttrIter.
IsTextAttr( nCurrentPos );
2469 OUString aSymbolFont;
2470 sal_Int32 nLen = nNextAttr - nCurrentPos;
2471 if ( !bTextAtr && nLen )
2494 ::sw::mark::IFieldmark
const*
const pFieldmark = pMarkAccess->
getFieldmarkAt(aPosition);
2520 IFieldmark::parameter_map_t::const_iterator it = pFieldmark->GetParameters()->find(
ODF_ID_PARAM );
2521 if ( it != pFieldmark->GetParameters()->end() )
2524 it->second >>= sFieldId;
2529 if ( it != pFieldmark->GetParameters()->end() )
2531 it->second >>= sCode;
2547 ::sw::mark::IFieldmark
const*
const pFieldmark = pMarkAccess->
getFieldmarkFor(aPosition);
2557 IFieldmark::parameter_map_t::const_iterator it = pFieldmark->GetParameters()->find(
ODF_OLE_PARAM );
2558 if ( it != pFieldmark->GetParameters()->end() )
2563 if ( !sOleId.isEmpty() )
2572 ::sw::mark::IFieldmark
const*
const pFieldmark = pMarkAccess->
getFieldmarkAt(aPosition);
2588 IFieldmark::parameter_map_t::const_iterator it = pFieldmark->GetParameters()->find(
ODF_ID_PARAM );
2589 if ( it != pFieldmark->GetParameters()->end() )
2592 it->second >>= sFieldId;
2609 ::sw::mark::IFieldmark
const*
const pFieldmark = pMarkAccess->
getFieldmarkAt(aPosition);
2612 bool const isDropdownOrCheckbox(pFieldmark->GetFieldname() ==
ODF_FORMDROPDOWN ||
2614 if ( isDropdownOrCheckbox )
2619 if ( isDropdownOrCheckbox )
2624 if ( isDropdownOrCheckbox )
2630 assert(!bNeedParaSplit || nCurrentPos <= *aBreakIt);
2631 if( bNeedParaSplit && nCurrentPos + ofs + nLen > *aBreakIt)
2632 nLen = *aBreakIt - nCurrentPos - ofs;
2635 OUString aSnippet( aAttrIter.
GetSnippet(
aStr, nCurrentPos + ofs, nLen ) );
2640 sal_Int32 nFirstLineIndent=0;
2643 if ( pTextNode && pTextNode->
GetAttr(aSet) )
2652 aSnippet =
"\x09" + aSnippet;
2656 aSymbolFont = lcl_GetSymbolFont(
m_rDoc.
GetAttrPool(), pTextNode, nCurrentPos + ofs, nCurrentPos + ofs + nLen);
2658 if ( bPostponeWritingText && (
FLY_POSTPONED != nStateOfFlyFrame ) )
2660 aSavedSnippet = aSnippet ;
2664 bPostponeWritingText = false ;
2668 if (ofs == 1 && nNextAttr == nEnd)
2681 if (0 != nEnd && !(bPostponeWritingText
2686 bStartedPostponedRunProperties =
true;
2688 aAttrIter.
OutAttr(nCurrentPos,
false);
2694 if ( nNextAttr == nEnd )
2696 OSL_ENSURE( nOpenAttrWithRange >= 0,
"odd to see this happening, expected >= 0" );
2697 if ( !bTextAtr && nOpenAttrWithRange <= 0 )
2700 bIncludeEndOfParaCRInRedlineProperties =
true;
2704 nStateOfFlyFrame = aAttrIter.
OutFlys( nEnd );
2714 if (bLastCR && (!bExported))
2720 WriteCR( pTextNodeInfoInner );
2722 if (0 != nEnd && bIsEndOfCell)
2734 aAttrIter.
OutAttr( nCurrentPos,
false );
2739 if ( nNextAttr == nEnd )
2741 OSL_ENSURE(nOpenAttrWithRange >= 0,
2742 "odd to see this happening, expected >= 0");
2743 bool bAttrWithRange = (nOpenAttrWithRange > 0);
2744 if ( nCurrentPos != nEnd )
2747 OSL_ENSURE(nOpenAttrWithRange == 0,
2748 "odd to see this happening, expected 0");
2753 if (bTextAtr || bAttrWithRange || bIncludeEndOfParaCRInRedlineProperties)
2758 nStateOfFlyFrame = aAttrIter.
OutFlys( nEnd );
2762 WriteCR( pTextNodeInfoInner );
2764 if (bLastCR && (!bExported))
2776 if (bIncludeEndOfParaCRInRedlineProperties)
2790 aSymbolFont = lcl_GetSymbolFont(
m_rDoc.
GetAttrPool(), &rNode, nCurrentPos, nCurrentPos + nLen);
2792 if (bPostponeWritingText)
2797 if (!aSavedSnippet.isEmpty())
2798 bStartedPostponedRunProperties =
false;
2804 if (0 != nEnd && !bStartedPostponedRunProperties)
2807 aAttrIter.
OutAttr( nCurrentPos,
false );
2819 nCurrentPos = nNextAttr;
2823 while ( nCurrentPos < nEnd );
2826 if( bNeedParaSplit && *aBreakIt != rNode.
GetText().getLength() )
2828 pNextSplitParaPageDesc = pNextSplitParaPageDesc->
GetFollow();
2829 assert(pNextSplitParaPageDesc);
2835 bool bCheckSectionBreak =
true;
2837 if ( bNeedParaSplit )
2844 if ( !bCheckSectionBreak )
2847 if ( rBreak.
GetBreak() == SvxBreak::PageAfter )
2849 if ( pNextNode && pNextNode->
FindPageDesc() != pNextSplitParaPageDesc )
2850 bCheckSectionBreak =
true;
2857 if ( bCheckSectionBreak )
2868 if ( pTextNodeInfo )
2871 SAL_INFO(
"sw.ww8", pTextNodeInfo->toString());
2875 if (pTextNodeInfoInner && pTextNodeInfoInner->isFirstInTable())
2877 const SwTable * pTable = pTextNodeInfoInner->getTable();
2880 if (pTabFormat !=
nullptr)
2890 std::optional<SfxItemSet> oTmpSet;
2915 oTmpSet->Put( aUL );
2919 const bool bParaRTL = aAttrIter.
IsParaRTL();
2921 int nNumberLevel = -1;
2924 if (nNumberLevel >= 0 && nNumberLevel <
MAXLEVEL)
2930 pFormat = &pRule->
Get( nLvl );
2960 if (SfxItemState::SET !=
2975 oTmpSet->Put( aLR );
2992 oTmpSet->Put(aItem);
3007 (!pItem || pItem->GetValue() == SvxFrameDirection::Environment) &&
3008 rTextColl.
GetFrameDir().GetValue() == SvxFrameDirection::Environment
3020 if ( pAdjust && (pAdjust->
GetAdjust() == SvxAdjust::Left || pAdjust->
GetAdjust() == SvxAdjust::Right ) )
3044 ( pLrSpaceItem ==
nullptr )
3058 const SwNumFormat& rNumFormat = pRule->
Get(
static_cast< sal_uInt16
>(nLevel) );
3077 oTmpSet->Put( aLRSpace );
3095 if (rBreakAtParaStyle.
GetBreak() == SvxBreak::PageAfter)
3099 oTmpSet->Put(rBreakAtParaStyle);
3120 const bool bKeep = rKeep.GetValue();
3121 const bool bDontSplit = !(bKeep ||
3124 if ( bKeep || bDontSplit )
3140 bool bSetAtPara =
false;
3143 else if ( bDontSplit )
3156 oTmpSet->Put( aKeepItem );
3174 OutputItemSet( *pNewSet,
true,
false, i18n::ScriptType::LATIN,
false);
3191 bool bCharFormatOnly =
true;
3194 if (std::shared_ptr<SfxItemSet>
const& pSet = rListAutoFormat.
GetStyleHandle())
3196 aParagraphMarkerProperties.
Put(*pSet);
3197 bCharFormatOnly =
false;
3201 for(
size_t i = 0;
i < pTextAttrs->Count(); ++
i )
3204 const sal_Int32 startPos = pHt->
GetStart();
3205 const sal_Int32* endPos = pHt->
End();
3209 if( endPos && (startPos == *endPos ) && (*endPos == rNode.
GetText().getLength()) )
3211 SAL_INFO(
"sw.ww8", startPos <<
"startPos == endPos" << *endPos);
3213 SAL_INFO(
"sw.ww8",
"nWhich" << nWhich);
3217 aParagraphMarkerProperties.
Put(pHt->
GetAttr());
3220 bCharFormatOnly =
false;
3234 }
while(*aBreakIt != rNode.
GetText().getLength() && bNeedParaSplit );
3236 SAL_INFO(
"sw.ww8",
"</OutWW8_SwTextNode>" );
3251 bool bNoPageBreak =
false;
3253 if ( !pDescItem ||
nullptr == pDescItem->
GetPageDesc() )
3255 bNoPageBreak =
true;
3262 SvxBreak eBreak = pBreakItem->GetBreak();
3265 case SvxBreak::PageBefore:
3266 case SvxBreak::PageAfter:
3267 bNoPageBreak =
false;
3274 bRet = bNoPageBreak;
3306 if ( !pSet && !bInTOX )
3361 pSectNd = pSectNdNext;
3377 {
"ooxml:CT_SdtDocPart_docPartGallery",
uno::Any(OUString(
"Table of Contents"))},
3378 {
"ooxml:CT_SdtDocPart_docPartUnique",
uno::Any(OUString(
"true"))},
3383 {
"ooxml:CT_SdtPr_docPartObj",
uno::Any(aDocPropertyValues)},
3387 aGrabBag.
GetGrabBag()[
"SdtPr"] <<= aSdtPrPropertyValues;
3407 aGrabBag.
GetGrabBag()[
"ParaSdtEndBefore"] <<=
true;
3431 bool bUseEscher =
true;
3487 aOffset -= aPageRect.
Pos();
3496 (RndStdIds::FLY_AT_PAGE != rAnch.
GetAnchorId()) &&
3540 if ( pRedline->
Next() )
3543 static const sal_uInt16 insSprmIds[ 3 ] =
3548 static const sal_uInt16 delSprmIds[ 3 ] =
3554 const sal_uInt16* pSprmIds =
nullptr;
3557 case RedlineType::Insert:
3558 pSprmIds = insSprmIds;
3561 case RedlineType::Delete:
3562 pSprmIds = delSprmIds;
3565 case RedlineType::Format:
3573 OSL_ENSURE(
false,
"Unhandled redline type for export");
3618 case css::text::RubyAdjust_LEFT:
3622 case css::text::RubyAdjust_CENTER:
3625 case css::text::RubyAdjust_RIGHT:
3629 case css::text::RubyAdjust_BLOCK:
3633 case css::text::RubyAdjust_INDENT_BLOCK:
3638 OSL_ENSURE(
false,
"Unhandled Ruby justification code" );
3642 if ( rRuby.
GetPosition() == css::text::RubyPosition::INTER_CHARACTER )
3667 const auto& rHeight =
3688 const OUString &rText = rNode.
GetText();
3689 sal_uInt16 nScript = i18n::ScriptType::LATIN;
3691 if (!rText.isEmpty())
@ PARA_SPACE_MAX_AT_PAGES
@ ADD_PARA_SPACING_TO_TABLE_CELLS
virtual void StartRuby(const SwTextNode &rNode, sal_Int32 nPos, const SwFormatRuby &rRuby)=0
Output ruby start.
virtual void FieldVanish(const OUString &rText, ww::eField eType, OUString const *pBookmarkName)=0
void OutputFlyFrame(const ww8::Frame &rFormat)
Output frames.
virtual void ParagraphStyle(sal_uInt16 nStyle)=0
Output style.
virtual void SetStateOfFlyFrame(FlyProcessingState)
Set the state of the Fly at current position.
virtual void EndParagraphProperties(const SfxItemSet &rParagraphMarkerProperties, const SwRedlineData *pRedlineData, const SwRedlineData *pRedlineParagraphMarkerDeleted, const SwRedlineData *pRedlineParagraphMarkerInserted)=0
Called after we end outputting the attributes.
void GenerateBookmarksForSequenceField(const SwTextNode &rNode, SwWW8AttrIter &rAttrIter)
MSO uses bookmarks to reference sequence fields, so we need to generate these additional bookmarks du...
virtual sal_Int32 StartParagraph(ww8::WW8TableNodeInfo::Pointer_t pTextNodeInfo, bool bGenerateParaId)=0
Start of the paragraph.
virtual void Redline(const SwRedlineData *pRedline)=0
Output redlining.
virtual void EndParagraph(ww8::WW8TableNodeInfoInner::Pointer_t pTextNodeInfoInner)=0
End of the paragraph.
virtual bool EndURL(bool isAtEndOfParagraph)=0
Output URL end.
virtual void SetAnchorIsLinkedToNode(bool)
If the node has an anchor linked.
virtual void RunText(const OUString &rText, rtl_TextEncoding eCharSet=RTL_TEXTENCODING_UTF8, const OUString &rSymbolFont=OUString())=0
Output text (inside a run).
void TOXMark(const SwTextNode &rNode, const SwTOXMark &rAttr)
virtual bool IsFlyProcessingPostponed()
Is processing of fly postponed ?
void EndTOX(const SwSection &rSect, bool bCareEnd=true)
virtual void PageBreakBefore(bool bBreak)=0
Page break As a paragraph property - the paragraph should be on the next page.
virtual void EndRun(const SwTextNode *pNode, sal_Int32 nPos, sal_Int32 nLen, bool bLastRun=false)=0
End of the text run.
virtual bool StartURL(const OUString &rUrl, const OUString &rTarget)=0
Output URL start.
virtual void ResetFlyProcessingFlag()
Reset the flag for FlyProcessing.
virtual bool AnalyzeURL(const OUString &rUrl, const OUString &rTarget, OUString *pLinkURL, OUString *pMark)
virtual void TableInfoCell(ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo)=0
virtual void StartRunProperties()=0
Called before we start outputting the attributes.
virtual void RTLAndCJKState(bool bIsRTL, sal_uInt16 nScript)=0
Export the state of RTL/CJK.
virtual void FormatDrop(const SwTextNode &rNode, const SwFormatDrop &rSwFormatDrop, sal_uInt16 nStyle, ww8::WW8TableNodeInfo::Pointer_t pTextNodeInfo, ww8::WW8TableNodeInfoInner::Pointer_t pTextNodeInfoInner)=0
virtual void StartParagraphProperties()=0
Called before we start outputting the attributes.
virtual void WritePostitFieldReference()
for docx w:commentReference
virtual void OutputFKP(bool)
Output FKP (Formatted disK Page) - necessary for binary formats only.
virtual void StartRun(const SwRedlineData *pRedlineData, sal_Int32 nPos, bool bSingleEmptyRun=false)=0
Start of the text run.
virtual MSWordExportBase & GetExport()=0
Return the right export class.
void OutputItem(const SfxPoolItem &rHt)
Call the right virtual function according to the type of the item.
virtual void EndRuby(const SwTextNode &rNode, sal_Int32 nPos)=0
Output ruby end.
void StartTOX(const SwSection &rSect)
OUString ConvertURL(const OUString &rUrl, bool bAbsoluteOut)
virtual void OutputFlyFrame_Impl(const ww8::Frame &rFormat, const Point &rNdTopLeft)=0
Output frames - the implementation.
virtual void SectionBreaks(const SwNode &rNode)=0
Called in order to output section breaks.
virtual void EndRunProperties(const SwRedlineData *pRedlineData)=0
Called after we end outputting the attributes.
virtual void SectionBreak(sal_uInt8 nC, bool bBreakAfter, const WW8_SepInfo *pSectionInfo=nullptr, bool bExtraPageBreak=false)=0
Write a section break msword::ColumnBreak or msword::PageBreak bBreakAfter: the break must be schedul...
const SwRedlineData * GetParagraphMarkerRedline(const SwTextNode &rNode, RedlineType aRedlineType)
Provides access to the marks of a document.
virtual const_iterator_t getAnnotationMarksBegin() const =0
virtual ::sw::mark::IFieldmark * getFieldmarkAt(const SwPosition &rPos) const =0
get Fieldmark for CH_TXT_ATR_FIELDSTART/CH_TXT_ATR_FIELDEND at rPos
virtual sal_Int32 getAnnotationMarksCount() const =0
virtual ::sw::mark::IFieldmark * getFieldmarkFor(const SwPosition &pos) const =0
virtual sal_Int32 getAllMarksCount() const =0
returns the number of marks.
virtual const_iterator_t getAllMarksBegin() const =0
returns a STL-like random access iterator to the begin of the sequence of marks.
@ CROSSREF_NUMITEM_BOOKMARK
@ CROSSREF_HEADING_BOOKMARK
static SW_DLLPUBLIC MarkType GetType(const ::sw::mark::IMark &rMark)
Returns the MarkType used to create the mark.
virtual const SwRedlineTable & GetRedlineTable() const =0
virtual const SwRangeRedline * GetRedline(const SwPosition &rPos, SwRedlineTable::size_type *pFndPos) const =0
virtual bool get(DocumentSettingId id) const =0
Return the specified document setting.
static OUString decode(std::u16string_view rText, DecodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8)
static OUString GetScheme(INetProtocol eTheScheme)
OUString GetMainURL(DecodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
bool GetNewAbsURL(OUString const &rTheRelURIRef, INetURLObject *pTheAbsURIRef) const
OUString GetURLPath(DecodeMechanism eMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
static OUString GetRelURL(std::u16string_view rTheBaseURIRef, OUString const &rTheAbsURIRef, EncodeMechanism eEncodeMechanism=EncodeMechanism::WasEncoded, DecodeMechanism eDecodeMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8, FSysStyle eStyle=FSysStyle::Detect)
INetProtocol GetProtocol() const
static OUString encode(std::u16string_view rText, Part ePart, EncodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8)
The class MSWordAttrIter is a helper class to build the Fkp.chpx.
virtual ~MSWordAttrIter()
MSWordExportBase & m_rExport
MSWordAttrIter(const MSWordAttrIter &)=delete
Base class for WW8Export and DocxExport.
virtual void WriteFormData(const ::sw::mark::IFieldmark &rFieldmark)=0
Write the data of the form field.
void OutputItemSet(const SfxItemSet &rSet, bool bPapFormat, bool bChpFormat, sal_uInt16 nScript, bool bExportParentItemSet)
Use OutputItem() on an item set according to the parameters.
void WriteText()
Iterate through the nodes and call the appropriate OutputNode() on them.
SvxFrameDirection TrueFrameDirection(const SwFrameFormat &rFlyFormat) const
Right to left?
RndStdIds m_eNewAnchorType
void GetSortedAnnotationMarks(const SwWW8AttrIter &rAttrs, sal_Int32 nCurrentPos, sal_Int32 nLen)
static void CorrectTabStopInSet(SfxItemSet &rSet, sal_Int32 nAbsLeft)
sal_uInt16 m_nStyleBeforeFly
style number of the node
IMarkVector m_rSortedBookmarksEnd
IMarkVector m_rSortedBookmarksStart
bool IsInTable() const
Return whether currently exported node is in table.
const sw::BroadcastingModify * m_pOutFormatNode
bool NeedSectionBreak(const SwNode &rNd) const
void UpdatePosition(SwWW8AttrIter *pAttrIter, sal_Int32 nCurrentPos)
Update the information for GetNextPos().
sal_Int32 GetNextPos(SwWW8AttrIter const *pAttrIter, const SwTextNode &rNode, sal_Int32 nCurrentPos)
Get the next position in the text node to output.
void GetSortedBookmarks(const SwTextNode &rNd, sal_Int32 nCurrentPos, sal_Int32 nLen)
void OutputSectionNode(const SwSectionNode &)
Output SwSectionNode.
std::stack< sal_Int32 > m_aCurrentCharPropStarts
To remember the position in a run.
void OutputContentNode(SwContentNode &)
Call the right (virtual) function according to the type of the item.
IMarkVector m_rSortedAnnotationMarksStart
virtual void OutputGrfNode(const SwGrfNode &)=0
Output SwGrfNode.
std::unique_ptr< MSWordStyles > m_pStyles
bool m_bLinkedTextboxesHelperInitialized
std::vector< aBookmarkPair > m_aImplicitBookmarks
ww8::WW8TableInfo::Pointer_t m_pTableInfo
virtual void AppendSection(const SwPageDesc *pPageDesc, const SwSectionFormat *pFormat, sal_uLong nLnNum)=0
virtual void WriteHyperlinkData(const ::sw::mark::IFieldmark &rFieldmark)=0
static void UpdateTocSectionNodeProperties(const SwSectionNode &rSectionNode)
virtual void OutputLinkedOLE(const OUString &)=0
std::vector< ::sw::mark::IMark * > IMarkVector
Used to split the runs according to the bookmarks start and ends.
bool NearestBookmark(sal_Int32 &rNearest, const sal_Int32 nCurrentPos, bool bNextPositionOnly)
Find the nearest bookmark from the current position.
const SfxPoolItem & GetItem(sal_uInt16 nWhich) const
SvxFrameDirection GetCurrentPageDirection() const
Right to left?
const SwAttrSet * m_pStyAttr
virtual void OutputField(const SwField *pField, ww::eField eFieldType, const OUString &rFieldCmd, FieldFlags nMode=FieldFlags::All)=0
Write the field.
virtual void AppendSmartTags(SwTextNode &)
virtual void AppendBookmark(const OUString &rName)=0
virtual void WriteCR(ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner=ww8::WW8TableNodeInfoInner::Pointer_t())=0
virtual void OutputOLENode(const SwOLENode &)=0
Output SwOLENode.
const SwPageDesc * m_pCurrentPageDesc
void NearestAnnotationMark(sal_Int32 &rNearest, const sal_Int32 nCurrentPos, bool bNextPositionOnly)
Find the nearest annotation mark from the current position.
bool GetBookmarks(const SwTextNode &rNd, sal_Int32 nStt, sal_Int32 nEnd, IMarkVector &rArr)
bool NeedTextNodeSplit(const SwTextNode &rNd, SwSoftPageBreakList &pList) const
const ww8::Frame * m_pParentFrame
bool GetAnnotationMarks(const SwWW8AttrIter &rAttrs, sal_Int32 nStt, sal_Int32 nEnd, IMarkVector &rArr)
void OutputFormat(const SwFormat &rFormat, bool bPapFormat, bool bChpFormat, bool bFlyFormat=false)
Output attributes.
virtual void OutputTextNode(SwTextNode &)
Output SwTextNode.
virtual void AppendAnnotationMarks(const SwWW8AttrIter &rAttrs, sal_Int32 nCurrentPos, sal_Int32 nLen)=0
static OUString GetBookmarkName(sal_uInt16 nTyp, const OUString *pName, sal_uInt16 nSeqNo)
Find the bookmark name.
SvxFrameDirection GetDefaultFrameDirection() const
bool m_bOutPageDescs
PageDescs (section properties) are being written.
bool HasRefToAttr(const OUString &rName)
Find the reference.
virtual AttributeOutputBase & AttrOutput() const =0
Access to the attribute output class.
virtual void AppendBookmarks(const SwTextNode &rNd, sal_Int32 nCurrentPos, sal_Int32 nLen, const SwRedlineData *pSwRedline=nullptr)=0
virtual void PrepareNewPageDesc(const SfxItemSet *pSet, const SwNode &rNd, const SwFormatPageDesc *pNewPgDescFormat, const SwPageDesc *pNewPgDesc, bool bExtraPageBreak=false)=0
std::map< OUString, LinkedTextboxInfo > m_aLinkedTextboxesHelper
void SetCurItemSet(const SfxItemSet *pS)
Setter for pISet.
void ExportPoolItemsToCHP(ww8::PoolItems &rItems, sal_uInt16 nScript, const SvxFontItem *pFont, bool bWriteCombChars=false)
Export the pool items to attributes (through an attribute output class).
std::unique_ptr< WW8_WrPlcPn > m_pPapPlc
virtual ExportFormat GetExportFormat() const =0
IMarkVector m_rSortedAnnotationMarksEnd
MSWordAttrIter * m_pChpIter
std::unique_ptr< WW8_WrPlcPn > m_pChpPlc
sal_uInt16 GetId(const SwTextFormatColl &rColl) const
Return the numeric id of the style.
virtual void ExportGrfBullet(const SwTextNode &rNd)=0
virtual sal_uInt64 ReplaceCr(sal_uInt8 nChar)=0
static bool NoPageBreakSection(const SfxItemSet *pSet)
static bool isRightToLeft(LanguageType nLang)
virtual const OUString & GetName() const
const std::map< OUString, css::uno::Any > & GetGrabBag() const
const SfxPoolItem & GetDefaultItem(sal_uInt16 nWhich) const
const T * GetItemIfSet(TypedWhichId< T > nWhich, bool bSrchInParent=true) const
bool HasItem(sal_uInt16 nWhich, const SfxPoolItem **ppItem=nullptr) const
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
const SfxPoolItem * GetItem(sal_uInt16 nWhich, bool bSearchInParent=true) const
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
SfxItemState GetItemState(bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
std::size_t WriteBytes(const void *pData, std::size_t nSize)
SvStream & WriteUChar(unsigned char nChar)
SvxAdjust GetAdjust() const
const Color & GetColor() const
const Graphic * GetGraphic(OUString const &referer=OUString()) const
virtual SvxBrushItem * Clone(SfxItemPool *pPool=nullptr) const override
sal_uInt32 GetHeight() const
rtl_TextEncoding GetCharSet() const
const OUString & GetFamilyName() const
void SetCaseMap(const SvxCaseMap eNew)
OUString CalcCaseMap(const OUString &rTxt) const
void SetTextFirstLineOffsetValue(const short nValue)
short GetTextFirstLineOffset() const
void SetTextLeft(const tools::Long nL, const sal_uInt16 nProp=100)
tools::Long GetTextLeft() const
tools::Long GetLeft() const
void SetTextFirstLineOffset(const short nF, const sal_uInt16 nProp=100)
bool Insert(const SvxTabStop &rTab)
void SetLower(const sal_uInt16 nL, const sal_uInt16 nProp=100)
sal_uInt16 GetUpper() const
void SetUpper(const sal_uInt16 nU, const sal_uInt16 nProp=100)
sal_uInt16 GetLower() const
SwAttrPool * GetPool() const
css::uno::Reference< css::i18n::XBreakIterator > const & GetBreakIter() const
const css::lang::Locale & GetLocale(const LanguageType aLang)
bool HasSwAttrSet() const
const SwAttrSet & GetSwAttrSet() const
Does node has already its own auto-attributes? Access to SwAttrSet.
SwRect FindPageFrameRect() const
const SwAttrSet * GetpSwAttrSet() const
SwRect FindLayoutRect(const bool bPrtArea=false, const Point *pPoint=nullptr) const
SwFormatColl & GetAnyFormatColl() const
IDocumentRedlineAccess const & getIDocumentRedlineAccess() const
IDocumentSettingAccess const & getIDocumentSettingAccess() const
IDocumentMarkAccess * getIDocumentMarkAccess()
const SwAttrPool & GetAttrPool() const
const SwPageDesc & GetPageDesc(const size_t i) const
SvxFrameDirection GetTextDirection(const SwPosition &rPos, const Point *pPt=nullptr) const
const SwNodeIndex * GetContentIdx() const
Pagedescriptor Client of SwPageDesc that is "described" by the attribute.
bool KnowsPageDesc() const
SwPageDesc * GetPageDesc()
Marks a node in the document model.
SwNodeOffset GetIndex() const
Base class of the Writer document model elements.
SwFrameFormat * GetFlyFormat() const
If node is in a fly return the respective format.
SwTextNode * GetTextNode()
Inline methods from Node.hxx.
SwNodeOffset GetIndex() const
SwNodes & GetNodes()
Node is in which nodes-array/doc?
SwTableBox * GetTableBox() const
If node is in a table return the respective table box.
bool IsContentNode() const
const SwPageDesc * FindPageDesc(SwNodeOffset *pPgDescNdIdx=nullptr) const
Search PageDesc with which this node is formatted.
bool IsSectionNode() const
SwTableNode * FindTableNode()
Search table node, in which it is.
SwSectionNode * FindSectionNode()
Search section node, in which it is.
const SwStartNode * StartOfSectionNode() const
sal_uInt8 HasPrevNextLayNode() const
SwOLENode * GetOLENode()
Inline methods from Node.hxx.
SwNodeOffset EndOfSectionIndex() const
SwContentNode * GetContentNode()
SwNodeType GetNodeType() const
const SwEndNode * EndOfSectionNode() const
SwNode & GetEndOfContent() const
Regular ContentSection (i.e. the BodyText).
SwContentNode * GoNext(SwNodeIndex *) const
const SwNumFormat * GetNumFormat(sal_uInt16 i) const
const SwNumFormat & Get(sal_uInt16 i) const
const OUString & GetName() const
std::pair< const SwPosition *, const SwPosition * > StartEnd() const
Because sometimes the cost of the operator<= can add up.
const SwPosition * End() const
const SwPosition * Start() const
SwFrameFormat & GetMaster()
SwFrameFormat & GetFirstMaster()
const SwPageDesc * GetFollow() const
static const SwPageDesc * GetPageDescOfNode(const SwNode &rNd)
Given a SwNode return the pagedesc in use at that location.
RedlineType GetType(sal_uInt16 nPos=0) const
const SwRedlineData & GetRedlineData(sal_uInt16 nPos=0) const
Of course Writer needs its own rectangles.
void Pos(const Point &rNew)
std::size_t GetAuthor() const
const SwRedlineData * Next() const
const DateTime & GetTimeStamp() const
RedlineType GetType() const
vector_type::size_type size_type
A section node represents the start of a section on the UI, i.e.
const SwSection & GetSection() const
const SwTOXBase * GetTOXBase() const
SwSectionFormat * GetFormat()
SectionType GetType() const
const SwTextTOXMark * GetTextTOXMark() const
const SwTOXType * GetTOXType() const
sal_uInt16 GetLevel() const
const OUString & GetAlternativeText() const
OUString const & GetSecondaryKey() const
OUString const & GetPrimaryKey() const
const OUString & GetTypeName() const
SwTableBox is one table cell in the document model.
sal_uInt16 IsFormulaOrValueBox() const
SwFrameFormat * GetFrameFormat()
const SwStartNode * GetSttNd() const
SwTableLine is one table row in the document model.
SwFrameFormat * GetFrameFormat()
sal_uInt16 GetBoxPos(const SwTableBox *pBox) const
sal_uInt16 GetPos(const SwTableLine *pBox) const
const SwTable & GetTable() const
SwTable is one table in the document model, containing rows (which contain cells).
SwTableLines & GetTabLines()
SwTableFormat * GetFrameFormat()
A wrapper around SfxPoolItem to store the start position of (usually) a text portion,...
const SfxPoolItem & GetAttr() const
const sal_Int32 * End() const
sal_Int32 GetStart() const
bool HasDummyChar() const
Represents the style of a paragraph.
SwTextNode is a paragraph in the document model.
OUString GetExpandText(SwRootFrame const *pLayout, const sal_Int32 nIdx=0, const sal_Int32 nLen=-1, const bool bWithNum=false, const bool bAddSpaceAfterListLabelStr=false, const bool bWithSpacesForLevel=false, const ExpandMode eAdditionalMode=ExpandMode::ExpandFootnote|ExpandMode::HideFieldmarkCommands) const
add 4th optional parameter <bAddSpaceAfterListLabelStr> indicating, when <bWithNum = true> that a spa...
bool GetDropSize(int &rFontHeight, int &rDropHeight, int &rDropDescent) const
Passes back info needed on the dropcap dimensions.
virtual sal_Int32 Len() const override
bool GetParaAttr(SfxItemSet &rSet, sal_Int32 nStt, sal_Int32 nEnd, const bool bOnlyTextAttr=false, const bool bGetFromChrFormat=true, const bool bMergeIndentValuesOfNumRule=false, SwRootFrame const *pLayout=nullptr) const
Query the attributes of textnode over the range.
const SfxPoolItem & GetAttr(sal_uInt16 nWhich, bool bInParent=true) const
End: Data collected during idle time.
void fillSoftPageBreakList(SwSoftPageBreakList &rBreak) const
bool IsCountedInList() const
SwNumRule * GetNumRule(bool bInParent=true) const
Returns numbering rule of this text node.
int GetActualListLevel(SwListRedlineType eRedline=SwListRedlineType::SHOW) const
Returns the actual list level of this text node, when it is a list item.
bool IsNumbered(SwRootFrame const *pLayout=nullptr) const
Returns is this text node is numbered.
SwpHints * GetpSwpHints()
bool AreListLevelIndentsApplicable() const
Determines, if the list level indent attributes can be applied to the paragraph.
const OUString & GetText() const
sal_Int32 GetDropLen(sal_Int32 nWishLen) const
nWishLen = 0 indicates that we want a whole word
SwCharFormat * GetCharFormat()
sal_uInt16 GetScript() const
const SwFormatDrop & GetSwFormatDrop() const
sal_Int32 m_nCurrentSwPos
bool IsAnchorLinkedToThisNode(SwNodeOffset nNodePos)
bool IncludeEndOfParaCRInRedlineProperties(sal_Int32 nPos) const
sw::util::CharRuns::const_iterator maCharRunIter
sal_Int32 WhereNext() const
void OutAttr(sal_Int32 nSwPos, bool bWriteCombinedChars)
virtual const SfxPoolItem * HasTextItem(sal_uInt16 nWhich) const override
FlyProcessingState OutFlys(sal_Int32 nSwPos)
const SwRedlineData * GetRunLevelRedline(sal_Int32 nPos)
bool IsTextAttr(sal_Int32 nSwPos) const
bool IsDropCap(int nSwPos)
void SplitRun(sal_Int32 nSplitEndPos)
rtl_TextEncoding GetCharSet() const
bool HasFlysAt(sal_Int32 nSwPos) const
OUString GetSnippet(const OUString &rStr, sal_Int32 nCurrentPos, sal_Int32 nLen) const
SwRedlineTable::size_type m_nCurRedlinePos
virtual const SfxPoolItem & GetItem(sal_uInt16 nWhich) const override
int OutAttrWithRange(const SwTextNode &rNode, sal_Int32 nPos)
SwWW8AttrIter(const SwWW8AttrIter &)=delete
bool IsExportableAttr(sal_Int32 nSwPos) const
rtl_TextEncoding meChrSet
sal_Int32 SearchNext(sal_Int32 nStartPos)
const SwFormatDrop & mrSwFormatDrop
const SwRangeRedline * m_pCurRedline
sw::util::CharRuns maCharRuns
const SwTextNode & m_rNode
const SwRedlineData * GetParagraphLevelRedline()
void OutSwFormatRefMark(const SwFormatRefMark &rAttr)
void handleToggleProperty(SfxItemSet &rExportSet, const SwFormatCharFormat *pCharFormatItem, sal_uInt16 nWhich, const SfxPoolItem *pValue)
bool RequiresImplicitBookmark()
const SwTextNode & GetNode() const
static void WriteString8(SvStream &rStrm, std::u16string_view rStr, bool bAddZero, rtl_TextEncoding eCodeSet)
static void InsUInt16(ww::bytes &rO, sal_uInt16 n)
static void WriteLong(SvStream &rStrm, sal_Int32 nVal)
static void WriteString16(SvStream &rStrm, const OUString &rStr, bool bAddZero)
static void WriteShort(SvStream &rStrm, sal_Int16 nVal)
An SwTextAttr container, stores all directly formatted text portions for a text node.
SwTextAttr * Get(size_t nPos) const
std::multimap< sal_Int32, OUString > m_aBookmarksOfParagraphEnd
void OutputFlyFrame_Impl(const ww8::Frame &rFormat, const Point &rNdTopLeft) override
Output frames - the implementation.
virtual bool AnalyzeURL(const OUString &rURL, const OUString &rTarget, OUString *pLinkURL, OUString *pMark) override
virtual void FormatDrop(const SwTextNode &rNode, const SwFormatDrop &rSwFormatDrop, sal_uInt16 nStyle, ww8::WW8TableNodeInfo::Pointer_t pTextNodeInfo, ww8::WW8TableNodeInfoInner::Pointer_t pTextNodeInfoInner) override
virtual WW8Export & GetExport() override
Return the right export class.
virtual void EmptyParagraph() override
Empty paragraph.
virtual bool StartURL(const OUString &rUrl, const OUString &rTarget) override
Output URL start.
virtual void FieldVanish(const OUString &rText, ww::eField eType, OUString const *pBookmarkName) override
virtual void Redline(const SwRedlineData *pRedline) override
Output redlining.
virtual void StartRuby(const SwTextNode &rNode, sal_Int32 nPos, const SwFormatRuby &rRuby) override
Output ruby start.
virtual void WriteBookmarkInActParagraph(const OUString &rName, sal_Int32 nFirstRunPos, sal_Int32 nLastRunPos) override
Insert a bookmark inside the currently processed paragraph.
std::multimap< sal_Int32, OUString > m_aBookmarksOfParagraphStart
Bookmarks of the current paragraph.
WW8Export & m_rWW8Export
Reference to the export, where to get the data from.
virtual void EndRuby(const SwTextNode &rNode, sal_Int32 nPos) override
Output ruby end.
virtual bool EndURL(bool) override
Output URL end.
virtual void TableInfoCell(ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfo) override
virtual void OutputField(const SwField *pField, ww::eField eFieldType, const OUString &rFieldCmd, FieldFlags nMode=FieldFlags::All) override
Write the field.
std::unique_ptr< WW8_WrPlcSepx > m_pSepx
Sections/headers/footers.
void InsUInt16(sal_uInt16 n)
virtual void SaveData(SwNodeOffset nStt, SwNodeOffset nEnd) override
Remember some of the members so that we can recurse in WriteText().
void WriteStringAsPara(const OUString &rText)
void WriteChar(sal_Unicode c) override
void InsUInt32(sal_uInt32 n)
SvStream * m_pDataStrm
Streams for WW97 Export.
virtual void AppendSection(const SwPageDesc *pPageDesc, const SwSectionFormat *pFormat, sal_uLong nLnNum) override
bool MiserableFormFieldExportHack(const SwFrameFormat &rFrameFormat)
const SvxBrushItem * GetCurrentPageBgBrush() const
sal_uInt16 AddRedlineAuthor(std::size_t nId)
void AppendFlyInFlys(const ww8::Frame &rFrameFormat, const Point &rNdTopLeft)
std::unique_ptr< WW8Fib > m_pFib
File Information Block.
std::shared_ptr< SvxBrushItem > TrueFrameBgBrush(const SwFrameFormat &rFlyFormat) const
void StartCommentOutput(std::u16string_view rName)
void GetCurrentItems(ww::bytes &rItems) const
WW8_CP Fc2Cp(sal_uLong nFc) const
SwWW8Writer & GetWriter() const
std::unique_ptr< ww::bytes > m_pO
Buffer.
virtual void WriteCR(ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner=ww8::WW8TableNodeInfoInner::Pointer_t()) override
virtual void RestoreData() override
Restore what was saved in SaveData().
void EndCommentOutput(std::u16string_view rName)
void OutSwString(const OUString &, sal_Int32 nStt, sal_Int32 nLen)
sal_uInt32 GetBaseHeight() const
sal_uInt32 GetRubyHeight() const
OUString const & GetFontFamily() const
char GetDirective() const
WW8Ruby(const SwTextNode &rNode, const SwFormatRuby &rRuby, const MSWordExportBase &rExport)
const OUString & GetBaseURL() const
const_iterator begin() const
const_iterator end() const
std::pair< const_iterator, bool > insert(Value &&x)
virtual const SwPosition & GetMarkEnd() const =0
virtual const SwPosition & GetMarkStart() const =0
Make exporting a Writer Frame easy.
WriterSource GetWriterType() const
Get the type of frame that this wraps.
const SwFrameFormat & GetFrameFormat() const
Get the writer SwFrameFormat that this object describes.
bool IsInline() const
Is this frame inline (as character)
const SwPosition & GetPosition() const
Get the position this frame is anchored at.
const SwContentNode * GetContentNode() const
Get the node this frame is anchored into.
std::shared_ptr< WW8TableNodeInfoInner > Pointer_t
std::shared_ptr< WW8TableNodeInfo > Pointer_t
constexpr ::Color COL_WHITE(0xFF, 0xFF, 0xFF)
constexpr ::Color COL_TRANSPARENT(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
virtual sal_uInt32 GetId() const override
constexpr TypedWhichId< SvxFrameDirectionItem > RES_FRAMEDIR(120)
#define CH_TXT_ATR_FIELDSEP
constexpr TypedWhichId< SvxFormatBreakItem > RES_BREAK(94)
#define CH_TXT_ATR_FORMELEMENT
constexpr TypedWhichId< SvxFontHeightItem > RES_CHRATR_FONTSIZE(8)
constexpr TypedWhichId< SvxLanguageItem > RES_CHRATR_LANGUAGE(10)
constexpr TypedWhichId< SvxWeightItem > RES_CHRATR_WEIGHT(15)
constexpr TypedWhichId< SvxLanguageItem > RES_CHRATR_CTL_LANGUAGE(29)
constexpr TypedWhichId< SwFormatAutoFormat > RES_TXTATR_AUTOFMT(50)
constexpr TypedWhichId< SwFormatINetFormat > RES_TXTATR_INETFMT(51)
constexpr TypedWhichId< SwFormatPageDesc > RES_PAGEDESC(93)
constexpr TypedWhichId< SvxAdjustItem > RES_PARATR_ADJUST(64)
constexpr TypedWhichId< SvxLanguageItem > RES_CHRATR_CJK_LANGUAGE(24)
constexpr TypedWhichId< SvxULSpaceItem > RES_UL_SPACE(92)
constexpr TypedWhichId< SvxTabStopItem > RES_PARATR_TABSTOP(68)
constexpr TypedWhichId< SvxCaseMapItem > RES_CHRATR_CASEMAP(RES_CHRATR_BEGIN)
constexpr TypedWhichId< SwTableBoxFormula > RES_BOXATR_FORMULA(151)
constexpr sal_uInt16 RES_CHRATR_BEGIN(HINT_BEGIN)
constexpr TypedWhichId< SwNumRuleItem > RES_PARATR_NUMRULE(72)
constexpr TypedWhichId< SwFormatCharFormat > RES_TXTATR_CHARFMT(52)
constexpr TypedWhichId< SwFormatAutoFormat > RES_PARATR_LIST_AUTOFMT(87)
constexpr TypedWhichId< SfxGrabBagItem > RES_CHRATR_GRABBAG(43)
constexpr TypedWhichId< SwFormatMeta > RES_TXTATR_METAFIELD(49)
constexpr TypedWhichId< SvxFormatKeepItem > RES_KEEP(110)
constexpr TypedWhichId< SfxGrabBagItem > RES_PARATR_GRABBAG(81)
constexpr TypedWhichId< SwFormatRefMark > RES_TXTATR_REFMARK(RES_TXTATR_WITHEND_BEGIN)
constexpr TypedWhichId< SwFormatLineNumber > RES_LINENUMBER(116)
constexpr TypedWhichId< SvxFontItem > RES_CHRATR_FONT(7)
constexpr TypedWhichId< SvxLRSpaceItem > RES_LR_SPACE(91)
constexpr TypedWhichId< SwTOXMark > RES_TXTATR_TOXMARK(47)
constexpr TypedWhichId< SwFormatRuby > RES_TXTATR_CJK_RUBY(53)
#define CH_TXT_ATR_FIELDEND
constexpr sal_uInt16 RES_TXTATR_END(RES_TXTATR_NOEND_END)
constexpr TypedWhichId< SvxBrushItem > RES_BACKGROUND(105)
#define CH_TXT_ATR_FIELDSTART
#define CH_TXTATR_BREAKWORD
sal_uInt16 GetWhichOfScript(sal_uInt16 nWhich, sal_uInt16 nScript)
LanguageType GetAppLanguage()
#define SAL_WARN(area, stream)
#define SAL_INFO(area, stream)
LanguageType GetLanguage(SfxItemSet const &aSet, sal_uInt16 nLangWhichId)
SVL_DLLPUBLIC OUString simpleNormalizedMakeRelative(OUString const &baseUriReference, OUString const &uriReference)
OUString removeAny(std::u16string_view rIn, sal_Unicode const *const pChars)
css::uno::Sequence< css::beans::PropertyValue > InitPropertySequence(::std::initializer_list< ::std::pair< OUString, css::uno::Any > > vInit)
const sal_uInt8 PageBreak
constexpr bool starts_with(std::basic_string_view< charT, traits > sv, std::basic_string_view< charT, traits > x) noexcept
sal_uInt32 DateTime2DTTM(const DateTime &rDT)
Convert from DTTM to Writer's DateTime.
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)
CharRuns GetPseudoCharRuns(const SwTextNode &rTextNd)
Collect the ranges of Text which share.
void ClearOverridesFromSet(const SwFormatCharFormat &rFormat, SfxItemSet &rSet)
Remove properties from an SfxItemSet which a SwFormatCharFormat overrides.
void GetPoolItems(const SfxItemSet &rSet, ww8::PoolItems &rItems, bool bExportParentItemSet)
Get the SfxPoolItems of a SfxItemSet.
bool IsPlausableSingleWordSection(const SwFrameFormat &rTitleFormat, const SwFrameFormat &rFollowFormat)
See if two page formats can be expressed as a single word section.
ww8::Frames GetFramesInNode(const ww8::Frames &rFrames, const SwNode &rNode)
Get the Frames anchored to a given node.
std::map< sal_uInt16, const SfxPoolItem *, sw::util::ItemSort > PoolItems
STL container of SfxPoolItems (Attributes)
std::vector< Frame >::iterator FrameIter
STL iterator for Frames.
std::vector< sal_uInt8 > bytes
const sal_uInt8 ND_HAS_NEXT_LAYNODE
const sal_uInt8 ND_HAS_PREV_LAYNODE
o3tl::strong_int< sal_Int32, struct Tag_SwNodeOffset > SwNodeOffset
SwNodeOffset min(const SwNodeOffset &a, const SwNodeOffset &b)
constexpr OUStringLiteral ODF_FORMTEXT
constexpr OUStringLiteral ODF_CODE_PARAM
constexpr OUStringLiteral ODF_FORMCHECKBOX
constexpr OUStringLiteral ODF_FORMDATE
constexpr OUStringLiteral ODF_OLE_PARAM
constexpr OUStringLiteral ODF_UNHANDLED
constexpr OUStringLiteral ODF_ID_PARAM
constexpr OUStringLiteral ODF_FORMDROPDOWN
static constexpr sal_uInt16 val
Marks a position in the document model.
SwNodeOffset GetNodeIndex() const
sal_Int32 GetContentIndex() const
const sal_Unicode cMarkSeparator
constexpr sal_uInt8 MAXLEVEL
static ww::eField lcl_getFieldId(const IFieldmark *const pFieldmark)
OUString BookmarkToWord(std::u16string_view rBookmark, bool *pIsMove, bool *pIsFrom)
static SwTextFormatColl & lcl_getFormatCollection(MSWordExportBase &rExport, const SwTextNode *pTextNode)
Delivers the right paragraph style.
OUString BookmarkToWriter(std::u16string_view rBookmark)
static OUString & TruncateBookmark(OUString &rRet)
static sal_Int32 lcl_getMinPos(sal_Int32 pos1, sal_Int32 pos2)
static OUString lcl_getLinkChainName(const uno::Reference< beans::XPropertySet > &rPropertySet, const uno::Reference< beans::XPropertySetInfo > &rPropertySetInfo)
static OUString lcl_getFieldCode(const IFieldmark *pFieldmark)
sal_Int16 GetWordFirstLineOffset(const SwNumFormat &rFormat)
FlyProcessingState
enum to state the present state of the fly
std::pair< OUString, SwNodeOffset > aBookmarkPair
OUString FieldString(ww::eField eIndex)
void Set_UInt32(sal_uInt8 *&p, sal_uInt32 n)