40#include <editeng/editids.hrc> 
   51#include <rtl/ustrbuf.hxx> 
   54#include <osl/diagnose.h> 
   58#include <com/sun/star/i18n/ScriptType.hpp> 
   59#include <libxml/xmlwriter.h> 
   75    sal_uInt16 
nId = nItemId;
 
   77    if ( ( nScriptType == SvtScriptType::ASIAN ) ||
 
   78         ( nScriptType == SvtScriptType::COMPLEX ) )
 
  110            bValid = nScriptType == i18n::ScriptType::LATIN;
 
  113            bValid = nScriptType == i18n::ScriptType::ASIAN;
 
  116            bValid = nScriptType == i18n::ScriptType::COMPLEX;
 
  119            bValid = nScriptType == i18n::ScriptType::LATIN;
 
  122            bValid = nScriptType == i18n::ScriptType::ASIAN;
 
  125            bValid = nScriptType == i18n::ScriptType::COMPLEX;
 
  128            bValid = nScriptType == i18n::ScriptType::LATIN;
 
  131            bValid = nScriptType == i18n::ScriptType::ASIAN;
 
  134            bValid = nScriptType == i18n::ScriptType::COMPLEX;
 
  137            bValid = nScriptType == i18n::ScriptType::LATIN;
 
  140            bValid = nScriptType == i18n::ScriptType::ASIAN;
 
  143            bValid = nScriptType == i18n::ScriptType::COMPLEX;
 
  146            bValid = nScriptType == i18n::ScriptType::LATIN;
 
  149            bValid = nScriptType == i18n::ScriptType::ASIAN;
 
  152            bValid = nScriptType == i18n::ScriptType::COMPLEX;
 
  160        { SID_ATTR_FRAMEDIRECTION, 
true },         
 
  162        { SID_ATTR_PARA_HANGPUNCTUATION, 
true },   
 
  163        { SID_ATTR_PARA_FORBIDDEN_RULES, 
true },   
 
  164        { SID_ATTR_PARA_SCRIPTSPACE, 
true },       
 
  165        { SID_ATTR_NUMBERING_RULE, 
true },         
 
  171        { SID_ATTR_PARA_OUTLLEVEL, 
true },         
 
  172        { SID_ATTR_PARA_BULLET, 
true },            
 
  173        { SID_ATTR_LRSPACE, 
true },                
 
  174        { SID_ATTR_ULSPACE, 
true },                
 
  175        { SID_ATTR_PARA_LINESPACE, 
true },         
 
  176        { SID_ATTR_PARA_ADJUST, 
true },            
 
  177        { SID_ATTR_TABSTOP, 
true },                
 
  178        { SID_ATTR_ALIGN_HOR_JUSTIFY_METHOD, 
true }, 
 
  179        { SID_ATTR_ALIGN_VER_JUSTIFY, 
true },      
 
  180        { SID_ATTR_CHAR_COLOR, 
true },         
 
  181        { SID_ATTR_CHAR_FONT, 
true },          
 
  182        { SID_ATTR_CHAR_FONTHEIGHT, 
true },    
 
  183        { SID_ATTR_CHAR_SCALEWIDTH, 
true },    
 
  184        { SID_ATTR_CHAR_WEIGHT, 
true },        
 
  185        { SID_ATTR_CHAR_UNDERLINE, 
true },     
 
  186        { SID_ATTR_CHAR_STRIKEOUT, 
true },     
 
  187        { SID_ATTR_CHAR_POSTURE, 
true },       
 
  188        { SID_ATTR_CHAR_CONTOUR, 
true },       
 
  189        { SID_ATTR_CHAR_SHADOWED, 
true },      
 
  190        { SID_ATTR_CHAR_ESCAPEMENT, 
true },    
 
  191        { SID_ATTR_CHAR_AUTOKERN, 
true },      
 
  192        { SID_ATTR_CHAR_KERNING, 
true },       
 
  193        { SID_ATTR_CHAR_WORDLINEMODE, 
true },  
 
  194        { SID_ATTR_CHAR_LANGUAGE, 
true },      
 
  195        { SID_ATTR_CHAR_CJK_LANGUAGE, 
true },  
 
  196        { SID_ATTR_CHAR_CTL_LANGUAGE, 
true },  
 
  197        { SID_ATTR_CHAR_CJK_FONT, 
true },      
 
  198        { SID_ATTR_CHAR_CTL_FONT, 
true },      
 
  199        { SID_ATTR_CHAR_CJK_FONTHEIGHT, 
true }, 
 
  200        { SID_ATTR_CHAR_CTL_FONTHEIGHT, 
true }, 
 
  201        { SID_ATTR_CHAR_CJK_WEIGHT, 
true },    
 
  202        { SID_ATTR_CHAR_CTL_WEIGHT, 
true },    
 
  203        { SID_ATTR_CHAR_CJK_POSTURE, 
true },   
 
  204        { SID_ATTR_CHAR_CTL_POSTURE, 
true },   
 
  205        { SID_ATTR_CHAR_EMPHASISMARK, 
true },  
 
  206        { SID_ATTR_CHAR_RELIEF, 
true },        
 
  209        { SID_ATTR_CHAR_OVERLINE, 
true },      
 
  210        { SID_ATTR_CHAR_CASEMAP, 
true },       
 
  211        { SID_ATTR_CHAR_GRABBAG, 
true },       
 
  212        { SID_ATTR_CHAR_BACK_COLOR, 
true },    
 
  215        { SID_ATTR_CHAR_CHARSETCOLOR, 
true },  
 
  216        { SID_FIELD, 
false },                  
 
  225    switch( rNew.
Which() )
 
  364            OSL_FAIL( 
"Invalid Attribute!" );
 
  386    assert((nDelFrom < 
static_cast<sal_Int32
>(
maPortions.size())) || ((nDelFrom == 0) && 
maPortions.empty()));
 
  387    PortionsType::iterator it = 
maPortions.begin();
 
  388    std::advance(it, nDelFrom);
 
  394    return static_cast<sal_Int32
>(
maPortions.size());
 
  409    maPortions.push_back(std::unique_ptr<TextPortion>(
p));
 
  424class FindTextPortionByAddress
 
  428    explicit FindTextPortionByAddress(
const TextPortion* p) : mp(
p) {}
 
  429    bool operator() (
const std::unique_ptr<TextPortion>& v)
 const 
  431        return v.get() == mp;
 
  439    PortionsType::const_iterator it =
 
  443        return std::numeric_limits<sal_Int32>::max(); 
 
  449    sal_Int32 nCharPos, sal_Int32& nPortionStart, 
bool bPreferStartingPortion)
 const 
  452    sal_Int32 nTmpPos = 0;
 
  454    for (sal_Int32 
i = 0; 
i < 
n; ++
i)
 
  457        nTmpPos = nTmpPos + rPortion.
GetLen();
 
  458        if ( nTmpPos >= nCharPos )
 
  461            if ( ( nTmpPos != nCharPos ) || !bPreferStartingPortion || ( 
i == 
n-1 ) )
 
  463                nPortionStart = nTmpPos - rPortion.
GetLen();
 
  468    OSL_FAIL( 
"FindPortion: Not found!" );
 
  475    for (sal_Int32 
i = 0; 
i < nPortion; ++
i)
 
  485, nWidthFullCompression(0)
 
  487, nMaxCompression100thPercent(0)
 
  489, bFirstCharIsRightPunktuation(false)
 
  503        memcpy( 
pOrgDXArray.get(), pDXArray, nLen * 
sizeof(sal_Int32) );
 
  552            DBG_ASSERT( ( nDiff >= 0 ) || ( (nStart+nDiff) >= 0 ), 
"MarkInvalid: Diff out of Range" );
 
  604    DBG_ASSERT( nLines, 
"CorrectPortionNumbersFromLine: Empty Portion?" );
 
  605    if ( nLastFormattedLine < ( nLines - 1 ) )
 
  610        sal_Int32 nTextDiff = rUnformatted.
GetStart() - rLastFormatted.
GetEnd();
 
  617        int nPDiff = -( nPortionDiff-1 );
 
  618        int nTDiff = -( nTextDiff-1 );
 
  619        if ( nPDiff || nTDiff )
 
  621            for ( sal_Int32 nL = nLastFormattedLine+1; nL < nLines; nL++ )
 
  642template<
typename Array, 
typename Val>
 
  643sal_Int32 FastGetPos(
const Array& rArray, 
const Val* p, sal_Int32& rLastPos)
 
  645    sal_Int32 nArrayLen = rArray.size();
 
  650    if (rLastPos > 16 && nArrayLen > 16)
 
  653        if (rLastPos > nArrayLen - 2)
 
  658        for (sal_Int32 nIdx = rLastPos - 2; nIdx < nEnd; ++nIdx)
 
  660            if (rArray.at(nIdx).get() == p)
 
  668    for (sal_Int32 nIdx = 0; nIdx < nArrayLen; ++nIdx)
 
  669        if (rArray.at(nIdx).get() == p)
 
  708        SAL_WARN( 
"editeng", 
"ParaPortionList::Release - out of bounds pos " << 
nPos);
 
  720        SAL_WARN( 
"editeng", 
"ParaPortionList::Remove - out of bounds pos " << 
nPos);
 
  730        SAL_WARN( 
"editeng", 
"ParaPortionList::Insert - out of bounds pos " << 
nPos);
 
  746        SAL_WARN( 
"editeng", 
"ParaPortionList::Count - overflow " << nSize);
 
  763        if ( pTmpPortion == pPPortion )
 
  767    OSL_FAIL( 
"GetYOffset: Portion not found" );
 
  778            return i <= SAL_MAX_INT32 ? static_cast<sal_Int32>(
i) : 
SAL_MAX_INT32;
 
  793#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
  798    for (sal_Int32 
i = 0; 
i < rParas.
Count(); ++
i)
 
  808        aPrevParaAttribs(
std::move( aParaAttribs))
 
  815        rPool.
Remove(*rAttrib->GetItem());
 
  825    DBG_ASSERT( eSourceUnit != eDestUnit, 
"ConvertItem - Why?!" );
 
  827    switch ( rPoolItem->Which() )
 
  831            assert(
dynamic_cast<const SvxLRSpaceItem *
>(rPoolItem.get()) != 
nullptr);
 
  840            assert(
dynamic_cast<const SvxULSpaceItem *
>(rPoolItem.get()) != 
nullptr);
 
  857            assert(
dynamic_cast<const SvxTabStopItem *
>(rPoolItem.get()) != 
nullptr);
 
  867            for ( sal_uInt16 
i = 0; 
i < rItem.
Count(); 
i++ )
 
  871                pNewItem->
Insert( aNewStop );
 
  873            rPoolItem.reset(pNewItem);
 
  897        sal_uInt16 nSourceWhich = nWhich;
 
  906        if ( rSource.
GetItemState( nSourceWhich, 
false ) == SfxItemState::SET )
 
  908            MapUnit eSourceUnit = pSourceUnit ? *pSourceUnit : pSourcePool->
GetMetric( nSourceWhich );
 
  909            MapUnit eDestUnit = pDestUnit ? *pDestUnit : pDestPool->
GetMetric( nWhich );
 
  910            if ( eSourceUnit != eDestUnit )
 
  912                std::unique_ptr<SfxPoolItem> pItem(rSource.
Get( nSourceWhich ).
Clone());
 
  914                pItem->SetWhich(nWhich);
 
  915                rDest.
Put( std::move(pItem) );
 
  936    bHangingPunctuation(false),
 
  946    nStartPortion(r.nStartPortion),
 
  947    nEndPortion(r.nEndPortion),
 
  951    bHangingPunctuation(r.bHangingPunctuation),
 
 1070    assert(nDelFrom <= (
static_cast<sal_Int32
>(
maLines.size()) - 1));
 
 1071    LinesType::iterator it = 
maLines.begin();
 
 1072    std::advance(it, nDelFrom);
 
 1079    for (sal_Int32 
i = 0; 
i < 
n; ++
i)
 
 1082        if ( (bInclEnd && (rLine.
GetEnd() >= nChar)) ||
 
 1083             (rLine.
GetEnd() > nChar) )
 
 1089    DBG_ASSERT( !bInclEnd, 
"Line not found: FindLine" );
 
 1110    maLines.push_back(std::unique_ptr<EditLine>(
p));
 
 1144    aStartPaM(rStartAndAnd),
 
 1145    aEndPaM(rStartAndAnd)
 
 1170    sal_Int32 nStartNode = rNodes.
GetPos( pStartNode );
 
 1171    sal_Int32 nEndNode = rNodes.
GetPos( pEndNode );
 
 1176    const bool bSwap = ( nStartNode > nEndNode ) ||
 
 1177                       ( ( nStartNode == nEndNode ) &&
 
 1196    return !( r1 == r2 );
 
 1204    maString(rStr), aContentAttribs(rContentAttribs)
 
 1217#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
 1226    bool bResort = 
false;
 
 1227    bool bExpandedEmptyAtIndexNull = 
false;
 
 1229    std::size_t nAttr = 0;
 
 1242            else if ( pAttrib->
IsEmpty() )
 
 1253                    bExpandedEmptyAtIndexNull = 
true;
 
 1264                    if ( !pAttrib->
IsEdge() )
 
 1286                    bool bExpand = 
false;
 
 1290                        if( bExpandedEmptyAtIndexNull )
 
 1294                            for ( std::size_t nA = 0; nA < nAttr; nA++ )
 
 1328            OSL_FAIL( 
"Empty Attribute after ExpandAttribs?" );
 
 1331            rAttribs.erase(rAttribs.begin()+nAttr);
 
 1349#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
 1359#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
 1365    bool bResort = 
false;
 
 1366    sal_Int32 nEndChanges = 
nIndex+nDeleted;
 
 1368    std::size_t nAttr = 0;
 
 1373        bool bDelAttr = 
false;
 
 1377            if ( pAttrib->
GetStart() >= nEndChanges )
 
 1398                if ( pAttrib->
GetEnd() <= nEndChanges ) 
 
 1422        DBG_ASSERT( ( pAttrib->
GetEnd() <= 
Len()) || bDelAttr, 
"Collapse: Attribute larger than paragraph!" );
 
 1427            rAttribs.erase(rAttribs.begin()+nAttr);
 
 1445#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
 1454#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
 1459    sal_Int32 nCut = pPrevNode->
Len();
 
 1461    std::size_t nAttr = 0;
 
 1466        if ( pAttrib->
GetEnd() < nCut )
 
 1471        else if ( pAttrib->
GetEnd() == nCut )
 
 1489            pAttrib->
GetEnd() = nCut;
 
 1495            CharAttribList::AttribsType::iterator it = rPrevAttribs.begin() + nAttr;
 
 1497            rPrevAttribs.erase(it);
 
 1500        pAttrib = 
GetAttrib(rPrevAttribs, nAttr);
 
 1503#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
 1513    sal_Int32 nNewStart = 
maString.getLength();
 
 1515#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
 1520    std::size_t nAttr = 0;
 
 1526        bool bMelted = 
false;
 
 1530            std::size_t nTmpAttr = 0;
 
 1532            while ( !bMelted && pTmpAttrib )
 
 1535                if ( pTmpAttrib->
GetEnd() == nNewStart )
 
 1541                                || (0 == pAttrib->
GetLen()))
 
 1545                            rNextAttribs.erase(rNextAttribs.begin()+nAttr);
 
 1549                        else if (0 == pTmpAttrib->
GetLen())
 
 1564            CharAttribList::AttribsType::iterator it = rNextAttribs.begin() + nAttr;
 
 1566            rNextAttribs.erase(it);
 
 1568        pAttrib = 
GetAttrib(rNextAttribs, nAttr);
 
 1571    rNextAttribs.clear();
 
 1573#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
 1622    sal_Int32 nLen = 
maString.getLength();
 
 1626    for (sal_Int32 nAttr = rAttrs.size(); nAttr; )
 
 1641    if ( nEndPos < 0 || nEndPos > 
Len() )
 
 1644    DBG_ASSERT( nStartPos <= nEndPos, 
"Start and End reversed?" );
 
 1646    sal_Int32 
nIndex = nStartPos;
 
 1647    OUStringBuffer 
aStr(256);
 
 1649    while ( 
nIndex < nEndPos )
 
 1651        sal_Int32 nEnd = nEndPos;
 
 1652        if ( pNextFeature && ( pNextFeature->
GetStart() < nEnd ) )
 
 1655            pNextFeature = 
nullptr;   
 
 1673                default:    OSL_FAIL( 
"What feature?" );
 
 1679    return aStr.makeStringAndClear();
 
 1684    sal_Int32 nOffset = 0;
 
 1687    for (
size_t nAttr = 0; nAttr < rAttrs.size(); ++nAttr )
 
 1690        assert (!(nAttr < rAttrs.size() - 1) ||
 
 1691                rAttrs[nAttr]->GetStart() <= rAttrs[nAttr + 1]->GetStart());
 
 1695        if (nOffset >= rPos) 
 
 1700            sal_Int32 nChunk = 
static_cast<const EditCharAttribField&
>(rAttr).GetFieldValue().getLength();
 
 1703            if (nOffset + nChunk >= rPos) 
 
 1715    assert (rPos <= 
Len());
 
 1806    (void)xmlTextWriterStartElement(pWriter, BAD_CAST(
"ContentNode"));
 
 1807    (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST(
"maString"), BAD_CAST(
maString.toUtf8().getStr()));
 
 1810    (void)xmlTextWriterEndElement(pWriter);
 
 1816, aAttribSet( rPool )
 
 1824    for ( sal_uInt16 
i = 0; 
i < rTabs.
Count(); 
i++ )
 
 1837    const sal_Int32 
x = nCurPos / nDefTab + 1;
 
 1844    bool bStyleChanged = ( 
pStyle != 
pS );
 
 1847    if ( !(
pStyle && bStyleChanged) )
 
 1869    return pTakeFrom->
Get( nWhich );
 
 1874    bool bHasItem = 
false;
 
 1885    (void)xmlTextWriterStartElement(pWriter, BAD_CAST(
"ContentAttribs"));
 
 1886    (void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST(
"style"), 
"%s", 
pStyle->
GetName().toUtf8().getStr());
 
 1888    (void)xmlTextWriterEndElement(pWriter);
 
 1925    bIsFixedCellHeight(false),
 
 1927    bDisableAttributeExpanding(false)
 
 1939class RemoveEachItemFromPool
 
 1943    explicit RemoveEachItemFromPool(
EditDoc& rDoc) : mrDoc(rDoc) {}
 
 1944    void operator() (
const std::unique_ptr<ContentNode>& rNode)
 
 1950struct ClearSpellErrorsHandler
 
 1952    void operator() (std::unique_ptr<ContentNode> 
const & rNode)
 
 1954        rNode->DestroyWrongList();
 
 1986    if ( bSearchInParent || ( 
rSet.
GetItemState( nWhich_FontInfo ) == SfxItemState::SET ) )
 
 1994    if ( bSearchInParent || ( 
rSet.
GetItemState( nWhich_Language ) == SfxItemState::SET ) )
 
 2004    if ( bSearchInParent || ( 
rSet.
GetItemState( nWhich_FontHeight ) == SfxItemState::SET ) )
 
 2006    if ( bSearchInParent || ( 
rSet.
GetItemState( nWhich_Weight ) == SfxItemState::SET ) )
 
 2016    if ( bSearchInParent || ( 
rSet.
GetItemState( nWhich_Italic ) == SfxItemState::SET ) )
 
 2029        short nEsc = rEsc.
GetEsc();
 
 2049    if ( rFont == aPrevFont  )
 
 2060    for ( sal_Int32 nNode = 0; nNode < 
Count(); nNode++ )
 
 2115        SAL_WARN( 
"editeng", 
"EditDoc::Insert - overflow pos " << 
nPos);
 
 2125        SAL_WARN( 
"editeng", 
"EditDoc::Remove - out of bounds pos " << 
nPos);
 
 2135        SAL_WARN( 
"editeng", 
"EditDoc::Release - out of bounds pos " << 
nPos);
 
 2148        SAL_WARN( 
"editeng", 
"EditDoc::Count - overflow " << nSize);
 
 2165    const sal_Int32 nNodes = 
Count();
 
 2170    const sal_Int32 nSepSize = aSep.getLength();
 
 2171    const sal_Int32 nLen = 
GetTextLen() + (nNodes - 1)*nSepSize;
 
 2173    OUStringBuffer 
aBuffer(nLen + 16); 
 
 2175    for ( sal_Int32 nNode = 0; nNode < nNodes; nNode++ )
 
 2177        if ( nSepSize && nNode>0 )
 
 2184    return aBuffer.makeStringAndClear();
 
 2193    const ContentNode* pNode, sal_Int32 nStartPos, sal_Int32 nEndPos)
 
 2207    return EditPaM( pLastNode, pLastNode->
Len() );
 
 2213    for ( sal_Int32 nNode = 0; nNode < 
Count(); nNode++ )
 
 2273    DBG_ASSERT( rStr.find( 0x0A ) == std::u16string_view::npos, 
"EditDoc::InsertText: Newlines prohibited in paragraph!" );
 
 2274    DBG_ASSERT( rStr.find( 0x0D ) == std::u16string_view::npos, 
"EditDoc::InsertText: Newlines prohibited in paragraph!" );
 
 2275    DBG_ASSERT( rStr.find( 
'\t' ) == std::u16string_view::npos, 
"EditDoc::InsertText: Newlines prohibited in paragraph!" );
 
 2309        OUString aFollow( pStyle->
GetFollow() );
 
 2310        if ( !aFollow.isEmpty() && ( aFollow != pStyle->
GetName() ) )
 
 2358    sal_Int32 nRight = 
GetPos( pRight );
 
 2378    DBG_ASSERT( nEnd <= pNode->Len(), 
"InsertAttrib: Attribute too large!" );
 
 2386    DBG_ASSERT( nStart <= nEnd, 
"Small miscalculations in InsertAttribInSelection" );
 
 2388    RemoveAttribs( pNode, nStart, nEnd, pStartingAttrib, pEndingAttrib, rPoolItem.
Which() );
 
 2395        pStartingAttrib = 
nullptr;
 
 2396        pEndingAttrib = 
nullptr;
 
 2399    if ( pStartingAttrib && pEndingAttrib &&
 
 2400         ( *(pStartingAttrib->
GetItem()) == rPoolItem ) &&
 
 2401         ( *(pEndingAttrib->
GetItem()) == rPoolItem ) )
 
 2408    else if ( pStartingAttrib && ( *(pStartingAttrib->
GetItem()) == rPoolItem ) )
 
 2409        pStartingAttrib->
GetStart() = nStart;
 
 2410    else if ( pEndingAttrib && ( *(pEndingAttrib->
GetItem()) == rPoolItem ) )
 
 2411        pEndingAttrib->
GetEnd() = nEnd;
 
 2415    if ( pStartingAttrib )
 
 2425    return RemoveAttribs( pNode, nStart, nEnd, pStarting, pEnding, nWhich );
 
 2432    DBG_ASSERT( nEnd <= pNode->Len(), 
"InsertAttrib: Attribute too large!" );
 
 2437    rpStarting = 
nullptr;
 
 2439    bool bChanged = 
false;
 
 2440    bool bNeedsSorting = 
false;
 
 2442    DBG_ASSERT( nStart <= nEnd, 
"Small miscalculations in InsertAttribInSelection" );
 
 2444#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
 2449    std::size_t nAttr = 0;
 
 2454        bool bRemoveAttrib = 
false;
 
 2455        sal_uInt16 nAttrWhich = pAttr->
Which();
 
 2456        if ( ( nAttrWhich < 
EE_FEATURE_START ) && ( !nWhich || ( nAttrWhich == nWhich ) ) )
 
 2462                if ( pAttr->
GetEnd() > nEnd )
 
 2464                    bNeedsSorting = 
true;
 
 2473                    bRemoveAttrib = 
true;
 
 2478            else if ( ( pAttr->
GetEnd() >= nStart ) && ( pAttr->
GetEnd() <= nEnd ) )
 
 2483                    pAttr->
GetEnd() = nStart;   
 
 2489                    bRemoveAttrib = 
true;
 
 2493            else if ( ( pAttr->
GetStart() <= nStart ) && ( pAttr->
GetEnd() >= nEnd ) )
 
 2498                    bNeedsSorting = 
true;
 
 2504                else if ( pAttr->
GetEnd() == nEnd )
 
 2506                    pAttr->
GetEnd() = nStart;
 
 2513                    bNeedsSorting = 
true;
 
 2514                    sal_Int32 nOldEnd = pAttr->
GetEnd();
 
 2515                    pAttr->
GetEnd() = nStart;
 
 2523        if ( bRemoveAttrib )
 
 2525            DBG_ASSERT( ( pAttr != rpStarting ) && ( pAttr != rpEnding ), 
"Delete and retain the same attribute?" );
 
 2528            rAttribs.erase(rAttribs.begin()+nAttr);
 
 2545#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
 2565    if ( nStart != nEnd )
 
 2587                sal_Int32 nOldEnd = pAttr->
GetEnd();
 
 2588                pAttr->
GetEnd() = nStart;
 
 2592            else if ( pAttr->
GetEnd() == nStart )
 
 2596                if ( *(pAttr->
GetItem()) == rPoolItem )
 
 2609    DBG_ASSERT( nStartPos <= nEndPos, 
"Invalid region!" );
 
 2611    std::size_t nAttr = 0;
 
 2614    if ( nStartPos == nEndPos )
 
 2616        while ( pAttr && ( pAttr->
GetStart() <= nEndPos) )
 
 2620            if ( ( pAttr->
GetStart() < nStartPos ) && ( pAttr->
GetEnd() > nStartPos ) )
 
 2623            else if ( ( pAttr->
GetStart() < nStartPos ) && ( pAttr->
GetEnd() == nStartPos ) )
 
 2629            else if ( ( pAttr->
GetStart() == nStartPos ) && ( pAttr->
GetEnd() == nStartPos ) )
 
 2634            else if ( ( pAttr->
GetStart() == nStartPos ) && ( pAttr->
GetEnd() > nStartPos ) )
 
 2636                if ( nStartPos == 0 )   
 
 2642                sal_uInt16 nWhich = pItem->
Which();
 
 2643                if ( rCurSet.
GetItemState( nWhich ) == SfxItemState::DEFAULT )
 
 2645                    rCurSet.
Put( *pItem );
 
 2647                else if ( rCurSet.
GetItemState( nWhich ) == SfxItemState::SET )
 
 2650                    if ( rItem != *pItem )
 
 2662        while ( pAttr && ( pAttr->
GetStart() < nEndPos) )
 
 2666            if ( ( pAttr->
GetStart() <= nStartPos ) && ( pAttr->
GetEnd() >= nEndPos ) )
 
 2669            else if ( pAttr->
GetStart() >= nStartPos )
 
 2685            else if ( pAttr->
GetEnd() > nStartPos )
 
 2692                sal_uInt16 nWhich = pItem->
Which();
 
 2693                if ( rCurSet.
GetItemState( nWhich ) == SfxItemState::DEFAULT )
 
 2695                    rCurSet.
Put( *pItem );
 
 2697                else if ( rCurSet.
GetItemState( nWhich ) == SfxItemState::SET )
 
 2700                    if ( rItem != *pItem )
 
 2717        pWriter = xmlNewTextWriterFilename(
"editdoc.xml", 0);
 
 2718        xmlTextWriterSetIndent(pWriter,1);
 
 2719        (void)xmlTextWriterSetIndentString(pWriter, BAD_CAST(
"  "));
 
 2720        (void)xmlTextWriterStartDocument(pWriter, 
nullptr, 
nullptr, 
nullptr);
 
 2724    (void)xmlTextWriterStartElement(pWriter, BAD_CAST(
"EditDoc"));
 
 2727        i->dumpAsXml(pWriter);
 
 2729    (void)xmlTextWriterEndElement(pWriter);
 
 2733       (void)xmlTextWriterEndDocument(pWriter);
 
 2734       xmlFreeTextWriter(pWriter);
 
 2743    bool operator() (
const std::unique_ptr<EditCharAttrib>& left, 
const std::unique_ptr<EditCharAttrib>& right)
 const 
 2745        return left->GetStart() < 
right->GetStart();
 
 2752: bHasEmptyAttribs(false)
 
 2771    const sal_Int32 nStart = pAttrib->
GetStart(); 
 
 2773#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
 2784        if (rCurAttrib.
GetStart() > nStart)
 
 2792    if (bInsert) 
aAttribs.push_back(std::unique_ptr<EditCharAttrib>(pAttrib));
 
 2794#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
 2803#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
 2810#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
 2813    for (sal_Int32 
i = 0; i < static_cast<sal_Int32>(
aAttribs.size()); ++
i)
 
 2816        for (sal_Int32 nNext = 
i+1; nNext < static_cast<sal_Int32>(
aAttribs.size()); ++nNext)
 
 2835#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
 2849    AttribsType::const_reverse_iterator it = std::find_if(
aAttribs.rbegin(), 
aAttribs.rend(),
 
 2850        [&nWhich, &
nPos](
const AttribsType::value_type& rxAttr) {
 
 2851            return rxAttr->Which() == nWhich && rxAttr->IsIn(nPos); });
 
 2864    AttribsType::reverse_iterator it = std::find_if(
aAttribs.rbegin(), 
aAttribs.rend(),
 
 2865        [&nWhich, &
nPos](AttribsType::value_type& rxAttr) {
 
 2866            return rxAttr->Which() == nWhich && rxAttr->IsIn(nPos); });
 
 2878    for (
auto const& attrib : 
aAttribs)
 
 2881        if (rAttr.
GetStart() >= nFromPos && rAttr.
Which() == nWhich)
 
 2890        [&nStartPos, &nEndPos](
const AttribsType::value_type& rxAttr) {
 
 2891            return rxAttr->GetStart() < nEndPos && rxAttr->GetEnd() > nStartPos; });
 
 2902    bool operator() (
const std::unique_ptr<EditCharAttrib>& r)
 const 
 2904        return r.get() == mpAttr;
 
 2912    AttribsType::iterator it = std::find_if(
aAttribs.begin(), 
aAttribs.end(), FindByAddress(
p));
 
 2934    AttribsType::const_reverse_iterator it = 
aAttribs.rbegin(), itEnd = 
aAttribs.rend();
 
 2935    for (; it != itEnd; ++it)
 
 2938        if (rAttr.
GetEnd() < nBound)
 
 2952    for (
const std::unique_ptr<EditCharAttrib>& rAttr : 
aAttribs)
 
 2954        if (rAttr->GetStart() == 
nPos && rAttr->GetEnd() == 
nPos && rAttr->Which() == nWhich)
 
 2966    explicit FindByStartPos(sal_Int32 nPos) : mnPos(
nPos) {}
 
 2967    bool operator() (
const std::unique_ptr<EditCharAttrib>& r)
 const 
 2969        return r->GetStart() >= mnPos;
 
 2978    AttribsType::const_iterator it =
 
 2986    it = std::find_if(it, 
aAttribs.end(), [](
const std::unique_ptr<EditCharAttrib>& aAttrib) { return aAttrib->IsFeature(); } );
 
 2987    return it == 
aAttribs.end() ? nullptr : it->get();
 
 2992class RemoveEmptyAttrItem
 
 2996    explicit RemoveEmptyAttrItem(
SfxItemPool& rPool) : mrItemPool(rPool) {}
 
 2997    void operator() (
const std::unique_ptr<EditCharAttrib>& r)
 
 3000            mrItemPool.
Remove(*r->GetItem());
 
 3008    std::for_each(
aAttribs.begin(), 
aAttribs.end(), RemoveEmptyAttrItem(rItemPool));
 
 3009    aAttribs.erase( std::remove_if(
aAttribs.begin(), 
aAttribs.end(), [](
const std::unique_ptr<EditCharAttrib>& aAttrib) { return aAttrib->IsEmpty(); } ), 
aAttribs.end() );
 
 3013#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG 
 3016    std::set<std::pair<sal_Int32, sal_uInt16>> zero_set;
 
 3017    for (
const std::unique_ptr<EditCharAttrib>& rAttr : rAttribs.
aAttribs)
 
 3019        assert(rAttr->GetStart() <= rAttr->GetEnd());
 
 3020        assert(!rAttr->IsFeature() || rAttr->GetLen() == 1);
 
 3021        if (0 == rAttr->GetLen())
 
 3024            assert(zero_set.insert(std::make_pair(rAttr->GetStart(), rAttr->Which())).second && 
"duplicate 0-length attribute detected");
 
 3033    (void)xmlTextWriterStartElement(pWriter, BAD_CAST(
"CharAttribList"));
 
 3035        i->dumpAsXml(pWriter);
 
 3037    (void)xmlTextWriterEndElement(pWriter);
 
void dumpAsXml(xmlTextWriterPtr pWriter) const
 
AttribsType & GetAttribs()
 
const EditCharAttrib * FindFeature(sal_Int32 nPos) const
 
static void DbgCheckAttribs(CharAttribList const &rAttribs)
 
bool HasAttrib(sal_Int32 nStartPos, sal_Int32 nEndPos) const
 
bool HasBoundingAttrib(sal_Int32 nBound) const
 
EditCharAttrib * FindEmptyAttrib(sal_uInt16 nWhich, sal_Int32 nPos)
 
void InsertAttrib(EditCharAttrib *pAttrib)
 
void OptimizeRanges(SfxItemPool &rItemPool)
 
std::vector< std::unique_ptr< EditCharAttrib > > AttribsType
 
const EditCharAttrib * FindNextAttrib(sal_uInt16 nWhich, sal_Int32 nFromPos) const
 
void Remove(const EditCharAttrib *p)
 
void SetHasEmptyAttribs(bool b)
 
const EditCharAttrib * FindAttrib(sal_uInt16 nWhich, sal_Int32 nPos) const
 
void DeleteEmptyAttribs(SfxItemPool &rItemPool)
 
CharAttribsType aPrevCharAttribs
 
ContentAttribsInfo(SfxItemSet aParaAttribs)
 
void RemoveAllCharAttribsFromPool(SfxItemPool &rPool) const
 
void AppendCharAttrib(EditCharAttrib *pNew)
 
SfxItemSetFixed< EE_PARA_START, EE_CHAR_END > aAttribSet
 
SvxTabStop FindTabStop(sal_Int32 nCurPos, sal_uInt16 nDefTab)
 
bool HasItem(sal_uInt16 nWhich) const
 
const SfxPoolItem & GetItem(sal_uInt16 nWhich) const
 
const SfxStyleSheet * GetStyleSheet() const
 
void SetStyleSheet(SfxStyleSheet *pS)
 
void dumpAsXml(xmlTextWriterPtr pWriter) const
 
ContentAttribs(SfxItemPool &rItemPool)
 
ContentNode(SfxItemPool &rItemPool)
 
void CollapseAttribs(sal_Int32 nIndex, sal_Int32 nDelChars, SfxItemPool &rItemPool)
 
void SetChar(sal_Int32 nPos, sal_Unicode c)
 
void dumpAsXml(xmlTextWriterPtr pWriter) const
 
CharAttribList & GetCharAttribs()
 
sal_Unicode GetChar(sal_Int32 nPos) const
 
void UnExpandPosition(sal_Int32 &rStartPos, bool bBiasStart)
 
ContentAttribs aContentAttribs
 
bool IsFeature(sal_Int32 nPos) const
 
const OUString & GetString() const
 
ContentAttribs & GetContentAttribs()
 
WrongList * GetWrongList()
 
void CopyAndCutAttribs(ContentNode *pPrevNode, SfxItemPool &rPool, bool bKeepEndingAttribs)
 
void Insert(std::u16string_view rStr, sal_Int32 nPos)
 
void Erase(sal_Int32 nPos)
 
void UnExpandPositions(sal_Int32 &rStartPos, sal_Int32 &rEndPos)
re-write offsets in the expanded text to string offsets
 
void ExpandAttribs(sal_Int32 nIndex, sal_Int32 nNewChars, SfxItemPool &rItemPool)
 
void AppendAttribs(ContentNode *pNextNode)
 
void Append(std::u16string_view rStr)
 
OUString Copy(sal_Int32 nPos) const
 
CharAttribList aCharAttribList
 
OUString GetExpandedText(sal_Int32 nStartPos=0, sal_Int32 nEndPos=-1) const
return content including expanded fields
 
void SetWrongList(WrongList *p)
 
std::unique_ptr< WrongList > mpWrongList
 
sal_Int32 GetExpandedLen() const
return length including expanded fields
 
SfxStyleSheet * GetStyleSheet()
 
void SetStyleSheet(SfxStyleSheet *pS, bool bRecalcFont=true)
 
void MoveForward(sal_Int32 nDiff)
 
const SfxPoolItem * GetItem() const
 
void MoveBackward(sal_Int32 nDiff)
 
void Expand(sal_Int32 nDiff)
 
bool IsInside(sal_Int32 nIndex) const
 
void Collaps(sal_Int32 nDiff)
 
GlobalEditData * GetGlobalData() const
 
void ImplDestroyContents()
 
EditPaM GetEndPaM() const
 
void Insert(sal_Int32 nPos, ContentNode *p)
 
bool IsEffectivelyVertical() const
 
void InsertAttrib(const SfxPoolItem &rItem, ContentNode *pNode, sal_Int32 nStart, sal_Int32 nEnd)
 
void RemoveItemsFromPool(const ContentNode &rNode)
 
bool IsTopToBottom() const
 
sal_Int32 GetPos(const ContentNode *pNode) const
 
static void FindAttribs(ContentNode *pNode, sal_Int32 nStartPos, sal_Int32 nEndPos, SfxItemSet &rCurSet)
 
void RemoveChars(EditPaM aPaM, sal_Int32 nChars)
 
SfxItemPool & GetItemPool()
 
std::vector< std::unique_ptr< ContentNode > > maContents
 
void Remove(sal_Int32 nPos)
deletes
 
OUString GetParaAsString(sal_Int32 nNode) const
 
OUString GetText(LineEnd eEnd) const
 
const ContentNode * GetObject(sal_Int32 nPos) const
 
bool RemoveAttribs(ContentNode *pNode, sal_Int32 nStart, sal_Int32 nEnd, sal_uInt16 nWhich)
 
bool bDisableAttributeExpanding
 
void InsertAttribInSelection(ContentNode *pNode, sal_Int32 nStart, sal_Int32 nEnd, const SfxPoolItem &rPoolItem)
 
EditPaM ConnectParagraphs(ContentNode *pLeft, ContentNode *pRight)
 
static OUString GetSepStr(LineEnd eEnd)
 
void CreateDefFont(bool bUseStyles)
 
Link< LinkParamNone *, void > aModifyHdl
 
EditPaM InsertText(EditPaM aPaM, std::u16string_view rStr)
 
void Release(sal_Int32 nPos)
does not delete
 
EditPaM InsertParaBreak(EditPaM aPaM, bool bKeepEndingAttribs)
 
void dumpAsXml(xmlTextWriterPtr pWriter) const
 
EditPaM InsertFeature(EditPaM aPaM, const SfxPoolItem &rItem)
 
sal_Int32 GetTextLen() const
 
const ContentNode * operator[](sal_Int32 nPos) const
 
EditDoc(SfxItemPool *pItemPool)
 
EditPaM GetStartPaM() const
 
virtual ~EditEngineItemPool() override
 
std::shared_ptr< DefItems > m_xDefItems
 
sal_Int32 FindLine(sal_Int32 nChar, bool bInclEnd)
 
void DeleteFromLine(sal_Int32 nDelFrom)
 
void Insert(sal_Int32 nPos, EditLine *p)
 
const EditLine & operator[](sal_Int32 nPos) const
 
sal_Int32 GetStartPortion() const
 
sal_Int32 GetEndPortion() const
 
CharPosArrayType aPositions
 
void SetStartPosX(sal_Int32 start)
 
EditLine & operator=(const EditLine &rLine)
 
sal_Int32 GetStart() const
 
Size CalcTextSize(ParaPortion &rParaPortion)
 
void SetHeight(sal_uInt16 nH, sal_uInt16 nTxtH=0)
 
void SetIndex(sal_Int32 n)
 
void SetNode(ContentNode *p)
 
const ContentNode * GetNode() const
 
sal_Int32 GetIndex() const
 
bool DbgIsBuggy(EditDoc const &rDoc) const
 
EditSelection & operator=(const EditPaM &r)
 
bool DbgIsBuggy(EditDoc const &rDoc) const
 
void Adjust(const EditDoc &rNodes)
 
std::shared_ptr< DefItems > GetDefItems()
 
void Insert(const SfxPoolItem *pItem)
 
const SfxPoolItem * Next()
 
const SfxPoolItem * First()
 
SAL_WARN_UNUSED_RESULT Point LogicToLogic(const Point &rPtSource, const MapMode *pMapModeSource, const MapMode *pMapModeDest) const
 
sal_Int32 GetPos(const ParaPortion *p) const
 
std::vector< std::unique_ptr< ParaPortion > > maPortions
 
tools::Long GetYOffset(const ParaPortion *pPPortion) const
 
static void DbgCheck(ParaPortionList const &, EditDoc const &rDoc)
 
void Insert(sal_Int32 nPos, std::unique_ptr< ParaPortion > p)
 
void Append(std::unique_ptr< ParaPortion > p)
 
void Remove(sal_Int32 nPos)
 
std::unique_ptr< ParaPortion > Release(sal_Int32 nPos)
 
const ParaPortion * SafeGetObject(sal_Int32 nPos) const
 
ParaPortion * operator[](sal_Int32 nPos)
 
sal_Int32 FindParagraph(tools::Long nYOffset) const
 
WritingDirectionInfos aWritingDirectionInfos
 
ParaPortion(const ParaPortion &)=delete
 
TextPortionList & GetTextPortions()
 
void MarkInvalid(sal_Int32 nStart, sal_Int32 nDiff)
 
tools::Long GetHeight() const
 
sal_Int32 nInvalidPosStart
 
ScriptTypePosInfos aScriptInfos
 
sal_Int32 GetLineNumber(sal_Int32 nIndex) const
 
ContentNode * GetNode() const
 
void CorrectValuesBehindLastFormattedLine(sal_Int32 nLastFormattedLine)
 
void SetVisible(bool bVisible)
 
void MarkSelectionInvalid(sal_Int32 nStart)
 
sal_uInt16 GetTrueSlotId(sal_uInt16 nWhich) const
 
const T & Put(std::unique_ptr< T > xItem, sal_uInt16 nWhich=0)
 
void SetDefaults(std::vector< SfxPoolItem * > *pDefaults)
 
sal_uInt16 GetTrueWhich(sal_uInt16 nSlot, bool bDeep=true) const
 
void Remove(const SfxPoolItem &)
 
void SetSecondaryPool(SfxItemPool *pPool)
 
virtual MapUnit GetMetric(sal_uInt16 nWhich) const
 
SfxItemPool * GetPool() const
 
void dumpAsXml(xmlTextWriterPtr pWriter) const
 
sal_uInt16 ClearItem(sal_uInt16 nWhich=0)
 
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
 
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
 
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
 
bool Set(const SfxItemSet &, bool bDeep=true)
 
void InvalidateItem(sal_uInt16 nWhich)
 
std::unique_ptr< SfxPoolItem > CloneSetWhich(sal_uInt16 nNewWhich) const
 
virtual SfxPoolItem * Clone(SfxItemPool *pPool=nullptr) const=0
 
virtual SfxStyleSheetBase * Find(const OUString &, SfxStyleFamily eFam, SfxStyleSearchBits n=SfxStyleSearchBits::All)
 
const OUString & GetName() const
 
SfxStyleFamily GetFamily() const
 
virtual const OUString & GetFollow() const
 
virtual SfxItemSet & GetItemSet()
 
SfxStyleSheetBasePool * GetPool()
 
constexpr tools::Long Height() const
 
tools::Long AdjustWidth(tools::Long n)
 
void setHeight(tools::Long nHeight)
 
constexpr tools::Long Width() const
 
SvxColorItem item describes a color.
 
sal_uInt8 & GetProportionalHeight()
 
This item stores a field (SvxFieldData).
 
sal_uInt32 GetHeight() const
 
void SetHeight(sal_uInt32 nNewHeight, const sal_uInt16 nNewProp=100, MapUnit eUnit=MapUnit::MapRelative)
 
This item describes a Font.
 
FontFamily GetFamily() const
 
FontPitch GetPitch() const
 
rtl_TextEncoding GetCharSet() const
 
const OUString & GetFamilyName() const
 
void SetPropr(const sal_uInt8 nNewPropr)
 
void SetNonAutoEscapement(short nNewEsc, const OutputDevice *pOutDev=nullptr)
 
void SetCaseMap(const SvxCaseMap eNew)
 
short GetTextFirstLineOffset() const
 
void SetRight(const tools::Long nR, const sal_uInt16 nProp=100)
 
tools::Long GetRight() const
 
void SetTextLeft(const tools::Long nL, const sal_uInt16 nProp=100)
 
tools::Long GetTextLeft() const
 
void SetTextFirstLineOffset(const short nF, const sal_uInt16 nProp=100)
 
LanguageType GetLanguage() const
 
SvxLineSpaceRule GetLineSpaceRule() const
 
sal_uInt16 GetLineHeight() const
 
void SetLineHeight(const sal_uInt16 nHeight)
 
FontItalic GetPosture() const
 
void SetDefaultDistance(sal_Int32 nDefaultDistancenDefTabSize)
 
bool Insert(const SvxTabStop &rTab)
 
sal_Int32 GetDefaultDistance() const
 
sal_Unicode & GetDecimal()
 
SvxTabAdjust & GetAdjustment()
 
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
 
FontWeight GetWeight() const
 
void Append(TextPortion *p)
 
sal_Int32 GetPos(const TextPortion *p) const
 
sal_Int32 GetStartPos(sal_Int32 nPortion)
 
void DeleteFromPortion(sal_Int32 nDelFrom)
 
const TextPortion & operator[](sal_Int32 nPos) const
 
void Remove(sal_Int32 nPos)
 
sal_Int32 FindPortion(sal_Int32 nCharPos, sal_Int32 &rPortionStart, bool bPreferStartingPortion=false) const
 
void Insert(sal_Int32 nPos, TextPortion *p)
 
PortionKind GetKind() const
 
const Size & GetSize() const
 
Keeps track of misspelled ranges in paragraph.
 
void SetFontSize(const Size &)
 
void SetOrientation(Degree10 nLineOrientation)
 
void SetVertical(bool bVertical)
 
void SetOutline(bool bOutline)
 
void SetWordLineMode(bool bWordLine)
 
void SetPitch(FontPitch ePitch)
 
void SetTransparent(bool bTransparent)
 
void SetFillColor(const Color &)
 
void SetColor(const Color &)
 
void SetItalic(FontItalic)
 
void SetWeight(FontWeight)
 
void SetFamily(FontFamily)
 
void SetUnderline(FontLineStyle)
 
void SetCharSet(rtl_TextEncoding)
 
const Size & GetFontSize() const
 
void SetKerning(FontKerning nKerning)
 
void SetAlignment(TextAlign)
 
void SetFixKerning(const short nSpacing)
 
void SetOverline(FontLineStyle)
 
void SetFamilyName(const OUString &rFamilyName)
 
void SetLanguage(LanguageType)
 
void SetShadow(bool bShadow)
 
void SetRelief(FontRelief)
 
void SetEmphasisMark(FontEmphasisMark)
 
void SetStrikeout(FontStrikeout)
 
#define DBG_ASSERT(sCon, aError)
 
#define EE_PARA_NOT_FOUND
 
void CheckOrderedList(const CharAttribList::AttribsType &rAttribs)
 
bool IsScriptItemValid(sal_uInt16 nItemId, short nScriptType)
 
bool operator!=(const EditPaM &r1, const EditPaM &r2)
 
EditCharAttrib * MakeCharAttrib(SfxItemPool &rPool, const SfxPoolItem &rAttr, sal_Int32 nS, sal_Int32 nE)
 
sal_uInt16 GetScriptItemId(sal_uInt16 nItemId, SvtScriptType nScriptType)
 
void ConvertItem(std::unique_ptr< SfxPoolItem > &rPoolItem, MapUnit eSourceUnit, MapUnit eDestUnit)
 
void CreateFont(SvxFont &rFont, const SfxItemSet &rSet, bool bSearchInParent, SvtScriptType nScriptType)
 
bool operator==(const EditLine &r1, const EditLine &r2)
 
const SfxItemInfo aItemInfos[EDITITEMCOUNT]
 
void ConvertAndPutItems(SfxItemSet &rDest, const SfxItemSet &rSource, const MapUnit *pSourceUnit, const MapUnit *pDestUnit)
 
EditCharAttrib * GetAttrib(CharAttribList::AttribsType &rAttribs, std::size_t nAttr)
 
constexpr TypedWhichId< SvxContourItem > EE_CHAR_OUTLINE(EE_CHAR_START+8)
 
constexpr TypedWhichId< SvxKerningItem > EE_CHAR_KERNING(EE_CHAR_START+12)
 
constexpr TypedWhichId< SvxFontItem > EE_CHAR_FONTINFO_CJK(EE_CHAR_START+17)
 
constexpr TypedWhichId< SvxFieldItem > EE_FEATURE_FIELD(EE_FEATURE_NOTCONV+1)
 
constexpr TypedWhichId< SfxBoolItem > EE_PARA_BULLETSTATE(EE_PARA_START+9)
 
constexpr TypedWhichId< SvxTabStopItem > EE_PARA_TABS(EE_PARA_START+17)
 
constexpr sal_uInt16 EDITITEMCOUNT(EE_ITEMS_END - EE_ITEMS_START+1)
 
constexpr TypedWhichId< SvxUnderlineItem > EE_CHAR_UNDERLINE(EE_CHAR_START+5)
 
constexpr TypedWhichId< SvxFontHeightItem > EE_CHAR_FONTHEIGHT(EE_CHAR_START+2)
 
constexpr TypedWhichId< SvxAutoKernItem > EE_CHAR_PAIRKERNING(EE_CHAR_START+11)
 
constexpr TypedWhichId< SvxShadowedItem > EE_CHAR_SHADOW(EE_CHAR_START+9)
 
constexpr TypedWhichId< SvxULSpaceItem > EE_PARA_ULSPACE(EE_PARA_START+14)
 
constexpr TypedWhichId< SvxOverlineItem > EE_CHAR_OVERLINE(EE_CHAR_START+29)
 
constexpr sal_uInt16 EE_PARA_START(EE_ITEMS_START+0)
 
constexpr TypedWhichId< SvxLanguageItem > EE_CHAR_LANGUAGE_CTL(EE_CHAR_START+16)
 
constexpr sal_uInt16 EE_FEATURE_LINEBR(EE_FEATURE_TAB+1)
 
constexpr TypedWhichId< SvxWeightItem > EE_CHAR_WEIGHT(EE_CHAR_START+4)
 
constexpr TypedWhichId< SvxLRSpaceItem > EE_PARA_LRSPACE(EE_PARA_START+13)
 
constexpr sal_uInt16 EE_ITEMS_END(EE_FEATURE_END)
 
constexpr TypedWhichId< SvxColorItem > EE_CHAR_COLOR(EE_CHAR_START+0)
 
constexpr TypedWhichId< SvxWeightItem > EE_CHAR_WEIGHT_CTL(EE_CHAR_START+22)
 
constexpr TypedWhichId< SvxCrossedOutItem > EE_CHAR_STRIKEOUT(EE_CHAR_START+6)
 
constexpr TypedWhichId< SvxPostureItem > EE_CHAR_ITALIC(EE_CHAR_START+7)
 
constexpr TypedWhichId< SfxGrabBagItem > EE_CHAR_GRABBAG(EE_CHAR_START+31)
 
constexpr TypedWhichId< SvxLineSpacingItem > EE_PARA_SBL(EE_PARA_START+15)
 
constexpr TypedWhichId< SvxEmphasisMarkItem > EE_CHAR_EMPHASISMARK(EE_CHAR_START+25)
 
constexpr TypedWhichId< SvxEscapementItem > EE_CHAR_ESCAPEMENT(EE_CHAR_START+10)
 
constexpr sal_uInt16 EE_FEATURE_START(EE_CHAR_END+1)
 
constexpr sal_uInt16 EE_CHAR_END(EE_CHAR_START+32)
 
constexpr TypedWhichId< SvxFontHeightItem > EE_CHAR_FONTHEIGHT_CTL(EE_CHAR_START+20)
 
constexpr TypedWhichId< SvxWeightItem > EE_CHAR_WEIGHT_CJK(EE_CHAR_START+21)
 
constexpr TypedWhichId< SvxLanguageItem > EE_CHAR_LANGUAGE_CJK(EE_CHAR_START+15)
 
constexpr sal_uInt16 EE_FEATURE_TAB(EE_FEATURE_START+0)
 
constexpr TypedWhichId< SvxPostureItem > EE_CHAR_ITALIC_CJK(EE_CHAR_START+23)
 
constexpr TypedWhichId< SvxCaseMapItem > EE_CHAR_CASEMAP(EE_CHAR_START+30)
 
constexpr TypedWhichId< SvxFontItem > EE_CHAR_FONTINFO_CTL(EE_CHAR_START+18)
 
constexpr TypedWhichId< SvxColorItem > EE_CHAR_BKGCOLOR(EE_CHAR_START+32)
 
constexpr TypedWhichId< SvxPostureItem > EE_CHAR_ITALIC_CTL(EE_CHAR_START+24)
 
constexpr TypedWhichId< SvxCharScaleWidthItem > EE_CHAR_FONTWIDTH(EE_CHAR_START+3)
 
constexpr TypedWhichId< SvxLanguageItem > EE_CHAR_LANGUAGE(EE_CHAR_START+14)
 
constexpr TypedWhichId< SvXMLAttrContainerItem > EE_CHAR_XMLATTRIBS(EE_CHAR_START+28)
 
constexpr sal_uInt16 EE_ITEMS_START(OWN_ATTR_VALUE_END+1)
 
constexpr TypedWhichId< SvxWordLineModeItem > EE_CHAR_WLM(EE_CHAR_START+13)
 
constexpr TypedWhichId< SvxCharReliefItem > EE_CHAR_RELIEF(EE_CHAR_START+26)
 
constexpr TypedWhichId< SvxFontHeightItem > EE_CHAR_FONTHEIGHT_CJK(EE_CHAR_START+19)
 
constexpr TypedWhichId< SvxFontItem > EE_CHAR_FONTINFO(EE_CHAR_START+1)
 
struct _xmlTextWriter * xmlTextWriterPtr
 
sal_Int32 nFirstLineOffset
 
#define SAL_WARN_IF(condition, area, stream)
 
#define SAL_WARN(area, stream)
 
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
 
std::unique_ptr< char[]> aBuffer