[Libreoffice-commits] .: 2 commits - sc/inc sc/source

Markus Mohrhard mmohrhard at kemper.freedesktop.org
Sun Jul 8 16:49:26 PDT 2012


 sc/inc/attarray.hxx              |    2 +-
 sc/inc/column.hxx                |    2 +-
 sc/inc/document.hxx              |    1 +
 sc/inc/table.hxx                 |    2 +-
 sc/source/core/data/attarray.cxx |    2 +-
 sc/source/core/data/column2.cxx  |    4 ++--
 sc/source/core/data/document.cxx |   13 +++++++++++++
 sc/source/core/data/table1.cxx   |    4 ++--
 8 files changed, 22 insertions(+), 8 deletions(-)

New commits:
commit 77a7c92fb3c0b1a8a97bca107f6bfe85cb79f7c4
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Mon Jul 9 01:47:21 2012 +0200

    performance problem with this commit
    
    Change-Id: I59bca684afcc1c51ecff3c6444ad1fd4b2b520e8

diff --git a/sc/source/filter/excel/xetable.cxx b/sc/source/filter/excel/xetable.cxx
index 150c730..69db2be 100644
--- a/sc/source/filter/excel/xetable.cxx
+++ b/sc/source/filter/excel/xetable.cxx
@@ -2208,7 +2208,7 @@ XclExpCellTable::XclExpCellTable( const XclExpRoot& rRoot ) :
     // find used area (non-empty cells)
     SCCOL nLastUsedScCol;
     SCROW nLastUsedScRow;
-    rDoc.GetFormattedAndUsedArea( nScTab, nLastUsedScCol, nLastUsedScRow );
+    rDoc.GetTableArea( nScTab, nLastUsedScCol, nLastUsedScRow );
 
     if(nLastUsedScCol > nMaxScCol)
         nLastUsedScCol = nMaxScCol;
commit 6c8ec4ad8e816157799cd164d9f9a837efa0f9a7
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Mon Jul 9 01:40:58 2012 +0200

    Revert "Revert "export all style information to xls/xlsx, fdo#46738""
    
    Lesson: Never trust that nobody was crazy enough to use my commits!
    
    This reverts commit 9e9e53a2d961d489440f4addc25af90d3a6b793b.

diff --git a/sc/inc/attarray.hxx b/sc/inc/attarray.hxx
index 1509f40..9b81440 100644
--- a/sc/inc/attarray.hxx
+++ b/sc/inc/attarray.hxx
@@ -172,7 +172,7 @@ public:
     bool    IsEmpty() const;
 
     bool    GetFirstVisibleAttr( SCROW& rFirstRow ) const;
-    bool    GetLastVisibleAttr( SCROW& rLastRow, SCROW nLastData ) const;
+    bool    GetLastVisibleAttr( SCROW& rLastRow, SCROW nLastData, bool bFullFormattedArea = false ) const;
     bool    HasVisibleAttrIn( SCROW nStartRow, SCROW nEndRow ) const;
     bool    IsVisibleEqual( const ScAttrArray& rOther,
                             SCROW nStartRow, SCROW nEndRow ) const;
diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 721683d..6f776e1 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -175,7 +175,7 @@ public:
     bool    HasSelectionMatrixFragment(const ScMarkData& rMark) const;
 
     bool    GetFirstVisibleAttr( SCROW& rFirstRow ) const;
-    bool    GetLastVisibleAttr( SCROW& rLastRow ) const;
+    bool    GetLastVisibleAttr( SCROW& rLastRow, bool bFullFormattedArea = false ) const;
     bool    HasVisibleAttrIn( SCROW nStartRow, SCROW nEndRow ) const;
     bool    IsVisibleAttrEqual( const ScColumn& rCol, SCROW nStartRow = 0,
                                     SCROW nEndRow = MAXROW ) const;
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index bbb062e..72d5168 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -935,6 +935,7 @@ public:
                                     SCCOL& rEndCol, SCROW& rEndRow, bool bIncludeOld, bool bOnlyDown ) const;
     SC_DLLPUBLIC bool           GetCellArea( SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow ) const;
     SC_DLLPUBLIC bool           GetTableArea( SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow ) const;
+    SC_DLLPUBLIC void           GetFormattedAndUsedArea( SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow ) const;
     SC_DLLPUBLIC bool           GetPrintArea( SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow,
                                     bool bNotes = true ) const;
     SC_DLLPUBLIC bool           GetPrintAreaHor( SCTAB nTab, SCROW nStartRow, SCROW nEndRow,
diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx
index 78fe25c..966c458 100644
--- a/sc/inc/table.hxx
+++ b/sc/inc/table.hxx
@@ -404,7 +404,7 @@ public:
 
     bool        GetCellArea( SCCOL& rEndCol, SCROW& rEndRow ) const;            // FALSE = empty
     bool        GetTableArea( SCCOL& rEndCol, SCROW& rEndRow ) const;
-    bool        GetPrintArea( SCCOL& rEndCol, SCROW& rEndRow, bool bNotes ) const;
+    bool        GetPrintArea( SCCOL& rEndCol, SCROW& rEndRow, bool bNotes, bool bFullFormattedArea = false ) const;
     bool        GetPrintAreaHor( SCROW nStartRow, SCROW nEndRow,
                                 SCCOL& rEndCol, bool bNotes ) const;
     bool        GetPrintAreaVer( SCCOL nStartCol, SCCOL nEndCol,
diff --git a/sc/source/core/data/attarray.cxx b/sc/source/core/data/attarray.cxx
index 100dcfe..6cf487f 100644
--- a/sc/source/core/data/attarray.cxx
+++ b/sc/source/core/data/attarray.cxx
@@ -1732,7 +1732,7 @@ bool ScAttrArray::GetFirstVisibleAttr( SCROW& rFirstRow ) const
 
 const SCROW SC_VISATTR_STOP = 84;
 
-bool ScAttrArray::GetLastVisibleAttr( SCROW& rLastRow, SCROW nLastData ) const
+bool ScAttrArray::GetLastVisibleAttr( SCROW& rLastRow, SCROW nLastData, bool bFullFormattedArea ) const
 {
     OSL_ENSURE( nCount, "nCount == 0" );
 
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index 62fc4ea..57a4e87 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -1423,14 +1423,14 @@ bool ScColumn::GetFirstVisibleAttr( SCROW& rFirstRow ) const
         return false;
 }
 
-bool ScColumn::GetLastVisibleAttr( SCROW& rLastRow ) const
+bool ScColumn::GetLastVisibleAttr( SCROW& rLastRow, bool bFullFormattedArea ) const
 {
     if (pAttrArray)
     {
         // row of last cell is needed
         SCROW nLastData = GetLastVisDataPos();    // always including notes, 0 if none
 
-        return pAttrArray->GetLastVisibleAttr( rLastRow, nLastData );
+        return pAttrArray->GetLastVisibleAttr( rLastRow, nLastData, bFullFormattedArea );
     }
     else
         return false;
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index f2cdf5d..965f09c 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -940,6 +940,19 @@ bool ScDocument::GetTableArea( SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow ) cons
     return false;
 }
 
+void ScDocument::GetFormattedAndUsedArea( SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow ) const
+{
+    if (VALIDTAB(nTab) && nTab < static_cast<SCTAB> (maTabs.size()))
+        if (maTabs[nTab])
+        {
+            maTabs[nTab]->GetPrintArea( rEndCol, rEndRow, true, true );
+            return;
+        }
+
+    rEndCol = 0;
+    rEndRow = 0;
+}
+
 bool ScDocument::ShrinkToDataArea(SCTAB nTab, SCCOL& rStartCol, SCROW& rStartRow, SCCOL& rEndCol, SCROW& rEndRow) const
 {
     if (!ValidTab(nTab) || nTab >= static_cast<SCTAB> (maTabs.size()) || !maTabs[nTab])
diff --git a/sc/source/core/data/table1.cxx b/sc/source/core/data/table1.cxx
index f3e0e6e..090345a 100644
--- a/sc/source/core/data/table1.cxx
+++ b/sc/source/core/data/table1.cxx
@@ -568,7 +568,7 @@ bool ScTable::GetTableArea( SCCOL& rEndCol, SCROW& rEndRow ) const
 
 const SCCOL SC_COLUMNS_STOP = 30;
 
-bool ScTable::GetPrintArea( SCCOL& rEndCol, SCROW& rEndRow, bool bNotes ) const
+bool ScTable::GetPrintArea( SCCOL& rEndCol, SCROW& rEndRow, bool bNotes, bool bFullFormattedArea ) const
 {
     bool bFound = false;
     SCCOL nMaxX = 0;
@@ -605,7 +605,7 @@ bool ScTable::GetPrintArea( SCCOL& rEndCol, SCROW& rEndRow, bool bNotes ) const
     for (i=0; i<=MAXCOL; i++)               // Attribute testen
     {
         SCROW nLastRow;
-        if (aCol[i].GetLastVisibleAttr( nLastRow ))
+        if (aCol[i].GetLastVisibleAttr( nLastRow, bFullFormattedArea ))
         {
             bFound = true;
             nMaxX = i;
diff --git a/sc/source/filter/excel/xetable.cxx b/sc/source/filter/excel/xetable.cxx
index 69db2be..150c730 100644
--- a/sc/source/filter/excel/xetable.cxx
+++ b/sc/source/filter/excel/xetable.cxx
@@ -2208,7 +2208,7 @@ XclExpCellTable::XclExpCellTable( const XclExpRoot& rRoot ) :
     // find used area (non-empty cells)
     SCCOL nLastUsedScCol;
     SCROW nLastUsedScRow;
-    rDoc.GetTableArea( nScTab, nLastUsedScCol, nLastUsedScRow );
+    rDoc.GetFormattedAndUsedArea( nScTab, nLastUsedScCol, nLastUsedScRow );
 
     if(nLastUsedScCol > nMaxScCol)
         nLastUsedScCol = nMaxScCol;


More information about the Libreoffice-commits mailing list