diff options
author | Arnaud Versini <arnaud.versini@gmail.com> | 2012-03-18 10:20:37 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2012-03-21 12:30:36 +0100 |
commit | 831a8e8f6dcadb48b9d240b8d8d5bfe67742bf67 (patch) | |
tree | f08473afa50bb53b2c60bc0b437a9eb92cbc474b /sw | |
parent | a4788b254268aa2d61b14678301f22cdbd27d2e7 (diff) |
Use ptr_vector instead of SV_DECL_PTRARR_DEL for WW8MergeGroups
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/filter/ww8/ww8par2.cxx | 59 |
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 ) { |