SV_DECL_VARARR->std::vector

This commit is contained in:
August Sodora
2011-12-23 02:30:41 -05:00
parent b575f4b1a2
commit 4d4a67748e
15 changed files with 89 additions and 166 deletions

View File

@@ -33,8 +33,6 @@
#include <tools/string.hxx>
#include "editeng/editengdllapi.h"
#include <svl/svarray.hxx>
class SfxItemSet;
class SfxPoolItem;
class SvParser;
@@ -305,8 +303,6 @@ struct EECharAttrib
xub_StrLen nEnd;
};
SV_DECL_VARARR_VISIBILITY( EECharAttribArray, EECharAttrib, 0, 4, EDITENG_DLLPUBLIC )
struct MoveParagraphsInfo
{
sal_uInt16 nStartPara;

View File

@@ -236,7 +236,7 @@ public:
virtual void SetParaAttribs( sal_uInt16 nPara, const SfxItemSet& rSet );
virtual const SfxItemSet& GetParaAttribs( sal_uInt16 nPara ) const;
void GetCharAttribs( sal_uInt16 nPara, EECharAttribArray& rLst ) const;
void GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const;
SfxItemSet GetAttribs( sal_uInt16 nPara, sal_uInt16 nStart, sal_uInt16 nEnd, sal_uInt8 nFlags = 0xFF ) const;
SfxItemSet GetAttribs( const ESelection& rSel, sal_Bool bOnlyHardAttrib = EditEngineAttribs_All );

View File

@@ -34,14 +34,16 @@
#include <rsc/rscsfx.hxx>
#include <svl/itemset.hxx>
#include <editeng/eeitem.hxx>
#include <editeng/editdata.hxx>
#include "editeng/editengdllapi.h"
#include <vector>
DBG_NAMEEX( EE_EditTextObject )
class SfxItemPool;
class SfxStyleSheetPool;
class SvxFieldItem;
class EECharAttribArray;
#define EDTOBJ_SETTINGS_ULITEMSUMMATION 0x00000001
#define EDTOBJ_SETTINGS_ULITEMFIRSTPARA 0x00000002
@@ -96,7 +98,7 @@ public:
virtual sal_Bool HasOnlineSpellErrors() const;
virtual sal_Bool HasCharAttribs( sal_uInt16 nWhich = 0 ) const;
virtual void GetCharAttribs( sal_uInt16 nPara, EECharAttribArray& rLst ) const;
virtual void GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const;
virtual sal_Bool RemoveCharAttribs( sal_uInt16 nWhich = 0 );
virtual sal_Bool RemoveParaAttribs( sal_uInt16 nWhich = 0 );

View File

@@ -55,7 +55,6 @@ class SvxViewForwarder;
class SvxEditViewForwarder;
class SvxFieldItem;
class SfxBroadcaster;
class EECharAttribArray;
class SvxUnoTextRangeBase;
typedef std::list< SvxUnoTextRangeBase* > SvxUnoTextRangeBaseList;

View File

@@ -97,7 +97,6 @@ using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::linguistic2;
DBG_NAME( EditEngine )
DBG_NAMEEX( EditView )
@@ -105,8 +104,6 @@ DBG_NAMEEX( EditView )
static sal_Bool bDebugPaint = sal_False;
#endif
SV_IMPL_VARARR( EECharAttribArray, EECharAttrib );
static SfxItemPool* pGlobalPool=0;
// ----------------------------------------------------------------------
@@ -1498,7 +1495,7 @@ const SfxPoolItem& EditEngine::GetParaAttrib( sal_uInt16 nPara, sal_uInt16 nWhic
return pImpEditEngine->GetParaAttrib( nPara, nWhich );
}
void EditEngine::GetCharAttribs( sal_uInt16 nPara, EECharAttribArray& rLst ) const
void EditEngine::GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const
{
DBG_CHKTHIS( EditEngine, 0 );
pImpEditEngine->GetCharAttribs( nPara, rLst );

View File

@@ -235,7 +235,7 @@ sal_Bool EditTextObject::HasCharAttribs( sal_uInt16 ) const
return sal_False;
}
void EditTextObject::GetCharAttribs( sal_uInt16 /*nPara*/, EECharAttribArray& /*rLst*/ ) const
void EditTextObject::GetCharAttribs( sal_uInt16 /*nPara*/, std::vector<EECharAttrib>& /*rLst*/ ) const
{
OSL_FAIL( "Virtual method direct from EditTextObject!" );
}
@@ -792,9 +792,9 @@ sal_Bool BinTextObject::HasCharAttribs( sal_uInt16 _nWhich ) const
return sal_False;
}
void BinTextObject::GetCharAttribs( sal_uInt16 nPara, EECharAttribArray& rLst ) const
void BinTextObject::GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const
{
rLst.Remove( 0, rLst.Count() );
rLst.clear();
ContentInfo* pC = GetContents().GetObject( nPara );
if ( pC )
{
@@ -806,7 +806,7 @@ void BinTextObject::GetCharAttribs( sal_uInt16 nPara, EECharAttribArray& rLst )
aEEAttr.nPara = nPara;
aEEAttr.nStart = pAttr->GetStart();
aEEAttr.nEnd = pAttr->GetEnd();
rLst.Insert( aEEAttr, rLst.Count() );
rLst.push_back(aEEAttr);
}
}
}

View File

@@ -247,7 +247,7 @@ public:
virtual sal_Bool HasOnlineSpellErrors() const;
virtual sal_Bool HasCharAttribs( sal_uInt16 nWhich = 0 ) const;
virtual void GetCharAttribs( sal_uInt16 nPara, EECharAttribArray& rLst ) const;
virtual void GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const;
virtual sal_Bool RemoveCharAttribs( sal_uInt16 nWhich = 0 );
virtual sal_Bool RemoveParaAttribs( sal_uInt16 nWhich = 0 );

View File

@@ -550,7 +550,7 @@ private:
sal_uInt16 GetParaAttrib( sal_uInt8 nFunc, EditSelection aSel );
void SetCharAttrib( EditSelection aSel, const SfxPoolItem& rItem );
void ParaAttribsToCharAttribs( ContentNode* pNode );
void GetCharAttribs( sal_uInt16 nPara, EECharAttribArray& rLst ) const;
void GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const;
EditTextObject* CreateBinTextObject( EditSelection aSelection, SfxItemPool*, sal_Bool bAllowBigObjects = sal_False, sal_uInt16 nBigObjStart = 0 ) const;
void StoreBinTextObject( SvStream& rOStream, BinTextObject& rTextObject );

View File

@@ -742,21 +742,22 @@ const SfxPoolItem& ImpEditEngine::GetParaAttrib( sal_uInt16 nPara, sal_uInt16 nW
return pNode->GetContentAttribs().GetItem( nWhich );
}
void ImpEditEngine::GetCharAttribs( sal_uInt16 nPara, EECharAttribArray& rLst ) const
void ImpEditEngine::GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const
{
rLst.Remove( 0, rLst.Count() );
rLst.clear();
ContentNode* pNode = aEditDoc.GetObject( nPara );
if ( pNode )
{
for ( sal_uInt16 nAttr = 0; nAttr < pNode->GetCharAttribs().Count(); nAttr++ )
rLst.reserve(pNode->GetCharAttribs().Count());
for (size_t i = 0; i < pNode->GetCharAttribs().Count(); ++i)
{
EditCharAttribPtr pAttr = pNode->GetCharAttribs().GetAttribs()[ nAttr ];
EditCharAttribPtr pAttr = pNode->GetCharAttribs().GetAttribs()[i];
EECharAttrib aEEAttr;
aEEAttr.pAttr = pAttr->GetItem();
aEEAttr.nPara = nPara;
aEEAttr.nStart = pAttr->GetStart();
aEEAttr.nEnd = pAttr->GetEnd();
rLst.Insert( aEEAttr, rLst.Count() );
rLst.push_back(aEEAttr);
}
}
}

View File

@@ -132,37 +132,33 @@ void SvxEditSourceHint::SetEndValue( sal_uLong n )
sal_Bool SvxEditSourceHelper::GetAttributeRun( sal_uInt16& nStartIndex, sal_uInt16& nEndIndex, const EditEngine& rEE, sal_uInt16 nPara, sal_uInt16 nIndex )
{
EECharAttribArray aCharAttribs;
std::vector<EECharAttrib> aCharAttribs;
rEE.GetCharAttribs( nPara, aCharAttribs );
// find closest index in front of nIndex
sal_uInt16 nAttr, nCurrIndex;
sal_Int32 nClosestStartIndex;
for( nAttr=0, nClosestStartIndex=0; nAttr<aCharAttribs.Count(); ++nAttr )
sal_uInt16 nCurrIndex;
sal_Int32 nClosestStartIndex = 0;
for(std::vector<EECharAttrib>::iterator i = aCharAttribs.begin(); i < aCharAttribs.end(); ++i)
{
nCurrIndex = aCharAttribs[nAttr].nStart;
nCurrIndex = i->nStart;
if( nCurrIndex > nIndex )
break; // aCharAttribs array is sorted in increasing order for nStart values
if( nCurrIndex > nClosestStartIndex )
else if( nCurrIndex > nClosestStartIndex )
{
nClosestStartIndex = nCurrIndex;
}
}
// find closest index behind of nIndex
sal_Int32 nClosestEndIndex;
for( nAttr=0, nClosestEndIndex=rEE.GetTextLen(nPara); nAttr<aCharAttribs.Count(); ++nAttr )
sal_Int32 nClosestEndIndex = rEE.GetTextLen(nPara);
for(std::vector<EECharAttrib>::iterator i = aCharAttribs.begin(); i < aCharAttribs.end(); ++i)
{
nCurrIndex = aCharAttribs[nAttr].nEnd;
nCurrIndex = i->nEnd;
if( nCurrIndex > nIndex &&
nCurrIndex < nClosestEndIndex )
{
if( nCurrIndex > nIndex && nCurrIndex < nClosestEndIndex )
nClosestEndIndex = nCurrIndex;
}
}
nStartIndex = static_cast<sal_uInt16>( nClosestStartIndex );

View File

@@ -177,7 +177,7 @@ void SvxEditEngineForwarder::FieldClicked( const SvxFieldItem& rField, sal_uInt1
sal_uInt16 GetSvxEditEngineItemState( EditEngine& rEditEngine, const ESelection& rSel, sal_uInt16 nWhich )
{
EECharAttribArray aAttribs;
std::vector<EECharAttrib> aAttribs;
const SfxPoolItem* pLastItem = NULL;
@@ -207,83 +207,44 @@ sal_uInt16 GetSvxEditEngineItemState( EditEngine& rEditEngine, const ESelection&
const SfxPoolItem* pParaItem = NULL;
for( sal_uInt16 nAttrib = 0; nAttrib < aAttribs.Count(); nAttrib++ )
for(std::vector<EECharAttrib>::const_iterator i = aAttribs.begin(); i < aAttribs.end(); ++i)
{
struct EECharAttrib aAttrib = aAttribs.GetObject( nAttrib );
DBG_ASSERT( aAttrib.pAttr, "GetCharAttribs gives corrupt data" );
DBG_ASSERT(i->pAttr, "GetCharAttribs gives corrupt data");
const sal_Bool bEmptyPortion = aAttrib.nStart == aAttrib.nEnd;
if( (!bEmptyPortion && (aAttrib.nStart >= nEndPos)) || (bEmptyPortion && (aAttrib.nStart > nEndPos)) )
const sal_Bool bEmptyPortion = i->nStart == i->nEnd;
if((!bEmptyPortion && i->nStart >= nEndPos) ||
(bEmptyPortion && i->nStart > nEndPos))
break; // break if we are already behind our selektion
if( (!bEmptyPortion && (aAttrib.nEnd <= nPos)) || (bEmptyPortion && (aAttrib.nEnd < nPos)) )
if((!bEmptyPortion && i->nEnd <= nPos) ||
(bEmptyPortion && i->nEnd < nPos))
continue; // or if the attribute ends before our selektion
if( aAttrib.pAttr->Which() != nWhich )
if(i->pAttr->Which() != nWhich)
continue; // skip if is not the searched item
// if we already found an item
if( pParaItem )
{
// ... and its different to this one than the state is dont care
if( *pParaItem != *aAttrib.pAttr )
if(*pParaItem != *(i->pAttr))
return SFX_ITEM_DONTCARE;
}
else
{
pParaItem = aAttrib.pAttr;
}
pParaItem = i->pAttr;
if( bEmpty )
bEmpty = sal_False;
if( !bGaps && aAttrib.nStart > nLastEnd )
if(!bGaps && i->nStart > nLastEnd)
bGaps = sal_True;
nLastEnd = aAttrib.nEnd;
nLastEnd = i->nEnd;
}
if( !bEmpty && !bGaps && nLastEnd < ( nEndPos - 1 ) )
bGaps = sal_True;
/*
// since we have no portion with our item or if there were gaps
if( bEmpty || bGaps )
{
// we need to check the paragraph item
const SfxItemSet& rParaSet = rEditEngine.GetParaAttribs( nPara );
if( rParaSet.GetItemState( nWhich ) == SFX_ITEM_SET )
{
eState = SFX_ITEM_SET;
// get item from the paragraph
const SfxPoolItem* pTempItem = rParaSet.GetItem( nWhich );
if( pParaItem )
{
if( *pParaItem != *pTempItem )
return SFX_ITEM_DONTCARE;
}
else
{
pParaItem = pTempItem;
}
// set if theres no last item or if its the same
eParaState = SFX_ITEM_SET;
}
else if( bEmpty )
{
eParaState = SFX_ITEM_DEFAULT;
}
else if( bGaps )
{
// gaps and item not set in paragraph, thats a dont care
return SFX_ITEM_DONTCARE;
}
}
else
{
eParaState = SFX_ITEM_SET;
}
*/
if( bEmpty )
eParaState = SFX_ITEM_DEFAULT;
else if( bGaps )

View File

@@ -1142,7 +1142,7 @@ void SmTextForwarder::FieldClicked(const SvxFieldItem&, sal_uInt16, sal_uInt16)
sal_uInt16 GetSvxEditEngineItemState( EditEngine& rEditEngine, const ESelection& rSel, sal_uInt16 nWhich )
{
EECharAttribArray aAttribs;
std::vector<EECharAttrib> aAttribs;
const SfxPoolItem* pLastItem = NULL;
@@ -1172,40 +1172,39 @@ sal_uInt16 GetSvxEditEngineItemState( EditEngine& rEditEngine, const ESelection&
const SfxPoolItem* pParaItem = NULL;
for( sal_uInt16 nAttrib = 0; nAttrib < aAttribs.Count(); nAttrib++ )
for(std::vector<EECharAttrib>::const_iterator i = aAttribs.begin(); i < aAttribs.end(); ++i)
{
struct EECharAttrib aAttrib = aAttribs.GetObject( nAttrib );
OSL_ENSURE( aAttrib.pAttr, "GetCharAttribs gives corrupt data" );
OSL_ENSURE( i->pAttr, "GetCharAttribs gives corrupt data" );
const sal_Bool bEmptyPortion = aAttrib.nStart == aAttrib.nEnd;
if( (!bEmptyPortion && (aAttrib.nStart >= nEndPos)) || (bEmptyPortion && (aAttrib.nStart > nEndPos)) )
const sal_Bool bEmptyPortion = (i->nStart == i->nEnd);
if( (!bEmptyPortion && (i->nStart >= nEndPos)) || (bEmptyPortion && (i->nStart > nEndPos)) )
break; // break if we are already behind our selektion
if( (!bEmptyPortion && (aAttrib.nEnd <= nPos)) || (bEmptyPortion && (aAttrib.nEnd < nPos)) )
if( (!bEmptyPortion && (i->nEnd <= nPos)) || (bEmptyPortion && (i->nEnd < nPos)) )
continue; // or if the attribute ends before our selektion
if( aAttrib.pAttr->Which() != nWhich )
if( i->pAttr->Which() != nWhich )
continue; // skip if is not the searched item
// if we already found an item
if( pParaItem )
{
// ... and its different to this one than the state is dont care
if( *pParaItem != *aAttrib.pAttr )
if( *pParaItem != *(i->pAttr) )
return SFX_ITEM_DONTCARE;
}
else
{
pParaItem = aAttrib.pAttr;
pParaItem = i->pAttr;
}
if( bEmpty )
bEmpty = false;
if( !bGaps && aAttrib.nStart > nLastEnd )
if( !bGaps && i->nStart > nLastEnd )
bGaps = true;
nLastEnd = aAttrib.nEnd;
nLastEnd = i->nEnd;
}
if( !bEmpty && !bGaps && nLastEnd < ( nEndPos - 1 ) )

View File

@@ -456,19 +456,16 @@ namespace sdr
if(aSet.GetItemState(EE_CHAR_COLOR) == SFX_ITEM_SET)
{
EditEngine* pEditEngine = const_cast<EditEngine*>(&(pOutliner->GetEditEngine()));
EECharAttribArray aAttribs;
std::vector<EECharAttrib> aAttribs;
pEditEngine->GetCharAttribs((sal_uInt16)nPara, aAttribs);
sal_uInt16 nAttrib;
for(nAttrib = 0; nAttrib < aAttribs.Count(); nAttrib++)
for(std::vector<EECharAttrib>::iterator i = aAttribs.begin(); i < aAttribs.end(); ++i)
{
struct EECharAttrib aAttrib(aAttribs.GetObject(nAttrib));
if(EE_FEATURE_FIELD == aAttrib.pAttr->Which())
if(EE_FEATURE_FIELD == i->pAttr->Which())
{
if(aAttrib.pAttr)
if(i->pAttr)
{
SvxFieldItem* pFieldItem = (SvxFieldItem*)aAttrib.pAttr;
SvxFieldItem* pFieldItem = (SvxFieldItem*)(i->pAttr);
if(pFieldItem)
{
@@ -491,20 +488,16 @@ namespace sdr
ESelection aSel((sal_uInt16)nPara, 0);
for(nAttrib = 0; nAttrib < aAttribs.Count(); nAttrib++)
for(std::vector<EECharAttrib>::iterator i = aAttribs.begin(); i < aAttribs.end(); ++i)
{
struct EECharAttrib aAttrib(aAttribs.GetObject(nAttrib));
if(EE_FEATURE_FIELD == aAttrib.pAttr->Which())
if(EE_FEATURE_FIELD == i->pAttr->Which())
{
aSel.nEndPos = aAttrib.nStart;
aSel.nEndPos = i->nStart;
if(aSel.nStartPos != aSel.nEndPos)
{
pEditEngine->QuickSetAttribs(aColorSet, aSel);
}
aSel.nStartPos = aAttrib.nEnd;
aSel.nStartPos = i->nEnd;
}
}

View File

@@ -859,7 +859,7 @@ void WW8Export::AppendFlyInFlys(const sw::Frame& rFrmFmt,
MSWord_SdrAttrIter::MSWord_SdrAttrIter( MSWordExportBase& rWr,
const EditTextObject& rEditObj, sal_uInt8 nTyp )
: MSWordAttrIter( rWr ), pEditObj(&rEditObj), pEditPool(0),
aTxtAtrArr( 0, 4 ), aChrTxtAtrArr( 0, 4 ), aChrSetArr( 0, 4 ),
aTxtAtrArr(), aChrTxtAtrArr( 0, 4 ), aChrSetArr( 0, 4 ),
mnTyp(nTyp)
{
NextPara( 0 );
@@ -898,29 +898,22 @@ rtl_TextEncoding MSWord_SdrAttrIter::GetNextCharSet() const
// der erste Parameter in SearchNext() liefert zurueck, ob es ein TxtAtr ist.
xub_StrLen MSWord_SdrAttrIter::SearchNext( xub_StrLen nStartPos )
{
xub_StrLen nPos;
xub_StrLen nMinPos = STRING_MAXLEN;
xub_StrLen i;
for( i = 0; i < aTxtAtrArr.Count(); i++ )
sal_uInt16 nMinPos = STRING_MAXLEN;
for(std::vector<EECharAttrib>::const_iterator i = aTxtAtrArr.begin(); i < aTxtAtrArr.end(); ++i)
{
const EECharAttrib& rHt = aTxtAtrArr[ i ];
nPos = rHt.nStart; // gibt erstes Attr-Zeichen
sal_uInt16 nPos = i->nStart; // gibt erstes Attr-Zeichen
if( nPos >= nStartPos && nPos <= nMinPos )
{
nMinPos = nPos;
SetCharSet(rHt, true);
SetCharSet(*i, true);
}
nPos = i->nEnd; // gibt letztes Attr-Zeichen + 1
if( nPos >= nStartPos && nPos < nMinPos )
{
nPos = rHt.nEnd; // gibt letztes Attr-Zeichen + 1
if( nPos >= nStartPos && nPos < nMinPos )
{
nMinPos = nPos;
SetCharSet(rHt, false);
}
nMinPos = nPos;
SetCharSet(*i, false);
}
}
return nMinPos;
}
@@ -978,7 +971,7 @@ void MSWord_SdrAttrIter::OutAttr( xub_StrLen nSwPos )
{
OutParaAttr(true);
if( aTxtAtrArr.Count() )
if(!aTxtAtrArr.empty())
{
const SwModify* pOldMod = m_rExport.pOutFmtNode;
m_rExport.pOutFmtNode = 0;
@@ -987,16 +980,15 @@ void MSWord_SdrAttrIter::OutAttr( xub_StrLen nSwPos )
const SfxItemPool& rDstPool = m_rExport.pDoc->GetAttrPool();
nTmpSwPos = nSwPos;
sal_uInt16 i, nWhich, nSlotId;
for( i = 0; i < aTxtAtrArr.Count(); i++ )
sal_uInt16 nWhich, nSlotId;
for(std::vector<EECharAttrib>::const_iterator i = aTxtAtrArr.begin(); i < aTxtAtrArr.end(); ++i)
{
const EECharAttrib& rHt = aTxtAtrArr[ i ];
if (nSwPos >= rHt.nStart && nSwPos < rHt.nEnd)
if (nSwPos >= i->nStart && nSwPos < i->nEnd)
{
nWhich = rHt.pAttr->Which();
nWhich = i->pAttr->Which();
if (nWhich == EE_FEATURE_FIELD)
{
OutEEField(*rHt.pAttr);
OutEEField(*(i->pAttr));
continue;
}
else if (nWhich == EE_FEATURE_TAB)
@@ -1014,7 +1006,7 @@ void MSWord_SdrAttrIter::OutAttr( xub_StrLen nSwPos )
m_rExport.CollapseScriptsforWordOk(nScript,nWhich))
{
// use always the SW-Which Id !
SfxPoolItem* pI = rHt.pAttr->Clone();
SfxPoolItem* pI = i->pAttr->Clone();
pI->SetWhich( nWhich );
m_rExport.AttrOutput().OutputItem( *pI );
delete pI;
@@ -1022,7 +1014,7 @@ void MSWord_SdrAttrIter::OutAttr( xub_StrLen nSwPos )
}
}
if( nSwPos < rHt.nStart )
if( nSwPos < i->nStart )
break;
}
@@ -1033,18 +1025,13 @@ void MSWord_SdrAttrIter::OutAttr( xub_StrLen nSwPos )
bool MSWord_SdrAttrIter::IsTxtAttr(xub_StrLen nSwPos)
{
for (sal_uInt16 i = 0; i < aTxtAtrArr.Count(); ++i)
for (std::vector<EECharAttrib>::const_iterator i = aTxtAtrArr.begin(); i < aTxtAtrArr.end(); ++i)
{
const EECharAttrib& rHt = aTxtAtrArr[ i ];
if (nSwPos >= rHt.nStart && nSwPos < rHt.nEnd)
if (nSwPos >= i->nStart && nSwPos < i->nEnd)
{
if (
(rHt.pAttr->Which() == EE_FEATURE_FIELD) ||
(rHt.pAttr->Which() == EE_FEATURE_TAB)
)
{
if (i->pAttr->Which() == EE_FEATURE_FIELD ||
i->pAttr->Which() == EE_FEATURE_TAB)
return true;
}
}
}
return false;
@@ -1058,27 +1045,19 @@ bool MSWord_SdrAttrIter::IsTxtAttr(xub_StrLen nSwPos)
// Es wird mit bDeep gesucht
const SfxPoolItem* MSWord_SdrAttrIter::HasTextItem(sal_uInt16 nWhich) const
{
const SfxPoolItem* pRet = 0;
nWhich = sw::hack::TransformWhichBetweenPools(*pEditPool,
m_rExport.pDoc->GetAttrPool(), nWhich);
if (nWhich)
{
for (sal_uInt16 i = 0; i < aTxtAtrArr.Count(); ++i)
for (std::vector<EECharAttrib>::const_iterator i = aTxtAtrArr.begin(); i < aTxtAtrArr.end(); ++i)
{
const EECharAttrib& rHt = aTxtAtrArr[i];
if (
nWhich == rHt.pAttr->Which() && nTmpSwPos >= rHt.nStart &&
nTmpSwPos < rHt.nEnd
)
{
pRet = rHt.pAttr; // Found
break;
}
else if (nTmpSwPos < rHt.nStart)
break; // dann kommt da nichts mehr
if (nWhich == i->pAttr->Which() && nTmpSwPos >= i->nStart && nTmpSwPos < i->nEnd)
return i->pAttr; // Found
else if (nTmpSwPos < i->nStart)
return NULL; // dann kommt da nichts mehr
}
}
return pRet;
return NULL;
}
const SfxPoolItem& MSWord_SdrAttrIter::GetItem( sal_uInt16 nWhich ) const

View File

@@ -1371,7 +1371,7 @@ class MSWord_SdrAttrIter : public MSWordAttrIter
private:
const EditTextObject* pEditObj;
const SfxItemPool* pEditPool;
EECharAttribArray aTxtAtrArr;
std::vector<EECharAttrib> aTxtAtrArr;
SvPtrarr aChrTxtAtrArr;
std::vector<sal_uInt16> aChrSetArr;
sal_uInt16 nPara;