LibreOffice Module sc (master)  1
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at .
18  */
20 #pragma once
22 #include "global.hxx"
23 #include "address.hxx"
24 #include "cellvalue.hxx"
25 #include "rangelst.hxx"
26 #include "types.hxx"
27 #include "mtvelements.hxx"
28 #include <formula/types.hxx>
29 #include <svl/zforlist.hxx>
30 #include <svx/svdobj.hxx>
31 #include "attarray.hxx"
33 #include <optional>
34 #include <set>
35 #include <vector>
37 #include <mdds/flat_segment_tree.hpp>
39 namespace editeng { class SvxBorderLine; }
40 namespace formula { struct VectorRefArray; }
42 namespace sc {
44 struct FormulaGroupEntry;
45 class StartListeningContext;
46 class EndListeningContext;
47 class CopyFromClipContext;
48 class CopyToClipContext;
49 class CopyToDocContext;
50 class MixDocContext;
51 class ColumnSpanSet;
52 class SingleColumnSpanSet;
53 struct RefUpdateContext;
54 struct RefUpdateInsertTabContext;
55 struct RefUpdateDeleteTabContext;
56 struct RefUpdateMoveTabContext;
57 class EditTextIterator;
58 struct NoteEntry;
59 class DocumentStreamAccess;
60 class CellValues;
61 class TableValues;
62 struct RowSpan;
63 class RowHeightContext;
64 class CompileFormulaContext;
65 struct SetFormulaDirtyContext;
66 enum class MatrixEdge;
67 class ColumnIterator;
69 }
71 class Fraction;
72 class OutputDevice;
73 class SfxItemPoolCache;
74 class SvtListener;
75 class SfxPoolItem;
76 class SfxStyleSheetBase;
77 class SvxBoxInfoItem;
78 class SvxBoxItem;
80 class ScDocument;
81 class ScEditDataArray;
82 class ScFormulaCell;
83 class ScMarkData;
84 class ScPatternAttr;
85 class ScStyleSheet;
86 class SvtBroadcaster;
87 class ScTypedStrData;
88 class ScProgress;
89 class ScFunctionData;
91 struct ScSetStringParam;
92 struct ScColWidthParam;
93 struct ScRefCellValue;
94 struct ScCellValue;
95 class ScHint;
96 enum class ScMF;
97 struct ScFilterEntries;
101 {
103  bool bFormula;
105  bool bGetFont;
109 };
111 class ScColumn
112 {
113  // Empty values correspond with empty cells. All non-empty cell positions
114  // must have non-empty elements. For text width, the value should be
115  // either the real text width, or TEXTWIDTH_DIRTY in case it hasn't been
116  // calculated yet. For script type, it should be either the real script
117  // type value or SvtScriptType::UNKNOWN.
120  // Cell notes
123  // Broadcasters for formula cells.
128  // Cell values.
131  std::unique_ptr<ScAttrArray> pAttrArray;
138  bool mbFiltering; // it is true if there is a filtering in the column
140 friend class ScDocument; // for FillInfo
141 friend class ScTable;
142 friend class ScValueIterator;
145 friend class ScQueryCellIterator;
148 friend class ScCellIterator;
152 friend class ScDocumentImport;
155 friend class sc::ColumnSpanSet;
156 friend class sc::EditTextIterator;
157 friend class sc::CellValues;
158 friend class sc::TableValues;
159 friend class sc::CellStoreEvent;
161  ScColumn(const ScColumn&) = delete;
162  ScColumn& operator= (const ScColumn&) = delete;
164  bool ParseString(
165  ScCellValue& rCell,
166  SCROW nRow, SCTAB nTab, const OUString& rString, formula::FormulaGrammar::AddressConvention eConv,
167  const ScSetStringParam* pParam );
169 public:
173  {
177  };
179  ScColumn(ScSheetLimits const &);
182  void Init(SCCOL nNewCol, SCTAB nNewTab, ScDocument& rDoc, bool bEmptyAttrArray);
184  ScDocument& GetDoc() const { return pAttrArray->GetDoc(); }
185  SCTAB GetTab() const { return nTab; }
186  SCCOL GetCol() const { return nCol; }
187  bool HasFiltering() const { return mbFiltering; }
189  const sc::CellStoreType& GetCellStore() const { return maCells; }
195  ScRefCellValue GetCellValue( SCROW nRow ) const;
198  static ScRefCellValue GetCellValue( const sc::CellStoreType::const_iterator& itPos, size_t nOffset );
200  const sc::CellTextAttr* GetCellTextAttr( SCROW nRow ) const;
201  const sc::CellTextAttr* GetCellTextAttr( sc::ColumnBlockConstPosition& rBlockPos, SCROW nRow ) const;
203  void Delete( SCROW nRow );
204  void DeleteContent( SCROW nRow, bool bBroadcast = true );
205  void FreeAll();
206  void FreeNotes();
207  void Swap( ScColumn& rOther, SCROW nRow1, SCROW nRow2, bool bPattern );
209  bool HasAttrib( SCROW nRow1, SCROW nRow2, HasAttrFlags nMask ) const;
210  bool HasAttribSelection( const ScMarkData& rMark, HasAttrFlags nMask ) const;
211  bool IsMerged( SCROW nRow ) const;
212  bool ExtendMerge( SCCOL nThisCol, SCROW nStartRow, SCROW nEndRow,
213  SCCOL& rPaintCol, SCROW& rPaintRow,
214  bool bRefresh );
216  bool IsEmptyData() const;
217  bool IsEmptyAttr() const;
219  // data only:
220  bool IsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const;
221  SCSIZE GetEmptyLinesInBlock( SCROW nStartRow, SCROW nEndRow, ScDirection eDir ) const;
222  bool HasDataAt(SCROW nRow, bool bConsiderCellNotes = false,
223  bool bConsiderCellDrawObjects = false, bool bConsiderCellFormats = false) const;
224  bool HasDataAt(sc::ColumnBlockConstPosition& rBlockPos, SCROW nRow,
225  bool bConsiderCellNotes = false, bool bConsiderCellDrawObjects = false,
226  bool bConsiderCellFormats = false) const;
227  bool HasDataAt(sc::ColumnBlockPosition& rBlockPos, SCROW nRow, bool bConsiderCellNotes = false,
228  bool bConsiderCellDrawObjects = false, bool bConsiderCellFormats = false);
229  bool HasVisibleDataAt(SCROW nRow) const;
230  SCROW GetFirstDataPos() const;
231  SCROW GetLastDataPos() const;
232  SCROW GetLastDataPos(SCROW nLastRow, bool bConsiderCellNotes = false,
233  bool bConsiderCellDrawObjects = false,
234  bool bConsiderCellFormats = false) const;
235  bool GetPrevDataPos(SCROW& rRow) const;
236  bool GetNextDataPos(SCROW& rRow) const;
237  bool TrimEmptyBlocks(SCROW& rRowStart, SCROW& rRowEnd) const;
238  void FindDataAreaPos(SCROW& rRow, bool bDown) const; // (without Broadcaster)
239  void FindUsed( SCROW nStartRow, SCROW nEndRow, mdds::flat_segment_tree<SCROW, bool>& rUsed ) const;
241  SCSIZE VisibleCount( SCROW nStartRow, SCROW nEndRow ) const;
242  sc::MatrixEdge GetBlockMatrixEdges(SCROW nRow1, SCROW nRow2, sc::MatrixEdge nMask, bool bNoMatrixAtAll ) const;
243  bool HasSelectionMatrixFragment(const ScMarkData& rMark) const;
245  bool GetFirstVisibleAttr( SCROW& rFirstRow ) const;
246  bool GetLastVisibleAttr( SCROW& rLastRow ) const;
247  bool HasVisibleAttrIn( SCROW nStartRow, SCROW nEndRow ) const;
248  bool IsVisibleAttrEqual( const ScColumn& rCol, SCROW nStartRow = 0,
249  SCROW nEndRow = MAXROW ) const;
250  bool IsAllAttrEqual( const ScColumn& rCol, SCROW nStartRow, SCROW nEndRow ) const;
252  bool TestInsertCol( SCROW nStartRow, SCROW nEndRow) const;
253  bool TestInsertRow( SCROW nStartRow, SCSIZE nSize ) const;
254  void InsertRow( SCROW nStartRow, SCSIZE nSize );
255  void GetUnprotectedCells(SCROW nStartRow, SCROW nEndRow, ScRangeList& rRangeList ) const;
263  void DeleteRow( SCROW nStartRow, SCSIZE nSize, std::vector<ScAddress>* pGroupPos );
265  void DeleteArea(
266  SCROW nStartRow, SCROW nEndRow, InsertDeleteFlags nDelFlag,
267  bool bBroadcast = true, sc::ColumnSpanSet* pBroadcastSpans = nullptr );
269  void DeleteRanges( const std::vector<sc::RowSpan>& rRanges, InsertDeleteFlags nDelFlag );
271  void CopyToClip(
272  sc::CopyToClipContext& rCxt, SCROW nRow1, SCROW nRow2, ScColumn& rColumn ) const;
275  SCROW nRow1, SCROW nRow2, const SvNumberFormatterMergeMap& rMap, ScColumn& rDestCol );
277  void CopyCellToDocument( SCROW nSrcRow, SCROW nDestRow, ScColumn& rDestCol );
278  void InitBlockPosition( sc::ColumnBlockPosition& rBlockPos );
279  void InitBlockPosition( sc::ColumnBlockConstPosition& rBlockPos ) const;
282  sc::CopyFromClipContext& rCxt, const ScColumn& rClipCol, sc::ColumnSpanSet& rBroadcastSpans );
284  void CopyOneCellFromClip( sc::CopyFromClipContext& rCxt, SCROW nRow1, SCROW nRow2, size_t nColOffset );
286  void CopyFromClip(
287  sc::CopyFromClipContext& rCxt, SCROW nRow1, SCROW nRow2, tools::Long nDy, ScColumn& rColumn );
289  void RemoveEditAttribs( SCROW nStartRow, SCROW nEndRow );
291  // Selection (?) of this document
292  void MixMarked(
293  sc::MixDocContext& rCxt, const ScMarkData& rMark, ScPasteFunc nFunction,
294  bool bSkipEmpty, const ScColumn& rSrcCol );
295  void MixData(
296  sc::MixDocContext& rCxt, SCROW nRow1, SCROW nRow2, ScPasteFunc nFunction, bool bSkipEmpty,
297  const ScColumn& rSrcCol );
299  std::unique_ptr<ScAttrIterator> CreateAttrIterator( SCROW nStartRow, SCROW nEndRow ) const;
302  const ScRangeList& rRanges, ScFunctionData& rData, const ScFlatBoolRowSegments& rHiddenRows );
304  void CopyToColumn(
305  sc::CopyToDocContext& rCxt, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nFlags, bool bMarked,
306  ScColumn& rColumn, const ScMarkData* pMarkData = nullptr, bool bAsLink = false,
307  bool bGlobalNamesToLocal = false ) const;
309  void UndoToColumn(
310  sc::CopyToDocContext& rCxt, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nFlags, bool bMarked,
311  ScColumn& rColumn) const;
313  void CopyScenarioFrom( const ScColumn& rSrcCol );
314  void CopyScenarioTo( ScColumn& rDestCol ) const;
315  bool TestCopyScenarioTo( const ScColumn& rDestCol ) const;
316  void MarkScenarioIn( ScMarkData& rDestMark ) const;
318  void CopyUpdated( const ScColumn& rPosCol, ScColumn& rDestCol ) const;
320  void SwapCol(ScColumn& rCol);
321  void MoveTo(SCROW nStartRow, SCROW nEndRow, ScColumn& rCol);
323  bool HasEditCells(SCROW nStartRow, SCROW nEndRow, SCROW& rFirst);
325  bool SetString(
326  SCROW nRow, SCTAB nTab, const OUString& rString, formula::FormulaGrammar::AddressConvention eConv,
327  const ScSetStringParam* pParam = nullptr );
329  void SetEditText( SCROW nRow, std::unique_ptr<EditTextObject> pEditText );
330  void SetEditText( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, std::unique_ptr<EditTextObject> pEditText );
331  void SetEditText( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, const EditTextObject& rEditText );
332  void SetEditText( SCROW nRow, const EditTextObject& rEditText, const SfxItemPool* pEditPool );
333  void SetFormula( SCROW nRow, const ScTokenArray& rArray, formula::FormulaGrammar::Grammar eGram );
334  void SetFormula( SCROW nRow, const OUString& rFormula, formula::FormulaGrammar::Grammar eGram );
343  SCROW nRow, ScFormulaCell* pCell,
345  bool bInheritNumFormatIfNeeded = true);
346  void SetFormulaCell(
347  sc::ColumnBlockPosition& rBlockPos, SCROW nRow, ScFormulaCell* pCell,
349  bool bInheritNumFormatIfNeeded = true);
351  bool SetFormulaCells( SCROW nRow, std::vector<ScFormulaCell*>& rCells );
353  bool HasFormulaCell() const;
354  bool HasFormulaCell( SCROW nRow1, SCROW nRow2 ) const;
356  void CloneFormulaCell(
357  const ScFormulaCell& rSrc, const sc::CellTextAttr& rAttr,
358  const std::vector<sc::RowSpan>& rRanges );
362  void SetRawString( SCROW nRow, const OUString& rStr );
363  void SetRawString( SCROW nRow, const svl::SharedString& rStr );
364  void SetRawString( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, const svl::SharedString& rStr, bool bBroadcast = true );
365  void SetValue( SCROW nRow, double fVal );
366  void SetValues( const SCROW nRow, const std::vector<double>& rVals );
367  void SetValue( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, double fVal, bool bBroadcast = true );
368  void SetError( SCROW nRow, const FormulaError nError);
370  void GetString( SCROW nRow, OUString& rString, const ScInterpreterContext* pContext = nullptr ) const
371  { return GetString( GetCellValue( nRow ), nRow, rString, pContext ); }
373  OUString& rString, const ScInterpreterContext* pContext = nullptr ) const
374  { return GetString( GetCellValue( rBlockPos, nRow ), nRow, rString, pContext ); }
375  double* GetValueCell( SCROW nRow );
376  void GetInputString( SCROW nRow, OUString& rString ) const
377  { return GetInputString( GetCellValue( nRow ), nRow, rString ); }
378  void GetInputString( sc::ColumnBlockConstPosition& rBlockPos, SCROW nRow, OUString& rString ) const
379  { return GetInputString( GetCellValue( rBlockPos, nRow ), nRow, rString ); }
380  double GetValue( SCROW nRow ) const;
381  const EditTextObject* GetEditText( SCROW nRow ) const;
382  void RemoveEditTextCharAttribs( SCROW nRow, const ScPatternAttr& rAttr );
383  void GetFormula( SCROW nRow, OUString& rFormula ) const;
384  const ScFormulaCell* GetFormulaCell( SCROW nRow ) const;
386  ScFormulaCell * const * GetFormulaCellBlockAddress( SCROW nRow, size_t& rBlockSize ) const;
387  CellType GetCellType( SCROW nRow ) const;
388  SCSIZE GetCellCount() const;
389  sal_uLong GetWeightedCount() const;
390  sal_uLong GetWeightedCount(SCROW nStartRow, SCROW nEndRow) const;
391  sal_uInt32 GetCodeCount() const; // RPN-Code in formulas
392  FormulaError GetErrCode( SCROW nRow ) const;
394  bool HasStringData( SCROW nRow ) const;
395  bool HasValueData( SCROW nRow ) const;
396  bool HasStringCells( SCROW nStartRow, SCROW nEndRow ) const;
399  SCROW nRow1, SCROW nRow2, SCROW* pRow1 ) const;
401  bool IsFormulaDirty( SCROW nRow ) const;
405  void SetDirtyFromClip( SCROW nRow1, SCROW nRow2, sc::ColumnSpanSet& rBroadcastSpans );
406  void SetDirty( SCROW nRow1, SCROW nRow2, BroadcastMode );
407  void SetDirtyVar();
408  void SetDirtyAfterLoad();
409  void SetTableOpDirty( const ScRange& );
410  void CalcAll();
411  void CalcAfterLoad( sc::CompileFormulaContext& rCxt, bool bStartListening );
413  void CompileXML( sc::CompileFormulaContext& rCxt, ScProgress& rProgress );
420  bool BroadcastBroadcasters( SCROW nRow1, SCROW nRow2, ScHint& rHint );
424  void ResetChanged( SCROW nStartRow, SCROW nEndRow );
426  bool UpdateReferenceOnCopy( sc::RefUpdateContext& rCxt, ScDocument* pUndoDoc = nullptr );
435  bool UpdateReference( sc::RefUpdateContext& rCxt, ScDocument* pUndoDoc );
440  void UpdateMoveTab( sc::RefUpdateMoveTabContext& rCxt, SCTAB nTabNo );
441  void UpdateCompile( bool bForceIfNameInUse = false );
442  void UpdateTranspose( const ScRange& rSource, const ScAddress& rDest,
443  ScDocument* pUndoDoc );
444  void UpdateGrow( const ScRange& rArea, SCCOL nGrowX, SCROW nGrowY );
446  void SetTabNo(SCTAB nNewTab);
447  void FindRangeNamesInUse(SCROW nRow1, SCROW nRow2, sc::UpdatedRangeNames& rIndexes) const;
450  sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt );
453  sc::StartListeningContext& rStartListenCxt, sc::CompileFormulaContext& rCompileCxt );
456  sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt );
458  const SfxPoolItem& GetAttr( SCROW nRow, sal_uInt16 nWhich ) const;
459  template<class T> const T& GetAttr( SCROW nRow, TypedWhichId<T> nWhich ) const
460  {
461  return static_cast<const T&>(GetAttr(nRow, sal_uInt16(nWhich)));
462  }
463  const ScPatternAttr* GetPattern( SCROW nRow ) const;
464  const ScPatternAttr* GetMostUsedPattern( SCROW nStartRow, SCROW nEndRow ) const;
466  sal_uInt32 GetNumberFormat( const ScInterpreterContext& rContext, SCROW nRow ) const;
467  sal_uInt32 GetNumberFormat( SCROW nStartRow, SCROW nEndRow ) const;
469  void MergeSelectionPattern( ScMergePatternState& rState, const ScMarkData& rMark, bool bDeep ) const;
470  void MergePatternArea( ScMergePatternState& rState, SCROW nRow1, SCROW nRow2, bool bDeep ) const;
471  void MergeBlockFrame( SvxBoxItem* pLineOuter, SvxBoxInfoItem* pLineInner,
472  ScLineFlags& rFlags,
473  SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight ) const;
474  void ApplyBlockFrame(const SvxBoxItem& rLineOuter, const SvxBoxInfoItem* pLineInner,
475  SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight);
477  void ApplyAttr( SCROW nRow, const SfxPoolItem& rAttr );
478  void ApplyPattern( SCROW nRow, const ScPatternAttr& rPatAttr );
479  void ApplyPatternArea( SCROW nStartRow, SCROW nEndRow, const ScPatternAttr& rPatAttr,
480  ScEditDataArray* pDataArray = nullptr,
481  bool* const pIsChanged = nullptr);
482  const ScPatternAttr* SetPattern( SCROW nRow, std::unique_ptr<ScPatternAttr> );
483  void SetPattern( SCROW nRow, const ScPatternAttr& );
484  void SetPatternArea( SCROW nStartRow, SCROW nEndRow, const ScPatternAttr& );
486  const ScPatternAttr& rPattern, SvNumFormatType nNewType );
488  void ApplyStyle( SCROW nRow, const ScStyleSheet* rStyle );
489  void ApplyStyleArea( SCROW nStartRow, SCROW nEndRow, const ScStyleSheet& rStyle );
490  void ApplySelectionStyle(const ScStyleSheet& rStyle, const ScMarkData& rMark);
491  void ApplySelectionLineStyle( const ScMarkData& rMark,
492  const ::editeng::SvxBorderLine* pLine, bool bColorOnly );
493  void AddCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex );
494  void RemoveCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex );
496  const ScStyleSheet* GetStyle( SCROW nRow ) const;
497  const ScStyleSheet* GetSelectionStyle( const ScMarkData& rMark, bool& rFound ) const;
498  const ScStyleSheet* GetAreaStyle( bool& rFound, SCROW nRow1, SCROW nRow2 ) const;
500  void FindStyleSheet( const SfxStyleSheetBase* pStyleSheet, ScFlatBoolRowSegments& rUsedRows, bool bReset );
501  bool IsStyleSheetUsed( const ScStyleSheet& rStyle ) const;
505  SCROW nRow, const ScStyleSheet* pSearchStyle, bool bUp, bool bInSelection,
506  const ScMarkData& rMark) const;
508  bool SearchStyleRange(
509  SCROW& rRow, SCROW& rEndRow, const ScStyleSheet* pSearchStyle, bool bUp,
510  bool bInSelection, const ScMarkData& rMark) const;
512  bool ApplyFlags( SCROW nStartRow, SCROW nEndRow, ScMF nFlags );
513  bool RemoveFlags( SCROW nStartRow, SCROW nEndRow, ScMF nFlags );
514  void ClearItems( SCROW nStartRow, SCROW nEndRow, const sal_uInt16* pWhich );
516  void RemoveProtected( SCROW nStartRow, SCROW nEndRow );
518  SCROW ApplySelectionCache( SfxItemPoolCache* pCache, const ScMarkData& rMark, ScEditDataArray* pDataArray, bool* const pIsChanged );
519  void DeleteSelection( InsertDeleteFlags nDelFlag, const ScMarkData& rMark, bool bBroadcast );
521  void ClearSelectionItems( const sal_uInt16* pWhich, const ScMarkData& rMark );
522  void ChangeSelectionIndent( bool bIncrement, const ScMarkData& rMark );
525  SCROW nRow, OutputDevice* pDev, double nPPTX, double nPPTY,
526  const Fraction& rZoomX, const Fraction& rZoomY,
527  bool bWidth, const ScNeededSizeOptions& rOptions, const ScPatternAttr** pPatternChange,
528  bool bInPrintTwips = false ) const;
530  sal_uInt16 GetOptimalColWidth(
531  OutputDevice* pDev, double nPPTX, double nPPTY,
532  const Fraction& rZoomX, const Fraction& rZoomY,
533  bool bFormula, sal_uInt16 nOldWidth, const ScMarkData* pMarkData, const ScColWidthParam* pParam) const;
535  void GetOptimalHeight(
536  sc::RowHeightContext& rCxt, SCROW nStartRow, SCROW nEndRow, sal_uInt16 nMinHeight, SCROW nMinStart );
539  SCROW GetNextUnprotected( SCROW nRow, bool bUp ) const;
541  void GetFilterEntries(
542  sc::ColumnBlockConstPosition& rBlockPos, SCROW nStartRow, SCROW nEndRow,
543  ScFilterEntries& rFilterEntries, bool bFiltering );
545  bool GetDataEntries( SCROW nRow, std::set<ScTypedStrData>& rStrings) const;
547  void UpdateInsertTabAbs(SCTAB nNewPos);
548  bool TestTabRefAbs(SCTAB nTable) const;
549  bool GetNextSpellingCell(SCROW& nRow, bool bInSel, const ScMarkData& rData) const;
552  sc::StartListeningContext& rStartCxt, sc::EndListeningContext& rEndCxt, SCROW nRow1, SCROW nRow2 );
555  sc::EndListeningContext& rCxt, SCROW nRow1, SCROW nRow2,
556  SCROW* pStartRow, SCROW* pEndRow );
558  void StartListening( SvtListener& rLst, SCROW nRow );
559  void EndListening( SvtListener& rLst, SCROW nRow );
560  void StartListening( sc::StartListeningContext& rCxt, const ScAddress& rAddress, SvtListener& rListener );
561  void EndListening( sc::EndListeningContext& rCxt, const ScAddress& rAddress, SvtListener& rListener );
562  void StartListeners( sc::StartListeningContext& rCxt, bool bAll );
563  void SetDirtyIfPostponed();
565  void CollectListeners( std::vector<SvtListener*>& rListeners, SCROW nRow1, SCROW nRow2 );
566  void CollectFormulaCells( std::vector<ScFormulaCell*>& rCells, SCROW nRow1, SCROW nRow2 );
571  sal_Int32 GetMaxStringLen( SCROW nRowStart, SCROW nRowEnd, rtl_TextEncoding eCharSet ) const;
572  sal_Int32 GetMaxNumberStringLen( sal_uInt16& nPrecision,
573  SCROW nRowStart, SCROW nRowEnd ) const;
575  sal_uInt16 GetTextWidth(SCROW nRow) const;
576  void SetTextWidth(SCROW nRow, sal_uInt16 nWidth);
578  SvtScriptType GetScriptType( SCROW nRow ) const;
584  SvtScriptType GetRangeScriptType( sc::CellTextAttrStoreType::iterator& itPos, SCROW nRow1, SCROW nRow2,
585  const sc::CellStoreType::iterator& itr);
587  void SetScriptType( SCROW nRow, SvtScriptType nType );
588  void UpdateScriptTypes( SCROW nRow1, SCROW nRow2 );
591  bool ResolveStaticReference( ScMatrix& rMat, SCCOL nMatCol, SCROW nRow1, SCROW nRow2 );
592  void FillMatrix( ScMatrix& rMat, size_t nMatCol, SCROW nRow1, SCROW nRow2, svl::SharedStringPool* pPool ) const;
594  bool HandleRefArrayForParallelism( SCROW nRow1, SCROW nRow2, const ScFormulaCellGroupRef& mxGroup );
595 #ifdef DBG_UTIL
596  void AssertNoInterpretNeeded( SCROW nRow1, SCROW nRow2 );
597 #endif
598  void SetFormulaResults( SCROW nRow, const double* pResults, size_t nLen );
600  void CalculateInThread( ScInterpreterContext& rContext, SCROW nRow, size_t nLen, size_t nOffset,
601  unsigned nThisThread, unsigned nThreadsTotal );
602  void HandleStuffAfterParallelCalculation( SCROW nRow, size_t nLen, ScInterpreter* pInterpreter );
604  void SetNumberFormat( SCROW nRow, sal_uInt32 nNumberFormat );
607  const SvtBroadcaster* GetBroadcaster( SCROW nRow ) const;
609  void DeleteBroadcasters( sc::ColumnBlockPosition& rBlockPos, SCROW nRow1, SCROW nRow2 );
612  void Broadcast( SCROW nRow );
613  void BroadcastCells( const std::vector<SCROW>& rRows, SfxHintId nHint );
614  void BroadcastRows( SCROW nStartRow, SCROW nEndRow, SfxHintId nHint );
616  // cell notes
617  ScPostIt* GetCellNote( SCROW nRow );
618  const ScPostIt* GetCellNote( SCROW nRow ) const;
620  const ScPostIt* GetCellNote( sc::ColumnBlockConstPosition& rBlockPos, SCROW nRow ) const;
621  void DeleteCellNotes( sc::ColumnBlockPosition& rBlockPos, SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership );
622  bool HasCellNote(SCROW nStartRow, SCROW nEndRow) const;
623  bool HasCellNotes() const;
624  void SetCellNote( SCROW nRow, std::unique_ptr<ScPostIt> pNote);
625  bool IsNotesEmptyBlock(SCROW nStartRow, SCROW nEndRow) const;
627  std::unique_ptr<ScPostIt> ReleaseNote( SCROW nRow );
628  size_t GetNoteCount() const;
629  void CreateAllNoteCaptions();
630  void ForgetNoteCaptions( SCROW nRow1, SCROW nRow2, bool bPreserveData );
631  SCROW GetNotePosition( size_t nIndex ) const;
632  void GetAllNoteEntries( std::vector<sc::NoteEntry>& rNotes ) const;
633  void GetNotesInRange( SCROW nStartRow, SCROW nEndRow, std::vector<sc::NoteEntry>& rNotes ) const;
635  SCROW GetCellNotesMaxRow() const;
636  SCROW GetCellNotesMinRow() const;
639  SCROW nRow1, SCROW nRow2, ScColumn& rDestCol, bool bCloneCaption = true,
640  SCROW nRowOffsetDest = 0) const;
642  void DuplicateNotes(SCROW nStartRow, size_t nDataSize, ScColumn& rDestCol,
643  sc::ColumnBlockPosition& maDestBlockPos, bool bCloneCaption, SCROW nRowOffsetDest=0 ) const;
645  void UpdateNoteCaptions( SCROW nRow1, SCROW nRow2 );
647  void UpdateDrawObjects( std::vector<std::vector<SdrObject*>>& pObjects, SCROW nRowStart, SCROW nRowEnd );
648  void UpdateDrawObjectsForRow( std::vector<SdrObject*>& pObjects, SCCOL nTargetCol, SCROW nTargetRow );
649  bool IsDrawObjectsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const;
651  void InterpretDirtyCells( SCROW nRow1, SCROW nRow2 );
653  static void JoinNewFormulaCell( const sc::CellStoreType::position_type& aPos, ScFormulaCell& rCell );
663  void DetachFormulaCell( const sc::CellStoreType::position_type& aPos, ScFormulaCell& rCell,
664  std::vector<SCROW>& rNewSharedRows );
667  void StartListeningUnshared( const std::vector<SCROW>& rNewSharedRows );
669  void DetachFormulaCells( const sc::CellStoreType::position_type& aPos, size_t nLength,
670  std::vector<SCROW>* pNewSharedRows );
672  void AttachFormulaCells( sc::StartListeningContext& rCxt, SCROW nRow1, SCROW nRow2 );
673  void DetachFormulaCells( sc::EndListeningContext& rCxt, SCROW nRow1, SCROW nRow2,
674  std::vector<SCROW>* pNewSharedRows );
679  void RegroupFormulaCells( std::vector<ScAddress>* pGroupPos = nullptr );
696  void ResetFormulaCellPositions( SCROW nRow1, SCROW nRow2, bool bUpdateRefs );
698  void SplitFormulaGroupByRelativeRef( const ScRange& rBoundRange );
700  void TransferCellValuesTo( SCROW nRow, size_t nLen, sc::CellValues& rDest );
701  void CopyCellValuesFrom( SCROW nRow, const sc::CellValues& rSrc );
703  sc::EndListeningContext& rCxt, SCROW nRow1, SCROW nRow2, sc::TableValues* pUndo );
705  void SwapNonEmpty(
706  sc::TableValues& rValues, sc::StartListeningContext& rStartCxt, sc::EndListeningContext& rEndCxt );
708  std::optional<sc::ColumnIterator> GetColumnIterator( SCROW nRow1, SCROW nRow2 ) const;
710  bool EnsureFormulaCellResults( SCROW nRow1, SCROW nRow2, bool bSkipRunning = false );
712  void StoreToCache(SvStream& rStrm) const;
713  void RestoreFromCache(SvStream& rStrm);
716  void DumpColumnStorage() const;
717 #endif
719  SCSIZE GetPatternCount() const;
720  SCSIZE GetPatternCount( SCROW nRow1, SCROW nRow2 ) const;
721  bool ReservePatternCount( SCSIZE nReserve );
723 private:
725  sc::CellStoreType::iterator GetPositionToInsert( SCROW nRow, std::vector<SCROW>& rNewSharedRows,
726  bool bInsertFormula );
727  sc::CellStoreType::iterator GetPositionToInsert( const sc::CellStoreType::iterator& it, SCROW nRow,
728  std::vector<SCROW>& rNewSharedRows, bool bInsertFormula );
731  const sc::CellStoreType::iterator& itPos, SCROW nRow, ScFormulaCell& rCell,
732  const std::vector<SCROW>& rNewSharedRows,
733  bool bJoin = true, sc::StartListeningType eListenType = sc::SingleCellListening );
736  const sc::CellStoreType::position_type& aPos, ScFormulaCell& rCell,
737  const std::vector<SCROW>& rNewSharedRows,
738  bool bJoin = true, sc::StartListeningType eListenType = sc::SingleCellListening );
740 public:
741  void AttachNewFormulaCells(const sc::CellStoreType::position_type& aPos, size_t nLength,
742  std::vector<SCROW>& rNewSharedRows);
744 private:
745  void BroadcastNewCell( SCROW nRow );
746  bool UpdateScriptType( sc::CellTextAttr& rAttr, SCROW nRow, sc::CellStoreType::iterator& itr );
748  const ScFormulaCell* FetchFormulaCell( SCROW nRow ) const;
751  sc::CellStoreType::const_iterator& itPos, SCROW nRow, bool bForward) const;
752  SCROW FindNextVisibleRow(SCROW nRow, bool bForward) const;
754  void GetString( const ScRefCellValue& cell, SCROW nRow, OUString& rString, const ScInterpreterContext* pContext = nullptr ) const;
755  void GetInputString( const ScRefCellValue& cell, SCROW nRow, OUString& rString ) const;
763  void CellStorageModified();
764  void CellNotesDeleting(SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership );
766  void CopyCellTextAttrsToDocument(SCROW nRow1, SCROW nRow2, ScColumn& rDestCol) const;
768  void DeleteCells(
769  sc::ColumnBlockPosition& rBlockPos, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nDelFlag,
770  sc::SingleColumnSpanSet& rDeleted );
776  std::vector<sc::FormulaGroupEntry> GetFormulaGroupEntries();
779  sc::EndListeningContext& rCxt, SCROW nRow, std::vector<ScAddress>* pGroupPos );
782  sc::EndListeningContext& rCxt, SCROW nRow1, SCROW nRow2, std::vector<ScAddress>* pGroupPos );
784  void EndListeningGroup( sc::EndListeningContext& rCxt, SCROW nRow );
785  void SetNeedsListeningGroup( SCROW nRow );
786 };
788 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Matrix data type that can store values of mixed types.
Definition: scmatrix.hxx:112
sc::MatrixEdge GetBlockMatrixEdges(SCROW nRow1, SCROW nRow2, sc::MatrixEdge nMask, bool bNoMatrixAtAll) const
Definition: column.cxx:114
bool CompileErrorCells(sc::CompileFormulaContext &rCxt, FormulaError nErrCode)
Definition: column.cxx:3410
SCROW GetCellNotesMinRow() const
Definition: column2.cxx:2034
SCROW GetCellNotesMaxRow() const
Definition: column2.cxx:2023
void CellStorageModified()
Called whenever the state of cell array gets modified i.e.
Definition: column2.cxx:1601
void ApplyStyle(SCROW nRow, const ScStyleSheet *rStyle)
Definition: column.cxx:560
void FreeAll()
Definition: column3.cxx:153
void InterpretDirtyCells(SCROW nRow1, SCROW nRow2)
Definition: column3.cxx:112
constexpr double nPPTY
SCROW GetNotePosition(size_t nIndex) const
Definition: column4.cxx:684
void UpdateNoteCaptions(SCROW nRow1, SCROW nRow2)
Definition: column.cxx:1921
sal_uLong GetWeightedCount() const
Definition: column2.cxx:3573
SCSIZE GetEmptyLinesInBlock(SCROW nStartRow, SCROW nEndRow, ScDirection eDir) const
Definition: column2.cxx:1285
void MixMarked(sc::MixDocContext &rCxt, const ScMarkData &rMark, ScPasteFunc nFunction, bool bSkipEmpty, const ScColumn &rSrcCol)
Definition: column3.cxx:1464
::boost::intrusive_ptr< ScFormulaCellGroup > ScFormulaCellGroupRef
Definition: types.hxx:43
void SplitFormulaGroupByRelativeRef(const ScRange &rBoundRange)
Definition: column4.cxx:1223
void DeleteRow(SCROW nStartRow, SCSIZE nSize, std::vector< ScAddress > *pGroupPos)
Definition: column3.cxx:186
void SetDirty(SCROW nRow1, SCROW nRow2, BroadcastMode)
Definition: column.cxx:3297
void CopyFromClip(sc::CopyFromClipContext &rCxt, SCROW nRow1, SCROW nRow2, tools::Long nDy, ScColumn &rColumn)
Definition: column3.cxx:1391
void SetTextWidth(SCROW nRow, sal_uInt16 nWidth)
Definition: column2.cxx:2050
todo: It should be possible to have MarkArrays for each table, in order to enable "search all" across...
Definition: markdata.hxx:42
void DeleteArea(SCROW nStartRow, SCROW nEndRow, InsertDeleteFlags nDelFlag, bool bBroadcast=true, sc::ColumnSpanSet *pBroadcastSpans=nullptr)
Definition: column3.cxx:989
void GetAllNoteEntries(std::vector< sc::NoteEntry > &rNotes) const
Definition: column4.cxx:749
Store parameters used in the ScDocument::SetString() method.
Definition: stringutil.hxx:34
void CellNotesDeleting(SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership)
Definition: column2.cxx:2000
SCSIZE VisibleCount(SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:1225
bool HasAttrib(SCROW nRow1, SCROW nRow2, HasAttrFlags nMask) const
Definition: column.cxx:303
std::unique_ptr< ScAttrArray > pAttrArray
Definition: column.hxx:131
ScDocument & GetDoc() const
Definition: column.hxx:184
void MergeSelectionPattern(ScMergePatternState &rState, const ScMarkData &rMark, bool bDeep) const
Definition: column.cxx:335
const ScPatternAttr * GetPattern(SCROW nRow) const
Definition: column.cxx:370
void SetError(SCROW nRow, const FormulaError nError)
Definition: column3.cxx:2832
void StoreToCache(SvStream &rStrm) const
Definition: column4.cxx:2003
Definition: global.hxx:192
void PrepareBroadcastersForDestruction()
Definition: column2.cxx:1927
const SfxPoolItem & GetAttr(SCROW nRow, sal_uInt16 nWhich) const
Definition: column.cxx:375
void RestoreFromCache(SvStream &rStrm)
Definition: column4.cxx:2013
const sc::CellTextAttrStoreType & GetCellAttrStore() const
Definition: column.hxx:191
void SwapNonEmpty(sc::TableValues &rValues, sc::StartListeningContext &rStartCxt, sc::EndListeningContext &rEndCxt)
Definition: column4.cxx:495
void CalculateInThread(ScInterpreterContext &rContext, SCROW nRow, size_t nLen, size_t nOffset, unsigned nThisThread, unsigned nThreadsTotal)
Definition: column2.cxx:2966
void MarkScenarioIn(ScMarkData &rDestMark) const
Definition: column.cxx:1867
Definition: column.cxx:94
bool HasVisibleAttrIn(SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:3206
Provides methods to allow direct shifting of document content without broadcasting or shifting of bro...
void GetFilterEntries(sc::ColumnBlockConstPosition &rBlockPos, SCROW nStartRow, SCROW nEndRow, ScFilterEntries &rFilterEntries, bool bFiltering)
Definition: column3.cxx:2555
void CompileDBFormula(sc::CompileFormulaContext &rCxt)
Definition: column2.cxx:3363
bool mbFiltering
Definition: column.hxx:138
broadcast only existing cell broadcasters => no AreaBroadcast of range!
Definition: column.hxx:176
FormulaError GetErrCode(SCROW nRow) const
Definition: column3.cxx:3083
void SetDirtyIfPostponed()
Definition: column.cxx:3376
void CopyUpdated(const ScColumn &rPosCol, ScColumn &rDestCol) const
Definition: column.cxx:1773
Think of this as a mini-ScColumn like storage that only stores cell values in a column.
Definition: cellvalues.hxx:40
bool GetNextDataPos(SCROW &rRow) const
Definition: column2.cxx:1421
Definition: column.hxx:136
void GetInputString(sc::ColumnBlockConstPosition &rBlockPos, SCROW nRow, OUString &rString) const
Definition: column.hxx:378
sal_uIntPtr sal_uLong
long Long
void SetCellNote(SCROW nRow, std::unique_ptr< ScPostIt > pNote)
Definition: column2.cxx:1967
Context for reference update during shifting, moving or copying of cell ranges.
void CalcAfterLoad(sc::CompileFormulaContext &rCxt, bool bStartListening)
Definition: column.cxx:3417
void DuplicateNotes(SCROW nStartRow, size_t nDataSize, ScColumn &rDestCol, sc::ColumnBlockPosition &maDestBlockPos, bool bCloneCaption, SCROW nRowOffsetDest=0) const
Definition: column2.cxx:1904
std::unique_ptr< ScPostIt > ReleaseNote(SCROW nRow)
Definition: column4.cxx:616
void SetEditText(SCROW nRow, std::unique_ptr< EditTextObject > pEditText)
Definition: column3.cxx:2217
void MergeBlockFrame(SvxBoxItem *pLineOuter, SvxBoxInfoItem *pLineInner, ScLineFlags &rFlags, SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight) const
Definition: column.cxx:357
void BroadcastNewCell(SCROW nRow)
Definition: column3.cxx:748
void UpdateDeleteTab(sc::RefUpdateDeleteTabContext &rCxt)
Definition: column.cxx:3160
void Broadcast(SCROW nRow)
Definition: column3.cxx:69
void ResetChanged(SCROW nStartRow, SCROW nEndRow)
Definition: column.cxx:3423
Store position data for column array storage.
void TransferCellValuesTo(SCROW nRow, size_t nLen, sc::CellValues &rDest)
Definition: column4.cxx:341
bool IsEmptyData() const
Definition: column2.cxx:1198
void CopyStaticToDocument(SCROW nRow1, SCROW nRow2, const SvNumberFormatterMergeMap &rMap, ScColumn &rDestCol)
Definition: column.cxx:1062
Stores cell values for multiple tables.
Definition: cellvalues.hxx:85
CellType GetCellType(SCROW nRow) const
Definition: column3.cxx:3034
bool RemoveFlags(SCROW nStartRow, SCROW nEndRow, ScMF nFlags)
Definition: column.cxx:689
void BroadcastRows(SCROW nStartRow, SCROW nEndRow, SfxHintId nHint)
Definition: column3.cxx:90
bool HasVisibleDataAt(SCROW nRow) const
Definition: column2.cxx:1232
void ApplyPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPatternAttr &rPatAttr, ScEditDataArray *pDataArray=nullptr, bool *const pIsChanged=nullptr)
Definition: column.cxx:516
void CompileHybridFormula(sc::StartListeningContext &rStartListenCxt, sc::CompileFormulaContext &rCompileCxt)
Definition: column4.cxx:1000
void HandleStuffAfterParallelCalculation(SCROW nRow, size_t nLen, ScInterpreter *pInterpreter)
Definition: column2.cxx:3002
bool ExtendMerge(SCCOL nThisCol, SCROW nStartRow, SCROW nEndRow, SCCOL &rPaintCol, SCROW &rPaintRow, bool bRefresh)
Definition: column.cxx:328
void Swap(ScColumn &rOther, SCROW nRow1, SCROW nRow2, bool bPattern)
Definition: column4.cxx:1110
This is very similar to ScCellValue, except that it references the original value instead of copying ...
Definition: cellvalue.hxx:103
formula::FormulaTokenRef ResolveStaticReference(SCROW nRow)
Definition: column2.cxx:2154
bool HasAttribSelection(const ScMarkData &rMark, HasAttrFlags nMask) const
Definition: column.cxx:308
Accessor class to ScDocument.
void ChangeSelectionIndent(bool bIncrement, const ScMarkData &rMark)
Definition: column.cxx:450
mdds::multi_type_vector< CellFunc, CellStoreEvent > CellStoreType
void RemoveEditTextCharAttribs(SCROW nRow, const ScPatternAttr &rAttr)
Definition: column3.cxx:3001
void CompileAll(sc::CompileFormulaContext &rCxt)
Definition: column.cxx:3397
void DeleteRanges(const std::vector< sc::RowSpan > &rRanges, InsertDeleteFlags nDelFlag)
Definition: column4.cxx:534
bool IsEmptyAttr() const
Definition: column2.cxx:1243
void CompileColRowNameFormula(sc::CompileFormulaContext &rCxt)
Definition: column2.cxx:3370
void ApplyBlockFrame(const SvxBoxItem &rLineOuter, const SvxBoxInfoItem *pLineInner, SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight)
Definition: column.cxx:364
bool BroadcastBroadcasters(SCROW nRow1, SCROW nRow2, ScHint &rHint)
Broadcast single broadcasters in range, without explicitly setting anything dirty, not doing area broadcasts.
Definition: column.cxx:3289
bool ReservePatternCount(SCSIZE nReserve)
Definition: column2.cxx:3622
void StartListeners(sc::StartListeningContext &rCxt, bool bAll)
Definition: column3.cxx:1947
void UpdateDrawObjectsForRow(std::vector< SdrObject * > &pObjects, SCCOL nTargetCol, SCROW nTargetRow)
Definition: column.cxx:1941
void GetFormula(SCROW nRow, OUString &rFormula) const
Definition: column3.cxx:3015
Row-wise value iterator.
Definition: dociter.hxx:478
void ApplySelectionStyle(const ScStyleSheet &rStyle, const ScMarkData &rMark)
Definition: column.cxx:573
const sc::CellNoteStoreType & GetCellNoteStore() const
Definition: column.hxx:193
Store arbitrary cell value of any kind.
Definition: cellvalue.hxx:35
sal_Int32 GetMaxStringLen(SCROW nRowStart, SCROW nRowEnd, rtl_TextEncoding eCharSet) const
Definition: column3.cxx:3234
void PreprocessRangeNameUpdate(sc::EndListeningContext &rEndListenCxt, sc::CompileFormulaContext &rCompileCxt)
Definition: column4.cxx:971
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
Definition: column.cxx:1690
ScFormulaCell * SetFormulaCell(SCROW nRow, ScFormulaCell *pCell, sc::StartListeningType eListenType=sc::SingleCellListening, bool bInheritNumFormatIfNeeded=true)
Takes ownership of pCell.
Definition: column3.cxx:2315
void PreprocessDBDataUpdate(sc::EndListeningContext &rEndListenCxt, sc::CompileFormulaContext &rCompileCxt)
Definition: column4.cxx:985
void UpdateTranspose(const ScRange &rSource, const ScAddress &rDest, ScDocument *pUndoDoc)
Definition: column.cxx:3128
void SetDirtyVar()
Definition: column.cxx:3214
bool HasFormulaCell() const
Definition: column4.cxx:1292
void SetAllFormulasDirty(const sc::SetFormulaDirtyContext &rCxt)
Definition: column.cxx:3242
void ApplySelectionLineStyle(const ScMarkData &rMark, const ::editeng::SvxBorderLine *pLine, bool bColorOnly)
Definition: column.cxx:586
void StartListeningFormulaCells(sc::StartListeningContext &rStartCxt, sc::EndListeningContext &rEndCxt, SCROW nRow1, SCROW nRow2)
Definition: column4.cxx:1499
void CopyToClip(sc::CopyToClipContext &rCxt, SCROW nRow1, SCROW nRow2, ScColumn &rColumn) const
Definition: column.cxx:1043
sc::CellStoreType::iterator GetPositionToInsert(SCROW nRow, std::vector< SCROW > &rNewSharedRows, bool bInsertFormula)
Definition: column3.cxx:267
Keep track of spans in a single column only.
const ScPatternAttr * pPattern
Definition: column.hxx:102
ScRefCellValue GetCellValue(SCROW nRow) const
Definition: column.cxx:733
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 ...
Definition: address.hxx:44
void ForgetNoteCaptions(SCROW nRow1, SCROW nRow2, bool bPreserveData)
Definition: column4.cxx:671
mdds::multi_type_vector< BCBlkFunc > BroadcasterStoreType
void UpdateGrow(const ScRange &rArea, SCCOL nGrowX, SCROW nGrowY)
Definition: column.cxx:3135
Additional class containing cell annotation data.
Definition: postit.hxx:159
void CreateAllNoteCaptions()
Definition: column4.cxx:665
void EndListeningFormulaCells(sc::EndListeningContext &rCxt, SCROW nRow1, SCROW nRow2, SCROW *pStartRow, SCROW *pEndRow)
Definition: column4.cxx:1510
void SetNumberFormat(SCROW nRow, sal_uInt32 nNumberFormat)
Definition: column2.cxx:3028
const ScStyleSheet * GetSelectionStyle(const ScMarkData &rMark, bool &rFound) const
Definition: column.cxx:608
Definition: address.hxx:68
void Delete(SCROW nRow)
Definition: column3.cxx:143
sc::CellStoreType maCells
Definition: column.hxx:129
void UpdateCompile(bool bForceIfNameInUse=false)
Definition: column.cxx:3193
bool SearchStyleRange(SCROW &rRow, SCROW &rEndRow, const ScStyleSheet *pSearchStyle, bool bUp, bool bInSelection, const ScMarkData &rMark) const
Definition: column.cxx:3462
ScColumn & operator=(const ScColumn &)=delete
void ResetFormulaCellPositions(SCROW nRow1, SCROW nRow2, bool bUpdateRefs)
Reset column position of formula cells within specified row range.
Definition: column4.cxx:1189
Walk through all cells in an area.
Definition: dociter.hxx:207
SCROW GetLastDataPos() const
Definition: column2.cxx:1339
bool SetFormulaCells(SCROW nRow, std::vector< ScFormulaCell * > &rCells)
Definition: column3.cxx:2353
sal_uInt32 GetNumberFormat(const ScInterpreterContext &rContext, SCROW nRow) const
Definition: column.cxx:421
void DeleteContent(SCROW nRow, bool bBroadcast=true)
Definition: column3.cxx:121
size_t mnBlkCountFormula
Definition: column.hxx:133
void AttachNewFormulaCells(const sc::CellStoreType::position_type &aPos, size_t nLength, std::vector< SCROW > &rNewSharedRows)
Definition: column3.cxx:679
void SetTabNo(SCTAB nNewTab)
Definition: column.cxx:3199
SvtBroadcaster * GetBroadcaster(SCROW nRow)
Definition: column2.cxx:1911
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.
Definition: column3.cxx:2197
void SetDirtyFromClip(SCROW nRow1, SCROW nRow2, sc::ColumnSpanSet &rBroadcastSpans)
Definition: column.cxx:3250
double GetValue(SCROW nRow) const
Definition: column3.cxx:2967
constexpr double nPPTX
bool UpdateReference(sc::RefUpdateContext &rCxt, ScDocument *pUndoDoc)
Update reference addresses in formula cell in response to mass cell movement.
Definition: column.cxx:2479
void GetString(sc::ColumnBlockConstPosition &rBlockPos, SCROW nRow, OUString &rString, const ScInterpreterContext *pContext=nullptr) const
Definition: column.hxx:372
svl::SharedString GetSharedString(SCROW nRow) const
Definition: column3.cxx:2394
Definition: global.hxx:188
void InsertRow(SCROW nStartRow, SCSIZE nSize)
Definition: column.cxx:867
Definition: column.hxx:135
bool IsStyleSheetUsed(const ScStyleSheet &rStyle) const
Definition: column.cxx:679
void InitBlockPosition(sc::ColumnBlockPosition &rBlockPos)
Definition: column3.cxx:1044
void AttachNewFormulaCell(const sc::CellStoreType::iterator &itPos, SCROW nRow, ScFormulaCell &rCell, const std::vector< SCROW > &rNewSharedRows, bool bJoin=true, sc::StartListeningType eListenType=sc::SingleCellListening)
Definition: column3.cxx:604
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
Definition: column2.cxx:2439
void EndListening(SvtListener &rLst, SCROW nRow)
Definition: column2.cxx:3285
void FindDataAreaPos(SCROW &rRow, bool bDown) const
Definition: column2.cxx:3067
void SetRawString(SCROW nRow, const OUString &rStr)
Definition: column3.cxx:2850
void UndoToColumn(sc::CopyToDocContext &rCxt, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nFlags, bool bMarked, ScColumn &rColumn) const
Definition: column.cxx:1760
void StartListening(SvtListener &rLst, SCROW nRow)
Definition: column2.cxx:3279
void SetValues(const SCROW nRow, const std::vector< double > &rVals)
Definition: column4.cxx:311
void DeleteBroadcasters(sc::ColumnBlockPosition &rBlockPos, SCROW nRow1, SCROW nRow2)
Definition: column2.cxx:1921
bool TrimEmptyBlocks(SCROW &rRowStart, SCROW &rRowEnd) const
Definition: column2.cxx:1467
const ScPatternAttr * GetMostUsedPattern(SCROW nStartRow, SCROW nEndRow) const
Definition: column.cxx:380
bool IsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:1251
sal_Int16 SCCOL
Definition: types.hxx:21
Definition: global.hxx:157
void RegroupFormulaCells(std::vector< ScAddress > *pGroupPos=nullptr)
Regroup formula cells for the entire column.
Definition: column3.cxx:3533
sc::MultiDataCellState::StateType HasDataCellsInRange(SCROW nRow1, SCROW nRow2, SCROW *pRow1) const
Definition: column4.cxx:47
bool HasCellNote(SCROW nStartRow, SCROW nEndRow) const
Definition: column4.cxx:770
sc::CellTextAttrStoreType maCellTextAttrs
Definition: column.hxx:118
::std::map< sal_uInt32, sal_uInt32 > SvNumberFormatterMergeMap
ScFormulaCell *const * GetFormulaCellBlockAddress(SCROW nRow, size_t &rBlockSize) const
Definition: column2.cxx:3033
bool TestCopyScenarioTo(const ScColumn &rDestCol) const
Definition: column.cxx:1850
void CheckVectorizationState()
Definition: column.cxx:3235
bool HasSelectionMatrixFragment(const ScMarkData &rMark) const
Definition: column.cxx:195
void Init(SCCOL nNewCol, SCTAB nNewTab, ScDocument &rDoc, bool bEmptyAttrArray)
Definition: column.cxx:99
const ScStyleSheet * GetStyle(SCROW nRow) const
Definition: column.cxx:603
const ScPatternAttr * SetPattern(SCROW nRow, std::unique_ptr< ScPatternAttr >)
Definition: column.cxx:699
Definition: types.hxx:123
void UpdateInsertTab(sc::RefUpdateInsertTabContext &rCxt)
Definition: column.cxx:3141
static void JoinNewFormulaCell(const sc::CellStoreType::position_type &aPos, ScFormulaCell &rCell)
Definition: column3.cxx:273
bool TestInsertRow(SCROW nStartRow, SCSIZE nSize) const
Definition: column.cxx:837
void UpdateDrawObjects(std::vector< std::vector< SdrObject * >> &pObjects, SCROW nRowStart, SCROW nRowEnd)
Definition: column.cxx:1927
::boost::intrusive_ptr< FormulaToken > FormulaTokenRef
void EndListeningGroup(sc::EndListeningContext &rCxt, SCROW nRow)
Definition: column4.cxx:1606
Structure that stores segments of boolean flags per column, and perform custom action on those segmen...
bool HasValueData(SCROW nRow) const
Definition: column3.cxx:3117
void UpdateSelectionFunction(const ScRangeList &rRanges, ScFunctionData &rData, const ScFlatBoolRowSegments &rHiddenRows)
Definition: column2.cxx:3444
void GetUnprotectedCells(SCROW nStartRow, SCROW nEndRow, ScRangeList &rRangeList) const
Definition: column4.cxx:802
void FindUsed(SCROW nStartRow, SCROW nEndRow, mdds::flat_segment_tree< SCROW, bool > &rUsed) const
Definition: column2.cxx:3237
void EndListeningIntersectedGroups(sc::EndListeningContext &rCxt, SCROW nRow1, SCROW nRow2, std::vector< ScAddress > *pGroupPos)
Definition: column4.cxx:1561
bool HasStringData(SCROW nRow) const
Definition: column3.cxx:3097
bool EnsureFormulaCellResults(SCROW nRow1, SCROW nRow2, bool bSkipRunning=false)
Definition: column4.cxx:1886
double * GetValueCell(SCROW nRow)
Definition: column3.cxx:2948
void FindRangeNamesInUse(SCROW nRow1, SCROW nRow2, sc::UpdatedRangeNames &rIndexes) const
Definition: column.cxx:3208
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
Definition: column2.cxx:80
void UpdateScriptTypes(SCROW nRow1, SCROW nRow2)
Definition: column4.cxx:1099
bool TestInsertCol(SCROW nStartRow, SCROW nEndRow) const
Definition: column.cxx:815
bool IsNotesEmptyBlock(SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:1268
void DetachFormulaCells(const sc::CellStoreType::position_type &aPos, size_t nLength, std::vector< SCROW > *pNewSharedRows)
Definition: column3.cxx:404
sc::CellNoteStoreType & GetCellNoteStore()
Definition: column.hxx:192
void CollectFormulaCells(std::vector< ScFormulaCell * > &rCells, SCROW nRow1, SCROW nRow2)
Definition: column4.cxx:1283
bool UpdateReferenceOnCopy(sc::RefUpdateContext &rCxt, ScDocument *pUndoDoc=nullptr)
Definition: column.cxx:2454
void FreeNotes()
Definition: column3.cxx:166
void ApplyAttr(SCROW nRow, const SfxPoolItem &rAttr)
Definition: column.cxx:715
Broadcast mode for SetDirty(SCROW,SCROW,BroadcastMode).
Definition: column.hxx:172
void CopyScenarioTo(ScColumn &rDestCol) const
Definition: column.cxx:1824
sal_uInt32 GetCodeCount() const
Definition: column2.cxx:3605
Iterate through all edit text cells in a given sheet.
void ClearItems(SCROW nStartRow, SCROW nEndRow, const sal_uInt16 *pWhich)
Definition: column.cxx:694
ScColumn(const ScColumn &)=delete
bool GetFirstVisibleAttr(SCROW &rFirstRow) const
Definition: column2.cxx:3185
void SetPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPatternAttr &)
Definition: column.cxx:709
void CopyCellNotesToDocument(SCROW nRow1, SCROW nRow2, ScColumn &rDestCol, bool bCloneCaption=true, SCROW nRowOffsetDest=0) const
Definition: column2.cxx:1882
bool GetLastVisibleAttr(SCROW &rLastRow) const
Definition: column2.cxx:3193
bool GetDataEntries(SCROW nRow, std::set< ScTypedStrData > &rStrings) const
Definition: column3.cxx:2707
void MixData(sc::MixDocContext &rCxt, SCROW nRow1, SCROW nRow2, ScPasteFunc nFunction, bool bSkipEmpty, const ScColumn &rSrcCol)
Definition: column3.cxx:1887
bool TestTabRefAbs(SCTAB nTable) const
Definition: column2.cxx:1191
bool ApplyFlags(SCROW nStartRow, SCROW nEndRow, ScMF nFlags)
Definition: column.cxx:684
void GetOptimalHeight(sc::RowHeightContext &rCxt, SCROW nStartRow, SCROW nEndRow, sal_uInt16 nMinHeight, SCROW nMinStart)
Definition: column2.cxx:816
void DeleteCellNotes(sc::ColumnBlockPosition &rBlockPos, SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership)
Definition: column2.cxx:2007
void MergePatternArea(ScMergePatternState &rState, SCROW nRow1, SCROW nRow2, bool bDeep) const
Definition: column.cxx:352
sal_Int32 SCROW
Definition: types.hxx:17
void UpdateInsertTabOnlyCells(sc::RefUpdateInsertTabContext &rCxt)
Definition: column.cxx:3152
To calculate a single subtotal function.
Definition: subtotal.hxx:60
ScPostIt * GetCellNote(SCROW nRow)
Definition: column2.cxx:1941
void SetDirtyAfterLoad()
Definition: column.cxx:3349
bool ParseString(ScCellValue &rCell, SCROW nRow, SCTAB nTab, const OUString &rString, formula::FormulaGrammar::AddressConvention eConv, const ScSetStringParam *pParam)
Definition: column3.cxx:1965
bool HasFiltering() const
Definition: column.hxx:187
sc::CellStoreEvent maCellsEvent
Definition: column.hxx:126
sc::BroadcasterStoreType maBroadcasters
Definition: column.hxx:124
const EditTextObject * GetEditText(SCROW nRow) const
Definition: column3.cxx:2988
void CollectListeners(std::vector< SvtListener * > &rListeners, SCROW nRow1, SCROW nRow2)
Definition: column4.cxx:1274
void SetFormula(SCROW nRow, const ScTokenArray &rArray, formula::FormulaGrammar::Grammar eGram)
Definition: column3.cxx:2279
Definition: attrib.hxx:34
void AssertNoInterpretNeeded(SCROW nRow1, SCROW nRow2)
Definition: column2.cxx:2926
void RemoveProtected(SCROW nStartRow, SCROW nEndRow)
Definition: column3.cxx:2806
bool IsMerged(SCROW nRow) const
Definition: column4.cxx:42
void SetFormulaResults(SCROW nRow, const double *pResults, size_t nLen)
Definition: column2.cxx:2933
bool IsVisibleAttrEqual(const ScColumn &rCol, SCROW nStartRow=0, SCROW nEndRow=MAXROW) const
Definition: column2.cxx:3177
broadcast existing cells with position => does AreaBroadcast
Definition: column.hxx:175
sc::CellNoteStoreType maCellNotes
Definition: column.hxx:121
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
Definition: column2.cxx:666
void CopyCellValuesFrom(SCROW nRow, const sc::CellValues &rSrc)
Definition: column4.cxx:366
void AttachFormulaCells(sc::StartListeningContext &rCxt, SCROW nRow1, SCROW nRow2)
Definition: column3.cxx:469
SCROW GetFirstDataPos() const
Definition: column2.cxx:1327
std::unique_ptr< ScAttrIterator > CreateAttrIterator(SCROW nStartRow, SCROW nEndRow) const
Definition: column3.cxx:1904
void DumpColumnStorage() const
SCCOL GetCol() const
Definition: column.hxx:186
void SetTableOpDirty(const ScRange &)
Definition: column.cxx:3339
SCROW FindNextVisibleRowWithContent(sc::CellStoreType::const_iterator &itPos, SCROW nRow, bool bForward) const
Definition: column2.cxx:1537
bool HasCellNotes() const
Definition: column2.cxx:2015
bool HasDataAt(SCROW nRow, bool bConsiderCellNotes=false, bool bConsiderCellDrawObjects=false, bool bConsiderCellFormats=false) const
Definition: column2.cxx:3115
SvtScriptType GetRangeScriptType(sc::CellTextAttrStoreType::iterator &itPos, SCROW nRow1, SCROW nRow2, const sc::CellStoreType::iterator &itr)
Get combined script types of the specified range.
Definition: column2.cxx:2069
Definition: global.hxx:280
formula::VectorRefArray FetchVectorRefArray(SCROW nRow1, SCROW nRow2)
Definition: column2.cxx:2710
sc::CellTextAttrStoreType & GetCellAttrStore()
Definition: column.hxx:190
void CopyCellTextAttrsToDocument(SCROW nRow1, SCROW nRow2, ScColumn &rDestCol) const
Definition: column2.cxx:1786
void DeleteSelection(InsertDeleteFlags nDelFlag, const ScMarkData &rMark, bool bBroadcast)
Definition: column.cxx:488
void MoveTo(SCROW nStartRow, SCROW nEndRow, ScColumn &rCol)
Definition: column.cxx:1992
void ClearSelectionItems(const sal_uInt16 *pWhich, const ScMarkData &rMark)
Definition: column.cxx:463
SvtScriptType GetScriptType(SCROW nRow) const
Definition: column2.cxx:2061
const sc::CellStoreType & GetCellStore() const
Definition: column.hxx:189
void RemoveEditAttribs(SCROW nStartRow, SCROW nEndRow)
Definition: column2.cxx:1184
void GetString(SCROW nRow, OUString &rString, const ScInterpreterContext *pContext=nullptr) const
Definition: column.hxx:370
void ApplyPattern(SCROW nRow, const ScPatternAttr &rPatAttr)
Definition: column.cxx:501
const ScFormulaCell * FetchFormulaCell(SCROW nRow) const
Definition: column2.cxx:3060
void CopyOneCellFromClip(sc::CopyFromClipContext &rCxt, SCROW nRow1, SCROW nRow2, size_t nColOffset)
Definition: column4.cxx:195
const ScFormulaCell * GetFormulaCell(SCROW nRow) const
Definition: column3.cxx:3024
Definition: qproform.cxx:400
void CopyScenarioFrom(const ScColumn &rSrcCol)
Definition: column.cxx:1795
std::vector< sc::FormulaGroupEntry > GetFormulaGroupEntries()
Get all non-grouped formula cells and formula cell groups in the whole column.
Definition: column.cxx:2543
bool GetNextSpellingCell(SCROW &nRow, bool bInSel, const ScMarkData &rData) const
Definition: column2.cxx:1020
SCROW SearchStyle(SCROW nRow, const ScStyleSheet *pSearchStyle, bool bUp, bool bInSelection, const ScMarkData &rMark) const
May return -1 if not found.
Definition: column.cxx:3444
void UpdateMoveTab(sc::RefUpdateMoveTabContext &rCxt, SCTAB nTabNo)
Definition: column.cxx:3182
size_t GetNoteCount() const
Definition: column4.cxx:626
void AddCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex)
Definition: column.cxx:550
sal_Int32 GetMaxNumberStringLen(sal_uInt16 &nPrecision, SCROW nRowStart, SCROW nRowEnd) const
Definition: column3.cxx:3395
SCROW FindNextVisibleRow(SCROW nRow, bool bForward) const
Definition: column2.cxx:1513
bool IsDrawObjectsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const
Definition: column.cxx:1954
SCSIZE GetCellCount() const
Definition: column3.cxx:3076
void ConvertFormulaToValue(sc::EndListeningContext &rCxt, SCROW nRow1, SCROW nRow2, sc::TableValues *pUndo)
Definition: column4.cxx:432
const T & GetAttr(SCROW nRow, TypedWhichId< T > nWhich) const
Definition: column.hxx:459
std::optional< sc::ColumnIterator > GetColumnIterator(SCROW nRow1, SCROW nRow2) const
Definition: column4.cxx:1666
SCROW GetNextUnprotected(SCROW nRow, bool bUp) const
Including current, may return -1.
Definition: column.cxx:109
void SwapCol(ScColumn &rCol)
Definition: column.cxx:1964
void BroadcastCells(const std::vector< SCROW > &rRows, SfxHintId nHint)
Definition: column3.cxx:75
void SetScriptType(SCROW nRow, SvtScriptType nType)
Definition: column2.cxx:2140
void FindStyleSheet(const SfxStyleSheetBase *pStyleSheet, ScFlatBoolRowSegments &rUsedRows, bool bReset)
Definition: column.cxx:674
void ApplyStyleArea(SCROW nStartRow, SCROW nEndRow, const ScStyleSheet &rStyle)
Definition: column.cxx:568
SCROW ApplySelectionCache(SfxItemPoolCache *pCache, const ScMarkData &rMark, ScEditDataArray *pDataArray, bool *const pIsChanged)
Definition: column.cxx:426
void GetInputString(SCROW nRow, OUString &rString) const
Definition: column.hxx:376
bool HandleRefArrayForParallelism(SCROW nRow1, SCROW nRow2, const ScFormulaCellGroupRef &mxGroup)
Definition: column4.cxx:1899
SCTAB GetTab() const
Definition: column.hxx:185
Definition: global.hxx:351
void SetValue(SCROW nRow, double fVal)
Definition: column3.cxx:2899
void CalcAll()
Definition: column.cxx:3391
void ApplyPatternIfNumberformatIncompatible(const ScRange &rRange, const ScPatternAttr &rPattern, SvNumFormatType nNewType)
Definition: column.cxx:524
bool IsFormulaDirty(SCROW nRow) const
Definition: column.cxx:3220
void RemoveCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex)
Definition: column.cxx:555
void BroadcastRecalcOnRefMove()
Definition: column.cxx:3383
bool GetPrevDataPos(SCROW &rRow) const
Definition: column2.cxx:1375
const sc::CellTextAttr * GetCellTextAttr(SCROW nRow) const
Definition: column.cxx:794
void DeleteCells(sc::ColumnBlockPosition &rBlockPos, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nDelFlag, sc::SingleColumnSpanSet &rDeleted)
Definition: column3.cxx:967
const ScStyleSheet * GetAreaStyle(bool &rFound, SCROW nRow1, SCROW nRow2) const
Definition: column.cxx:647
bool HasStringCells(SCROW nStartRow, SCROW nEndRow) const
Return true if there is a string or editcell in the range.
Definition: column3.cxx:3139
Definition: types.hxx:65
void DeleteBeforeCopyFromClip(sc::CopyFromClipContext &rCxt, const ScColumn &rClipCol, sc::ColumnSpanSet &rBroadcastSpans)
Definition: column4.cxx:95
sal_uInt16 GetTextWidth(SCROW nRow) const
Definition: column2.cxx:2045
void CopyCellToDocument(SCROW nSrcRow, SCROW nDestRow, ScColumn &rDestCol)
Definition: column.cxx:1187
void EndListeningIntersectedGroup(sc::EndListeningContext &rCxt, SCROW nRow, std::vector< ScAddress > *pGroupPos)
Definition: column4.cxx:1527
void SetNeedsListeningGroup(SCROW nRow)
Definition: column4.cxx:1636
mdds::multi_type_vector< CTAttrFunc > CellTextAttrStoreType
sc::CellStoreType & GetCellStore()
Definition: column.hxx:188
void CloneFormulaCell(const ScFormulaCell &rSrc, const sc::CellTextAttr &rAttr, const std::vector< sc::RowSpan > &rRanges)
Definition: column4.cxx:540
void GetNotesInRange(SCROW nStartRow, SCROW nEndRow, std::vector< sc::NoteEntry > &rNotes) const
Definition: column4.cxx:754
bool IsAllAttrEqual(const ScColumn &rCol, SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:3169
void UpdateInsertTabAbs(SCTAB nNewPos)
Definition: column.cxx:3174
bool HasEditCells(SCROW nStartRow, SCROW nEndRow, SCROW &rFirst)
Definition: column.cxx:3429
void StartListeningUnshared(const std::vector< SCROW > &rNewSharedRows)
Re-establish listeners on unshared formula groups.
Definition: column3.cxx:346
sal_Int16 SCTAB
Definition: types.hxx:22
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...
Definition: column3.cxx:293
bool UpdateScriptType(sc::CellTextAttr &rAttr, SCROW nRow, sc::CellStoreType::iterator &itr)
Definition: column3.cxx:761
SCSIZE GetPatternCount() const
Definition: column2.cxx:3612
void CompileXML(sc::CompileFormulaContext &rCxt, ScProgress &rProgress)
Definition: column.cxx:3403
no broadcasting
Definition: column.hxx:174