[Libreoffice-commits] .: sc/inc sc/source
Kohei Yoshida
kohei at kemper.freedesktop.org
Thu Jul 26 14:53:02 PDT 2012
sc/inc/document.hxx | 4 +++-
sc/inc/table.hxx | 3 +++
sc/source/core/data/document.cxx | 23 ++++++++++++++++-------
sc/source/core/data/table5.cxx | 13 +++++++++++++
sc/source/ui/app/transobj.cxx | 7 ++-----
5 files changed, 37 insertions(+), 13 deletions(-)
New commits:
commit 03720cfb47870d5bf1619cae8c6ed66204b6415b
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Thu Jul 26 17:55:18 2012 -0400
Try to encapsulate the row flag array.
Eventually this flag array will go. The manual row height flag is
the last one standing...
Change-Id: I3f6be511eba50836d785ddf20ef08878797f6fe0
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 6d4a02e..39fce78 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -1341,7 +1341,6 @@ public:
SC_DLLPUBLIC sal_uInt8 GetRowFlags( SCROW nRow, SCTAB nTab ) const;
SC_DLLPUBLIC const ScBitMaskCompressedArray< SCROW, sal_uInt8> & GetRowFlagsArray( SCTAB nTab ) const;
- SC_DLLPUBLIC ScBitMaskCompressedArray< SCROW, sal_uInt8> & GetRowFlagsArrayModifiable( SCTAB nTab );
SC_DLLPUBLIC void GetAllRowBreaks(::std::set<SCROW>& rBreaks, SCTAB nTab, bool bPage, bool bManual) const;
SC_DLLPUBLIC void GetAllColBreaks(::std::set<SCCOL>& rBreaks, SCTAB nTab, bool bPage, bool bManual) const;
@@ -1371,6 +1370,9 @@ public:
SCROW LastNonFilteredRow(SCROW nStartRow, SCROW nEndRow, SCTAB nTab);
SCROW CountNonFilteredRows(SCROW nStartRow, SCROW nEndRow, SCTAB nTab);
+ bool IsManualRowHeight(SCROW nRow, SCTAB nTab) const;
+ void SetRowHeightManual(SCROW nRow, SCTAB nTab, bool bManual);
+
/**
* Write all column row flags to table's flag data, because not all column
* row attributes are stored in the flag data members. This is necessary
diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx
index 966c458..0f32c31 100644
--- a/sc/inc/table.hxx
+++ b/sc/inc/table.hxx
@@ -746,6 +746,9 @@ public:
SCROW LastNonFilteredRow(SCROW nStartRow, SCROW nEndRow) const;
SCROW CountNonFilteredRows(SCROW nStartRow, SCROW nEndRow) const;
+ bool IsManualRowHeight(SCROW nRow) const;
+ void SetRowHeightManual(SCROW nRow, bool bManual);
+
void SyncColRowFlags();
void StripHidden( SCCOL& rX1, SCROW& rY1, SCCOL& rX2, SCROW& rY2 );
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index f3724d5..df18748 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -3754,13 +3754,6 @@ sal_uInt8 ScDocument::GetRowFlags( SCROW nRow, SCTAB nTab ) const
return 0;
}
-ScBitMaskCompressedArray< SCROW, sal_uInt8> & ScDocument::GetRowFlagsArrayModifiable(
- SCTAB nTab )
-{
- return const_cast< ScBitMaskCompressedArray< SCROW, sal_uInt8> & >(
- GetRowFlagsArray( nTab));
-}
-
const ScBitMaskCompressedArray< SCROW, sal_uInt8> & ScDocument::GetRowFlagsArray(
SCTAB nTab ) const
{
@@ -3993,6 +3986,22 @@ SCROW ScDocument::CountNonFilteredRows(SCROW nStartRow, SCROW nEndRow, SCTAB nTa
return maTabs[nTab]->CountNonFilteredRows(nStartRow, nEndRow);
}
+bool ScDocument::IsManualRowHeight(SCROW nRow, SCTAB nTab) const
+{
+ if (!ValidTab(nTab) || nTab >= static_cast<SCTAB>(maTabs.size()) || !maTabs[nTab])
+ return false;
+
+ return maTabs[nTab]->IsManualRowHeight(nRow);
+}
+
+void ScDocument::SetRowHeightManual(SCROW nRow, SCTAB nTab, bool bManual)
+{
+ if (!ValidTab(nTab) || nTab >= static_cast<SCTAB>(maTabs.size()) || !maTabs[nTab])
+ return;
+
+ maTabs[nTab]->SetRowHeightManual(nRow, bManual);
+}
+
void ScDocument::SyncColRowFlags()
{
TableContainer::iterator it = maTabs.begin();
diff --git a/sc/source/core/data/table5.cxx b/sc/source/core/data/table5.cxx
index 77939a2..8356dc5 100644
--- a/sc/source/core/data/table5.cxx
+++ b/sc/source/core/data/table5.cxx
@@ -954,6 +954,19 @@ SCROW ScTable::CountNonFilteredRows(SCROW nStartRow, SCROW nEndRow) const
return nCount;
}
+bool ScTable::IsManualRowHeight(SCROW nRow) const
+{
+ return (pRowFlags->GetValue(nRow) & CR_MANUALSIZE) != 0;
+}
+
+void ScTable::SetRowHeightManual(SCROW nRow, bool bManual)
+{
+ if (bManual)
+ pRowFlags->OrValue(nRow, CR_MANUALSIZE);
+ else
+ pRowFlags->AndValue(nRow, sal::static_int_cast<sal_uInt8>(~CR_MANUALSIZE));
+}
+
namespace {
void lcl_syncFlags(ScFlatBoolColSegments& rColSegments, ScFlatBoolRowSegments& rRowSegments,
diff --git a/sc/source/ui/app/transobj.cxx b/sc/source/ui/app/transobj.cxx
index 0d35c45..9d53c7d 100644
--- a/sc/source/ui/app/transobj.cxx
+++ b/sc/source/ui/app/transobj.cxx
@@ -632,9 +632,6 @@ void ScTransferObj::InitDocShell()
else
pDestDoc->SetColWidth( nCol, 0, pDoc->GetColWidth( nCol, nSrcTab ) );
- ScBitMaskCompressedArray< SCROW, sal_uInt8> & rDestRowFlags =
- pDestDoc->GetRowFlagsArrayModifiable(0);
-
for (SCROW nRow = nStartY; nRow <= nEndY; ++nRow)
{
sal_uInt8 nSourceFlags = pDoc->GetRowFlags(nRow, nSrcTab);
@@ -645,8 +642,8 @@ void ScTransferObj::InitDocShell()
pDestDoc->SetRowHeight( nRow, 0, pDoc->GetOriginalHeight( nRow, nSrcTab ) );
// if height was set manually, that flag has to be copied, too
- if ( nSourceFlags & CR_MANUALSIZE )
- rDestRowFlags.OrValue( nRow, CR_MANUALSIZE);
+ bool bManual = pDoc->IsManualRowHeight(nRow, nSrcTab);
+ pDestDoc->SetRowHeightManual(nRow, 0, bManual);
}
}
More information about the Libreoffice-commits
mailing list