20 #ifndef INCLUDED_SC_INC_COLUMN_HXX
21 #define INCLUDED_SC_INC_COLUMN_HXX
37 #include <mdds/flat_segment_tree.hpp>
39 namespace editeng {
class SvxBorderLine; }
40 namespace formula {
struct VectorRefArray; }
44 struct FormulaGroupEntry;
45 class StartListeningContext;
46 class EndListeningContext;
47 class CopyFromClipContext;
48 class CopyToClipContext;
49 class CopyToDocContext;
52 class SingleColumnSpanSet;
53 struct RefUpdateContext;
54 struct RefUpdateInsertTabContext;
55 struct RefUpdateDeleteTabContext;
56 struct RefUpdateMoveTabContext;
57 class EditTextIterator;
59 class DocumentStreamAccess;
63 class RowHeightContext;
64 class CompileFormulaContext;
65 struct SetFormulaDirtyContext;
220 bool bConsiderCellDrawObjects=
false)
const;
222 bool bConsiderCellDrawObjects=
false)
const;
224 bool bConsiderCellDrawObjects=
false);
229 bool bConsiderCellDrawObjects=
false )
const;
234 void FindUsed(
SCROW nStartRow,
SCROW nEndRow, mdds::flat_segment_tree<SCROW, bool>& rUsed )
const;
289 bool bSkipEmpty,
const ScColumn& rSrcCol );
302 bool bGlobalNamesToLocal =
false )
const;
340 bool bInheritNumFormatIfNeeded =
true);
344 bool bInheritNumFormatIfNeeded =
true);
353 const std::vector<sc::RowSpan>& rRanges );
361 void SetValues(
const SCROW nRow,
const std::vector<double>& rVals );
456 return static_cast<const T&
>(
GetAttr(nRow, sal_uInt16(nWhich)));
476 bool*
const pIsChanged =
nullptr);
487 const ::editeng::SvxBorderLine* pLine,
bool bColorOnly );
505 bool bInSelection,
const ScMarkData& rMark)
const;
523 bool bInPrintTwips =
false )
const;
580 const sc::CellStoreType::iterator& itr);
599 unsigned nThisThread,
unsigned nThreadsTotal );
637 SCROW nRowOffsetDest = 0)
const;
661 std::vector<SCROW>& rNewSharedRows );
666 void DetachFormulaCells(
const sc::CellStoreType::position_type& aPos,
size_t nLength,
667 std::vector<SCROW>* pNewSharedRows );
671 std::vector<SCROW>* pNewSharedRows );
712 #if DUMP_COLUMN_STORAGE
722 bool bInsertFormula );
724 std::vector<SCROW>& rNewSharedRows,
bool bInsertFormula );
728 const std::vector<SCROW>& rNewSharedRows,
732 const sc::CellStoreType::position_type& aPos,
ScFormulaCell& rCell,
733 const std::vector<SCROW>& rNewSharedRows,
737 std::vector<SCROW>& rNewSharedRows );
745 sc::CellStoreType::const_iterator& itPos,
SCROW nRow,
bool bForward)
const;
Matrix data type that can store values of mixed types.
sc::MatrixEdge GetBlockMatrixEdges(SCROW nRow1, SCROW nRow2, sc::MatrixEdge nMask, bool bNoMatrixAtAll) const
bool CompileErrorCells(sc::CompileFormulaContext &rCxt, FormulaError nErrCode)
SCROW GetCellNotesMinRow() const
SCROW GetCellNotesMaxRow() const
void CellStorageModified()
Called whenever the state of cell array gets modified i.e.
void ApplyStyle(SCROW nRow, const ScStyleSheet *rStyle)
void InterpretDirtyCells(SCROW nRow1, SCROW nRow2)
SCROW GetNotePosition(size_t nIndex) const
void UpdateNoteCaptions(SCROW nRow1, SCROW nRow2)
sal_uLong GetWeightedCount() const
SCSIZE GetEmptyLinesInBlock(SCROW nStartRow, SCROW nEndRow, ScDirection eDir) const
void MixMarked(sc::MixDocContext &rCxt, const ScMarkData &rMark, ScPasteFunc nFunction, bool bSkipEmpty, const ScColumn &rSrcCol)
::boost::intrusive_ptr< ScFormulaCellGroup > ScFormulaCellGroupRef
void SplitFormulaGroupByRelativeRef(const ScRange &rBoundRange)
void DeleteRow(SCROW nStartRow, SCSIZE nSize, std::vector< ScAddress > *pGroupPos)
void SetDirty(SCROW nRow1, SCROW nRow2, BroadcastMode)
void CopyFromClip(sc::CopyFromClipContext &rCxt, SCROW nRow1, SCROW nRow2, tools::Long nDy, ScColumn &rColumn)
void SetTextWidth(SCROW nRow, sal_uInt16 nWidth)
todo: It should be possible to have MarkArrays for each table, in order to enable "search all" across...
void DeleteArea(SCROW nStartRow, SCROW nEndRow, InsertDeleteFlags nDelFlag, bool bBroadcast=true, sc::ColumnSpanSet *pBroadcastSpans=nullptr)
void GetAllNoteEntries(std::vector< sc::NoteEntry > &rNotes) const
Store parameters used in the ScDocument::SetString() method.
void CellNotesDeleting(SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership)
SCSIZE VisibleCount(SCROW nStartRow, SCROW nEndRow) const
bool HasAttrib(SCROW nRow1, SCROW nRow2, HasAttrFlags nMask) const
std::unique_ptr< ScAttrArray > pAttrArray
ScDocument & GetDoc() const
void MergeSelectionPattern(ScMergePatternState &rState, const ScMarkData &rMark, bool bDeep) const
const ScPatternAttr * GetPattern(SCROW nRow) const
void SetError(SCROW nRow, const FormulaError nError)
void StoreToCache(SvStream &rStrm) const
void PrepareBroadcastersForDestruction()
const SfxPoolItem & GetAttr(SCROW nRow, sal_uInt16 nWhich) const
void RestoreFromCache(SvStream &rStrm)
const sc::CellTextAttrStoreType & GetCellAttrStore() const
ScFormulaVectorState GetFormulaVectorState(SCROW nRow) const
void SwapNonEmpty(sc::TableValues &rValues, sc::StartListeningContext &rStartCxt, sc::EndListeningContext &rEndCxt)
void CalculateInThread(ScInterpreterContext &rContext, SCROW nRow, size_t nLen, size_t nOffset, unsigned nThisThread, unsigned nThreadsTotal)
void MarkScenarioIn(ScMarkData &rDestMark) const
~ScColumn() COVERITY_NOEXCEPT_FALSE
bool HasVisibleAttrIn(SCROW nStartRow, SCROW nEndRow) const
Provides methods to allow direct shifting of document content without broadcasting or shifting of bro...
void CompileDBFormula(sc::CompileFormulaContext &rCxt)
broadcast only existing cell broadcasters => no AreaBroadcast of range!
FormulaError GetErrCode(SCROW nRow) const
void SetDirtyIfPostponed()
void CopyUpdated(const ScColumn &rPosCol, ScColumn &rDestCol) const
Think of this as a mini-ScColumn like storage that only stores cell values in a column.
bool GetNextDataPos(SCROW &rRow) const
void GetInputString(sc::ColumnBlockConstPosition &rBlockPos, SCROW nRow, OUString &rString) const
void SetCellNote(SCROW nRow, std::unique_ptr< ScPostIt > pNote)
Context for reference update during shifting, moving or copying of cell ranges.
void CalcAfterLoad(sc::CompileFormulaContext &rCxt, bool bStartListening)
void DuplicateNotes(SCROW nStartRow, size_t nDataSize, ScColumn &rDestCol, sc::ColumnBlockPosition &maDestBlockPos, bool bCloneCaption, SCROW nRowOffsetDest=0) const
std::unique_ptr< ScPostIt > ReleaseNote(SCROW nRow)
void SetEditText(SCROW nRow, std::unique_ptr< EditTextObject > pEditText)
void MergeBlockFrame(SvxBoxItem *pLineOuter, SvxBoxInfoItem *pLineInner, ScLineFlags &rFlags, SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight) const
void BroadcastNewCell(SCROW nRow)
void UpdateDeleteTab(sc::RefUpdateDeleteTabContext &rCxt)
void Broadcast(SCROW nRow)
void ResetChanged(SCROW nStartRow, SCROW nEndRow)
Store position data for column array storage.
void TransferCellValuesTo(SCROW nRow, size_t nLen, sc::CellValues &rDest)
void CopyStaticToDocument(SCROW nRow1, SCROW nRow2, const SvNumberFormatterMergeMap &rMap, ScColumn &rDestCol)
Stores cell values for multiple tables.
CellType GetCellType(SCROW nRow) const
bool RemoveFlags(SCROW nStartRow, SCROW nEndRow, ScMF nFlags)
void BroadcastRows(SCROW nStartRow, SCROW nEndRow, SfxHintId nHint)
bool HasVisibleDataAt(SCROW nRow) const
void ApplyPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPatternAttr &rPatAttr, ScEditDataArray *pDataArray=nullptr, bool *const pIsChanged=nullptr)
void CompileHybridFormula(sc::StartListeningContext &rStartListenCxt, sc::CompileFormulaContext &rCompileCxt)
void HandleStuffAfterParallelCalculation(SCROW nRow, size_t nLen, ScInterpreter *pInterpreter)
bool ExtendMerge(SCCOL nThisCol, SCROW nStartRow, SCROW nEndRow, SCCOL &rPaintCol, SCROW &rPaintRow, bool bRefresh)
void Swap(ScColumn &rOther, SCROW nRow1, SCROW nRow2, bool bPattern)
This is very similar to ScCellValue, except that it references the original value instead of copying ...
formula::FormulaTokenRef ResolveStaticReference(SCROW nRow)
bool HasAttribSelection(const ScMarkData &rMark, HasAttrFlags nMask) const
Accessor class to ScDocument.
void ChangeSelectionIndent(bool bIncrement, const ScMarkData &rMark)
mdds::multi_type_vector< CellFunc, CellStoreEvent > CellStoreType
void RemoveEditTextCharAttribs(SCROW nRow, const ScPatternAttr &rAttr)
void CompileAll(sc::CompileFormulaContext &rCxt)
void DeleteRanges(const std::vector< sc::RowSpan > &rRanges, InsertDeleteFlags nDelFlag)
void CompileColRowNameFormula(sc::CompileFormulaContext &rCxt)
void ApplyBlockFrame(const SvxBoxItem &rLineOuter, const SvxBoxInfoItem *pLineInner, SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight)
bool BroadcastBroadcasters(SCROW nRow1, SCROW nRow2, ScHint &rHint)
Broadcast single broadcasters in range, without explicitly setting anything dirty, not doing area broadcasts.
bool ReservePatternCount(SCSIZE nReserve)
void StartListeners(sc::StartListeningContext &rCxt, bool bAll)
void UpdateDrawObjectsForRow(std::vector< SdrObject * > &pObjects, SCCOL nTargetCol, SCROW nTargetRow)
void GetFormula(SCROW nRow, OUString &rFormula) const
void ApplySelectionStyle(const ScStyleSheet &rStyle, const ScMarkData &rMark)
const sc::CellNoteStoreType & GetCellNoteStore() const
Store arbitrary cell value of any kind.
sal_Int32 GetMaxStringLen(SCROW nRowStart, SCROW nRowEnd, rtl_TextEncoding eCharSet) const
void PreprocessRangeNameUpdate(sc::EndListeningContext &rEndListenCxt, sc::CompileFormulaContext &rCompileCxt)
void CopyToColumn(sc::CopyToDocContext &rCxt, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nFlags, bool bMarked, ScColumn &rColumn, const ScMarkData *pMarkData=nullptr, bool bAsLink=false, bool bGlobalNamesToLocal=false) const
ScFormulaCell * SetFormulaCell(SCROW nRow, ScFormulaCell *pCell, sc::StartListeningType eListenType=sc::SingleCellListening, bool bInheritNumFormatIfNeeded=true)
Takes ownership of pCell.
void PreprocessDBDataUpdate(sc::EndListeningContext &rEndListenCxt, sc::CompileFormulaContext &rCompileCxt)
void UpdateTranspose(const ScRange &rSource, const ScAddress &rDest, ScDocument *pUndoDoc)
bool HasFormulaCell() const
void SetAllFormulasDirty(const sc::SetFormulaDirtyContext &rCxt)
void ApplySelectionLineStyle(const ScMarkData &rMark, const ::editeng::SvxBorderLine *pLine, bool bColorOnly)
void StartListeningFormulaCells(sc::StartListeningContext &rStartCxt, sc::EndListeningContext &rEndCxt, SCROW nRow1, SCROW nRow2)
void CopyToClip(sc::CopyToClipContext &rCxt, SCROW nRow1, SCROW nRow2, ScColumn &rColumn) const
sc::CellStoreType::iterator GetPositionToInsert(SCROW nRow, std::vector< SCROW > &rNewSharedRows, bool bInsertFormula)
Keep track of spans in a single column only.
const ScPatternAttr * pPattern
ScRefCellValue GetCellValue(SCROW nRow) const
size_t SCSIZE
size_t typedef to be able to find places where code was changed from USHORT to size_t and is used to ...
void ForgetNoteCaptions(SCROW nRow1, SCROW nRow2, bool bPreserveData)
mdds::multi_type_vector< BCBlkFunc > BroadcasterStoreType
void UpdateGrow(const ScRange &rArea, SCCOL nGrowX, SCROW nGrowY)
Additional class containing cell annotation data.
void CreateAllNoteCaptions()
void EndListeningFormulaCells(sc::EndListeningContext &rCxt, SCROW nRow1, SCROW nRow2, SCROW *pStartRow, SCROW *pEndRow)
void SetNumberFormat(SCROW nRow, sal_uInt32 nNumberFormat)
const ScStyleSheet * GetSelectionStyle(const ScMarkData &rMark, bool &rFound) const
sc::CellStoreType maCells
void UpdateCompile(bool bForceIfNameInUse=false)
bool SearchStyleRange(SCROW &rRow, SCROW &rEndRow, const ScStyleSheet *pSearchStyle, bool bUp, bool bInSelection, const ScMarkData &rMark) const
ScColumn & operator=(const ScColumn &)=delete
void ResetFormulaCellPositions(SCROW nRow1, SCROW nRow2, bool bUpdateRefs)
Reset column position of formula cells within specified row range.
Walk through all cells in an area.
SCROW GetLastDataPos() const
bool SetFormulaCells(SCROW nRow, std::vector< ScFormulaCell * > &rCells)
sal_uInt32 GetNumberFormat(const ScInterpreterContext &rContext, SCROW nRow) const
void DeleteContent(SCROW nRow, bool bBroadcast=true)
void AttachNewFormulaCells(const sc::CellStoreType::position_type &aPos, size_t nLength, std::vector< SCROW > &rNewSharedRows)
void SetTabNo(SCTAB nNewTab)
SvtBroadcaster * GetBroadcaster(SCROW nRow)
bool SetString(SCROW nRow, SCTAB nTab, const OUString &rString, formula::FormulaGrammar::AddressConvention eConv, const ScSetStringParam *pParam=nullptr)
Returns true if the cell format was set as well.
void SetDirtyFromClip(SCROW nRow1, SCROW nRow2, sc::ColumnSpanSet &rBroadcastSpans)
double GetValue(SCROW nRow) const
size_t GetFormulaHash(SCROW nRow) const
bool UpdateReference(sc::RefUpdateContext &rCxt, ScDocument *pUndoDoc)
Update reference addresses in formula cell in response to mass cell movement.
void GetString(sc::ColumnBlockConstPosition &rBlockPos, SCROW nRow, OUString &rString, const ScInterpreterContext *pContext=nullptr) const
svl::SharedString GetSharedString(SCROW nRow) const
void InsertRow(SCROW nStartRow, SCSIZE nSize)
bool IsStyleSheetUsed(const ScStyleSheet &rStyle) const
void InitBlockPosition(sc::ColumnBlockPosition &rBlockPos)
void AttachNewFormulaCell(const sc::CellStoreType::iterator &itPos, SCROW nRow, ScFormulaCell &rCell, const std::vector< SCROW > &rNewSharedRows, bool bJoin=true, sc::StartListeningType eListenType=sc::SingleCellListening)
mdds::multi_type_vector< CNoteFunc > CellNoteStoreType
Keep track of all named expressions that have been updated during reference update.
void FillMatrix(ScMatrix &rMat, size_t nMatCol, SCROW nRow1, SCROW nRow2, svl::SharedStringPool *pPool) const
void EndListening(SvtListener &rLst, SCROW nRow)
void FindDataAreaPos(SCROW &rRow, bool bDown) const
void SetRawString(SCROW nRow, const OUString &rStr)
void UndoToColumn(sc::CopyToDocContext &rCxt, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nFlags, bool bMarked, ScColumn &rColumn) const
void StartListening(SvtListener &rLst, SCROW nRow)
void SetValues(const SCROW nRow, const std::vector< double > &rVals)
void DeleteBroadcasters(sc::ColumnBlockPosition &rBlockPos, SCROW nRow1, SCROW nRow2)
bool TrimEmptyBlocks(SCROW &rRowStart, SCROW &rRowEnd) const
const ScPatternAttr * GetMostUsedPattern(SCROW nStartRow, SCROW nEndRow) const
bool IsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const
void RegroupFormulaCells(std::vector< ScAddress > *pGroupPos=nullptr)
Regroup formula cells for the entire column.
sc::MultiDataCellState::StateType HasDataCellsInRange(SCROW nRow1, SCROW nRow2, SCROW *pRow1) const
sc::CellTextAttrStoreType maCellTextAttrs
::std::map< sal_uInt32, sal_uInt32 > SvNumberFormatterMergeMap
ScFormulaCell *const * GetFormulaCellBlockAddress(SCROW nRow, size_t &rBlockSize) const
bool TestCopyScenarioTo(const ScColumn &rDestCol) const
void CheckVectorizationState()
bool HasSelectionMatrixFragment(const ScMarkData &rMark) const
void Init(SCCOL nNewCol, SCTAB nNewTab, ScDocument &rDoc, bool bEmptyAttrArray)
const ScStyleSheet * GetStyle(SCROW nRow) const
const ScPatternAttr * SetPattern(SCROW nRow, std::unique_ptr< ScPatternAttr >)
void UpdateInsertTab(sc::RefUpdateInsertTabContext &rCxt)
static void JoinNewFormulaCell(const sc::CellStoreType::position_type &aPos, ScFormulaCell &rCell)
bool TestInsertRow(SCROW nStartRow, SCSIZE nSize) const
void UpdateDrawObjects(std::vector< std::vector< SdrObject * >> &pObjects, SCROW nRowStart, SCROW nRowEnd)
void EndListeningGroup(sc::EndListeningContext &rCxt, SCROW nRow)
Structure that stores segments of boolean flags per column, and perform custom action on those segmen...
bool HasValueData(SCROW nRow) const
void UpdateSelectionFunction(const ScRangeList &rRanges, ScFunctionData &rData, const ScFlatBoolRowSegments &rHiddenRows)
void GetUnprotectedCells(SCROW nStartRow, SCROW nEndRow, ScRangeList &rRangeList) const
void FindUsed(SCROW nStartRow, SCROW nEndRow, mdds::flat_segment_tree< SCROW, bool > &rUsed) const
void EndListeningIntersectedGroups(sc::EndListeningContext &rCxt, SCROW nRow1, SCROW nRow2, std::vector< ScAddress > *pGroupPos)
bool HasStringData(SCROW nRow) const
bool EnsureFormulaCellResults(SCROW nRow1, SCROW nRow2, bool bSkipRunning=false)
double * GetValueCell(SCROW nRow)
void FindRangeNamesInUse(SCROW nRow1, SCROW nRow2, sc::UpdatedRangeNames &rIndexes) const
tools::Long GetNeededSize(SCROW nRow, OutputDevice *pDev, double nPPTX, double nPPTY, const Fraction &rZoomX, const Fraction &rZoomY, bool bWidth, const ScNeededSizeOptions &rOptions, const ScPatternAttr **pPatternChange, bool bInPrintTwips=false) const
void UpdateScriptTypes(SCROW nRow1, SCROW nRow2)
bool TestInsertCol(SCROW nStartRow, SCROW nEndRow) const
bool IsNotesEmptyBlock(SCROW nStartRow, SCROW nEndRow) const
void DetachFormulaCells(const sc::CellStoreType::position_type &aPos, size_t nLength, std::vector< SCROW > *pNewSharedRows)
sc::CellNoteStoreType & GetCellNoteStore()
void CollectFormulaCells(std::vector< ScFormulaCell * > &rCells, SCROW nRow1, SCROW nRow2)
bool UpdateReferenceOnCopy(sc::RefUpdateContext &rCxt, ScDocument *pUndoDoc=nullptr)
void ApplyAttr(SCROW nRow, const SfxPoolItem &rAttr)
BroadcastMode
Broadcast mode for SetDirty(SCROW,SCROW,BroadcastMode).
void CopyScenarioTo(ScColumn &rDestCol) const
sal_uInt32 GetCodeCount() const
Iterate through all edit text cells in a given sheet.
void ClearItems(SCROW nStartRow, SCROW nEndRow, const sal_uInt16 *pWhich)
ScColumn(const ScColumn &)=delete
bool GetFirstVisibleAttr(SCROW &rFirstRow) const
void SetPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPatternAttr &)
void CopyCellNotesToDocument(SCROW nRow1, SCROW nRow2, ScColumn &rDestCol, bool bCloneCaption=true, SCROW nRowOffsetDest=0) const
bool GetLastVisibleAttr(SCROW &rLastRow) const
void MixData(sc::MixDocContext &rCxt, SCROW nRow1, SCROW nRow2, ScPasteFunc nFunction, bool bSkipEmpty, const ScColumn &rSrcCol)
bool TestTabRefAbs(SCTAB nTable) const
bool ApplyFlags(SCROW nStartRow, SCROW nEndRow, ScMF nFlags)
void GetOptimalHeight(sc::RowHeightContext &rCxt, SCROW nStartRow, SCROW nEndRow, sal_uInt16 nMinHeight, SCROW nMinStart)
void DeleteCellNotes(sc::ColumnBlockPosition &rBlockPos, SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership)
void MergePatternArea(ScMergePatternState &rState, SCROW nRow1, SCROW nRow2, bool bDeep) const
void UpdateInsertTabOnlyCells(sc::RefUpdateInsertTabContext &rCxt)
To calculate a single subtotal function.
ScPostIt * GetCellNote(SCROW nRow)
bool ParseString(ScCellValue &rCell, SCROW nRow, SCTAB nTab, const OUString &rString, formula::FormulaGrammar::AddressConvention eConv, const ScSetStringParam *pParam)
sc::CellStoreEvent maCellsEvent
sc::BroadcasterStoreType maBroadcasters
const EditTextObject * GetEditText(SCROW nRow) const
void CollectListeners(std::vector< SvtListener * > &rListeners, SCROW nRow1, SCROW nRow2)
void SetFormula(SCROW nRow, const ScTokenArray &rArray, formula::FormulaGrammar::Grammar eGram)
void AssertNoInterpretNeeded(SCROW nRow1, SCROW nRow2)
void RemoveProtected(SCROW nStartRow, SCROW nEndRow)
bool IsMerged(SCROW nRow) const
void SetFormulaResults(SCROW nRow, const double *pResults, size_t nLen)
bool IsVisibleAttrEqual(const ScColumn &rCol, SCROW nStartRow=0, SCROW nEndRow=MAXROW) const
broadcast existing cells with position => does AreaBroadcast
sc::CellNoteStoreType maCellNotes
sal_uInt16 GetOptimalColWidth(OutputDevice *pDev, double nPPTX, double nPPTY, const Fraction &rZoomX, const Fraction &rZoomY, bool bFormula, sal_uInt16 nOldWidth, const ScMarkData *pMarkData, const ScColWidthParam *pParam) const
void CopyCellValuesFrom(SCROW nRow, const sc::CellValues &rSrc)
void AttachFormulaCells(sc::StartListeningContext &rCxt, SCROW nRow1, SCROW nRow2)
SCROW GetFirstDataPos() const
std::unique_ptr< ScAttrIterator > CreateAttrIterator(SCROW nStartRow, SCROW nEndRow) const
void DumpColumnStorage() const
void SetTableOpDirty(const ScRange &)
SCROW FindNextVisibleRowWithContent(sc::CellStoreType::const_iterator &itPos, SCROW nRow, bool bForward) const
bool HasCellNotes() const
SvtScriptType GetRangeScriptType(sc::CellTextAttrStoreType::iterator &itPos, SCROW nRow1, SCROW nRow2, const sc::CellStoreType::iterator &itr)
Get combined script types of the specified range.
formula::VectorRefArray FetchVectorRefArray(SCROW nRow1, SCROW nRow2)
sc::CellTextAttrStoreType & GetCellAttrStore()
void CopyCellTextAttrsToDocument(SCROW nRow1, SCROW nRow2, ScColumn &rDestCol) const
void DeleteSelection(InsertDeleteFlags nDelFlag, const ScMarkData &rMark, bool bBroadcast)
void MoveTo(SCROW nStartRow, SCROW nEndRow, ScColumn &rCol)
void ClearSelectionItems(const sal_uInt16 *pWhich, const ScMarkData &rMark)
SvtScriptType GetScriptType(SCROW nRow) const
const sc::CellStoreType & GetCellStore() const
void RemoveEditAttribs(SCROW nStartRow, SCROW nEndRow)
std::unique_ptr< sc::ColumnIterator > GetColumnIterator(SCROW nRow1, SCROW nRow2) const
void GetString(SCROW nRow, OUString &rString, const ScInterpreterContext *pContext=nullptr) const
void ApplyPattern(SCROW nRow, const ScPatternAttr &rPatAttr)
const ScFormulaCell * FetchFormulaCell(SCROW nRow) const
void GetFilterEntries(sc::ColumnBlockConstPosition &rBlockPos, SCROW nStartRow, SCROW nEndRow, ScFilterEntries &rFilterEntries)
void CopyOneCellFromClip(sc::CopyFromClipContext &rCxt, SCROW nRow1, SCROW nRow2, size_t nColOffset)
const ScFormulaCell * GetFormulaCell(SCROW nRow) const
void CopyScenarioFrom(const ScColumn &rSrcCol)
std::vector< sc::FormulaGroupEntry > GetFormulaGroupEntries()
Get all non-grouped formula cells and formula cell groups in the whole column.
bool GetNextSpellingCell(SCROW &nRow, bool bInSel, const ScMarkData &rData) const
SCROW SearchStyle(SCROW nRow, const ScStyleSheet *pSearchStyle, bool bUp, bool bInSelection, const ScMarkData &rMark) const
May return -1 if not found.
void UpdateMoveTab(sc::RefUpdateMoveTabContext &rCxt, SCTAB nTabNo)
size_t GetNoteCount() const
void AddCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex)
sal_Int32 GetMaxNumberStringLen(sal_uInt16 &nPrecision, SCROW nRowStart, SCROW nRowEnd) const
SCROW FindNextVisibleRow(SCROW nRow, bool bForward) const
bool IsDrawObjectsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const
SCSIZE GetCellCount() const
void ConvertFormulaToValue(sc::EndListeningContext &rCxt, SCROW nRow1, SCROW nRow2, sc::TableValues *pUndo)
bool HasDataAt(SCROW nRow, bool bConsiderCellNotes=false, bool bConsiderCellDrawObjects=false) const
const T & GetAttr(SCROW nRow, TypedWhichId< T > nWhich) const
SCROW GetNextUnprotected(SCROW nRow, bool bUp) const
Including current, may return -1.
void SwapCol(ScColumn &rCol)
void BroadcastCells(const std::vector< SCROW > &rRows, SfxHintId nHint)
void SetScriptType(SCROW nRow, SvtScriptType nType)
void FindStyleSheet(const SfxStyleSheetBase *pStyleSheet, ScFlatBoolRowSegments &rUsedRows, bool bReset)
void ApplyStyleArea(SCROW nStartRow, SCROW nEndRow, const ScStyleSheet &rStyle)
SCROW ApplySelectionCache(SfxItemPoolCache *pCache, const ScMarkData &rMark, ScEditDataArray *pDataArray, bool *const pIsChanged)
void GetInputString(SCROW nRow, OUString &rString) const
bool HandleRefArrayForParallelism(SCROW nRow1, SCROW nRow2, const ScFormulaCellGroupRef &mxGroup)
ScFormulaVectorState
When vectorization is enabled, we could potentially mass-calculate a series of formula token arrays i...
void SetValue(SCROW nRow, double fVal)
void ApplyPatternIfNumberformatIncompatible(const ScRange &rRange, const ScPatternAttr &rPattern, SvNumFormatType nNewType)
bool IsFormulaDirty(SCROW nRow) const
void RemoveCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex)
void BroadcastRecalcOnRefMove()
bool GetPrevDataPos(SCROW &rRow) const
const sc::CellTextAttr * GetCellTextAttr(SCROW nRow) const
void DeleteCells(sc::ColumnBlockPosition &rBlockPos, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nDelFlag, sc::SingleColumnSpanSet &rDeleted)
const ScStyleSheet * GetAreaStyle(bool &rFound, SCROW nRow1, SCROW nRow2) const
bool HasStringCells(SCROW nStartRow, SCROW nEndRow) const
Return true if there is a string or editcell in the range.
void DeleteBeforeCopyFromClip(sc::CopyFromClipContext &rCxt, const ScColumn &rClipCol, sc::ColumnSpanSet &rBroadcastSpans)
sal_uInt16 GetTextWidth(SCROW nRow) const
void CopyCellToDocument(SCROW nSrcRow, SCROW nDestRow, ScColumn &rDestCol)
void EndListeningIntersectedGroup(sc::EndListeningContext &rCxt, SCROW nRow, std::vector< ScAddress > *pGroupPos)
void SetNeedsListeningGroup(SCROW nRow)
bool GetDataEntries(SCROW nRow, std::set< ScTypedStrData > &rStrings, bool bLimit) const
mdds::multi_type_vector< CTAttrFunc > CellTextAttrStoreType
sc::CellStoreType & GetCellStore()
void CloneFormulaCell(const ScFormulaCell &rSrc, const sc::CellTextAttr &rAttr, const std::vector< sc::RowSpan > &rRanges)
void GetNotesInRange(SCROW nStartRow, SCROW nEndRow, std::vector< sc::NoteEntry > &rNotes) const
bool IsAllAttrEqual(const ScColumn &rCol, SCROW nStartRow, SCROW nEndRow) const
void UpdateInsertTabAbs(SCTAB nNewPos)
bool HasEditCells(SCROW nStartRow, SCROW nEndRow, SCROW &rFirst)
void StartListeningUnshared(const std::vector< SCROW > &rNewSharedRows)
Re-establish listeners on unshared formula groups.
void DetachFormulaCell(const sc::CellStoreType::position_type &aPos, ScFormulaCell &rCell, std::vector< SCROW > &rNewSharedRows)
Detach a formula cell that's about to be deleted, or removed from document storage (if that ever happ...
bool UpdateScriptType(sc::CellTextAttr &rAttr, SCROW nRow, sc::CellStoreType::iterator &itr)
SCSIZE GetPatternCount() const
void CompileXML(sc::CompileFormulaContext &rCxt, ScProgress &rProgress)