summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Versini <arnaud.versini@gmail.com>2012-03-18 10:20:37 +0100
committerStephan Bergmann <sbergman@redhat.com>2012-03-21 12:30:36 +0100
commit831a8e8f6dcadb48b9d240b8d8d5bfe67742bf67 (patch)
treef08473afa50bb53b2c60bc0b437a9eb92cbc474b
parenta4788b254268aa2d61b14678301f22cdbd27d2e7 (diff)
Use ptr_vector instead of SV_DECL_PTRARR_DEL for WW8MergeGroups
-rw-r--r--sw/source/filter/ww8/ww8par2.cxx59
1 files changed, 25 insertions, 34 deletions
diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx
index b78030ccad90..84fcfc50cda3 100644
--- a/sw/source/filter/ww8/ww8par2.cxx
+++ b/sw/source/filter/ww8/ww8par2.cxx
@@ -97,8 +97,7 @@ public:
typedef WW8SelBoxInfo* WW8SelBoxInfoPtr;
-SV_DECL_PTRARR_DEL(WW8MergeGroups, WW8SelBoxInfoPtr, 16)
-SV_IMPL_PTRARR(WW8MergeGroups, WW8SelBoxInfoPtr)
+typedef boost::ptr_vector<WW8SelBoxInfo> WW8MergeGroups;
struct WW8TabBandDesc
{
@@ -186,7 +185,7 @@ class WW8TabDesc
SwTableBoxes* pTabBoxes; // Boxen-Array in akt. Zeile
SwTableBox* pTabBox; // akt. Zelle
- WW8MergeGroups* pMergeGroups; // Listen aller zu verknuepfenden Zellen
+ WW8MergeGroups aMergeGroups; // Listen aller zu verknuepfenden Zellen
WW8_TCell* pAktWWCell;
@@ -224,7 +223,7 @@ class WW8TabDesc
void InsertCells( short nIns );
void AdjustNewBand();
- // durchsucht pMergeGroups, meldet Index der ersten, passenden Gruppe bzw.
+ // durchsucht aMergeGroups, meldet Index der ersten, passenden Gruppe bzw.
// -1 Details siehe bei der Implementierung
bool FindMergeGroup(short nX1, short nWidth, bool bExact, short& nMGrIdx);
@@ -1786,7 +1785,6 @@ WW8TabDesc::WW8TabDesc(SwWW8ImplReader* pIoClass, WW8_CP nStartCp) :
pTabLine(0),
pTabBoxes(0),
pTabBox(0),
- pMergeGroups(0),
pAktWWCell(0),
nRows(0),
nDefaultSwCols(0),
@@ -2112,7 +2110,6 @@ WW8TabDesc::~WW8TabDesc()
}
delete pParentPos;
- delete pMergeGroups;
}
void WW8TabDesc::CalcDefaults()
@@ -2630,11 +2627,6 @@ void WW8TabDesc::MergeCells()
short nX1 = pActBand->nCenter[ i ];
short nWidth = pActBand->nWidth[ i ];
- // 0. falls noetig das Array fuer die Merge-Gruppen
- // anlegen
- if( !pMergeGroups )
- pMergeGroups = new WW8MergeGroups;
-
// 2. aktuelle Merge-Gruppe anlegen
pActMGroup = new WW8SelBoxInfo( nX1, nWidth );
@@ -2662,11 +2654,11 @@ void WW8TabDesc::MergeCells()
while ( FindMergeGroup( nX1, pActMGroup->nGroupWidth,
false, nMGrIdx ) )
{
- (*pMergeGroups)[ nMGrIdx ]->bGroupLocked = true;
+ aMergeGroups[ nMGrIdx ].bGroupLocked = true;
}
// 3. und in Gruppen-Array eintragen
- pMergeGroups->Insert(pActMGroup, pMergeGroups->Count());
+ aMergeGroups.push_back(pActMGroup);
}
// ggfs. akt. Box zu einer Merge-Gruppe hinzufuegen (dies
@@ -2739,22 +2731,21 @@ void WW8TabDesc::FinishSwTable()
MergeCells();
// falls noetig, zu mergende Zellen gruppenweise zusammenfassen
- if( pMergeGroups )
+ if( !aMergeGroups.empty() )
{
// bearbeite alle Merge-Gruppen nacheinander
- WW8SelBoxInfo* pActMGroup;
- sal_uInt16 nActBoxCount;
-
- for (sal_uInt16 iGr = 0; iGr < pMergeGroups->Count(); ++iGr)
+ for (
+ WW8MergeGroups::iterator groupIt = aMergeGroups.begin();
+ groupIt < aMergeGroups.end();
+ groupIt++)
{
- pActMGroup = (*pMergeGroups)[ iGr ];
- nActBoxCount = pActMGroup->size();
+ sal_uInt16 nActBoxCount = groupIt->size();
- if( ( 1 < nActBoxCount ) && pActMGroup && pActMGroup->begin()->second )
+ if( ( 1 < nActBoxCount ) && groupIt->begin()->second )
{
- const sal_uInt16 nRowSpan = pActMGroup->size();
+ const sal_uInt16 nRowSpan = groupIt->size();
sal_uInt16 n = 0;
- for( SwSelBoxes::const_iterator it = pActMGroup->begin(); it != pActMGroup->end(); ++it )
+ for( SwSelBoxes::const_iterator it = groupIt->begin(); it != groupIt->end(); ++it )
{
SwTableBox* pCurrentBox = it->second;
const long nRowSpanSet = n == 0 ?
@@ -2766,12 +2757,12 @@ void WW8TabDesc::FinishSwTable()
}
}
pIo->pFmtOfJustInsertedApo = 0;
- DELETEZ( pMergeGroups );
+ aMergeGroups.clear();
}
}
-// durchsucht pMergeGroups, meldet Index der ersten, passenden Gruppe bzw. -1
+// durchsucht aMergeGroups, meldet Index der ersten, passenden Gruppe bzw. -1
//
// Parameter: nXcenter = Mittenposition der anfragenden Box
// nWidth = Breite der anfragenden Box
@@ -2782,12 +2773,12 @@ bool WW8TabDesc::FindMergeGroup(short nX1, short nWidth, bool bExact,
short& nMGrIdx)
{
nMGrIdx = -1;
- if( pMergeGroups )
+ if( !aMergeGroups.empty() )
{
// noch als gueltig angesehener Bereich in der Naehe der Grenzen
const short nToleranz = 4;
// die aktuell untersuchte Gruppe
- WW8SelBoxInfoPtr pActGroup;
+
// Boxgrenzen
short nX2 = nX1 + nWidth;
// ungefaehre Gruppengrenzen
@@ -2795,16 +2786,16 @@ bool WW8TabDesc::FindMergeGroup(short nX1, short nWidth, bool bExact,
short nGrX2;
// improvement: search backwards
- for ( short iGr = pMergeGroups->Count() - 1; iGr >= 0; --iGr )
+ for ( short iGr = aMergeGroups.size() - 1; iGr >= 0; --iGr )
{
// die aktuell untersuchte Gruppe
- pActGroup = (*pMergeGroups)[ iGr ];
- if (!pActGroup->bGroupLocked)
+ WW8SelBoxInfo& rActGroup = aMergeGroups[ iGr ];
+ if (!rActGroup.bGroupLocked)
{
// ungefaehre Gruppengrenzen mit Toleranz nach *aussen* hin
- nGrX1 = pActGroup->nGroupXStart - nToleranz;
- nGrX2 = pActGroup->nGroupXStart
- +pActGroup->nGroupWidth + nToleranz;
+ nGrX1 = rActGroup.nGroupXStart - nToleranz;
+ nGrX2 = rActGroup.nGroupXStart
+ +rActGroup.nGroupWidth + nToleranz;
//
// Falls Box reinpasst, melde auf jeden Fall den Erfolg
//
@@ -3342,7 +3333,7 @@ SwTableBox* WW8TabDesc::UpdateTableMergeGroup( WW8_TCell& rCell,
short nMGrIdx;
if( FindMergeGroup( pActBand->nCenter[ nCol ],
pActBand->nWidth[ nCol ], true, nMGrIdx ) )
- pTheMergeGroup = (*pMergeGroups)[ nMGrIdx ];
+ pTheMergeGroup = &aMergeGroups.at( nMGrIdx );
}
if( pTheMergeGroup )
{