summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAron Budea <aron.budea@collabora.com>2019-10-25 08:21:38 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2019-10-25 12:43:11 +0200
commit1bca91f086be08c41e51f5f7cc7616ce8c5cb799 (patch)
treed2f00b0cdfee0ddc60c5823ace15fea49b25a39d
parentc8067df2fe03056c67bb1805e52b60b45dc3363b (diff)
sc: rowcol: tdf#50916 convert filter/excel for the most part
Change-Id: I8ae255de6fcd9d7fd379a48fb7e84adcbf7fa4ff TODO: pieces in frmbase.cxx, xestream.cxx and xistyle.cxx Reviewed-on: https://gerrit.libreoffice.org/81486 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--sc/source/filter/excel/colrowst.cxx23
-rw-r--r--sc/source/filter/excel/excform.cxx10
-rw-r--r--sc/source/filter/excel/excform8.cxx2
-rw-r--r--sc/source/filter/excel/impop.cxx20
-rw-r--r--sc/source/filter/excel/xeformula.cxx2
-rw-r--r--sc/source/filter/excel/xicontent.cxx8
-rw-r--r--sc/source/filter/excel/xipage.cxx4
-rw-r--r--sc/source/filter/excel/xipivot.cxx8
-rw-r--r--sc/source/filter/excel/xistyle.cxx19
-rw-r--r--sc/source/filter/excel/xlescher.cxx8
-rw-r--r--sc/source/filter/excel/xlroot.cxx2
11 files changed, 55 insertions, 51 deletions
diff --git a/sc/source/filter/excel/colrowst.cxx b/sc/source/filter/excel/colrowst.cxx
index fb8e3e1c3836..b0e7495485a9 100644
--- a/sc/source/filter/excel/colrowst.cxx
+++ b/sc/source/filter/excel/colrowst.cxx
@@ -64,12 +64,13 @@ void XclImpColRowSettings::SetDefWidth( sal_uInt16 nDefWidth, bool bStdWidthRec
void XclImpColRowSettings::SetWidthRange( SCCOL nCol1, SCCOL nCol2, sal_uInt16 nWidth )
{
- nCol2 = ::std::min( nCol2, MAXCOL );
+ ScDocument& rDoc = GetDoc();
+ nCol2 = ::std::min( nCol2, rDoc.MaxCol() );
if (nCol2 == 256)
// In BIFF8, the column range is 0-255, and the use of 256 probably
// means the range should extend to the max column if the loading app
// support columns beyond 255.
- nCol2 = MAXCOL;
+ nCol2 = rDoc.MaxCol();
nCol1 = ::std::min( nCol1, nCol2 );
maColWidths.insert_back(nCol1, nCol2+1, nWidth);
@@ -89,7 +90,7 @@ void XclImpColRowSettings::HideCol( SCCOL nCol )
void XclImpColRowSettings::HideColRange( SCCOL nCol1, SCCOL nCol2 )
{
- nCol2 = ::std::min( nCol2, MAXCOL );
+ nCol2 = ::std::min( nCol2, GetDoc().MaxCol() );
nCol1 = ::std::min( nCol1, nCol2 );
for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol)
@@ -167,7 +168,7 @@ void XclImpColRowSettings::SetDefaultXF( SCCOL nCol1, SCCOL nCol2, sal_uInt16 nX
/* assign the default column formatting here to ensure that
explicit cell formatting is not overwritten. */
OSL_ENSURE( (nCol1 <= nCol2) && ValidCol( nCol2 ), "XclImpColRowSettings::SetDefaultXF - invalid column index" );
- nCol2 = ::std::min( nCol2, MAXCOL );
+ nCol2 = ::std::min( nCol2, GetDoc().MaxCol() );
nCol1 = ::std::min( nCol1, nCol2 );
XclImpXFRangeBuffer& rXFRangeBuffer = GetXFRangeBuffer();
for( SCCOL nCol = nCol1; nCol <= nCol2; ++nCol )
@@ -184,7 +185,7 @@ void XclImpColRowSettings::Convert( SCTAB nScTab )
// column widths ----------------------------------------------------------
maColWidths.build_tree();
- for (SCCOL nCol = 0; nCol <= MAXCOL; ++nCol)
+ for (SCCOL nCol = 0; nCol <= rDoc.MaxCol(); ++nCol)
{
sal_uInt16 nWidth = mnDefWidth;
if (GetColFlag(nCol, ExcColRowFlags::Used))
@@ -208,10 +209,10 @@ void XclImpColRowSettings::Convert( SCTAB nScTab )
// row heights ------------------------------------------------------------
// #i54252# set default row height
- rDoc.SetRowHeightOnly( 0, MAXROW, nScTab, mnDefHeight );
+ rDoc.SetRowHeightOnly( 0, rDoc.MaxRow(), nScTab, mnDefHeight );
if( ::get_flag( mnDefRowFlags, EXC_DEFROW_UNSYNCED ) )
// first access to row flags, do not ask for old flags
- rDoc.SetRowFlags( 0, MAXROW, nScTab, CRFlags::ManualSize );
+ rDoc.SetRowFlags( 0, rDoc.MaxRow(), nScTab, CRFlags::ManualSize );
maRowHeights.build_tree();
if (!maRowHeights.is_tree_valid())
@@ -273,7 +274,7 @@ void XclImpColRowSettings::ConvertHiddenFlags( SCTAB nScTab )
ScDocument& rDoc = GetDoc();
// hide the columns
- for( SCCOL nCol : rDoc.GetColumnsRange(nScTab, 0, MAXCOL) )
+ for( SCCOL nCol : rDoc.GetColumnsRange(nScTab, 0, rDoc.MaxCol()) )
if (GetColFlag(nCol, ExcColRowFlags::Hidden))
rDoc.ShowCol( nCol, nScTab, false );
@@ -294,7 +295,7 @@ void XclImpColRowSettings::ConvertHiddenFlags( SCTAB nScTab )
// In case the excel row limit is lower than calc's, use the visibility of
// the last row and extend it to calc's last row.
SCROW nLastXLRow = GetRoot().GetXclMaxPos().Row();
- if (nLastXLRow < MAXROW)
+ if (nLastXLRow < rDoc.MaxRow())
{
bool bHidden = false;
if (!maHiddenRows.search(nLastXLRow, bHidden).second)
@@ -326,8 +327,8 @@ void XclImpColRowSettings::ConvertHiddenFlags( SCTAB nScTab )
}
// #i47438# if default row format is hidden, hide remaining rows
- if( ::get_flag( mnDefRowFlags, EXC_DEFROW_HIDDEN ) && (mnLastScRow < MAXROW) )
- rDoc.ShowRows( mnLastScRow + 1, MAXROW, nScTab, false );
+ if( ::get_flag( mnDefRowFlags, EXC_DEFROW_HIDDEN ) && (mnLastScRow < rDoc.MaxRow()) )
+ rDoc.ShowRows( mnLastScRow + 1, rDoc.MaxRow(), nScTab, false );
}
void XclImpColRowSettings::ApplyColFlag(SCCOL nCol, ExcColRowFlags nNewVal)
diff --git a/sc/source/filter/excel/excform.cxx b/sc/source/filter/excel/excform.cxx
index 74718130b7b4..a8397ee17607 100644
--- a/sc/source/filter/excel/excform.cxx
+++ b/sc/source/filter/excel/excform.cxx
@@ -1745,19 +1745,21 @@ void ExcelToSc::SetError( ScFormulaCell &rCell, const ConvErr eErr )
void ExcelToSc::SetComplCol( ScComplexRefData &rCRD )
{
ScSingleRefData &rSRD = rCRD.Ref2;
+ ScDocument& rDoc = GetDocImport().getDoc();
if( rSRD.IsColRel() )
- rSRD.SetRelCol(MAXCOL - aEingPos.Col());
+ rSRD.SetRelCol(rDoc.MaxCol() - aEingPos.Col());
else
- rSRD.SetAbsCol(MAXCOL);
+ rSRD.SetAbsCol(rDoc.MaxCol());
}
void ExcelToSc::SetComplRow( ScComplexRefData &rCRD )
{
ScSingleRefData &rSRD = rCRD.Ref2;
+ ScDocument& rDoc = GetDocImport().getDoc();
if( rSRD.IsRowRel() )
- rSRD.SetRelRow(MAXROW - aEingPos.Row());
+ rSRD.SetRelRow(rDoc.MaxRow() - aEingPos.Row());
else
- rSRD.SetAbsRow(MAXROW);
+ rSRD.SetAbsRow(rDoc.MaxRow());
}
void ExcelToSc::ReadExtensionArray( unsigned int n, XclImpStream& aIn )
diff --git a/sc/source/filter/excel/excform8.cxx b/sc/source/filter/excel/excform8.cxx
index 4ac2697093f0..8c9d0f7191ec 100644
--- a/sc/source/filter/excel/excform8.cxx
+++ b/sc/source/filter/excel/excform8.cxx
@@ -1466,7 +1466,7 @@ void ExcelToSc8::ExcRelToScRel8( sal_uInt16 nRow, sal_uInt16 nC, ScSingleRefData
rSRD.SetRelRow(nRelRow);
}
else
- rSRD.SetAbsRow(std::min( static_cast<SCROW>(nRow), MAXROW));
+ rSRD.SetAbsRow(std::min( static_cast<SCROW>(nRow), GetDoc().MaxRow()));
}
else
{
diff --git a/sc/source/filter/excel/impop.cxx b/sc/source/filter/excel/impop.cxx
index 03c6c73706f4..5c0f1c8acadc 100644
--- a/sc/source/filter/excel/impop.cxx
+++ b/sc/source/filter/excel/impop.cxx
@@ -481,8 +481,8 @@ void ImportExcel::Columndefault()
nColMac--;
- if( nColMac > MAXCOL )
- nColMac = static_cast<sal_uInt16>(MAXCOL);
+ if( nColMac > pD->MaxCol() )
+ nColMac = static_cast<sal_uInt16>(pD->MaxCol());
for( sal_uInt16 nCol = nColMic ; nCol <= nColMac ; nCol++ )
{
@@ -583,8 +583,8 @@ void ImportExcel::Colwidth()
nColWidth = aIn.ReaduInt16();
//TODO: add a check for the unlikely case of changed MAXCOL (-> XclImpAddressConverter)
-// if( nColLast > MAXCOL )
-// nColLast = static_cast<sal_uInt16>(MAXCOL);
+// if( nColLast > pD->MaxCol() )
+// nColLast = static_cast<sal_uInt16>(pD->MaxCol());
sal_uInt16 nScWidth = XclTools::GetScColumnWidth( nColWidth, GetCharWidth() );
pColRowBuff->SetWidthRange( nColFirst, nColLast, nScWidth );
@@ -662,11 +662,11 @@ void ImportExcel::Colinfo()
nXF = aIn.ReaduInt16();
nOpt = aIn.ReaduInt16();
- if( nColFirst > MAXCOL )
+ if( nColFirst > pD->MaxCol() )
return;
- if( nColLast > MAXCOL )
- nColLast = static_cast<sal_uInt16>(MAXCOL);
+ if( nColLast > pD->MaxCol() )
+ nColLast = static_cast<sal_uInt16>(pD->MaxCol());
bool bHidden = ::get_flag( nOpt, EXC_COLINFO_HIDDEN );
bool bCollapsed = ::get_flag( nOpt, EXC_COLINFO_COLLAPSED );
@@ -1131,7 +1131,7 @@ void ImportExcel::TableOp()
else
{
bTabTruncated = true;
- GetTracer().TraceInvalidRow(nLastRow, MAXROW);
+ GetTracer().TraceInvalidRow(nLastRow, pD->MaxRow());
}
}
@@ -1332,13 +1332,13 @@ void ImportExcel::PostDocLoad()
while( p )
{
- if( p->aStart.Col() == 0 && p->aEnd.Col() == MAXCOL && bRowVirgin )
+ if( p->aStart.Col() == 0 && p->aEnd.Col() == pD->MaxCol() && bRowVirgin )
{
pD->SetRepeatRowRange( n, std::unique_ptr<ScRange>(new ScRange(*p)) );
bRowVirgin = false;
}
- if( p->aStart.Row() == 0 && p->aEnd.Row() == MAXROW && bColVirgin )
+ if( p->aStart.Row() == 0 && p->aEnd.Row() == pD->MaxRow() && bColVirgin )
{
pD->SetRepeatColRange( n, std::unique_ptr<ScRange>(new ScRange(*p)) );
bColVirgin = false;
diff --git a/sc/source/filter/excel/xeformula.cxx b/sc/source/filter/excel/xeformula.cxx
index 57c2d71585ca..0068d9bda709 100644
--- a/sc/source/filter/excel/xeformula.cxx
+++ b/sc/source/filter/excel/xeformula.cxx
@@ -596,7 +596,7 @@ void XclExpFmlaCompImpl::Init( XclFormulaType eType, const ScTokenArray& rScTokA
{
// clone the passed token array, convert references relative to current cell position
mxData->mxOwnScTokArr = rScTokArr.Clone();
- ScCompiler::MoveRelWrap( *mxData->mxOwnScTokArr, &GetDocRef(), *pScBasePos, MAXCOL, MAXROW );
+ ScCompiler::MoveRelWrap( *mxData->mxOwnScTokArr, &GetDocRef(), *pScBasePos, GetDocRef().MaxCol(), GetDocRef().MaxRow() );
// don't remember pScBasePos in mxData->mpScBasePos, shared formulas use real relative refs
}
break;
diff --git a/sc/source/filter/excel/xicontent.cxx b/sc/source/filter/excel/xicontent.cxx
index 686fac1ae423..f2d3b67dc1a2 100644
--- a/sc/source/filter/excel/xicontent.cxx
+++ b/sc/source/filter/excel/xicontent.cxx
@@ -448,10 +448,10 @@ void XclImpLabelranges::ReadLabelranges( XclImpStream& rStrm )
{
const ScRange & rScRange = aRowScRanges[ i ];
ScRange aDataRange( rScRange );
- if( aDataRange.aEnd.Col() < MAXCOL )
+ if( aDataRange.aEnd.Col() < rDoc.MaxCol() )
{
aDataRange.aStart.SetCol( aDataRange.aEnd.Col() + 1 );
- aDataRange.aEnd.SetCol( MAXCOL );
+ aDataRange.aEnd.SetCol( rDoc.MaxCol() );
}
else if( aDataRange.aStart.Col() > 0 )
{
@@ -470,10 +470,10 @@ void XclImpLabelranges::ReadLabelranges( XclImpStream& rStrm )
{
const ScRange & rScRange = aColScRanges[ i ];
ScRange aDataRange( rScRange );
- if( aDataRange.aEnd.Row() < MAXROW )
+ if( aDataRange.aEnd.Row() < rDoc.MaxRow() )
{
aDataRange.aStart.SetRow( aDataRange.aEnd.Row() + 1 );
- aDataRange.aEnd.SetRow( MAXROW );
+ aDataRange.aEnd.SetRow( rDoc.MaxRow() );
}
else if( aDataRange.aStart.Row() > 0 )
{
diff --git a/sc/source/filter/excel/xipage.cxx b/sc/source/filter/excel/xipage.cxx
index e5a27f1a68d4..29110f79b363 100644
--- a/sc/source/filter/excel/xipage.cxx
+++ b/sc/source/filter/excel/xipage.cxx
@@ -375,14 +375,14 @@ void XclImpPageSettings::Finalize()
for( const auto& rHorPageBreak : maData.maHorPageBreaks )
{
SCROW nScRow = static_cast< SCROW >( rHorPageBreak );
- if( nScRow <= MAXROW )
+ if( nScRow <= rDoc.MaxRow() )
rDoc.SetRowBreak(nScRow, nScTab, false, true);
}
for( const auto& rVerPageBreak : maData.maVerPageBreaks )
{
SCCOL nScCol = static_cast< SCCOL >( rVerPageBreak );
- if( nScCol <= MAXCOL )
+ if( nScCol <= rDoc.MaxCol() )
rDoc.SetColBreak(nScCol, nScTab, false, true);
}
}
diff --git a/sc/source/filter/excel/xipivot.cxx b/sc/source/filter/excel/xipivot.cxx
index 62a9e10ff2dd..3661667e6e6d 100644
--- a/sc/source/filter/excel/xipivot.cxx
+++ b/sc/source/filter/excel/xipivot.cxx
@@ -755,7 +755,7 @@ void XclImpPivotCache::ReadPivotCacheStream( const XclImpStream& rStrm )
else
aOrigFields.push_back( xCurrField );
// insert field name into generated source data, field remembers its column index
- if( bGenerateSource && (nFieldScCol <= MAXCOL) )
+ if( bGenerateSource && (nFieldScCol <= rDoc.MaxCol()) )
xCurrField->WriteFieldNameToSource( nFieldScCol++, nScTab );
}
// do not read items into invalid/postponed fields
@@ -767,7 +767,7 @@ void XclImpPivotCache::ReadPivotCacheStream( const XclImpStream& rStrm )
case EXC_ID_SXINDEXLIST:
// read index list and insert all items into generated source data
- if( bGenerateSource && (nItemScRow <= MAXROW) && (++nItemScRow <= MAXROW) )
+ if( bGenerateSource && (nItemScRow <= rDoc.MaxRow()) && (++nItemScRow <= rDoc.MaxRow()) )
{
for( const auto& rxOrigField : aOrigFields )
{
@@ -794,12 +794,12 @@ void XclImpPivotCache::ReadPivotCacheStream( const XclImpStream& rStrm )
// read postponed item
aPostpFields[ nPostpIdx ]->ReadItem( aPCStrm );
// write item to source
- if( bGenerateSource && (nItemScRow <= MAXROW) )
+ if( bGenerateSource && (nItemScRow <= rDoc.MaxRow()) )
{
// start new row, if there are only postponed fields
if( aOrigFields.empty() && (nPostpIdx == 0) )
++nItemScRow;
- if( nItemScRow <= MAXROW )
+ if( nItemScRow <= rDoc.MaxRow() )
aPostpFields[ nPostpIdx ]->WriteLastOrigItemToSource( nItemScRow, nScTab );
}
// get index of next postponed field
diff --git a/sc/source/filter/excel/xistyle.cxx b/sc/source/filter/excel/xistyle.cxx
index 0a833ee34807..dea7ab2886c5 100644
--- a/sc/source/filter/excel/xistyle.cxx
+++ b/sc/source/filter/excel/xistyle.cxx
@@ -1976,7 +1976,8 @@ void XclImpXFRangeBuffer::SetMerge( SCCOL nScCol1, SCROW nScRow1, SCCOL nScCol2,
void XclImpXFRangeBuffer::Finalize()
{
- ScDocumentImport& rDoc = GetDocImport();
+ ScDocumentImport& rDocImport = GetDocImport();
+ ScDocument& rDoc = rDocImport.getDoc();
SCTAB nScTab = GetCurrScTab();
// apply patterns
@@ -2005,11 +2006,11 @@ void XclImpXFRangeBuffer::Finalize()
pXF->ApplyPatternToAttrVector(aAttrs, rStyle.mnScRow1, rStyle.mnScRow2, nForceScNumFmt);
}
- if (aAttrs.empty() || aAttrs.back().nEndRow != MAXROW)
+ if (aAttrs.empty() || aAttrs.back().nEndRow != rDoc.MaxRow())
{
ScAttrEntry aEntry;
- aEntry.nEndRow = MAXROW;
- aEntry.pPattern = rDoc.getDoc().GetDefPattern();
+ aEntry.nEndRow = rDoc.MaxRow();
+ aEntry.pPattern = rDoc.GetDefPattern();
aAttrs.push_back(aEntry);
}
@@ -2018,7 +2019,7 @@ void XclImpXFRangeBuffer::Finalize()
ScDocumentImport::Attrs aAttrParam;
aAttrParam.mvData.swap(aAttrs);
aAttrParam.mbLatinNumFmtOnly = false; // when unsure, set it to false.
- rDoc.setAttrEntries(nScTab, nScCol, std::move(aAttrParam));
+ rDocImport.setAttrEntries(nScTab, nScCol, std::move(aAttrParam));
}
++nScCol;
}
@@ -2043,13 +2044,13 @@ void XclImpXFRangeBuffer::Finalize()
SetBorderLine( rRange, nScTab, SvxBoxItemLine::BOTTOM );
// do merge
if( bMultiCol || bMultiRow )
- rDoc.getDoc().DoMerge( nScTab, rStart.Col(), rStart.Row(), rEnd.Col(), rEnd.Row() );
+ rDoc.DoMerge( nScTab, rStart.Col(), rStart.Row(), rEnd.Col(), rEnd.Row() );
// #i93609# merged range in a single row: test if manual row height is needed
if( !bMultiRow )
{
- bool bTextWrap = rDoc.getDoc().GetAttr( rStart, ATTR_LINEBREAK )->GetValue();
- if( !bTextWrap && (rDoc.getDoc().GetCellType( rStart ) == CELLTYPE_EDIT) )
- if (const EditTextObject* pEditObj = rDoc.getDoc().GetEditText(rStart))
+ bool bTextWrap = rDoc.GetAttr( rStart, ATTR_LINEBREAK )->GetValue();
+ if( !bTextWrap && (rDoc.GetCellType( rStart ) == CELLTYPE_EDIT) )
+ if (const EditTextObject* pEditObj = rDoc.GetEditText(rStart))
bTextWrap = pEditObj->GetParagraphCount() > 1;
if( bTextWrap )
GetOldRoot().pColRowBuff->SetManualRowHeight( rStart.Row() );
diff --git a/sc/source/filter/excel/xlescher.cxx b/sc/source/filter/excel/xlescher.cxx
index 09d831d914b8..283c8e60a019 100644
--- a/sc/source/filter/excel/xlescher.cxx
+++ b/sc/source/filter/excel/xlescher.cxx
@@ -144,10 +144,10 @@ tools::Rectangle XclObjAnchor::GetRect( const XclRoot& rRoot, SCTAB nScTab, MapU
ScDocument& rDoc = rRoot.GetDoc();
double fScale = lclGetTwipsScale( eMapUnit );
tools::Rectangle aRect(
- lclGetXFromCol(rDoc, nScTab, std::min<SCCOL>(maFirst.mnCol, MAXCOL), mnLX, fScale),
- lclGetYFromRow(rDoc, nScTab, std::min<SCROW>(maFirst.mnRow, MAXROW), mnTY, fScale),
- lclGetXFromCol(rDoc, nScTab, std::min<SCCOL>(maLast.mnCol, MAXCOL), mnRX + 1, fScale),
- lclGetYFromRow(rDoc, nScTab, std::min<SCROW>(maLast.mnRow, MAXROW), mnBY, fScale));
+ lclGetXFromCol(rDoc, nScTab, std::min<SCCOL>(maFirst.mnCol, rDoc.MaxCol()), mnLX, fScale),
+ lclGetYFromRow(rDoc, nScTab, std::min<SCROW>(maFirst.mnRow, rDoc.MaxRow()), mnTY, fScale),
+ lclGetXFromCol(rDoc, nScTab, std::min<SCCOL>(maLast.mnCol, rDoc.MaxCol()), mnRX + 1, fScale),
+ lclGetYFromRow(rDoc, nScTab, std::min<SCROW>(maLast.mnRow, rDoc.MaxRow()), mnBY, fScale));
// adjust coordinates in mirrored sheets
if( rDoc.IsLayoutRTL( nScTab ) )
diff --git a/sc/source/filter/excel/xlroot.cxx b/sc/source/filter/excel/xlroot.cxx
index 3f559b285703..d8ace493905a 100644
--- a/sc/source/filter/excel/xlroot.cxx
+++ b/sc/source/filter/excel/xlroot.cxx
@@ -92,7 +92,7 @@ XclRootData::XclRootData( XclBiff eBiff, SfxMedium& rMedium,
meDocLang( Application::GetSettings().GetLanguageTag().getLanguageType() ),
meUILang( Application::GetSettings().GetUILanguageTag().getLanguageType() ),
mnDefApiScript( ApiScriptType::LATIN ),
- maScMaxPos( MAXCOL, MAXROW, MAXTAB ),
+ maScMaxPos( mrDoc.MaxCol(), mrDoc.MaxRow(), MAXTAB ),
maXclMaxPos( EXC_MAXCOL2, EXC_MAXROW2, EXC_MAXTAB2 ),
maMaxPos( EXC_MAXCOL2, EXC_MAXROW2, EXC_MAXTAB2 ),
mxFontPropSetHlp( new XclFontPropSetHelper ),