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)