[Libreoffice-commits] .: Branch 'feature/gsoc-calc-perf' - 3 commits - sc/source

Daniel Bankston dbank at kemper.freedesktop.org
Fri Jun 1 00:38:06 PDT 2012


 sc/source/filter/xml/XMLDetectiveContext.cxx |    2 
 sc/source/filter/xml/xmlcelli.cxx            |   28 +++++++--
 sc/source/filter/xml/xmlsubti.cxx            |   76 ++++++++++++---------------
 sc/source/filter/xml/xmlsubti.hxx            |   13 +---
 4 files changed, 64 insertions(+), 55 deletions(-)

New commits:
commit 9e62caee992f9c352f1a8e7ea6772ae998fd309a
Author: Daniel Bankston <daniel.e.bankston at gmail.com>
Date:   Fri Jun 1 00:52:51 2012 -0500

    Convert GetRealCellPos and calls to use ScAddress
    
    Change-Id: Ic7a6ad82b5b4938ef67ddf8e62372635044cd5b2

diff --git a/sc/source/filter/xml/XMLDetectiveContext.cxx b/sc/source/filter/xml/XMLDetectiveContext.cxx
index 2a7b9b5..e669dae 100644
--- a/sc/source/filter/xml/XMLDetectiveContext.cxx
+++ b/sc/source/filter/xml/XMLDetectiveContext.cxx
@@ -241,7 +241,7 @@ ScXMLDetectiveOperationContext::ScXMLDetectiveOperationContext(
             break;
         }
     }
-    ScUnoConversion::FillScAddress( aDetectiveOp.aPosition, rImport.GetTables().GetRealCellPos() );
+    aDetectiveOp.aPosition =  rImport.GetTables().GetRealScCellPos();
 }
 
 ScXMLDetectiveOperationContext::~ScXMLDetectiveOperationContext()
diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx
index 25f8f17..9e36e95 100644
--- a/sc/source/filter/xml/xmlcelli.cxx
+++ b/sc/source/filter/xml/xmlcelli.cxx
@@ -284,7 +284,11 @@ void ScXMLTableRowCellContext::UnlockSolarMutex()
 
 void ScXMLTableRowCellContext::SetCursorOnTextImport(const rtl::OUString& rOUTempText)
 {
-    com::sun::star::table::CellAddress aCellPos = rXMLImport.GetTables().GetRealCellPos();
+    //extra step here until this area is fully converted
+    com::sun::star::table::CellAddress aCellPos;
+    ScAddress aScCellPos = rXMLImport.GetTables().GetRealScCellPos();
+    ScUnoConversion::FillApiAddress( aCellPos, aScCellPos );
+
     if (CellExists(aCellPos))
     {
         uno::Reference<table::XCellRange> xCellRange(rXMLImport.GetTables().GetCurrentXCellRange());
@@ -331,7 +335,12 @@ SvXMLImportContext *ScXMLTableRowCellContext::CreateChildContext( sal_uInt16 nPr
         {
             bIsEmpty = false;
             bTextP = true;
-            com::sun::star::table::CellAddress aCellPos = rXMLImport.GetTables().GetRealCellPos();
+
+            //extra step here until this area is fully converted
+            com::sun::star::table::CellAddress aCellPos;
+            ScAddress aScCellPos = rXMLImport.GetTables().GetRealScCellPos();
+            ScUnoConversion::FillApiAddress( aCellPos, aScCellPos );
+
             if( ((nCellType == util::NumberFormat::TEXT) || bFormulaTextResult) &&
                 !rXMLImport.GetTables().IsPartOfMatrix(static_cast<SCCOL>(aCellPos.Column), static_cast<SCROW>(aCellPos.Row)) )
             {
@@ -343,7 +352,6 @@ SvXMLImportContext *ScXMLTableRowCellContext::CreateChildContext( sal_uInt16 nPr
                 }
                 else
                 {
-                    // com::sun::star::table::CellAddress aCellPos = rXMLImport.GetTables().GetRealCellPos();
                     if (CellExists(aCellPos))
                     {
                         if (bIsFirstTextImport && !rXMLImport.GetRemoveLastChar())
@@ -426,7 +434,11 @@ SvXMLImportContext *ScXMLTableRowCellContext::CreateChildContext( sal_uInt16 nPr
 
     if (!pContext && !bTextP)
     {
-        com::sun::star::table::CellAddress aCellPos = rXMLImport.GetTables().GetRealCellPos();
+        //extra step here until this area is fully converted
+        com::sun::star::table::CellAddress aCellPos;
+        ScAddress aScCellPos = rXMLImport.GetTables().GetRealScCellPos();
+        ScUnoConversion::FillApiAddress( aCellPos, aScCellPos );
+
         uno::Reference<drawing::XShapes> xShapes (rXMLImport.GetTables().GetCurrentXShapes());
         if (xShapes.is())
         {
@@ -730,12 +742,16 @@ void ScXMLTableRowCellContext::EndElement()
             }
         }
         ScMyTables& rTables = rXMLImport.GetTables();
-        table::CellAddress aCellPos = rTables.GetRealCellPos();
+
+        //extra step here until this area is fully converted
+        com::sun::star::table::CellAddress aCellPos;
+        ScAddress aScCellPos = rXMLImport.GetTables().GetRealScCellPos();
+        ScUnoConversion::FillApiAddress( aCellPos, aScCellPos );
+
         if (aCellPos.Column > 0 && nRepeatedRows > 1)
             aCellPos.Row -= (nRepeatedRows - 1);
 
         //duplicated for now
-        ScAddress aScCellPos = rTables.GetRealScCellPos();
         if (aScCellPos.Col() > 0 && nRepeatedRows > 1)
             aScCellPos.SetRow( aScCellPos.Row() - (nRepeatedRows - 1) );
 
diff --git a/sc/source/filter/xml/xmlsubti.cxx b/sc/source/filter/xml/xmlsubti.cxx
index 941c7d1..2876309 100644
--- a/sc/source/filter/xml/xmlsubti.cxx
+++ b/sc/source/filter/xml/xmlsubti.cxx
@@ -41,6 +41,7 @@
 #include "sheetdata.hxx"
 #include "tabprotection.hxx"
 #include "tokenarray.hxx"
+#include "convuno.hxx"
 #include <svx/svdpage.hxx>
 
 #include <sax/tools/converter.hxx>
@@ -67,12 +68,12 @@ using ::std::auto_ptr;
 using namespace com::sun::star;
 
 ScMyTableData::ScMyTableData(SCTAB nSheet, SCCOL nCol, SCROW nRow)
-    :   nColsPerCol(nDefaultColCount, 1),
+    :   maTableCellPos(nCol, nRow, nSheet),
+        nColsPerCol(nDefaultColCount, 1),
         nRealCols(nDefaultColCount + 1, 0),
         nRowsPerRow(nDefaultRowCount, 1),
         nRealRows(nDefaultRowCount + 1, 0),
-        nChangedCols(),
-        maTableCellPos(nCol, nRow, nSheet)
+        nChangedCols()
 {
     for (sal_Int32 i = 0; i < 3; ++i)
         nRealCols[i] = i;
@@ -295,8 +296,13 @@ void ScMyTables::UnMerge()
 {
     if ( xCurrentCellRange.is() )
     {
+        //extra step here until this area is fully converted
+        com::sun::star::table::CellAddress aCellPos;
+        ScAddress aScCellPos = GetRealScCellPos();
+        ScUnoConversion::FillApiAddress( aCellPos, aScCellPos );
+
         table::CellRangeAddress aCellAddress;
-        if (IsMerged(xCurrentCellRange, GetRealCellPos().Column, GetRealCellPos().Row, aCellAddress))
+        if (IsMerged(xCurrentCellRange, aCellPos.Column, aCellPos.Row, aCellAddress))
         {
             //unmerge
             uno::Reference <util::XMergeable> xMergeable (xCurrentCellRange->getCellRangeByPosition(aCellAddress.StartColumn, aCellAddress.StartRow,
@@ -311,8 +317,13 @@ void ScMyTables::DoMerge(sal_Int32 nCount)
 {
     if ( xCurrentCellRange.is() )
     {
+        //extra step here until this area is fully converted
+        com::sun::star::table::CellAddress aCellPos;
+        ScAddress aScCellPos = GetRealScCellPos();
+        ScUnoConversion::FillApiAddress( aCellPos, aScCellPos );
+
         table::CellRangeAddress aCellAddress;
-        if (IsMerged(xCurrentCellRange, GetRealCellPos().Column, GetRealCellPos().Row, aCellAddress))
+        if (IsMerged(xCurrentCellRange, aCellPos.Column, aCellPos.Row, aCellAddress))
         {
             //unmerge
             uno::Reference <util::XMergeable> xMergeable (xCurrentCellRange->getCellRangeByPosition(aCellAddress.StartColumn, aCellAddress.StartRow,
@@ -349,9 +360,10 @@ void ScMyTables::InsertRow()
 {
     if ( xCurrentCellRange.is() )
     {
+        ScAddress aScCellPos = GetRealScCellPos();
         table::CellRangeAddress aCellAddress;
-        sal_Int32 nRow(GetRealCellPos().Row);
-        for (sal_Int32 j = 0; j < GetRealCellPos().Column - pCurrentTab->GetColumn() - 1; ++j)
+        SCROW nRow(aScCellPos.Row());
+        for (sal_Int32 j = 0; j < aScCellPos.Col() - pCurrentTab->GetColumn() - 1; ++j)
         {
             if (IsMerged(xCurrentCellRange, j, nRow - 1, aCellAddress))
             {
@@ -382,7 +394,7 @@ void ScMyTables::NewRow()
     if (pCurrentTab->GetRealRows(pCurrentTab->GetRow()) >
         maTables[n-2].GetRowsPerRow(maTables[n-2].GetRow()) - 1)
     {
-        if (GetRealCellPos().Column > 0)
+        if (GetRealScCellPos().Col() > 0)
             InsertRow();
 
         for (size_t i = n - 1; i > 0; --i)
@@ -420,9 +432,14 @@ void ScMyTables::InsertColumn()
 {
     if ( xCurrentCellRange.is() )
     {
+        //extra step here until this area is fully converted
+        com::sun::star::table::CellAddress aCellPos;
+        ScAddress aScCellPos = GetRealScCellPos();
+        ScUnoConversion::FillApiAddress( aCellPos, aScCellPos );
+
         table::CellRangeAddress aCellAddress;
-        sal_Int32 nCol(GetRealCellPos().Column);
-        sal_Int32 n = GetRealCellPos().Row - pCurrentTab->GetRow() - 1;
+        sal_Int32 nCol(aCellPos.Column);
+        sal_Int32 n = aCellPos.Row - pCurrentTab->GetRow() - 1;
         for (sal_Int32 j = 0; j <= n; ++j)
         {
             table::CellRangeAddress aTempCellAddress;
@@ -664,28 +681,10 @@ void ScMyTables::DeleteTable()
     }
 }
 
-table::CellAddress ScMyTables::GetRealCellPos()
-{
-    sal_Int32 nRow = 0;
-    sal_Int32 nCol = 0;
-    size_t n = maTables.size();
-    for (size_t i = 0; i < n; ++i)
-    {
-        const ScMyTableData& rTab = maTables[i];
-        nCol += rTab.GetRealCols(rTab.GetColumn());
-        nRow += rTab.GetRealRows(rTab.GetRow());
-    }
-
-    aRealCellPos.Row = nRow;
-    aRealCellPos.Column = nCol;
-    aRealCellPos.Sheet = nCurrentSheet;
-    return aRealCellPos;
-}
-
 ScAddress ScMyTables::GetRealScCellPos() const
 {
-    sal_Int32 nRow = 0;
-    sal_Int32 nCol = 0;
+    SCROW nRow = 0;
+    SCCOL nCol = 0;
     size_t n = maTables.size();
     for (size_t i = 0; i < n; ++i)
     {
@@ -693,7 +692,7 @@ ScAddress ScMyTables::GetRealScCellPos() const
         nCol += rTab.GetRealCols(rTab.GetColumn());
         nRow += rTab.GetRealRows(rTab.GetRow());
     }
-    return ScAddress( static_cast<SCCOL>(nCol), static_cast<SCCOL>(nRow), nCurrentSheet );
+    return ScAddress( nCol, nRow, nCurrentSheet );
 }
 
 void ScMyTables::AddColCount(sal_Int32 nTempColCount)
diff --git a/sc/source/filter/xml/xmlsubti.hxx b/sc/source/filter/xml/xmlsubti.hxx
index ea114ce..352a7d3 100644
--- a/sc/source/filter/xml/xmlsubti.hxx
+++ b/sc/source/filter/xml/xmlsubti.hxx
@@ -137,7 +137,6 @@ private:
     ::boost::ptr_vector<ScMyTableData>  maTables;
     ScXMLTabProtectionData              maProtectionData;
     ScMyMatrixRangeList                 aMatrixRangeList;
-    com::sun::star::table::CellAddress  aRealCellPos;
     sal_Int32                           nCurrentColStylePos;
     sal_Int16                           nCurrentDrawPage;
     sal_Int16                           nCurrentXShapes;
@@ -169,7 +168,6 @@ public:
     bool                                IsOLE(com::sun::star::uno::Reference< com::sun::star::drawing::XShape >& rShape) const
         { return ScMyOLEFixer::IsOLE(rShape); }
     void                                DeleteTable();
-    com::sun::star::table::CellAddress  GetRealCellPos();
     ScAddress                           GetRealScCellPos() const;
     void                                AddColCount(sal_Int32 nTempColCount);
     void                                AddColStyle(const sal_Int32 nRepeat, const rtl::OUString& rCellStyleName);
commit 1f806b5e1019be4b859f52af22ecc86eade0461c
Author: Daniel Bankston <daniel.e.bankston at gmail.com>
Date:   Thu May 31 21:48:45 2012 -0500

    Convert ScMyTableData to use ScAddress
    
    Change-Id: I10972bc2b76a517c465ce32cf4832ab069be1bec

diff --git a/sc/source/filter/xml/xmlsubti.cxx b/sc/source/filter/xml/xmlsubti.cxx
index 7c48ad1..941c7d1 100644
--- a/sc/source/filter/xml/xmlsubti.cxx
+++ b/sc/source/filter/xml/xmlsubti.cxx
@@ -66,17 +66,14 @@ using ::std::auto_ptr;
 
 using namespace com::sun::star;
 
-ScMyTableData::ScMyTableData(SCTAB nSheet, sal_Int32 nCol, sal_Int32 nRow)
+ScMyTableData::ScMyTableData(SCTAB nSheet, SCCOL nCol, SCROW nRow)
     :   nColsPerCol(nDefaultColCount, 1),
         nRealCols(nDefaultColCount + 1, 0),
         nRowsPerRow(nDefaultRowCount, 1),
         nRealRows(nDefaultRowCount + 1, 0),
-        nChangedCols()
+        nChangedCols(),
+        maTableCellPos(nCol, nRow, nSheet)
 {
-    aTableCellPos.Sheet = nSheet;
-    aTableCellPos.Column = nCol;
-    aTableCellPos.Row = nRow;
-
     for (sal_Int32 i = 0; i < 3; ++i)
         nRealCols[i] = i;
     for (sal_Int32 j = 0; j < 3; ++j)
@@ -93,24 +90,24 @@ ScMyTableData::~ScMyTableData()
 
 void ScMyTableData::AddRow()
 {
-    ++aTableCellPos.Row;
-    if (static_cast<sal_uInt32>(aTableCellPos.Row) >= nRowsPerRow.size())
+    maTableCellPos.SetRow( maTableCellPos.Row() + 1 );
+    if (static_cast<sal_uInt32>(maTableCellPos.Row()) >= nRowsPerRow.size())
     {
         nRowsPerRow.resize(nRowsPerRow.size() + nDefaultRowCount, 1);
         nRealRows.resize(nRowsPerRow.size() + nDefaultRowCount + 1, 0);
     }
-    nRealRows[aTableCellPos.Row + 1] = nRealRows[aTableCellPos.Row] + nRowsPerRow[aTableCellPos.Row];
+    nRealRows[maTableCellPos.Row() + 1] = nRealRows[maTableCellPos.Row()] + nRowsPerRow[maTableCellPos.Row()];
 }
 
 void ScMyTableData::AddColumn()
 {
-    ++aTableCellPos.Column;
-    if (static_cast<sal_uInt32>(aTableCellPos.Column) >= nColsPerCol.size())
+    maTableCellPos.SetCol( maTableCellPos.Col() + 1 );
+    if (static_cast<sal_uInt32>(maTableCellPos.Col()) >= nColsPerCol.size())
     {
         nColsPerCol.resize(nColsPerCol.size() + nDefaultColCount, 1);
         nRealCols.resize(nColsPerCol.size() + nDefaultColCount + 1, 0);
     }
-    nRealCols[aTableCellPos.Column + 1] = nRealCols[aTableCellPos.Column] + nColsPerCol[aTableCellPos.Column];
+    nRealCols[maTableCellPos.Col() + 1] = nRealCols[maTableCellPos.Col()] + nColsPerCol[maTableCellPos.Col()];
 }
 
 sal_Int32 ScMyTableData::GetRealCols(const sal_Int32 nIndex, const bool /* bIsNormal */) const
diff --git a/sc/source/filter/xml/xmlsubti.hxx b/sc/source/filter/xml/xmlsubti.hxx
index e954314..ea114ce 100644
--- a/sc/source/filter/xml/xmlsubti.hxx
+++ b/sc/source/filter/xml/xmlsubti.hxx
@@ -57,7 +57,7 @@ const ScMysalIntVec::size_type nDefaultTabCount = 10;
 class ScMyTableData
 {
 private:
-    com::sun::star::table::CellAddress  aTableCellPos;
+    ScAddress                           maTableCellPos;
     ScMysalIntVec                       nColsPerCol;
     ScMysalIntVec                       nRealCols;
     ScMysalIntVec                       nRowsPerRow;
@@ -67,13 +67,13 @@ private:
     sal_Int32                           nSubTableSpanned;
     ScMysalIntList                      nChangedCols;
 public:
-                                        ScMyTableData(SCTAB nSheet = -1, sal_Int32 nCol = -1, sal_Int32 nRow = -1);
+                                        ScMyTableData(SCTAB nSheet = -1, SCCOL nCol = -1, SCROW nRow = -1);
                                         ~ScMyTableData();
-    sal_Int32                           GetRow() const { return aTableCellPos.Row; }
-    sal_Int32                           GetColumn() const { return aTableCellPos.Column; }
+    SCROW                               GetRow() const { return maTableCellPos.Row(); }
+    SCCOL                               GetColumn() const { return maTableCellPos.Col(); }
     void                                AddRow();
     void                                AddColumn();
-    void                                SetFirstColumn() { aTableCellPos.Column = -1; }
+    void                                SetFirstColumn() { maTableCellPos.SetCol(-1); }
     sal_Int32                           GetColsPerCol(const sal_Int32 nIndex) const { return nColsPerCol[nIndex]; }
     void                                SetColsPerCol(const sal_Int32 nIndex, sal_Int32 nValue = 1) { nColsPerCol[nIndex] = nValue; }
     sal_Int32                           GetRealCols(const sal_Int32 nIndex, const bool bIsNormal = true) const;
commit ac9ce5b3a97f31a11c67bb8865843d7c24730524
Author: Daniel Bankston <daniel.e.bankston at gmail.com>
Date:   Thu May 31 19:56:55 2012 -0500

    Remove unused method
    
    Change-Id: I9be889c8d0ef2d606614592a2a918b2d089da682

diff --git a/sc/source/filter/xml/xmlsubti.hxx b/sc/source/filter/xml/xmlsubti.hxx
index 101eddd..e954314 100644
--- a/sc/source/filter/xml/xmlsubti.hxx
+++ b/sc/source/filter/xml/xmlsubti.hxx
@@ -69,7 +69,6 @@ private:
 public:
                                         ScMyTableData(SCTAB nSheet = -1, sal_Int32 nCol = -1, sal_Int32 nRow = -1);
                                         ~ScMyTableData();
-    com::sun::star::table::CellAddress  GetCellPos() const { return aTableCellPos; }
     sal_Int32                           GetRow() const { return aTableCellPos.Row; }
     sal_Int32                           GetColumn() const { return aTableCellPos.Column; }
     void                                AddRow();


More information about the Libreoffice-commits mailing list