20 #ifndef INCLUDED_SC_INC_MARKMULTI_HXX
21 #define INCLUDED_SC_INC_MARKMULTI_HXX
51 SCCOL GetMultiSelectionCount()
const;
52 bool HasMarks(
SCCOL nCol )
const;
56 bool HasEqualRowsMarked(
SCCOL nCol1,
SCCOL nCol2 )
const;
60 bool IsRowMarked(
SCROW nRow )
const;
61 bool IsRowRangeMarked(
SCROW nStartRow,
SCROW nEndRow )
const;
62 bool IsEmpty()
const {
return ( aMultiSelContainer.empty() && !aRowSel.
HasMarks() ); }
65 void MarkAllCols(
SCROW nStartRow,
SCROW nEndRow );
66 bool HasAnyMarks()
const;
67 void ShiftCols(
SCCOL nStartCol, sal_Int32 nColOffset);
68 void ShiftRows(
SCROW nStartRow, sal_Int32 nRowOffset);
80 std::unique_ptr<ScFlatBoolRowSegments>
pRowSegs;
MapType aMultiSelContainer
ScMarkArrayIter aMarkArrayIter
bool GetRangeData(SCROW nRow, ScFlatBoolRowSegments::RangeData &rRowRange) const
Only to be used by ScMultiSel::IsAllMarked() or otherwise sure that a segment tree is actually used...
bool Next(SCROW &rTop, SCROW &rBottom)
ScMultiSelIter(const ScMultiSel &rMultiSel, SCCOL nCol)
This is a rather odd datastructure.
std::vector< ScMarkArray > MapType
std::unique_ptr< ScFlatBoolRowSegments > pRowSegs
const ScSheetLimits & mrSheetLimits