summaryrefslogtreecommitdiff
path: root/sc/source
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2014-09-26 15:39:50 -0400
committerKohei Yoshida <kohei.yoshida@collabora.com>2014-10-22 18:07:25 -0400
commit04ee80c1a6d476171d2394a57011dc98c2aa86bc (patch)
tree4e200181e520fb0d7a1755bfb51e637147a7b0bc /sc/source
parent48f2cc5a2e0a29a4d36cc36ef358cdb4b3e58061 (diff)
Store height array to RowHeightContext and reduce function arg counts.
Change-Id: I09b79bc76ffc55e25c24bbfa8f000f4a46df0a1c
Diffstat (limited to 'sc/source')
-rw-r--r--sc/source/core/data/column2.cxx24
-rw-r--r--sc/source/core/data/rowheightcontext.cxx5
-rw-r--r--sc/source/core/data/table1.cxx41
3 files changed, 38 insertions, 32 deletions
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index ad9a45c65ef7..3941cf8bbcdb 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -772,9 +772,9 @@ static sal_uInt16 lcl_GetAttribHeight( const ScPatternAttr& rPattern, sal_uInt16
// (is only evaluated with bStdAllowed)
void ScColumn::GetOptimalHeight(
- sc::RowHeightContext& rCxt, SCROW nStartRow, SCROW nEndRow, sal_uInt16* pHeight,
- sal_uInt16 nMinHeight, SCROW nMinStart )
+ sc::RowHeightContext& rCxt, SCROW nStartRow, SCROW nEndRow, sal_uInt16 nMinHeight, SCROW nMinStart )
{
+ std::vector<sal_uInt16>& rHeights = rCxt.getHeightArray();
ScAttrIterator aIter( pAttrArray, nStartRow, nEndRow );
SCROW nStart = -1;
@@ -865,8 +865,8 @@ void ScColumn::GetOptimalHeight(
nStdEnd = (nMinStart>0) ? nMinStart-1 : 0;
for (SCROW nRow = nStart; nRow <= nStdEnd; ++nRow)
- if (nDefHeight > pHeight[nRow-nStartRow])
- pHeight[nRow-nStartRow] = nDefHeight;
+ if (nDefHeight > rHeights[nRow-nStartRow])
+ rHeights[nRow-nStartRow] = nDefHeight;
if ( bStdOnly )
{
@@ -887,22 +887,22 @@ void ScColumn::GetOptimalHeight(
{
if ( nCjkHeight == 0 )
nCjkHeight = lcl_GetAttribHeight( *pPattern, ATTR_CJK_FONT_HEIGHT );
- if (nCjkHeight > pHeight[nRow-nStartRow])
- pHeight[nRow-nStartRow] = nCjkHeight;
+ if (nCjkHeight > rHeights[nRow-nStartRow])
+ rHeights[nRow-nStartRow] = nCjkHeight;
}
else if ( nScript == SCRIPTTYPE_COMPLEX )
{
if ( nCtlHeight == 0 )
nCtlHeight = lcl_GetAttribHeight( *pPattern, ATTR_CTL_FONT_HEIGHT );
- if (nCtlHeight > pHeight[nRow-nStartRow])
- pHeight[nRow-nStartRow] = nCtlHeight;
+ if (nCtlHeight > rHeights[nRow-nStartRow])
+ rHeights[nRow-nStartRow] = nCtlHeight;
}
else
{
if ( nLatHeight == 0 )
nLatHeight = lcl_GetAttribHeight( *pPattern, ATTR_FONT_HEIGHT );
- if (nLatHeight > pHeight[nRow-nStartRow])
- pHeight[nRow-nStartRow] = nLatHeight;
+ if (nLatHeight > rHeights[nRow-nStartRow])
+ rHeights[nRow-nStartRow] = nLatHeight;
}
}
}
@@ -928,8 +928,8 @@ void ScColumn::GetOptimalHeight(
( GetNeededSize( nRow, rCxt.getOutputDevice(), rCxt.getPPTX(), rCxt.getPPTY(),
rCxt.getZoomX(), rCxt.getZoomY(), false, aOptions,
&pPattern) / rCxt.getPPTY() );
- if (nHeight > pHeight[nRow-nStartRow])
- pHeight[nRow-nStartRow] = nHeight;
+ if (nHeight > rHeights[nRow-nStartRow])
+ rHeights[nRow-nStartRow] = nHeight;
// Pattern changed due to calculation? => sync.
if (pPattern != pOldPattern)
{
diff --git a/sc/source/core/data/rowheightcontext.cxx b/sc/source/core/data/rowheightcontext.cxx
index 43ca932c3ad8..0786dd5302a3 100644
--- a/sc/source/core/data/rowheightcontext.cxx
+++ b/sc/source/core/data/rowheightcontext.cxx
@@ -32,6 +32,11 @@ void RowHeightContext::setForceAutoSize( bool b )
mbForceAutoSize = b;
}
+std::vector<sal_uInt16>& RowHeightContext::getHeightArray()
+{
+ return maHeights;
+}
+
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/table1.cxx b/sc/source/core/data/table1.cxx
index 0357e185c9b2..d068c0d84fda 100644
--- a/sc/source/core/data/table1.cxx
+++ b/sc/source/core/data/table1.cxx
@@ -82,7 +82,7 @@ ScProgress* GetProgressBar(
void GetOptimalHeightsInColumn(
sc::RowHeightContext& rCxt, ScColumn* pCol, SCROW nStartRow, SCROW nEndRow,
- vector<sal_uInt16>& aHeights, ScProgress* pProgress, sal_uInt32 nProgressStart )
+ ScProgress* pProgress, sal_uInt32 nProgressStart )
{
SCSIZE nCount = static_cast<SCSIZE>(nEndRow-nStartRow+1);
@@ -90,20 +90,22 @@ void GetOptimalHeightsInColumn(
// (mit der letzten Spalte in der Hoffnung, dass die am ehesten noch auf
// Standard formatiert ist)
- pCol[MAXCOL].GetOptimalHeight(rCxt, nStartRow, nEndRow, &aHeights[0], 0, 0);
+ std::vector<sal_uInt16>& rHeights = rCxt.getHeightArray();
+
+ pCol[MAXCOL].GetOptimalHeight(rCxt, nStartRow, nEndRow, 0, 0);
// daraus Standardhoehe suchen, die im unteren Bereich gilt
- sal_uInt16 nMinHeight = aHeights[nCount-1];
+ sal_uInt16 nMinHeight = rHeights[nCount-1];
SCSIZE nPos = nCount-1;
- while ( nPos && aHeights[nPos-1] >= nMinHeight )
+ while ( nPos && rHeights[nPos-1] >= nMinHeight )
--nPos;
SCROW nMinStart = nStartRow + nPos;
sal_uLong nWeightedCount = 0;
for (SCCOL nCol=0; nCol<MAXCOL; nCol++) // MAXCOL schon oben
{
- pCol[nCol].GetOptimalHeight(rCxt, nStartRow, nEndRow, &aHeights[0], nMinHeight, nMinStart);
+ pCol[nCol].GetOptimalHeight(rCxt, nStartRow, nEndRow, nMinHeight, nMinStart);
if (pProgress)
{
@@ -155,9 +157,10 @@ struct SetRowHeightRangeFunc : public OptimalHeightsFuncObjBase
}
};
-bool SetOptimalHeightsToRows(OptimalHeightsFuncObjBase& rFuncObj,
- ScBitMaskCompressedArray<SCROW, sal_uInt8>* pRowFlags, SCROW nStartRow, SCROW nEndRow, sal_uInt16 nExtra,
- const vector<sal_uInt16>& aHeights, bool bForce)
+bool SetOptimalHeightsToRows(
+ sc::RowHeightContext& rCxt,
+ OptimalHeightsFuncObjBase& rFuncObj,
+ ScBitMaskCompressedArray<SCROW, sal_uInt8>* pRowFlags, SCROW nStartRow, SCROW nEndRow )
{
SCSIZE nCount = static_cast<SCSIZE>(nEndRow-nStartRow+1);
bool bChanged = false;
@@ -174,9 +177,9 @@ bool SetOptimalHeightsToRows(OptimalHeightsFuncObjBase& rFuncObj,
SCSIZE nMoreRows = nRegionEndRow - ( nStartRow+i ); // additional equal rows after first
bool bAutoSize = ((nRowFlag & CR_MANUALSIZE) == 0);
- if ( bAutoSize || bForce )
+ if (bAutoSize || rCxt.isForceAutoSize())
{
- if (nExtra)
+ if (rCxt.getExtraHeight())
{
if (bAutoSize)
pRowFlags->SetValue( nStartRow+i, nRegionEndRow, nRowFlag | CR_MANUALSIZE);
@@ -188,7 +191,7 @@ bool SetOptimalHeightsToRows(OptimalHeightsFuncObjBase& rFuncObj,
{
if (nLast)
{
- if (aHeights[nInner]+nExtra == nLast)
+ if (rCxt.getHeightArray()[nInner] + rCxt.getExtraHeight() == nLast)
nRngEnd = nStartRow+nInner;
else
{
@@ -198,7 +201,7 @@ bool SetOptimalHeightsToRows(OptimalHeightsFuncObjBase& rFuncObj,
}
if (!nLast)
{
- nLast = aHeights[nInner]+nExtra;
+ nLast = rCxt.getHeightArray()[nInner] + rCxt.getExtraHeight();
nRngStart = nStartRow+nInner;
nRngEnd = nStartRow+nInner;
}
@@ -465,13 +468,12 @@ bool ScTable::SetOptimalHeight(
ScProgress* pProgress = GetProgressBar(nCount, GetWeightedCount(), pOuterProgress, pDocument);
- vector<sal_uInt16> aHeights(nCount, 0);
+ rCxt.getHeightArray().resize(nCount, 0);
- GetOptimalHeightsInColumn(rCxt, aCol, nStartRow, nEndRow, aHeights, pProgress, nProgressStart);
+ GetOptimalHeightsInColumn(rCxt, aCol, nStartRow, nEndRow, pProgress, nProgressStart);
SetRowHeightRangeFunc aFunc(this, rCxt.getPPTX(), rCxt.getPPTY());
- bool bChanged = SetOptimalHeightsToRows(
- aFunc, pRowFlags, nStartRow, nEndRow, rCxt.getExtraHeight(), aHeights, rCxt.isForceAutoSize());
+ bool bChanged = SetOptimalHeightsToRows(rCxt, aFunc, pRowFlags, nStartRow, nEndRow);
if ( pProgress != pOuterProgress )
delete pProgress;
@@ -493,13 +495,12 @@ void ScTable::SetOptimalHeightOnly(
ScProgress* pProgress = GetProgressBar(nCount, GetWeightedCount(), pOuterProgress, pDocument);
- vector<sal_uInt16> aHeights(nCount, 0);
+ rCxt.getHeightArray().resize(nCount, 0);
- GetOptimalHeightsInColumn(rCxt, aCol, nStartRow, nEndRow, aHeights, pProgress, nProgressStart);
+ GetOptimalHeightsInColumn(rCxt, aCol, nStartRow, nEndRow, pProgress, nProgressStart);
SetRowHeightOnlyFunc aFunc(this);
- SetOptimalHeightsToRows(
- aFunc, pRowFlags, nStartRow, nEndRow, rCxt.getExtraHeight(), aHeights, rCxt.isForceAutoSize());
+ SetOptimalHeightsToRows(rCxt, aFunc, pRowFlags, nStartRow, nEndRow);
if ( pProgress != pOuterProgress )
delete pProgress;