[Libreoffice-commits] .: sw/source

Nigel Hawkins nhawkins at kemper.freedesktop.org
Fri Feb 18 09:26:35 PST 2011


 sw/source/filter/rtf/rtftbl.cxx   |   37 ++++++++++++++++---------------------
 sw/source/filter/rtf/swparrtf.cxx |    1 -
 sw/source/filter/rtf/swparrtf.hxx |    2 +-
 3 files changed, 17 insertions(+), 23 deletions(-)

New commits:
commit 86a965614eb70111dfd106855b1b16eaa8be7802
Author: Nigel Hawkins <n.hawkins at gmx.com>
Date:   Wed Feb 16 16:35:57 2011 +0000

    Remove use of SvBools in SwRTFParser

diff --git a/sw/source/filter/rtf/rtftbl.cxx b/sw/source/filter/rtf/rtftbl.cxx
index 386af7f..82c18e5 100644
--- a/sw/source/filter/rtf/rtftbl.cxx
+++ b/sw/source/filter/rtf/rtftbl.cxx
@@ -47,6 +47,7 @@
 #include <tblenum.hxx>
 #include <frmatr.hxx>
 #include <fmtrowsplt.hxx>
+#include <vector>
 
 using namespace ::com::sun::star;
 
@@ -162,10 +163,7 @@ void SwRTFParser::ReadTable( int nToken )
 
     enum Limits {eMAXCELLS=64000};
 
-    SvBools aMergeBackup;
-    int nCount = aMergeBoxes.Count();
-    for (USHORT i = 0; i < nCount; ++i)
-        aMergeBackup.Insert(aMergeBoxes[i], i);
+    std::vector<bool> aMergeBackup(aMergeBoxes);
 
     // kein TROWD aber ein TabellenToken -> zwischen TROWD und Tab.Token
     // waren andere Zeichen (siehe Bug 27445.rtf)
@@ -175,8 +173,8 @@ void SwRTFParser::ReadTable( int nToken )
             nToken = GetNextToken();		// RTF_TROWD ueberlesen
 
         // Flags fuer die gemergten Boxen loeschen
-        aMergeBoxes.Remove( 0, aMergeBoxes.Count() );
-        aMergeBoxes.Insert( (BOOL)FALSE, USHORT(0) );
+        aMergeBoxes.clear();
+        aMergeBoxes.push_back(false);
         nAktBox = 0;
 
         // wenn schon in einer Tabellen, dann splitte oder benutze
@@ -220,7 +218,6 @@ void SwRTFParser::ReadTable( int nToken )
 
     sal_Int16 eVerOrient = text::VertOrientation::NONE;
     long nLineHeight = 0;
-    USHORT nBoxCnt = aMergeBoxes.Count()-1;
     SwBoxFrmFmts aBoxFmts;
     SwTableBoxFmt* pBoxFmt = pDoc->MakeTableBoxFmt();
     SvxFrameDirection eDir = FRMDIR_HORI_LEFT_TOP;
@@ -287,9 +284,9 @@ void SwRTFParser::ReadTable( int nToken )
         case RTF_CLMRG:
             // would crash later on reading \cellx (#i112657#):
             // the first cell cannot be merged with earlier ones.
-            if (nBoxCnt != 0)
+            if (aMergeBoxes.size() > 1)
             {
-                aMergeBoxes[ nBoxCnt ] = TRUE;
+                aMergeBoxes.back() = TRUE;
             }
             break;
 
@@ -297,7 +294,7 @@ void SwRTFParser::ReadTable( int nToken )
             if (!bTrowdRead) {
                 SwTableBoxFmt* pFmt = pBoxFmt;
                 SwTwips nSize = nTokenValue - nTblSz;
-                if( aMergeBoxes[ nBoxCnt ] )
+                if( aMergeBoxes.back() )
                 {
                     // neue Zellen lesen und noch keine Formate vorhanden,
                     // dann benutze das der vorhergebende
@@ -333,7 +330,7 @@ void SwRTFParser::ReadTable( int nToken )
                     nSize = COL_DFLT_WIDTH;
                 pFmt->SetFmtAttr( SwFmtFrmSize( ATT_VAR_SIZE, nSize, 0 ));
                 nTblSz = nTokenValue;
-                aMergeBoxes.Insert( (BOOL)FALSE, ++nBoxCnt );
+                aMergeBoxes.push_back(FALSE);
 
                 SvxBoxItem aBox(pFmt->GetBox());
 
@@ -412,7 +409,7 @@ void SwRTFParser::ReadTable( int nToken )
         default:
             if( ( nToken & ~(0xff | RTF_TABLEDEF)) == RTF_SHADINGDEF )
             {
-                if( aMergeBoxes[ nBoxCnt ] )
+                if( aMergeBoxes.back() )
                     break;
                 ReadBackgroundAttr( nToken,
                         (SfxItemSet&)pBoxFmt->GetAttrSet(), TRUE );
@@ -420,7 +417,7 @@ void SwRTFParser::ReadTable( int nToken )
             else if( ( nToken & ~(0xff | RTF_TABLEDEF) ) == RTF_BRDRDEF ||
                       IsBorderToken(nToken))
             {
-                if( aMergeBoxes[ nBoxCnt ] )
+                if( aMergeBoxes.back() )
                     break;
 
                 SfxItemSet& rSet = (SfxItemSet&)pBoxFmt->GetAttrSet();
@@ -441,7 +438,7 @@ void SwRTFParser::ReadTable( int nToken )
 
         if( text::VertOrientation::NONE != eVerOrient )
         {
-            if( !aMergeBoxes[ nBoxCnt ] )
+            if( !aMergeBoxes.back() )
                 pBoxFmt->SetFmtAttr( SwFmtVertOrient( 0, eVerOrient ));
             eVerOrient = text::VertOrientation::NONE;
         }
@@ -453,11 +450,9 @@ void SwRTFParser::ReadTable( int nToken )
     delete pBoxFmt;
 
     // es wurde keine einzige Box erkannt
-    if( nAktBox == nBoxCnt || ( bReadNewCell && !pTableNode ))
+    if( nAktBox == aMergeBoxes.size()-1 || ( bReadNewCell && !pTableNode ))
     {
-        int nC = aMergeBackup.Count();
-        for (USHORT i = 0; i < nC; ++i)
-            aMergeBoxes.Insert(aMergeBackup[i], i);
+        aMergeBoxes.insert(aMergeBoxes.begin(), aMergeBackup.begin(), aMergeBackup.end());
         SkipToken( -1 );			// zum Letzen gueltigen zurueck
         return;
     }
@@ -814,8 +809,8 @@ void SwRTFParser::GotoNextBox()
     SwTableBoxes& rBoxes = pLine->GetTabBoxes();
     SwTableBox* pBox = rBoxes[ rBoxes.Count()-1 ];
 
-    if( ++nAktBox >= aMergeBoxes.Count() )
-        nAktBox = aMergeBoxes.Count()-1;
+    if( ++nAktBox >= aMergeBoxes.size() )
+        nAktBox = aMergeBoxes.size()-1;
 
     if( !aMergeBoxes[ nAktBox ] )
     {
@@ -835,7 +830,7 @@ void SwRTFParser::GotoNextBox()
             }
         }
 
-        if( bMove && nAktBox + 1 == aMergeBoxes.Count() )
+        if( bMove && nAktBox + 1U == aMergeBoxes.size() )
             // dann hinter die Tabelle
             pPam->Move( fnMoveForward, fnGoNode );
     }
diff --git a/sw/source/filter/rtf/swparrtf.cxx b/sw/source/filter/rtf/swparrtf.cxx
index 27a93ec..9296e12 100644
--- a/sw/source/filter/rtf/swparrtf.cxx
+++ b/sw/source/filter/rtf/swparrtf.cxx
@@ -193,7 +193,6 @@ SwRTFParser::SwRTFParser(SwDoc* pD,
     maCharStyleMapper(*pD),
     maSegments(*this),
     maInsertedTables(*pD),
-    aMergeBoxes(0, 5),
     aTblFmts(0, 10),
     mpBookmarkStart(0),
     mpRedlineStack(0),
diff --git a/sw/source/filter/rtf/swparrtf.hxx b/sw/source/filter/rtf/swparrtf.hxx
index 049bef4..12723eb 100644
--- a/sw/source/filter/rtf/swparrtf.hxx
+++ b/sw/source/filter/rtf/swparrtf.hxx
@@ -294,7 +294,7 @@ class SwRTFParser : public SvxRTFParser
     SwRTFStyleTbl aTxtCollTbl;
     SwRTFCharStyleTbl aCharFmtTbl;
     SwFlySaveArr aFlyArr;				// Flys als Letzes im Doc setzen
-    SvBools aMergeBoxes;				// Flags fuer gemergte Zellen
+    std::vector<bool> aMergeBoxes;		// Flags fuer gemergte Zellen
     SwListArr aListArr;
     SvPtrarr aTblFmts;
     SvPtrarr aRubyCharFmts;


More information about the Libreoffice-commits mailing list