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>
120 return " FORMDROPDOWN ";
122 return " FORMCHECKBOX ";
124 return " ODFFORMDATE ";
125 if ( pFieldmark->GetFieldname( ) ==
ODF_TOC )
128 return " HYPERLINK ";
131 return pFieldmark->GetFieldname();
146 if ( pFieldmark->GetFieldname( ) ==
ODF_TOC )
157 const uno::Reference<beans::XPropertySetInfo>& rPropertySetInfo)
159 OUString sLinkChainName;
160 if (rPropertySetInfo->hasPropertyByName(
"LinkDisplayName"))
162 rPropertySet->getPropertyValue(
"LinkDisplayName") >>= sLinkChainName;
163 if (!sLinkChainName.isEmpty())
164 return sLinkChainName;
166 if (rPropertySetInfo->hasPropertyByName(
"ChainName"))
167 rPropertySet->getPropertyValue(
"ChainName") >>= sLinkChainName;
168 return sLinkChainName;
172 : m_pOld( rExport.m_pChpIter ), m_rExport( rExport )
207 m_pCurRedline(nullptr),
210 mrSwFormatDrop(rTextNd.GetSwAttrSet().GetDrop())
235 aFlyFrame.ForceTreatAsInline();
251 if ( pos1 >= 0 && pos2 >= 0 )
258 return std::max(pos1, pos2);
269 if (0 <= fieldEndPos && fieldEndPos < nStartPos)
276 if (0 <= formElementPos && formElementPos < nStartPos)
294 if (
i >= nStartPos &&
i < nMinPos )
312 auto [pStt, pEnd] = pRedl->
StartEnd();
314 if( pStt->GetNode() ==
m_rNode )
316 const sal_Int32
i = pStt->GetContentIndex();
317 if(
i >= nStartPos &&
i < nMinPos )
323 if( pEnd->GetNode() ==
m_rNode )
325 const sal_Int32
i = pEnd->GetContentIndex();
326 if(
i >= nStartPos &&
i < nMinPos )
344 for(
size_t i = 0;
i < pTextAttrs->Count(); ++
i )
348 if(
nPos >= nStartPos &&
nPos <= nMinPos )
354 if(
nPos >= nStartPos &&
nPos <= nMinPos )
361 if(
nPos >= nStartPos &&
nPos <= nMinPos )
375 sal_Int32 nNextFlyPos = 0;
377 while (aTmpFlyIter !=
maFlyFrames.end() && nNextFlyPos < nStartPos)
379 const SwPosition &rAnchor = aTmpFlyIter->GetPosition();
384 if (nNextFlyPos >= nStartPos && nNextFlyPos < nMinPos)
385 nMinPos = nNextFlyPos;
424 aExportSet.ClearItem(nFontId);
432 for(
size_t i = 0;
i < pTextAttrs->Count(); ++
i )
435 const sal_Int32* pEnd = pHt->
End();
437 if (pEnd ? ( nSwPos >= pHt->
GetStart() && nSwPos < *pEnd)
444 const std::shared_ptr<SfxItemSet>& pSet = rAutoFormat.
GetStyleHandle();
450 if( SfxItemState::SET == aIter.
GetItemState(
false, &pItem ))
452 if (nWhichId == nFontId)
453 pFont = &(item_cast<SvxFontItem>(*pItem));
457 aRangeItems[nWhichId] = pItem;
463 aRangeItems[nWhich] = (&(pHt->
GetAttr()));
465 else if (nSwPos < pHt->GetStart())
478 if ( pCharFormatItem )
493 std::unique_ptr<SfxGrabBagItem> pNewCharFmtGrabBag(pCharFmtGrabBag->Clone());
494 assert(pNewCharFmtGrabBag);
495 auto & rNewFmtMap = pNewCharFmtGrabBag->GetGrabBag();
496 for (
auto const & item : pAutoFmtGrabBag->GetGrabBag())
498 if (item.second.hasValue())
499 rNewFmtMap.erase(item.first);
501 aExportSet.Put(std::move(pNewCharFmtGrabBag));
511 for (
const auto& aRangeItem : aRangeItems )
513 aExportItems[aRangeItem.first] = aRangeItem.second;
516 if ( !aExportItems.empty() )
523 const SvxFontItem * pFontToOutput = ( rParentFont != *pFont )? pFont :
nullptr;
535 OSL_ENSURE( pFont,
"must be *some* font associated with this txtnode" );
540 if ( rParentFont != aFont )
565 if (rExportSet.
HasItem(nWhich) || !pValue)
568 bool hasPropertyInCharStyle =
false;
569 bool hasPropertyInParaStyle =
false;
576 if (
const SfxPoolItem* pItem = pCharFormat->GetAttrSet().GetItem(nWhich))
578 hasPropertyInCharStyle = (*pItem == *pValue);
587 nStyle = ( nStyle != 0xfff ) ? nStyle : 0;
593 hasPropertyInParaStyle = (*pItem == *pValue);
599 if (hasPropertyInCharStyle && hasPropertyInParaStyle)
601 rExportSet.
Put(*pValue);
616 if (VMLExport::IsWaterMarkShape(pSdrObj->
GetName()))
633 return nNodePos ==
maFlyIter->GetPosition().GetNodeIndex();
640 const SwPosition& rAnchor = rFly.GetPosition();
657 uno::Reference< drawing::XShape > xShape;
661 xShape.set(
const_cast<SdrObject*
>(pSdrObj)->getUnoShape(), uno::UNO_QUERY);
662 uno::Reference< beans::XPropertySet > xPropertySet(xShape, uno::UNO_QUERY);
663 uno::Reference< beans::XPropertySetInfo > xPropertySetInfo;
664 if( xPropertySet.is() )
665 xPropertySetInfo = xPropertySet->getPropertySetInfo();
666 if( xPropertySetInfo.is() )
672 if( xPropertySetInfo->hasPropertyByName(
"ChainNextName") )
673 xPropertySet->getPropertyValue(
"ChainNextName") >>= aLinkedTextboxInfo.
sNextChain;
674 if( xPropertySetInfo->hasPropertyByName(
"ChainPrevName") )
675 xPropertySet->getPropertyValue(
"ChainPrevName") >>= aLinkedTextboxInfo.
sPrevChain;
680 assert( !sLinkChainName.isEmpty() );
693 ++linkedTextboxesIter;
700 ++linkedTextboxesIter;
708 ++linkedTextboxesIter;
727 assert(
nPos >= nSwPos &&
"a fly must get flagged as a nextAttr/CurrentPos");
728 if (
nPos != nSwPos )
735 if (VMLExport::IsWaterMarkShape(pSdrObj->
GetName()))
769 for (
size_t i = 0;
i < pTextAttrs->Count(); ++
i)
779 else if (nSwPos < pHt->GetStart())
793 for (
size_t i = 0;
i < pTextAttrs->Count(); ++
i)
795 const SwTextAttr* pHt = pTextAttrs->GetSortedByEnd(
i);
796 const sal_Int32 nStart = pHt->
GetStart();
797 const sal_Int32 nEnd = pHt->
End() ? *pHt->
End() : INT_MAX;
798 if (nSwPos >= nStart && nSwPos < nEnd)
821 if(nSwPos == nWordLen && nSwPos != 0)
826 if (nSwPos == nDropChars && nSwPos != 0)
835 [
this](
const aBookmarkPair& rBookmarkPair) { return rBookmarkPair.second == m_rNode.GetIndex(); });
849 for (
size_t i = 0;
i < pTextAttrs->
Count(); ++
i)
853 const sal_Int32 * pAtrEnd =
nullptr;
854 if(
nullptr != ( pAtrEnd = pHt->
End() ) &&
855 nTmpSwPos >= pHt->
GetStart() && nTmpSwPos < *pAtrEnd )
857 if ( nWhich == pItem->
Which() )
876 else if (nTmpSwPos < pHt->GetStart())
885 rItems.insert(rItems.end(),
m_pO->begin(),
m_pO->end());
891 return pRet ? *pRet :
m_rNode.SwContentNode::GetAttr(nWhich);
900 + OUString::number(aWW8Ruby.
GetJC())
910 aStr +=
"(\\s\\up " + OUString::number((aWW8Ruby.
GetBaseHeight() + 10) / 20 - 1) +
"(";
932 if ( rRet.getLength() > 40 )
933 rRet = rRet.copy( 0, 40 );
934 OSL_ENSURE( rRet.getLength() <= 40,
"Word cannot have bookmarks longer than 40 chars" );
940 OUString sURL = rUrl;
944 OUString sParentPath = sConvertedParent.isEmpty() ?
m_sBaseURL : sConvertedParent;
950 if ( anAbsoluteParent.
GetNewAbsURL( rUrl, &anAbsoluteNew ) )
955 OUString sToConvert = rUrl.replaceAll(
"\\",
"/" );
959 if ( !sRelative.isEmpty() )
968 bool bBookMarkOnly =
false;
973 if ( rUrl.getLength() > 1 && rUrl[0] ==
'#' )
979 const OUString sRefType(
nPos>=0 &&
nPos+1<sMark.getLength() ?
980 sMark.copy(
nPos+1).replaceAll(
" ",
"") :
984 if ( !sRefType.isEmpty() &&
985 (sRefType ==
"outline" || sRefType ==
"graphic" || sRefType ==
"frame" || sRefType ==
"ole" || sRefType ==
"region" || sRefType ==
"table") )
987 for (
const auto& rBookmarkPair :
GetExport().m_aImplicitBookmarks )
989 if ( rBookmarkPair.first == sMark )
991 sMark =
"_toc" + OUString::number( sal_Int32(rBookmarkPair.second) );
1004 if ( aProtocol == INetProtocol::File || aProtocol == INetProtocol::NotValid )
1012 if ( !sMark.isEmpty() && sURL.isEmpty() )
1013 bBookMarkOnly =
true;
1017 return bBookMarkOnly;
1024 OUString sURL = *pLinkURL;
1026 if ( !sURL.isEmpty() )
1037 if ( !pMark->isEmpty() )
1038 sURL +=
" \\l \"" + *pMark +
"\"";
1045 return bBookMarkOnly;
1072 0x03, 0x6a, 0,0,0,0,
1086 sURL =
aURL.GetURLNoMark();
1090 OUString sRelativeURL;
1091 if ( !rUrl.isEmpty() )
1093 bool bAbsolute = sRelativeURL == rUrl;
1098 0,0,0,0,0,0,0,0,0,0,
1099 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1100 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1101 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1106 0xD0,0xC9,0xEA,0x79,0xF9,0xBA,0xCE,0x11,
1107 0x8C,0x82,0x00,0xAA,0x00,0x4B,0xA9,0x0B
1113 if ( !sMark.isEmpty() )
1120 sal_uInt32 nFlag = bBookMarkOnly ? 0 : 0x01;
1123 if ( !sMark.isEmpty() )
1128 if ( eProto == INetProtocol::File || eProto == INetProtocol::Smb )
1133 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1134 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
1139 0xFF, 0xFF, 0xAD, 0xDE, 0x00, 0x00, 0x00, 0x00,
1140 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1141 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1146 if ( eProto == INetProtocol::File && sURL.startsWith(
"/" ) )
1147 sURL =
aURL.PathToFileName();
1151 if (sURL.getLength()>=3)
1154 if ( sURL[0]==
'/' && sURL[2]==
':' &&
1155 ( (aDrive>=
'A' && aDrive<=
'Z' ) || (aDrive>=
'a' && aDrive<=
'z') ) )
1157 sURL = sURL.copy(1).replaceAll(
"/",
"\\");
1162 const char pSmb[] =
"smb://";
1163 if ( eProto == INetProtocol::Smb && sURL.startsWith( pSmb ) )
1165 sURL = sURL.copy(
sizeof(pSmb)-3 ).replaceAll(
"/",
"\\" );
1171 RTL_TEXTENCODING_MS_1252 );
1179 else if ( eProto != INetProtocol::NotValid )
1186 0xE0,0xC9,0xEA,0x79,0xF9,0xBA,0xCE,0x11,
1187 0x8C,0x82,0x00,0xAA,0x00,0x4B,0xA9,0x0B
1195 if ( !sMark.isEmpty() )
1215 sal_Int32 nTrim = 0;
1218 static constexpr OUStringLiteral MoveFrom_Bookmark_NamePrefix =
u"__RefMoveFrom__";
1219 static constexpr OUStringLiteral MoveTo_Bookmark_NamePrefix =
u"__RefMoveTo__";
1224 nTrim = MoveFrom_Bookmark_NamePrefix.getLength();
1230 nTrim = MoveTo_Bookmark_NamePrefix.getLength();
1234 OUString(rBookmark.substr(nTrim)).replace(
' ',
'_'),
1258 [nSplitEndPos](
const CharRunEntry& rCharRun) { return rCharRun.mnEndPos >= nSplitEndPos; });
1259 if (aIter ==
maCharRuns.end() || aIter->mnEndPos == nSplitEndPos)
1277 aItems.push_back( 1 );
1279 sal_uInt16 nStt_sprmCFSpec = aItems.size();
1283 aItems.push_back( 1 );
1303 const sal_Int32* pTextEnd = rTextTOXMark.
End();
1307 *pTextEnd - rTextTOXMark.
GetStart() );
1312 OUString sUserTypeName;
1318 if ( !sUserTypeName.isEmpty() )
1335 sText =
" XE \"" + sText +
"\" ";
1337 if (!sUserTypeName.isEmpty())
1339 sText +=
"\\f \"" + sUserTypeName +
"\" ";
1349 sText =
" TC \"" + sText;
1350 sal_uInt16 nLvl = rAttr.
GetLevel();
1354 sText +=
"\" \\l " + OUString::number(nLvl) +
" ";
1358 OSL_ENSURE(
false,
"Unhandled option for toc export" );
1362 if (!sText.isEmpty())
1364 OUString
const* pBookmarkName(
nullptr);
1365 if (
auto const it =
GetExport().m_TOXMarkBookmarksByTOXMark.find(&rAttr);
1366 it !=
GetExport().m_TOXMarkBookmarksByTOXMark.end())
1368 pBookmarkName = &it->second;
1380 const sal_Int32* pEnd;
1382 for (
size_t i = 0;
i < pTextAttrs->Count(); ++
i)
1384 const SwTextAttr* pHt = pTextAttrs->GetSortedByEnd(
i);
1386 switch ( pItem->
Which() )
1413 if (nPos < pHt->GetAnyEnd())
1416 for (
size_t i = 0;
i < pTextAttrs->Count(); ++
i )
1420 switch ( pItem->
Which() )
1467 if (nPos < pHt->GetStart())
1538 const SwPosition* pCheckedStt = pRedl->Start();
1545 if (pRedl->GetType() == RedlineType::ParagraphFormat)
1565 case RedlineType::Insert:
1566 case RedlineType::Delete:
1567 case RedlineType::Format:
1585 auto [pStt, pEnd] = pRedl->
StartEnd();
1587 if( pStt->GetNode() ==
m_rNode )
1589 if( pStt->GetContentIndex() >=
nPos )
1591 if( pStt->GetContentIndex() ==
nPos )
1595 case RedlineType::Insert:
1596 case RedlineType::Delete:
1597 case RedlineType::Format:
1613 if( pEnd->GetNode() ==
m_rNode &&
1614 pEnd->GetContentIndex() <
nPos )
1651 nDir = SvxFrameDirection::Horizontal_RL_TB;
1653 nDir = SvxFrameDirection::Horizontal_LR_TB;
1657 if ( nDir == SvxFrameDirection::Environment )
1661 nDir = SvxFrameDirection::Horizontal_RL_TB;
1663 nDir = SvxFrameDirection::Horizontal_LR_TB;
1673 while ( pFlyFormat )
1676 if ( SvxFrameDirection::Environment == pItem->GetValue() )
1680 if ((RndStdIds::FLY_AT_PAGE != pAnchor->
GetAnchorId()) &&
1686 pFlyFormat =
nullptr;
1689 pFlyFormat =
nullptr;
1694 nRet = pItem->GetValue();
1698 OSL_ENSURE( nRet != SvxFrameDirection::Environment,
"leaving with environment direction" );
1733 if ((RndStdIds::FLY_AT_PAGE != pAnchor->
GetAnchorId()) &&
1740 pFlyFormat =
nullptr;
1743 pFlyFormat =
nullptr;
1750 std::shared_ptr<SvxBrushItem> aRet(std::make_shared<SvxBrushItem>(aTmpColor,
RES_BACKGROUND));
1754 aRet.reset(pRet->
Clone());
1766 sal_Int32 nLen)
const
1771 OUString aSnippet(rStr.copy(nCurrentPos, nLen));
1775 aSnippet = aSnippet.replace(0x0A, 0x0B);
1794 switch (nScriptType)
1796 case i18n::ScriptType::ASIAN:
1799 case i18n::ScriptType::COMPLEX:
1802 case i18n::ScriptType::LATIN:
1809 aFontHelper.
SetCaseMap(SvxCaseMap::Capitalize);
1810 aFontHelper.SetLanguage(nLanguage);
1818 i18n::WordType::ANYWORD_IGNOREWHITESPACES ) )
1820 aSnippet = OUStringChar(rStr[nCurrentPos]) + aSnippet.subView(1);
1838 while(
nPos < nMax )
1841 auto [pStt, pEnd] = pRedl->
StartEnd();
1844 pEnd->GetNode() == *pTextNode && pStt->GetNode() != *pTextNode &&
1858 short nDropLines = rSwFormatDrop.
GetLines();
1860 int rFontHeight, rDropHeight, rDropDescent;
1863 ShortToSVBT16( nStyle, nSty );
1873 int nDCS = ( nDropLines << 3 ) | 0x01;
1879 if ( rNode.
GetDropSize( rFontHeight, rDropHeight, rDropDescent ) )
1888 if ( pTextNodeInfo )
1891 SAL_INFO(
"sw.ww8", pTextNodeInfo->toString());
1899 if ( rNode.
GetDropSize( rFontHeight, rDropHeight, rDropDescent ) )
1902 if ( pSwCharFormat )
1922 const sal_Int32 nNextPos = aAttrIter->
WhereNext();
1923 sal_Int32 nNextBookmark = nNextPos;
1924 sal_Int32 nNextAnnotationMark = nNextPos;
1926 if( nNextBookmark > nCurrentPos )
1933 return std::min( nNextPos,
std::min( nNextBookmark, nNextAnnotationMark ) );
1944 if( nCurrentPos == aAttrIter->
WhereNext() && ( !bNextBookmark || nNextPos > aAttrIter->
WhereNext() ) )
1954 for ( sal_Int32
i = 0;
i < nMarks;
i++ )
1983 bool bIsStartOk = ( pMark->
GetMarkStart().
GetNode() == rNd ) && ( nBStart >= nStt ) && ( nBStart <= nEnd );
1984 bool bIsEndOk = ( pMark->
GetMarkEnd().
GetNode() == rNd ) && ( nBEnd >= nStt ) && ( nBEnd <= nEnd );
1986 if ( bIsStartOk || bIsEndOk )
1988 rArr.push_back( pMark );
1992 return ( !rArr.empty() );
2002 for ( sal_Int32
i = 0;
i < nMarks;
i++ )
2014 bool bIsStartOk = ( pMark->
GetMarkStart().
GetNode() == rNd ) && ( nBStart >= nStt ) && ( nBStart <= nEnd );
2015 bool bIsEndOk = ( pMark->
GetMarkEnd().
GetNode() == rNd ) && ( nBEnd >= nStt ) && ( nBEnd <= nEnd );
2028 bSingleChar =
false;
2032 if ( ( bIsStartOk || bIsEndOk ) && !bSingleChar )
2034 rArr.push_back( pMark );
2038 return ( !rArr.empty() );
2043class CompareMarksEnd
2046 bool operator() (
const IMark * pOneB,
const IMark * pTwoB )
const
2051 return nOEnd < nTEnd;
2059 bool bHasBookmark =
false;
2065 if( !bNextPositionOnly || (nNext > nCurrentPos ))
2068 bHasBookmark =
true;
2076 if( !bNextPositionOnly || nNext > nCurrentPos )
2078 if ( !bHasBookmark )
2081 rNearest =
std::min( rNearest, nNext );
2082 bHasBookmark =
true;
2086 return bHasBookmark;
2091 bool bHasAnnotationMark =
false;
2097 if( !bNextPositionOnly || (nNext > nCurrentPos ))
2100 bHasAnnotationMark =
true;
2108 if( !bNextPositionOnly || nNext > nCurrentPos )
2110 if ( !bHasAnnotationMark )
2113 rNearest =
std::min( rNearest, nNext );
2125 for (
IMark* pMark : aMarksStart )
2128 const sal_Int32 nStart = pMark->GetMarkStart().GetContentIndex();
2129 const sal_Int32 nEnd = pMark->GetMarkEnd().GetContentIndex();
2132 if ( nStart > nCurrentPos && ( pMark->GetMarkStart().GetNode() == rNode) )
2133 aSortedStart.push_back( pMark );
2135 if ( nEnd > nCurrentPos && nEnd <= ( nCurrentPos + nLen ) && (pMark->GetMarkEnd().GetNode() == rNode) )
2136 aSortedEnd.push_back( pMark );
2140 std::sort( aSortedEnd.begin(), aSortedEnd.end(), CompareMarksEnd() );
2155 if (
GetBookmarks( rNode, nCurrentPos, nCurrentPos + nLen, aMarksStart ) )
2159 for (
IMark* pMark : aMarksStart )
2162 const sal_Int32 nStart = pMark->GetMarkStart().GetContentIndex();
2163 const sal_Int32 nEnd = pMark->GetMarkEnd().GetContentIndex();
2165 if ( nStart > nCurrentPos && (pMark->GetMarkStart().GetNode() == rNode) )
2166 aSortedStart.push_back( pMark );
2168 if ( nEnd > nCurrentPos && nEnd <= ( nCurrentPos + nLen ) && (pMark->GetMarkEnd().GetNode() == rNode) )
2169 aSortedEnd.push_back( pMark );
2173 std::sort( aSortedEnd.begin(), aSortedEnd.end(), CompareMarksEnd() );
2211 for (
auto const& it : tmp)
2218 if (pMark->GetMarkEnd().GetNode() != rNd)
2223 pos = pMark->GetMarkEnd().GetContentIndex();
2234OUString lcl_GetSymbolFont(
SwAttrPool& rPool,
const SwTextNode* pTextNode,
int nStart,
int nEnd)
2237 if ( pTextNode && pTextNode->
GetParaAttr(aSet, nStart, nEnd) )
2243 if (pFontItem->
GetCharSet() == RTL_TEXTENCODING_SYMBOL)
2254 SAL_INFO(
"sw.ww8",
"<OutWW8_SwTextNode>" );
2259 bool bLastCR =
false;
2260 bool bExported =
false;
2264 if (aNextIdx == aLastIdx)
2287 rtl_TextEncoding eChrSet = aAttrIter.
GetCharSet();
2314 pFormula->PtrToBoxNm( &pTableNode->
GetTable() );
2347 auto aBreakIt = softBreakList.
begin();
2351 sal_Int32 nCurrentPos = *aBreakIt;
2353 if( softBreakList.
size() > 1 )
2356 if ( pNextSplitParaPageDesc == pNextSplitParaPageDesc->
GetFollow() )
2357 aBreakIt = --softBreakList.
end();
2385 OUString sBkmkName =
"_toc" + OUString::number( sal_Int32(rNode.
GetIndex()) );
2395 sal_Int32
const nEnd = bNeedParaSplit ? *aBreakIt :
aStr.getLength();
2396 bool bIsEndOfCell =
false;
2397 bool bIncludeEndOfParaCRInRedlineProperties =
false;
2398 sal_Int32 nOpenAttrWithRange = 0;
2401 if ( pTextNodeInfo )
2403 pTextNodeInfoInner = pTextNodeInfo->getFirstInner();
2404 if (pTextNodeInfoInner && pTextNodeInfoInner->isEndOfCell())
2405 bIsEndOfCell =
true;
2411 bool bPostponeWritingText = false ;
2412 bool bStartedPostponedRunProperties =
false;
2413 OUString aSavedSnippet ;
2415 sal_Int32 nNextAttr =
GetNextPos( &aAttrIter, rNode, nCurrentPos );
2420 nCurrentPos = nNextAttr;
2427 bool bSingleEmptyRun = nCurrentPos == 0 && nNextAttr == 0;
2430 if( nNextAttr > nEnd )
2454 bPostponeWritingText = true ;
2462 AppendBookmarks( rNode, nCurrentPos, nNextAttr - nCurrentPos, pRedlineData );
2469 if (nCurrentPos == 0)
2472 bool bTextAtr = aAttrIter.
IsTextAttr( nCurrentPos );
2475 OUString aSymbolFont;
2476 sal_Int32 nLen = nNextAttr - nCurrentPos;
2477 if ( !bTextAtr && nLen )
2500 ::sw::mark::IFieldmark
const*
const pFieldmark = pMarkAccess->
getFieldmarkAt(aPosition);
2526 IFieldmark::parameter_map_t::const_iterator it = pFieldmark->GetParameters()->find(
ODF_ID_PARAM );
2527 if ( it != pFieldmark->GetParameters()->end() )
2530 it->second >>= sFieldId;
2535 if ( it != pFieldmark->GetParameters()->end() )
2537 it->second >>= sCode;
2563 IFieldmark::parameter_map_t::const_iterator it = pFieldmark->GetParameters()->find(
ODF_OLE_PARAM );
2564 if ( it != pFieldmark->GetParameters()->end() )
2569 if ( !sOleId.isEmpty() )
2578 ::sw::mark::IFieldmark
const*
const pFieldmark = pMarkAccess->
getFieldmarkAt(aPosition);
2594 IFieldmark::parameter_map_t::const_iterator it = pFieldmark->GetParameters()->find(
ODF_ID_PARAM );
2595 if ( it != pFieldmark->GetParameters()->end() )
2598 it->second >>= sFieldId;
2615 ::sw::mark::IFieldmark
const*
const pFieldmark = pMarkAccess->
getFieldmarkAt(aPosition);
2618 bool const isDropdownOrCheckbox(pFieldmark->GetFieldname() ==
ODF_FORMDROPDOWN ||
2620 if ( isDropdownOrCheckbox )
2625 if ( isDropdownOrCheckbox )
2630 if ( isDropdownOrCheckbox )
2636 assert(!bNeedParaSplit || nCurrentPos <= *aBreakIt);
2637 if( bNeedParaSplit && nCurrentPos + ofs + nLen > *aBreakIt)
2638 nLen = *aBreakIt - nCurrentPos - ofs;
2641 OUString aSnippet( aAttrIter.
GetSnippet(
aStr, nCurrentPos + ofs, nLen ) );
2646 sal_Int32 nFirstLineIndent=0;
2649 if ( pTextNode && pTextNode->
GetAttr(aSet) )
2658 aSnippet =
"\x09" + aSnippet;
2662 aSymbolFont = lcl_GetSymbolFont(
m_rDoc.
GetAttrPool(), pTextNode, nCurrentPos + ofs, nCurrentPos + ofs + nLen);
2664 if ( bPostponeWritingText && (
FLY_POSTPONED != nStateOfFlyFrame ) )
2666 aSavedSnippet = aSnippet ;
2670 bPostponeWritingText = false ;
2674 if (ofs == 1 && nNextAttr == nEnd)
2687 if (0 != nEnd && !(bPostponeWritingText
2692 bStartedPostponedRunProperties =
true;
2694 aAttrIter.
OutAttr(nCurrentPos,
false);
2700 if ( nNextAttr == nEnd )
2702 OSL_ENSURE( nOpenAttrWithRange >= 0,
"odd to see this happening, expected >= 0" );
2703 if ( !bTextAtr && nOpenAttrWithRange <= 0 )
2706 bIncludeEndOfParaCRInRedlineProperties =
true;
2710 nStateOfFlyFrame = aAttrIter.
OutFlys( nEnd );
2720 if (bLastCR && (!bExported))
2726 WriteCR( pTextNodeInfoInner );
2728 if (0 != nEnd && bIsEndOfCell)
2740 aAttrIter.
OutAttr( nCurrentPos,
false );
2745 if ( nNextAttr == nEnd )
2747 OSL_ENSURE(nOpenAttrWithRange >= 0,
2748 "odd to see this happening, expected >= 0");
2749 bool bAttrWithRange = (nOpenAttrWithRange > 0);
2750 if ( nCurrentPos != nEnd )
2753 OSL_ENSURE(nOpenAttrWithRange == 0,
2754 "odd to see this happening, expected 0");
2759 if (bTextAtr || bAttrWithRange || bIncludeEndOfParaCRInRedlineProperties)
2764 nStateOfFlyFrame = aAttrIter.
OutFlys( nEnd );
2768 WriteCR( pTextNodeInfoInner );
2770 if (bLastCR && (!bExported))
2782 if (bIncludeEndOfParaCRInRedlineProperties)
2796 aSymbolFont = lcl_GetSymbolFont(
m_rDoc.
GetAttrPool(), &rNode, nCurrentPos, nCurrentPos + nLen);
2798 if (bPostponeWritingText)
2803 if (!aSavedSnippet.isEmpty())
2804 bStartedPostponedRunProperties =
false;
2810 if (0 != nEnd && !bStartedPostponedRunProperties)
2813 aAttrIter.
OutAttr( nCurrentPos,
false );
2825 nCurrentPos = nNextAttr;
2829 while ( nCurrentPos < nEnd );
2832 if( bNeedParaSplit && *aBreakIt != rNode.
GetText().getLength() )
2834 pNextSplitParaPageDesc = pNextSplitParaPageDesc->
GetFollow();
2835 assert(pNextSplitParaPageDesc);
2841 bool bCheckSectionBreak =
true;
2843 if ( bNeedParaSplit )
2850 if ( !bCheckSectionBreak )
2853 if ( rBreak.
GetBreak() == SvxBreak::PageAfter )
2855 if ( pNextNode && pNextNode->
FindPageDesc() != pNextSplitParaPageDesc )
2856 bCheckSectionBreak =
true;
2863 if ( bCheckSectionBreak )
2874 if ( pTextNodeInfo )
2877 SAL_INFO(
"sw.ww8", pTextNodeInfo->toString());
2881 if (pTextNodeInfoInner && pTextNodeInfoInner->isFirstInTable())
2883 const SwTable * pTable = pTextNodeInfoInner->getTable();
2886 if (pTabFormat !=
nullptr)
2896 std::optional<SfxItemSet> oTmpSet;
2921 oTmpSet->Put( aUL );
2925 const bool bParaRTL = aAttrIter.
IsParaRTL();
2927 int nNumberLevel = -1;
2930 if (nNumberLevel >= 0 && nNumberLevel <
MAXLEVEL)
2936 pFormat = &pRule->
Get( nLvl );
2967 if (SfxItemState::SET !=
2982 if (indents & ::sw::ListLevelIndents::FirstLine)
2984 oTmpSet->Put(firstLine);
2988 oTmpSet->Put(leftMargin);
3000 oTmpSet->Put(firstLine);
3001 oTmpSet->Put(leftMargin);
3007 oTmpSet->Put(aItem);
3022 (!pItem || pItem->GetValue() == SvxFrameDirection::Environment) &&
3023 rTextColl.
GetFrameDir().GetValue() == SvxFrameDirection::Environment
3035 if ( pAdjust && (pAdjust->
GetAdjust() == SvxAdjust::Left || pAdjust->
GetAdjust() == SvxAdjust::Right ) )
3076 const SwNumFormat& rNumFormat = pRule->
Get(
static_cast< sal_uInt16
>(nLevel) );
3097 oTmpSet->Put(firstLine);
3098 oTmpSet->Put(leftMargin);
3116 if (rBreakAtParaStyle.
GetBreak() == SvxBreak::PageAfter)
3120 oTmpSet->Put(rBreakAtParaStyle);
3141 const bool bKeep = rKeep.GetValue();
3142 const bool bDontSplit = !(bKeep ||
3145 if ( bKeep || bDontSplit )
3161 bool bSetAtPara =
false;
3164 else if ( bDontSplit )
3177 oTmpSet->Put( aKeepItem );
3195 OutputItemSet( *pNewSet,
true,
false, i18n::ScriptType::LATIN,
false);
3212 bool bCharFormatOnly =
true;
3215 if (std::shared_ptr<SfxItemSet>
const& pSet = rListAutoFormat.
GetStyleHandle())
3217 aParagraphMarkerProperties.
Put(*pSet);
3218 bCharFormatOnly =
false;
3222 for(
size_t i = 0;
i < pTextAttrs->Count(); ++
i )
3225 const sal_Int32 startPos = pHt->
GetStart();
3226 const sal_Int32* endPos = pHt->
End();
3230 if( endPos && (startPos == *endPos ) && (*endPos == rNode.
GetText().getLength()) )
3232 SAL_INFO(
"sw.ww8", startPos <<
"startPos == endPos" << *endPos);
3234 SAL_INFO(
"sw.ww8",
"nWhich" << nWhich);
3238 aParagraphMarkerProperties.
Put(pHt->
GetAttr());
3241 bCharFormatOnly =
false;
3255 }
while(*aBreakIt != rNode.
GetText().getLength() && bNeedParaSplit );
3257 SAL_INFO(
"sw.ww8",
"</OutWW8_SwTextNode>" );
3272 bool bNoPageBreak =
false;
3274 if ( !pDescItem ||
nullptr == pDescItem->
GetPageDesc() )
3276 bNoPageBreak =
true;
3283 SvxBreak eBreak = pBreakItem->GetBreak();
3286 case SvxBreak::PageBefore:
3287 case SvxBreak::PageAfter:
3288 bNoPageBreak =
false;
3295 bRet = bNoPageBreak;
3327 if ( !pSet && !bInTOX )
3382 pSectNd = pSectNdNext;
3398 {
"ooxml:CT_SdtDocPart_docPartGallery",
uno::Any(OUString(
"Table of Contents"))},
3399 {
"ooxml:CT_SdtDocPart_docPartUnique",
uno::Any(OUString(
"true"))},
3404 {
"ooxml:CT_SdtPr_docPartObj",
uno::Any(aDocPropertyValues)},
3408 aGrabBag.
GetGrabBag()[
"SdtPr"] <<= aSdtPrPropertyValues;
3428 aGrabBag.
GetGrabBag()[
"ParaSdtEndBefore"] <<=
true;
3452 bool bUseEscher =
true;
3522 aOffset -= aPageRect.
Pos();
3531 (RndStdIds::FLY_AT_PAGE != rAnch.
GetAnchorId()) &&
3575 if ( pRedline->
Next() )
3578 static const sal_uInt16 insSprmIds[ 3 ] =
3583 static const sal_uInt16 delSprmIds[ 3 ] =
3589 const sal_uInt16* pSprmIds =
nullptr;
3592 case RedlineType::Insert:
3593 pSprmIds = insSprmIds;
3596 case RedlineType::Delete:
3597 pSprmIds = delSprmIds;
3600 case RedlineType::Format:
3608 OSL_ENSURE(
false,
"Unhandled redline type for export");
3653 case css::text::RubyAdjust_LEFT:
3657 case css::text::RubyAdjust_CENTER:
3660 case css::text::RubyAdjust_RIGHT:
3664 case css::text::RubyAdjust_BLOCK:
3668 case css::text::RubyAdjust_INDENT_BLOCK:
3673 OSL_ENSURE(
false,
"Unhandled Ruby justification code" );
3677 if ( rRuby.
GetPosition() == css::text::RubyPosition::INTER_CHARACTER )
3702 const auto& rHeight =
3723 const OUString &rText = rNode.
GetText();
3724 sal_uInt16 nScript = i18n::ScriptType::LATIN;
3726 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 * getInnerFieldmarkFor(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
void SetTextFirstLineOffset(const short nF, const sal_uInt16 nProp=100)
void SetTextFirstLineOffsetValue(const short nValue)
short GetTextFirstLineOffset() const
sal_uInt32 GetHeight() const
rtl_TextEncoding GetCharSet() const
const OUString & GetFamilyName() const
void SetCaseMap(const SvxCaseMap eNew)
OUString CalcCaseMap(const OUString &rTxt) const
bool Insert(const SvxTabStop &rTab)
void SetTextLeft(const tools::Long nL, const sal_uInt16 nProp=100)
tools::Long GetLeft(SvxFirstLineIndentItem const &rFirstLine) const
tools::Long GetTextLeft() const
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.
::sw::ListLevelIndents AreListLevelIndentsApplicable() const
Determines, if the list level indent attributes can be applied to the paragraph.
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()
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(126)
#define CH_TXT_ATR_FIELDSEP
constexpr TypedWhichId< SvxFormatKeepItem > RES_KEEP(116)
#define CH_TXT_ATR_FORMELEMENT
constexpr TypedWhichId< SvxFontHeightItem > RES_CHRATR_FONTSIZE(8)
constexpr TypedWhichId< SvxLanguageItem > RES_CHRATR_LANGUAGE(10)
constexpr TypedWhichId< SvxFirstLineIndentItem > RES_MARGIN_FIRSTLINE(91)
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(99)
constexpr TypedWhichId< SvxBrushItem > RES_BACKGROUND(111)
constexpr TypedWhichId< SvxAdjustItem > RES_PARATR_ADJUST(64)
constexpr TypedWhichId< SvxLanguageItem > RES_CHRATR_CJK_LANGUAGE(24)
constexpr TypedWhichId< SwTableBoxFormula > RES_BOXATR_FORMULA(157)
constexpr TypedWhichId< SvxTabStopItem > RES_PARATR_TABSTOP(68)
constexpr TypedWhichId< SvxCaseMapItem > RES_CHRATR_CASEMAP(RES_CHRATR_BEGIN)
constexpr sal_uInt16 RES_CHRATR_BEGIN(HINT_BEGIN)
constexpr TypedWhichId< SwFormatLineNumber > RES_LINENUMBER(122)
constexpr TypedWhichId< SwNumRuleItem > RES_PARATR_NUMRULE(72)
constexpr TypedWhichId< SwFormatCharFormat > RES_TXTATR_CHARFMT(52)
constexpr TypedWhichId< SwFormatAutoFormat > RES_PARATR_LIST_AUTOFMT(87)
constexpr TypedWhichId< SvxFormatBreakItem > RES_BREAK(100)
constexpr TypedWhichId< SfxGrabBagItem > RES_CHRATR_GRABBAG(43)
constexpr TypedWhichId< SvxTextLeftMarginItem > RES_MARGIN_TEXTLEFT(92)
constexpr TypedWhichId< SwFormatMeta > RES_TXTATR_METAFIELD(49)
constexpr TypedWhichId< SfxGrabBagItem > RES_PARATR_GRABBAG(81)
constexpr TypedWhichId< SwFormatRefMark > RES_TXTATR_REFMARK(RES_TXTATR_WITHEND_BEGIN)
constexpr TypedWhichId< SvxFontItem > RES_CHRATR_FONT(7)
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< SvxULSpaceItem > RES_UL_SPACE(98)
#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)