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 <set>
34 #include <vector>
36 #include <mdds/flat_segment_tree.hpp>
38 namespace editeng { class SvxBorderLine; }
39 namespace formula { struct VectorRefArray; }
41 namespace sc {
43 struct FormulaGroupEntry;
44 class StartListeningContext;
45 class EndListeningContext;
46 class CopyFromClipContext;
47 class CopyToClipContext;
48 class CopyToDocContext;
49 class MixDocContext;
50 class ColumnSpanSet;
51 class SingleColumnSpanSet;
52 struct RefUpdateContext;
53 struct RefUpdateInsertTabContext;
54 struct RefUpdateDeleteTabContext;
55 struct RefUpdateMoveTabContext;
56 class EditTextIterator;
57 struct NoteEntry;
58 class DocumentStreamAccess;
59 class CellValues;
60 class TableValues;
61 struct RowSpan;
62 class RowHeightContext;
63 class CompileFormulaContext;
64 struct SetFormulaDirtyContext;
65 enum class MatrixEdge;
66 class ColumnIterator;
68 }
70 class Fraction;
71 class OutputDevice;
72 class SfxItemPoolCache;
73 class SvtListener;
74 class SfxPoolItem;
75 class SfxStyleSheetBase;
76 class SvxBoxInfoItem;
77 class SvxBoxItem;
79 class ScDocument;
80 class ScEditDataArray;
81 class ScFormulaCell;
82 class ScMarkData;
83 class ScPatternAttr;
84 class ScStyleSheet;
85 class SvtBroadcaster;
86 class ScTypedStrData;
87 class ScProgress;
88 class ScFunctionData;
90 struct ScSetStringParam;
91 struct ScColWidthParam;
92 struct ScRefCellValue;
93 struct ScCellValue;
94 class ScHint;
95 enum class ScMF;
96 struct ScFilterEntries;
100 {
102  bool bFormula;
104  bool bGetFont;
108 };
110 class ScColumn
111 {
112  // Empty values correspond with empty cells. All non-empty cell positions
113  // must have non-empty elements. For text width, the value should be
114  // either the real text width, or TEXTWIDTH_DIRTY in case it hasn't been
115  // calculated yet. For script type, it should be either the real script
116  // type value or SvtScriptType::UNKNOWN.
119  // Cell notes
122  // Broadcasters for formula cells.
127  // Cell values.
130  std::unique_ptr<ScAttrArray> pAttrArray;
137  bool mbFiltering; // it is true if there is a filtering in the column
139 friend class ScDocument; // for FillInfo
140 friend class ScTable;
141 friend class ScValueIterator;
144 friend class ScQueryCellIterator;
147 friend class ScCellIterator;
151 friend class ScDocumentImport;
154 friend class sc::ColumnSpanSet;
155 friend class sc::EditTextIterator;
156 friend class sc::CellValues;
157 friend class sc::TableValues;
158 friend class sc::CellStoreEvent;
160  ScColumn(const ScColumn&) = delete;
161  ScColumn& operator= (const ScColumn&) = delete;
163  bool ParseString(
164  ScCellValue& rCell,
165  SCROW nRow, SCTAB nTab, const OUString& rString, formula::FormulaGrammar::AddressConvention eConv,
166  const ScSetStringParam* pParam );
168 public:
172  {
176  };
178  ScColumn(ScSheetLimits const &);
181  void Init(SCCOL nNewCol, SCTAB nNewTab, ScDocument& rDoc, bool bEmptyAttrArray);
183  ScDocument& GetDoc() const { return pAttrArray->GetDoc(); }
184  SCTAB GetTab() const { return nTab; }
185  SCCOL GetCol() const { return nCol; }
186  bool HasFiltering() const { return mbFiltering; }
188  const sc::CellStoreType& GetCellStore() const { return maCells; }
194  ScRefCellValue GetCellValue( SCROW nRow ) const;
197  static ScRefCellValue GetCellValue( const sc::CellStoreType::const_iterator& itPos, size_t nOffset );
199  const sc::CellTextAttr* GetCellTextAttr( SCROW nRow ) const;
200  const sc::CellTextAttr* GetCellTextAttr( sc::ColumnBlockConstPosition& rBlockPos, SCROW nRow ) const;
202  void Delete( SCROW nRow );
203  void DeleteContent( SCROW nRow, bool bBroadcast = true );
204  void FreeAll();
205  void FreeNotes();
206  void Swap( ScColumn& rOther, SCROW nRow1, SCROW nRow2, bool bPattern );
208  bool HasAttrib( SCROW nRow1, SCROW nRow2, HasAttrFlags nMask ) const;
209  bool HasAttribSelection( const ScMarkData& rMark, HasAttrFlags nMask ) const;
210  bool IsMerged( SCROW nRow ) const;
211  bool ExtendMerge( SCCOL nThisCol, SCROW nStartRow, SCROW nEndRow,
212  SCCOL& rPaintCol, SCROW& rPaintRow,
213  bool bRefresh );
215  bool IsEmptyData() const;
216  bool IsEmptyAttr() const;
218  // data only:
219  bool IsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const;
220  SCSIZE GetEmptyLinesInBlock( SCROW nStartRow, SCROW nEndRow, ScDirection eDir ) const;
221  bool HasDataAt(SCROW nRow, bool bConsiderCellNotes = false,
222  bool bConsiderCellDrawObjects = false, bool bConsiderCellFormats = false) const;
223  bool HasDataAt(sc::ColumnBlockConstPosition& rBlockPos, SCROW nRow,
224  bool bConsiderCellNotes = false, bool bConsiderCellDrawObjects = false,
225  bool bConsiderCellFormats = false) const;
226  bool HasDataAt(sc::ColumnBlockPosition& rBlockPos, SCROW nRow, bool bConsiderCellNotes = false,
227  bool bConsiderCellDrawObjects = false, bool bConsiderCellFormats = false);
228  bool HasVisibleDataAt(SCROW nRow) const;
229  SCROW GetFirstDataPos() const;
230  SCROW GetLastDataPos() const;
231  SCROW GetLastDataPos(SCROW nLastRow, bool bConsiderCellNotes = false,
232  bool bConsiderCellDrawObjects = false,
233  bool bConsiderCellFormats = false) const;
234  bool GetPrevDataPos(SCROW& rRow) const;
235  bool GetNextDataPos(SCROW& rRow) const;
236  bool TrimEmptyBlocks(SCROW& rRowStart, SCROW& rRowEnd) const;
237  void FindDataAreaPos(SCROW& rRow, bool bDown) const; // (without Broadcaster)
238  void FindUsed( SCROW nStartRow, SCROW nEndRow, mdds::flat_segment_tree<SCROW, bool>& rUsed ) const;
240  SCSIZE VisibleCount( SCROW nStartRow, SCROW nEndRow ) const;
241  sc::MatrixEdge GetBlockMatrixEdges(SCROW nRow1, SCROW nRow2, sc::MatrixEdge nMask, bool bNoMatrixAtAll ) const;
242  bool HasSelectionMatrixFragment(const ScMarkData& rMark) const;
244  bool GetFirstVisibleAttr( SCROW& rFirstRow ) const;
245  bool GetLastVisibleAttr( SCROW& rLastRow ) const;
246  bool HasVisibleAttrIn( SCROW nStartRow, SCROW nEndRow ) const;
247  bool IsVisibleAttrEqual( const ScColumn& rCol, SCROW nStartRow = 0,
248  SCROW nEndRow = MAXROW ) const;
249  bool IsAllAttrEqual( const ScColumn& rCol, SCROW nStartRow, SCROW nEndRow ) const;
251  bool TestInsertCol( SCROW nStartRow, SCROW nEndRow) const;
252  bool TestInsertRow( SCROW nStartRow, SCSIZE nSize ) const;
253  void InsertRow( SCROW nStartRow, SCSIZE nSize );
254  void GetUnprotectedCells(SCROW nStartRow, SCROW nEndRow, ScRangeList& rRangeList ) const;
262  void DeleteRow( SCROW nStartRow, SCSIZE nSize, std::vector<ScAddress>* pGroupPos );
264  void DeleteArea(
265  SCROW nStartRow, SCROW nEndRow, InsertDeleteFlags nDelFlag,
266  bool bBroadcast = true, sc::ColumnSpanSet* pBroadcastSpans = nullptr );
268  void DeleteRanges( const std::vector<sc::RowSpan>& rRanges, InsertDeleteFlags nDelFlag );
270  void CopyToClip(
271  sc::CopyToClipContext& rCxt, SCROW nRow1, SCROW nRow2, ScColumn& rColumn ) const;
274  SCROW nRow1, SCROW nRow2, const SvNumberFormatterMergeMap& rMap, ScColumn& rDestCol );
276  void CopyCellToDocument( SCROW nSrcRow, SCROW nDestRow, ScColumn& rDestCol );
277  void InitBlockPosition( sc::ColumnBlockPosition& rBlockPos );
278  void InitBlockPosition( sc::ColumnBlockConstPosition& rBlockPos ) const;
281  sc::CopyFromClipContext& rCxt, const ScColumn& rClipCol, sc::ColumnSpanSet& rBroadcastSpans );
283  void CopyOneCellFromClip( sc::CopyFromClipContext& rCxt, SCROW nRow1, SCROW nRow2, size_t nColOffset );
285  void CopyFromClip(
286  sc::CopyFromClipContext& rCxt, SCROW nRow1, SCROW nRow2, tools::Long nDy, ScColumn& rColumn );
288  void RemoveEditAttribs( SCROW nStartRow, SCROW nEndRow );
290  // Selection (?) of this document
291  void MixMarked(
292  sc::MixDocContext& rCxt, const ScMarkData& rMark, ScPasteFunc nFunction,
293  bool bSkipEmpty, const ScColumn& rSrcCol );
294  void MixData(
295  sc::MixDocContext& rCxt, SCROW nRow1, SCROW nRow2, ScPasteFunc nFunction, bool bSkipEmpty,
296  const ScColumn& rSrcCol );
298  std::unique_ptr<ScAttrIterator> CreateAttrIterator( SCROW nStartRow, SCROW nEndRow ) const;
301  const ScRangeList& rRanges, ScFunctionData& rData, const ScFlatBoolRowSegments& rHiddenRows );
303  void CopyToColumn(
304  sc::CopyToDocContext& rCxt, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nFlags, bool bMarked,
305  ScColumn& rColumn, const ScMarkData* pMarkData = nullptr, bool bAsLink = false,
306  bool bGlobalNamesToLocal = false ) const;
308  void UndoToColumn(
309  sc::CopyToDocContext& rCxt, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nFlags, bool bMarked,
310  ScColumn& rColumn) const;
312  void CopyScenarioFrom( const ScColumn& rSrcCol );
313  void CopyScenarioTo( ScColumn& rDestCol ) const;
314  bool TestCopyScenarioTo( const ScColumn& rDestCol ) const;
315  void MarkScenarioIn( ScMarkData& rDestMark ) const;
317  void CopyUpdated( const ScColumn& rPosCol, ScColumn& rDestCol ) const;
319  void SwapCol(ScColumn& rCol);
320  void MoveTo(SCROW nStartRow, SCROW nEndRow, ScColumn& rCol);
322  bool HasEditCells(SCROW nStartRow, SCROW nEndRow, SCROW& rFirst);
324  bool SetString(
325  SCROW nRow, SCTAB nTab, const OUString& rString, formula::FormulaGrammar::AddressConvention eConv,
326  const ScSetStringParam* pParam = nullptr );
328  void SetEditText( SCROW nRow, std::unique_ptr<EditTextObject> pEditText );
329  void SetEditText( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, std::unique_ptr<EditTextObject> pEditText );
330  void SetEditText( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, const EditTextObject& rEditText );
331  void SetEditText( SCROW nRow, const EditTextObject& rEditText, const SfxItemPool* pEditPool );
332  void SetFormula( SCROW nRow, const ScTokenArray& rArray, formula::FormulaGrammar::Grammar eGram );
333  void SetFormula( SCROW nRow, const OUString& rFormula, formula::FormulaGrammar::Grammar eGram );
342  SCROW nRow, ScFormulaCell* pCell,
344  bool bInheritNumFormatIfNeeded = true);
345  void SetFormulaCell(
346  sc::ColumnBlockPosition& rBlockPos, SCROW nRow, ScFormulaCell* pCell,
348  bool bInheritNumFormatIfNeeded = true);
350  bool SetFormulaCells( SCROW nRow, std::vector<ScFormulaCell*>& rCells );
352  bool HasFormulaCell() const;
353  bool HasFormulaCell( SCROW nRow1, SCROW nRow2 ) const;
355  void CloneFormulaCell(
356  const ScFormulaCell& rSrc, const sc::CellTextAttr& rAttr,
357  const std::vector<sc::RowSpan>& rRanges );
361  void SetRawString( SCROW nRow, const OUString& rStr );
362  void SetRawString( SCROW nRow, const svl::SharedString& rStr );
363  void SetRawString( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, const svl::SharedString& rStr, bool bBroadcast = true );
364  void SetValue( SCROW nRow, double fVal );
365  void SetValues( const SCROW nRow, const std::vector<double>& rVals );
366  void SetValue( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, double fVal, bool bBroadcast = true );
367  void SetError( SCROW nRow, const FormulaError nError);
369  void GetString( SCROW nRow, OUString& rString, const ScInterpreterContext* pContext = nullptr ) const
370  { return GetString( GetCellValue( nRow ), nRow, rString, pContext ); }
372  OUString& rString, const ScInterpreterContext* pContext = nullptr ) const
373  { return GetString( GetCellValue( rBlockPos, nRow ), nRow, rString, pContext ); }
374  double* GetValueCell( SCROW nRow );
375  void GetInputString( SCROW nRow, OUString& rString ) const
376  { return GetInputString( GetCellValue( nRow ), nRow, rString ); }
377  void GetInputString( sc::ColumnBlockConstPosition& rBlockPos, SCROW nRow, OUString& rString ) const
378  { return GetInputString( GetCellValue( rBlockPos, nRow ), nRow, rString ); }
379  double GetValue( SCROW nRow ) const;
380  const EditTextObject* GetEditText( SCROW nRow ) const;
381  void RemoveEditTextCharAttribs( SCROW nRow, const ScPatternAttr& rAttr );
382  void GetFormula( SCROW nRow, OUString& rFormula ) const;
383  const ScFormulaCell* GetFormulaCell( SCROW nRow ) const;
385  ScFormulaCell * const * GetFormulaCellBlockAddress( SCROW nRow, size_t& rBlockSize ) const;
386  CellType GetCellType( SCROW nRow ) const;
387  SCSIZE GetCellCount() const;
388  sal_uLong GetWeightedCount() const;
389  sal_uLong GetWeightedCount(SCROW nStartRow, SCROW nEndRow) const;
390  sal_uInt32 GetCodeCount() const; // RPN-Code in formulas
391  FormulaError GetErrCode( SCROW nRow ) const;
393  bool HasStringData( SCROW nRow ) const;
394  bool HasValueData( SCROW nRow ) const;
395  bool HasStringCells( SCROW nStartRow, SCROW nEndRow ) const;
398  SCROW nRow1, SCROW nRow2, SCROW* pRow1 ) const;
400  bool IsFormulaDirty( SCROW nRow ) const;
404  void SetDirtyFromClip( SCROW nRow1, SCROW nRow2, sc::ColumnSpanSet& rBroadcastSpans );
405  void SetDirty( SCROW nRow1, SCROW nRow2, BroadcastMode );
406  void SetDirtyVar();
407  void SetDirtyAfterLoad();
408  void SetTableOpDirty( const ScRange& );
409  void CalcAll();
410  void CalcAfterLoad( sc::CompileFormulaContext& rCxt, bool bStartListening );
412  void CompileXML( sc::CompileFormulaContext& rCxt, ScProgress& rProgress );
419  bool BroadcastBroadcasters( SCROW nRow1, SCROW nRow2, ScHint& rHint );
423  void ResetChanged( SCROW nStartRow, SCROW nEndRow );
425  bool UpdateReferenceOnCopy( sc::RefUpdateContext& rCxt, ScDocument* pUndoDoc = nullptr );
434  bool UpdateReference( sc::RefUpdateContext& rCxt, ScDocument* pUndoDoc );
439  void UpdateMoveTab( sc::RefUpdateMoveTabContext& rCxt, SCTAB nTabNo );
440  void UpdateCompile( bool bForceIfNameInUse = false );
441  void UpdateTranspose( const ScRange& rSource, const ScAddress& rDest,
442  ScDocument* pUndoDoc );
443  void UpdateGrow( const ScRange& rArea, SCCOL nGrowX, SCROW nGrowY );
445  void SetTabNo(SCTAB nNewTab);
446  void FindRangeNamesInUse(SCROW nRow1, SCROW nRow2, sc::UpdatedRangeNames& rIndexes) const;
449  sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt );
452  sc::StartListeningContext& rStartListenCxt, sc::CompileFormulaContext& rCompileCxt );
455  sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt );
457  const SfxPoolItem& GetAttr( SCROW nRow, sal_uInt16 nWhich ) const;
458  template<class T> const T& GetAttr( SCROW nRow, TypedWhichId<T> nWhich ) const
459  {
460  return static_cast<const T&>(GetAttr(nRow, sal_uInt16(nWhich)));
461  }
462  const ScPatternAttr* GetPattern( SCROW nRow ) const;
463  const ScPatternAttr* GetMostUsedPattern( SCROW nStartRow, SCROW nEndRow ) const;
465  sal_uInt32 GetNumberFormat( const ScInterpreterContext& rContext, SCROW nRow ) const;
466  sal_uInt32 GetNumberFormat( SCROW nStartRow, SCROW nEndRow ) const;
468  void MergeSelectionPattern( ScMergePatternState& rState, const ScMarkData& rMark, bool bDeep ) const;
469  void MergePatternArea( ScMergePatternState& rState, SCROW nRow1, SCROW nRow2, bool bDeep ) const;
470  void MergeBlockFrame( SvxBoxItem* pLineOuter, SvxBoxInfoItem* pLineInner,
471  ScLineFlags& rFlags,
472  SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight ) const;
473  void ApplyBlockFrame(const SvxBoxItem& rLineOuter, const SvxBoxInfoItem* pLineInner,
474  SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight);
476  void ApplyAttr( SCROW nRow, const SfxPoolItem& rAttr );
477  void ApplyPattern( SCROW nRow, const ScPatternAttr& rPatAttr );
478  void ApplyPatternArea( SCROW nStartRow, SCROW nEndRow, const ScPatternAttr& rPatAttr,
479  ScEditDataArray* pDataArray = nullptr,
480  bool* const pIsChanged = nullptr);
481  const ScPatternAttr* SetPattern( SCROW nRow, std::unique_ptr<ScPatternAttr> );
482  void SetPattern( SCROW nRow, const ScPatternAttr& );
483  void SetPatternArea( SCROW nStartRow, SCROW nEndRow, const ScPatternAttr& );
485  const ScPatternAttr& rPattern, SvNumFormatType nNewType );
487  void ApplyStyle( SCROW nRow, const ScStyleSheet* rStyle );
488  void ApplyStyleArea( SCROW nStartRow, SCROW nEndRow, const ScStyleSheet& rStyle );
489  void ApplySelectionStyle(const ScStyleSheet& rStyle, const ScMarkData& rMark);
490  void ApplySelectionLineStyle( const ScMarkData& rMark,
491  const ::editeng::SvxBorderLine* pLine, bool bColorOnly );
492  void AddCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex );
493  void RemoveCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex );
495  const ScStyleSheet* GetStyle( SCROW nRow ) const;
496  const ScStyleSheet* GetSelectionStyle( const ScMarkData& rMark, bool& rFound ) const;
497  const ScStyleSheet* GetAreaStyle( bool& rFound, SCROW nRow1, SCROW nRow2 ) const;
499  void FindStyleSheet( const SfxStyleSheetBase* pStyleSheet, ScFlatBoolRowSegments& rUsedRows, bool bReset );
500  bool IsStyleSheetUsed( const ScStyleSheet& rStyle ) const;
504  SCROW nRow, const ScStyleSheet* pSearchStyle, bool bUp, bool bInSelection,
505  const ScMarkData& rMark) const;
507  bool SearchStyleRange(
508  SCROW& rRow, SCROW& rEndRow, const ScStyleSheet* pSearchStyle, bool bUp,
509  bool bInSelection, const ScMarkData& rMark) const;
511  bool ApplyFlags( SCROW nStartRow, SCROW nEndRow, ScMF nFlags );
512  bool RemoveFlags( SCROW nStartRow, SCROW nEndRow, ScMF nFlags );
513  void ClearItems( SCROW nStartRow, SCROW nEndRow, const sal_uInt16* pWhich );
515  void RemoveProtected( SCROW nStartRow, SCROW nEndRow );
517  SCROW ApplySelectionCache( SfxItemPoolCache* pCache, const ScMarkData& rMark, ScEditDataArray* pDataArray, bool* const pIsChanged );
518  void DeleteSelection( InsertDeleteFlags nDelFlag, const ScMarkData& rMark, bool bBroadcast );
520  void ClearSelectionItems( const sal_uInt16* pWhich, const ScMarkData& rMark );
521  void ChangeSelectionIndent( bool bIncrement, const ScMarkData& rMark );
524  SCROW nRow, OutputDevice* pDev, double nPPTX, double nPPTY,
525  const Fraction& rZoomX, const Fraction& rZoomY,
526  bool bWidth, const ScNeededSizeOptions& rOptions, const ScPatternAttr** pPatternChange,
527  bool bInPrintTwips = false ) const;
529  sal_uInt16 GetOptimalColWidth(
530  OutputDevice* pDev, double nPPTX, double nPPTY,
531  const Fraction& rZoomX, const Fraction& rZoomY,
532  bool bFormula, sal_uInt16 nOldWidth, const ScMarkData* pMarkData, const ScColWidthParam* pParam) const;
534  void GetOptimalHeight(
535  sc::RowHeightContext& rCxt, SCROW nStartRow, SCROW nEndRow, sal_uInt16 nMinHeight, SCROW nMinStart );
538  SCROW GetNextUnprotected( SCROW nRow, bool bUp ) const;
540  void GetFilterEntries(
541  sc::ColumnBlockConstPosition& rBlockPos, SCROW nStartRow, SCROW nEndRow,
542  ScFilterEntries& rFilterEntries, bool bFiltering );
544  bool GetDataEntries( SCROW nRow, std::set<ScTypedStrData>& rStrings, bool bLimit ) const;
546  void UpdateInsertTabAbs(SCTAB nNewPos);
547  bool TestTabRefAbs(SCTAB nTable) const;
548  bool GetNextSpellingCell(SCROW& nRow, bool bInSel, const ScMarkData& rData) const;
551  sc::StartListeningContext& rStartCxt, sc::EndListeningContext& rEndCxt, SCROW nRow1, SCROW nRow2 );
554  sc::EndListeningContext& rCxt, SCROW nRow1, SCROW nRow2,
555  SCROW* pStartRow, SCROW* pEndRow );
557  void StartListening( SvtListener& rLst, SCROW nRow );
558  void EndListening( SvtListener& rLst, SCROW nRow );
559  void StartListening( sc::StartListeningContext& rCxt, const ScAddress& rAddress, SvtListener& rListener );
560  void EndListening( sc::EndListeningContext& rCxt, const ScAddress& rAddress, SvtListener& rListener );
561  void StartListeners( sc::StartListeningContext& rCxt, bool bAll );
562  void SetDirtyIfPostponed();
564  void CollectListeners( std::vector<SvtListener*>& rListeners, SCROW nRow1, SCROW nRow2 );
565  void CollectFormulaCells( std::vector<ScFormulaCell*>& rCells, SCROW nRow1, SCROW nRow2 );
570  sal_Int32 GetMaxStringLen( SCROW nRowStart, SCROW nRowEnd, rtl_TextEncoding eCharSet ) const;
571  sal_Int32 GetMaxNumberStringLen( sal_uInt16& nPrecision,
572  SCROW nRowStart, SCROW nRowEnd ) const;
574  sal_uInt16 GetTextWidth(SCROW nRow) const;
575  void SetTextWidth(SCROW nRow, sal_uInt16 nWidth);
577  SvtScriptType GetScriptType( SCROW nRow ) const;
583  SvtScriptType GetRangeScriptType( sc::CellTextAttrStoreType::iterator& itPos, SCROW nRow1, SCROW nRow2,
584  const sc::CellStoreType::iterator& itr);
586  void SetScriptType( SCROW nRow, SvtScriptType nType );
587  void UpdateScriptTypes( SCROW nRow1, SCROW nRow2 );
589  size_t GetFormulaHash( SCROW nRow ) const;
593  bool ResolveStaticReference( ScMatrix& rMat, SCCOL nMatCol, SCROW nRow1, SCROW nRow2 );
594  void FillMatrix( ScMatrix& rMat, size_t nMatCol, SCROW nRow1, SCROW nRow2, svl::SharedStringPool* pPool ) const;
596  bool HandleRefArrayForParallelism( SCROW nRow1, SCROW nRow2, const ScFormulaCellGroupRef& mxGroup );
597 #ifdef DBG_UTIL
598  void AssertNoInterpretNeeded( SCROW nRow1, SCROW nRow2 );
599 #endif
600  void SetFormulaResults( SCROW nRow, const double* pResults, size_t nLen );
602  void CalculateInThread( ScInterpreterContext& rContext, SCROW nRow, size_t nLen, size_t nOffset,
603  unsigned nThisThread, unsigned nThreadsTotal );
604  void HandleStuffAfterParallelCalculation( SCROW nRow, size_t nLen, ScInterpreter* pInterpreter );
606  void SetNumberFormat( SCROW nRow, sal_uInt32 nNumberFormat );
609  const SvtBroadcaster* GetBroadcaster( SCROW nRow ) const;
611  void DeleteBroadcasters( sc::ColumnBlockPosition& rBlockPos, SCROW nRow1, SCROW nRow2 );
614  void Broadcast( SCROW nRow );
615  void BroadcastCells( const std::vector<SCROW>& rRows, SfxHintId nHint );
616  void BroadcastRows( SCROW nStartRow, SCROW nEndRow, SfxHintId nHint );
618  // cell notes
619  ScPostIt* GetCellNote( SCROW nRow );
620  const ScPostIt* GetCellNote( SCROW nRow ) const;
622  const ScPostIt* GetCellNote( sc::ColumnBlockConstPosition& rBlockPos, SCROW nRow ) const;
623  void DeleteCellNotes( sc::ColumnBlockPosition& rBlockPos, SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership );
624  bool HasCellNotes() const;
625  void SetCellNote( SCROW nRow, std::unique_ptr<ScPostIt> pNote);
626  bool IsNotesEmptyBlock(SCROW nStartRow, SCROW nEndRow) const;
628  std::unique_ptr<ScPostIt> ReleaseNote( SCROW nRow );
629  size_t GetNoteCount() const;
630  void CreateAllNoteCaptions();
631  void ForgetNoteCaptions( SCROW nRow1, SCROW nRow2, bool bPreserveData );
632  SCROW GetNotePosition( size_t nIndex ) const;
633  void GetAllNoteEntries( std::vector<sc::NoteEntry>& rNotes ) const;
634  void GetNotesInRange( SCROW nStartRow, SCROW nEndRow, std::vector<sc::NoteEntry>& rNotes ) const;
636  SCROW GetCellNotesMaxRow() const;
637  SCROW GetCellNotesMinRow() const;
640  SCROW nRow1, SCROW nRow2, ScColumn& rDestCol, bool bCloneCaption = true,
641  SCROW nRowOffsetDest = 0) const;
643  void DuplicateNotes(SCROW nStartRow, size_t nDataSize, ScColumn& rDestCol,
644  sc::ColumnBlockPosition& maDestBlockPos, bool bCloneCaption, SCROW nRowOffsetDest=0 ) const;
646  void UpdateNoteCaptions( SCROW nRow1, SCROW nRow2 );
648  void UpdateDrawObjects( std::vector<std::vector<SdrObject*>>& pObjects, SCROW nRowStart, SCROW nRowEnd );
649  void UpdateDrawObjectsForRow( std::vector<SdrObject*>& pObjects, SCCOL nTargetCol, SCROW nTargetRow );
650  bool IsDrawObjectsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const;
652  void InterpretDirtyCells( SCROW nRow1, SCROW nRow2 );
654  static void JoinNewFormulaCell( const sc::CellStoreType::position_type& aPos, ScFormulaCell& rCell );
664  void DetachFormulaCell( const sc::CellStoreType::position_type& aPos, ScFormulaCell& rCell,
665  std::vector<SCROW>& rNewSharedRows );
668  void StartListeningUnshared( const std::vector<SCROW>& rNewSharedRows );
670  void DetachFormulaCells( const sc::CellStoreType::position_type& aPos, size_t nLength,
671  std::vector<SCROW>* pNewSharedRows );
673  void AttachFormulaCells( sc::StartListeningContext& rCxt, SCROW nRow1, SCROW nRow2 );
674  void DetachFormulaCells( sc::EndListeningContext& rCxt, SCROW nRow1, SCROW nRow2,
675  std::vector<SCROW>* pNewSharedRows );
680  void RegroupFormulaCells( std::vector<ScAddress>* pGroupPos = nullptr );
697  void ResetFormulaCellPositions( SCROW nRow1, SCROW nRow2, bool bUpdateRefs );
699  void SplitFormulaGroupByRelativeRef( const ScRange& rBoundRange );
701  void TransferCellValuesTo( SCROW nRow, size_t nLen, sc::CellValues& rDest );
702  void CopyCellValuesFrom( SCROW nRow, const sc::CellValues& rSrc );
704  sc::EndListeningContext& rCxt, SCROW nRow1, SCROW nRow2, sc::TableValues* pUndo );
706  void SwapNonEmpty(
707  sc::TableValues& rValues, sc::StartListeningContext& rStartCxt, sc::EndListeningContext& rEndCxt );
709  std::unique_ptr<sc::ColumnIterator> GetColumnIterator( SCROW nRow1, SCROW nRow2 ) const;
711  bool EnsureFormulaCellResults( SCROW nRow1, SCROW nRow2, bool bSkipRunning = false );
713  void StoreToCache(SvStream& rStrm) const;
714  void RestoreFromCache(SvStream& rStrm);
717  void DumpColumnStorage() const;
718 #endif
720  SCSIZE GetPatternCount() const;
721  SCSIZE GetPatternCount( SCROW nRow1, SCROW nRow2 ) const;
722  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  void AttachNewFormulaCells( const sc::CellStoreType::position_type& aPos, size_t nLength,
741  std::vector<SCROW>& rNewSharedRows );
743  void BroadcastNewCell( SCROW nRow );
744  bool UpdateScriptType( sc::CellTextAttr& rAttr, SCROW nRow, sc::CellStoreType::iterator& itr );
746  const ScFormulaCell* FetchFormulaCell( SCROW nRow ) const;
749  sc::CellStoreType::const_iterator& itPos, SCROW nRow, bool bForward) const;
750  SCROW FindNextVisibleRow(SCROW nRow, bool bForward) const;
752  void GetString( const ScRefCellValue& cell, SCROW nRow, OUString& rString, const ScInterpreterContext* pContext = nullptr ) const;
753  void GetInputString( const ScRefCellValue& cell, SCROW nRow, OUString& rString ) const;
761  void CellStorageModified();
762  void CellNotesDeleting(SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership );
764  void CopyCellTextAttrsToDocument(SCROW nRow1, SCROW nRow2, ScColumn& rDestCol) const;
766  void DeleteCells(
767  sc::ColumnBlockPosition& rBlockPos, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nDelFlag,
768  sc::SingleColumnSpanSet& rDeleted );
774  std::vector<sc::FormulaGroupEntry> GetFormulaGroupEntries();
777  sc::EndListeningContext& rCxt, SCROW nRow, std::vector<ScAddress>* pGroupPos );
780  sc::EndListeningContext& rCxt, SCROW nRow1, SCROW nRow2, std::vector<ScAddress>* pGroupPos );
782  void EndListeningGroup( sc::EndListeningContext& rCxt, SCROW nRow );
783  void SetNeedsListeningGroup( SCROW nRow );
784 };
786 /* 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:2036
SCROW GetCellNotesMaxRow() const
Definition: column2.cxx:2025
void CellStorageModified()
Called whenever the state of cell array gets modified i.e.
Definition: column2.cxx:1603
void ApplyStyle(SCROW nRow, const ScStyleSheet *rStyle)
Definition: column.cxx:560
void FreeAll()
Definition: column3.cxx:151
void InterpretDirtyCells(SCROW nRow1, SCROW nRow2)
Definition: column3.cxx:110
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:3592
SCSIZE GetEmptyLinesInBlock(SCROW nStartRow, SCROW nEndRow, ScDirection eDir) const
Definition: column2.cxx:1287
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:1191
void DeleteRow(SCROW nStartRow, SCSIZE nSize, std::vector< ScAddress > *pGroupPos)
Definition: column3.cxx:184
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:2052
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:2002
SCSIZE VisibleCount(SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:1227
bool HasAttrib(SCROW nRow1, SCROW nRow2, HasAttrFlags nMask) const
Definition: column.cxx:303
std::unique_ptr< ScAttrArray > pAttrArray
Definition: column.hxx:130
ScDocument & GetDoc() const
Definition: column.hxx:183
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:2819
void StoreToCache(SvStream &rStrm) const
Definition: column4.cxx:1971
Definition: global.hxx:192
void PrepareBroadcastersForDestruction()
Definition: column2.cxx:1929
const SfxPoolItem & GetAttr(SCROW nRow, sal_uInt16 nWhich) const
Definition: column.cxx:375
void RestoreFromCache(SvStream &rStrm)
Definition: column4.cxx:1981
const sc::CellTextAttrStoreType & GetCellAttrStore() const
Definition: column.hxx:190
ScFormulaVectorState GetFormulaVectorState(SCROW nRow) const
Definition: column2.cxx:2162
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:2985
void MarkScenarioIn(ScMarkData &rDestMark) const
Definition: column.cxx:1867
Definition: column.cxx:94
bool HasVisibleAttrIn(SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:3225
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:2534
void CompileDBFormula(sc::CompileFormulaContext &rCxt)
Definition: column2.cxx:3382
bool mbFiltering
Definition: column.hxx:137
broadcast only existing cell broadcasters => no AreaBroadcast of range!
Definition: column.hxx:175
FormulaError GetErrCode(SCROW nRow) const
Definition: column3.cxx:3070
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:1423
Definition: column.hxx:135
void GetInputString(sc::ColumnBlockConstPosition &rBlockPos, SCROW nRow, OUString &rString) const
Definition: column.hxx:377
sal_uIntPtr sal_uLong
long Long
void SetCellNote(SCROW nRow, std::unique_ptr< ScPostIt > pNote)
Definition: column2.cxx:1969
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:1906
std::unique_ptr< ScPostIt > ReleaseNote(SCROW nRow)
Definition: column4.cxx:616
void SetEditText(SCROW nRow, std::unique_ptr< EditTextObject > pEditText)
Definition: column3.cxx:2211
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:67
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:1200
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:3021
bool RemoveFlags(SCROW nStartRow, SCROW nEndRow, ScMF nFlags)
Definition: column.cxx:689
void BroadcastRows(SCROW nStartRow, SCROW nEndRow, SfxHintId nHint)
Definition: column3.cxx:88
bool HasVisibleDataAt(SCROW nRow) const
Definition: column2.cxx:1234
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:968
void HandleStuffAfterParallelCalculation(SCROW nRow, size_t nLen, ScInterpreter *pInterpreter)
Definition: column2.cxx:3021
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:1078
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:2168
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:2988
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:1245
void CompileColRowNameFormula(sc::CompileFormulaContext &rCxt)
Definition: column2.cxx:3389
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:3641
void StartListeners(sc::StartListeningContext &rCxt, bool bAll)
Definition: column3.cxx:1941
void UpdateDrawObjectsForRow(std::vector< SdrObject * > &pObjects, SCCOL nTargetCol, SCROW nTargetRow)
Definition: column.cxx:1941
void GetFormula(SCROW nRow, OUString &rFormula) const
Definition: column3.cxx:3002
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:192
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:3221
void PreprocessRangeNameUpdate(sc::EndListeningContext &rEndListenCxt, sc::CompileFormulaContext &rCompileCxt)
Definition: column4.cxx:939
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:2309
void PreprocessDBDataUpdate(sc::EndListeningContext &rEndListenCxt, sc::CompileFormulaContext &rCompileCxt)
Definition: column4.cxx:953
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:1260
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:1467
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:265
Keep track of spans in a single column only.
const ScPatternAttr * pPattern
Definition: column.hxx:101
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:1478
void SetNumberFormat(SCROW nRow, sal_uInt32 nNumberFormat)
Definition: column2.cxx:3047
const ScStyleSheet * GetSelectionStyle(const ScMarkData &rMark, bool &rFound) const
Definition: column.cxx:608
Definition: address.hxx:68
void Delete(SCROW nRow)
Definition: column3.cxx:141
sc::CellStoreType maCells
Definition: column.hxx:128
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:1157
Walk through all cells in an area.
Definition: dociter.hxx:207
SCROW GetLastDataPos() const
Definition: column2.cxx:1341
bool SetFormulaCells(SCROW nRow, std::vector< ScFormulaCell * > &rCells)
Definition: column3.cxx:2347
sal_uInt32 GetNumberFormat(const ScInterpreterContext &rContext, SCROW nRow) const
Definition: column.cxx:421
void DeleteContent(SCROW nRow, bool bBroadcast=true)
Definition: column3.cxx:119
size_t mnBlkCountFormula
Definition: column.hxx:132
void AttachNewFormulaCells(const sc::CellStoreType::position_type &aPos, size_t nLength, std::vector< SCROW > &rNewSharedRows)
Definition: column3.cxx:677
void SetTabNo(SCTAB nNewTab)
Definition: column.cxx:3199
SvtBroadcaster * GetBroadcaster(SCROW nRow)
Definition: column2.cxx:1913
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:2191
void SetDirtyFromClip(SCROW nRow1, SCROW nRow2, sc::ColumnSpanSet &rBroadcastSpans)
Definition: column.cxx:3250
double GetValue(SCROW nRow) const
Definition: column3.cxx:2954
constexpr double nPPTX
size_t GetFormulaHash(SCROW nRow) const
Definition: column2.cxx:2156
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:371
svl::SharedString GetSharedString(SCROW nRow) const
Definition: column3.cxx:2388
Definition: global.hxx:188
void InsertRow(SCROW nStartRow, SCSIZE nSize)
Definition: column.cxx:867
Definition: column.hxx:134
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:602
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:2453
void EndListening(SvtListener &rLst, SCROW nRow)
Definition: column2.cxx:3304
void FindDataAreaPos(SCROW &rRow, bool bDown) const
Definition: column2.cxx:3086
void SetRawString(SCROW nRow, const OUString &rStr)
Definition: column3.cxx:2837
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:3298
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:1923
bool TrimEmptyBlocks(SCROW &rRowStart, SCROW &rRowEnd) const
Definition: column2.cxx:1469
const ScPatternAttr * GetMostUsedPattern(SCROW nStartRow, SCROW nEndRow) const
Definition: column.cxx:380
bool IsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:1253
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:3520
sc::MultiDataCellState::StateType HasDataCellsInRange(SCROW nRow1, SCROW nRow2, SCROW *pRow1) const
Definition: column4.cxx:47
sc::CellTextAttrStoreType maCellTextAttrs
Definition: column.hxx:117
::std::map< sal_uInt32, sal_uInt32 > SvNumberFormatterMergeMap
ScFormulaCell *const * GetFormulaCellBlockAddress(SCROW nRow, size_t &rBlockSize) const
Definition: column2.cxx:3052
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:271
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:1574
Structure that stores segments of boolean flags per column, and perform custom action on those segmen...
bool HasValueData(SCROW nRow) const
Definition: column3.cxx:3104
void UpdateSelectionFunction(const ScRangeList &rRanges, ScFunctionData &rData, const ScFlatBoolRowSegments &rHiddenRows)
Definition: column2.cxx:3463
void GetUnprotectedCells(SCROW nStartRow, SCROW nEndRow, ScRangeList &rRangeList) const
Definition: column4.cxx:770
void FindUsed(SCROW nStartRow, SCROW nEndRow, mdds::flat_segment_tree< SCROW, bool > &rUsed) const
Definition: column2.cxx:3256
void EndListeningIntersectedGroups(sc::EndListeningContext &rCxt, SCROW nRow1, SCROW nRow2, std::vector< ScAddress > *pGroupPos)
Definition: column4.cxx:1529
bool HasStringData(SCROW nRow) const
Definition: column3.cxx:3084
bool EnsureFormulaCellResults(SCROW nRow1, SCROW nRow2, bool bSkipRunning=false)
Definition: column4.cxx:1854
double * GetValueCell(SCROW nRow)
Definition: column3.cxx:2935
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:82
void UpdateScriptTypes(SCROW nRow1, SCROW nRow2)
Definition: column4.cxx:1067
bool TestInsertCol(SCROW nStartRow, SCROW nEndRow) const
Definition: column.cxx:815
bool IsNotesEmptyBlock(SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:1270
void DetachFormulaCells(const sc::CellStoreType::position_type &aPos, size_t nLength, std::vector< SCROW > *pNewSharedRows)
Definition: column3.cxx:402
sc::CellNoteStoreType & GetCellNoteStore()
Definition: column.hxx:191
void CollectFormulaCells(std::vector< ScFormulaCell * > &rCells, SCROW nRow1, SCROW nRow2)
Definition: column4.cxx:1251
bool UpdateReferenceOnCopy(sc::RefUpdateContext &rCxt, ScDocument *pUndoDoc=nullptr)
Definition: column.cxx:2454
void FreeNotes()
Definition: column3.cxx:164
void ApplyAttr(SCROW nRow, const SfxPoolItem &rAttr)
Definition: column.cxx:715
Broadcast mode for SetDirty(SCROW,SCROW,BroadcastMode).
Definition: column.hxx:171
void CopyScenarioTo(ScColumn &rDestCol) const
Definition: column.cxx:1824
sal_uInt32 GetCodeCount() const
Definition: column2.cxx:3624
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:3204
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:1884
bool GetLastVisibleAttr(SCROW &rLastRow) const
Definition: column2.cxx:3212
void MixData(sc::MixDocContext &rCxt, SCROW nRow1, SCROW nRow2, ScPasteFunc nFunction, bool bSkipEmpty, const ScColumn &rSrcCol)
Definition: column3.cxx:1881
bool TestTabRefAbs(SCTAB nTable) const
Definition: column2.cxx:1193
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:818
void DeleteCellNotes(sc::ColumnBlockPosition &rBlockPos, SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership)
Definition: column2.cxx:2009
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:1943
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:1959
bool HasFiltering() const
Definition: column.hxx:186
sc::CellStoreEvent maCellsEvent
Definition: column.hxx:125
sc::BroadcasterStoreType maBroadcasters
Definition: column.hxx:123
const EditTextObject * GetEditText(SCROW nRow) const
Definition: column3.cxx:2975
void CollectListeners(std::vector< SvtListener * > &rListeners, SCROW nRow1, SCROW nRow2)
Definition: column4.cxx:1242
void SetFormula(SCROW nRow, const ScTokenArray &rArray, formula::FormulaGrammar::Grammar eGram)
Definition: column3.cxx:2273
Definition: attrib.hxx:34
void AssertNoInterpretNeeded(SCROW nRow1, SCROW nRow2)
Definition: column2.cxx:2945
void RemoveProtected(SCROW nStartRow, SCROW nEndRow)
Definition: column3.cxx:2793
bool IsMerged(SCROW nRow) const
Definition: column4.cxx:42
void SetFormulaResults(SCROW nRow, const double *pResults, size_t nLen)
Definition: column2.cxx:2952
bool IsVisibleAttrEqual(const ScColumn &rCol, SCROW nStartRow=0, SCROW nEndRow=MAXROW) const
Definition: column2.cxx:3196
broadcast existing cells with position => does AreaBroadcast
Definition: column.hxx:174
sc::CellNoteStoreType maCellNotes
Definition: column.hxx:120
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:668
void CopyCellValuesFrom(SCROW nRow, const sc::CellValues &rSrc)
Definition: column4.cxx:366
void AttachFormulaCells(sc::StartListeningContext &rCxt, SCROW nRow1, SCROW nRow2)
Definition: column3.cxx:467
SCROW GetFirstDataPos() const
Definition: column2.cxx:1329
std::unique_ptr< ScAttrIterator > CreateAttrIterator(SCROW nStartRow, SCROW nEndRow) const
Definition: column3.cxx:1898
void DumpColumnStorage() const
SCCOL GetCol() const
Definition: column.hxx:185
void SetTableOpDirty(const ScRange &)
Definition: column.cxx:3339
SCROW FindNextVisibleRowWithContent(sc::CellStoreType::const_iterator &itPos, SCROW nRow, bool bForward) const
Definition: column2.cxx:1539
bool HasCellNotes() const
Definition: column2.cxx:2017
bool HasDataAt(SCROW nRow, bool bConsiderCellNotes=false, bool bConsiderCellDrawObjects=false, bool bConsiderCellFormats=false) const
Definition: column2.cxx:3134
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:2071
Definition: global.hxx:280
formula::VectorRefArray FetchVectorRefArray(SCROW nRow1, SCROW nRow2)
Definition: column2.cxx:2728
sc::CellTextAttrStoreType & GetCellAttrStore()
Definition: column.hxx:189
void CopyCellTextAttrsToDocument(SCROW nRow1, SCROW nRow2, ScColumn &rDestCol) const
Definition: column2.cxx:1788
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:2063
const sc::CellStoreType & GetCellStore() const
Definition: column.hxx:188
void RemoveEditAttribs(SCROW nStartRow, SCROW nEndRow)
Definition: column2.cxx:1186
std::unique_ptr< sc::ColumnIterator > GetColumnIterator(SCROW nRow1, SCROW nRow2) const
Definition: column4.cxx:1634
void GetString(SCROW nRow, OUString &rString, const ScInterpreterContext *pContext=nullptr) const
Definition: column.hxx:369
void ApplyPattern(SCROW nRow, const ScPatternAttr &rPatAttr)
Definition: column.cxx:501
const ScFormulaCell * FetchFormulaCell(SCROW nRow) const
Definition: column2.cxx:3079
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:3011
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:1022
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:3382
SCROW FindNextVisibleRow(SCROW nRow, bool bForward) const
Definition: column2.cxx:1515
bool IsDrawObjectsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const
Definition: column.cxx:1954
SCSIZE GetCellCount() const
Definition: column3.cxx:3063
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:458
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:73
void SetScriptType(SCROW nRow, SvtScriptType nType)
Definition: column2.cxx:2142
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:375
bool HandleRefArrayForParallelism(SCROW nRow1, SCROW nRow2, const ScFormulaCellGroupRef &mxGroup)
Definition: column4.cxx:1867
SCTAB GetTab() const
Definition: column.hxx:184
Definition: global.hxx:351
When vectorization is enabled, we could potentially mass-calculate a series of formula token arrays i...
Definition: types.hxx:51
void SetValue(SCROW nRow, double fVal)
Definition: column3.cxx:2886
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:1377
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:3126
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:2047
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:1495
void SetNeedsListeningGroup(SCROW nRow)
Definition: column4.cxx:1604
bool GetDataEntries(SCROW nRow, std::set< ScTypedStrData > &rStrings, bool bLimit) const
Definition: column3.cxx:2676
mdds::multi_type_vector< CTAttrFunc > CellTextAttrStoreType
sc::CellStoreType & GetCellStore()
Definition: column.hxx:187
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:3188
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:344
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:291
bool UpdateScriptType(sc::CellTextAttr &rAttr, SCROW nRow, sc::CellStoreType::iterator &itr)
Definition: column3.cxx:761
SCSIZE GetPatternCount() const
Definition: column2.cxx:3631
void CompileXML(sc::CompileFormulaContext &rCxt, ScProgress &rProgress)
Definition: column.cxx:3403
no broadcasting
Definition: column.hxx:173