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  */
23 #include "global.hxx"
24 #include "address.hxx"
25 #include "cellvalue.hxx"
26 #include "rangelst.hxx"
27 #include "types.hxx"
28 #include "mtvelements.hxx"
29 #include <formula/types.hxx>
30 #include <svl/zforlist.hxx>
31 #include <svx/svdobj.hxx>
32 #include "attarray.hxx"
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 friend class ScDocument; // for FillInfo
139 friend class ScTable;
140 friend class ScValueIterator;
143 friend class ScQueryCellIterator;
146 friend class ScCellIterator;
150 friend class ScDocumentImport;
153 friend class sc::ColumnSpanSet;
154 friend class sc::EditTextIterator;
155 friend class sc::CellValues;
156 friend class sc::TableValues;
157 friend class sc::CellStoreEvent;
159  ScColumn(const ScColumn&) = delete;
160  ScColumn& operator= (const ScColumn&) = delete;
162  bool ParseString(
163  ScCellValue& rCell,
164  SCROW nRow, SCTAB nTab, const OUString& rString, formula::FormulaGrammar::AddressConvention eConv,
165  const ScSetStringParam* pParam );
167 public:
171  {
175  };
177  ScColumn();
180  void Init(SCCOL nNewCol, SCTAB nNewTab, ScDocument* pDoc, bool bEmptyAttrArray);
182  ScDocument* GetDoc() const { return pAttrArray->GetDoc(); }
183  SCTAB GetTab() const { return nTab; }
184  SCCOL GetCol() const { return nCol; }
186  const sc::CellStoreType& GetCellStore() const { return maCells; }
192  ScRefCellValue GetCellValue( SCROW nRow ) const;
195  static ScRefCellValue GetCellValue( const sc::CellStoreType::const_iterator& itPos, size_t nOffset );
197  const sc::CellTextAttr* GetCellTextAttr( SCROW nRow ) const;
198  const sc::CellTextAttr* GetCellTextAttr( sc::ColumnBlockConstPosition& rBlockPos, SCROW nRow ) const;
200  void Delete( SCROW nRow );
201  void DeleteContent( SCROW nRow, bool bBroadcast = true );
202  void FreeAll();
203  void FreeNotes();
204  void Swap( ScColumn& rOther, SCROW nRow1, SCROW nRow2, bool bPattern );
206  bool HasAttrib( SCROW nRow1, SCROW nRow2, HasAttrFlags nMask ) const;
207  bool HasAttribSelection( const ScMarkData& rMark, HasAttrFlags nMask ) const;
208  bool IsMerged( SCROW nRow ) const;
209  bool ExtendMerge( SCCOL nThisCol, SCROW nStartRow, SCROW nEndRow,
210  SCCOL& rPaintCol, SCROW& rPaintRow,
211  bool bRefresh );
213  bool IsEmptyData() const;
214  bool IsEmptyAttr() const;
216  // data only:
217  bool IsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const;
218  SCSIZE GetEmptyLinesInBlock( SCROW nStartRow, SCROW nEndRow, ScDirection eDir ) const;
219  bool HasDataAt(SCROW nRow, bool bConsiderCellNotes=false,
220  bool bConsiderCellDrawObjects=false) const;
221  bool HasDataAt(sc::ColumnBlockConstPosition& rBlockPos, SCROW nRow, bool bConsiderCellNotes=false,
222  bool bConsiderCellDrawObjects=false) const;
223  bool HasDataAt(sc::ColumnBlockPosition& rBlockPos, SCROW nRow, bool bConsiderCellNotes=false,
224  bool bConsiderCellDrawObjects=false);
225  bool HasVisibleDataAt(SCROW nRow) const;
226  SCROW GetFirstDataPos() const;
227  SCROW GetLastDataPos() const;
228  SCROW GetLastDataPos( SCROW nLastRow, bool bConsiderCellNotes=false,
229  bool bConsiderCellDrawObjects=false ) const;
230  bool GetPrevDataPos(SCROW& rRow) const;
231  bool GetNextDataPos(SCROW& rRow) const;
232  bool TrimEmptyBlocks(SCROW& rRowStart, SCROW& rRowEnd) const;
233  void FindDataAreaPos(SCROW& rRow, bool bDown) const; // (without Broadcaster)
234  void FindUsed( SCROW nStartRow, SCROW nEndRow, mdds::flat_segment_tree<SCROW, bool>& rUsed ) const;
236  SCSIZE VisibleCount( SCROW nStartRow, SCROW nEndRow ) const;
237  sc::MatrixEdge GetBlockMatrixEdges(SCROW nRow1, SCROW nRow2, sc::MatrixEdge nMask, bool bNoMatrixAtAll ) const;
238  bool HasSelectionMatrixFragment(const ScMarkData& rMark) const;
240  bool GetFirstVisibleAttr( SCROW& rFirstRow ) const;
241  bool GetLastVisibleAttr( SCROW& rLastRow ) const;
242  bool HasVisibleAttrIn( SCROW nStartRow, SCROW nEndRow ) const;
243  bool IsVisibleAttrEqual( const ScColumn& rCol, SCROW nStartRow = 0,
244  SCROW nEndRow = MAXROW ) const;
245  bool IsAllAttrEqual( const ScColumn& rCol, SCROW nStartRow, SCROW nEndRow ) const;
247  bool TestInsertCol( SCROW nStartRow, SCROW nEndRow) const;
248  bool TestInsertRow( SCROW nStartRow, SCSIZE nSize ) const;
249  void InsertRow( SCROW nStartRow, SCSIZE nSize );
250  void GetUnprotectedCells(SCROW nStartRow, SCROW nEndRow, ScRangeList& rRangeList ) const;
258  void DeleteRow( SCROW nStartRow, SCSIZE nSize, std::vector<ScAddress>* pGroupPos );
260  void DeleteArea(
261  SCROW nStartRow, SCROW nEndRow, InsertDeleteFlags nDelFlag,
262  bool bBroadcast = true, sc::ColumnSpanSet* pBroadcastSpans = nullptr );
264  void DeleteRanges( const std::vector<sc::RowSpan>& rRanges, InsertDeleteFlags nDelFlag );
266  void CopyToClip(
267  sc::CopyToClipContext& rCxt, SCROW nRow1, SCROW nRow2, ScColumn& rColumn ) const;
270  SCROW nRow1, SCROW nRow2, const SvNumberFormatterMergeMap& rMap, ScColumn& rDestCol );
272  void CopyCellToDocument( SCROW nSrcRow, SCROW nDestRow, ScColumn& rDestCol );
273  void InitBlockPosition( sc::ColumnBlockPosition& rBlockPos );
274  void InitBlockPosition( sc::ColumnBlockConstPosition& rBlockPos ) const;
277  sc::CopyFromClipContext& rCxt, const ScColumn& rClipCol, sc::ColumnSpanSet& rBroadcastSpans );
279  void CopyOneCellFromClip( sc::CopyFromClipContext& rCxt, SCROW nRow1, SCROW nRow2, size_t nColOffset );
281  void CopyFromClip(
282  sc::CopyFromClipContext& rCxt, SCROW nRow1, SCROW nRow2, long nDy, ScColumn& rColumn );
284  void RemoveEditAttribs( SCROW nStartRow, SCROW nEndRow );
286  // Selection (?) of this document
287  void MixMarked(
288  sc::MixDocContext& rCxt, const ScMarkData& rMark, ScPasteFunc nFunction,
289  bool bSkipEmpty, const ScColumn& rSrcCol );
290  void MixData(
291  sc::MixDocContext& rCxt, SCROW nRow1, SCROW nRow2, ScPasteFunc nFunction, bool bSkipEmpty,
292  const ScColumn& rSrcCol );
294  std::unique_ptr<ScAttrIterator> CreateAttrIterator( SCROW nStartRow, SCROW nEndRow ) const;
297  const ScRangeList& rRanges, ScFunctionData& rData, const ScFlatBoolRowSegments& rHiddenRows );
299  void CopyToColumn(
300  sc::CopyToDocContext& rCxt, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nFlags, bool bMarked,
301  ScColumn& rColumn, const ScMarkData* pMarkData = nullptr, bool bAsLink = false,
302  bool bGlobalNamesToLocal = false ) const;
304  void UndoToColumn(
305  sc::CopyToDocContext& rCxt, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nFlags, bool bMarked,
306  ScColumn& rColumn) const;
308  void CopyScenarioFrom( const ScColumn& rSrcCol );
309  void CopyScenarioTo( ScColumn& rDestCol ) const;
310  bool TestCopyScenarioTo( const ScColumn& rDestCol ) const;
311  void MarkScenarioIn( ScMarkData& rDestMark ) const;
313  void CopyUpdated( const ScColumn& rPosCol, ScColumn& rDestCol ) const;
315  void SwapCol(ScColumn& rCol);
316  void MoveTo(SCROW nStartRow, SCROW nEndRow, ScColumn& rCol);
318  bool HasEditCells(SCROW nStartRow, SCROW nEndRow, SCROW& rFirst);
320  bool SetString(
321  SCROW nRow, SCTAB nTab, const OUString& rString, formula::FormulaGrammar::AddressConvention eConv,
322  const ScSetStringParam* pParam = nullptr );
324  void SetEditText( SCROW nRow, std::unique_ptr<EditTextObject> pEditText );
325  void SetEditText( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, std::unique_ptr<EditTextObject> pEditText );
326  void SetEditText( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, const EditTextObject& rEditText );
327  void SetEditText( SCROW nRow, const EditTextObject& rEditText, const SfxItemPool* pEditPool );
328  void SetFormula( SCROW nRow, const ScTokenArray& rArray, formula::FormulaGrammar::Grammar eGram );
329  void SetFormula( SCROW nRow, const OUString& rFormula, formula::FormulaGrammar::Grammar eGram );
338  SCROW nRow, ScFormulaCell* pCell,
340  bool bInheritNumFormatIfNeeded = true);
341  void SetFormulaCell(
342  sc::ColumnBlockPosition& rBlockPos, SCROW nRow, ScFormulaCell* pCell,
344  bool bInheritNumFormatIfNeeded = true);
346  bool SetFormulaCells( SCROW nRow, std::vector<ScFormulaCell*>& rCells );
348  bool HasFormulaCell() const;
349  bool HasFormulaCell( SCROW nRow1, SCROW nRow2 ) const;
351  void CloneFormulaCell(
352  const ScFormulaCell& rSrc, const sc::CellTextAttr& rAttr,
353  const std::vector<sc::RowSpan>& rRanges );
357  void SetRawString( SCROW nRow, const OUString& rStr );
358  void SetRawString( SCROW nRow, const svl::SharedString& rStr );
359  void SetRawString( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, const svl::SharedString& rStr, bool bBroadcast = true );
360  void SetValue( SCROW nRow, double fVal );
361  void SetValues( const SCROW nRow, const std::vector<double>& rVals );
362  void SetValue( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, double fVal, bool bBroadcast = true );
363  void SetError( SCROW nRow, const FormulaError nError);
365  void GetString( SCROW nRow, OUString& rString, const ScInterpreterContext* pContext = nullptr ) const
366  { return GetString( GetCellValue( nRow ), nRow, rString, pContext ); }
368  OUString& rString, const ScInterpreterContext* pContext = nullptr ) const
369  { return GetString( GetCellValue( rBlockPos, nRow ), nRow, rString, pContext ); }
370  double* GetValueCell( SCROW nRow );
371  void GetInputString( SCROW nRow, OUString& rString ) const
372  { return GetInputString( GetCellValue( nRow ), nRow, rString ); }
373  void GetInputString( sc::ColumnBlockConstPosition& rBlockPos, SCROW nRow, OUString& rString ) const
374  { return GetInputString( GetCellValue( rBlockPos, nRow ), nRow, rString ); }
375  double GetValue( SCROW nRow ) const;
376  const EditTextObject* GetEditText( SCROW nRow ) const;
377  void RemoveEditTextCharAttribs( SCROW nRow, const ScPatternAttr& rAttr );
378  void GetFormula( SCROW nRow, OUString& rFormula ) const;
379  const ScFormulaCell* GetFormulaCell( SCROW nRow ) const;
381  ScFormulaCell * const * GetFormulaCellBlockAddress( SCROW nRow, size_t& rBlockSize ) const;
382  CellType GetCellType( SCROW nRow ) const;
383  SCSIZE GetCellCount() const;
384  sal_uLong GetWeightedCount() const;
385  sal_uLong GetWeightedCount(SCROW nStartRow, SCROW nEndRow) const;
386  sal_uInt32 GetCodeCount() const; // RPN-Code in formulas
387  FormulaError GetErrCode( SCROW nRow ) const;
389  bool HasStringData( SCROW nRow ) const;
390  bool HasValueData( SCROW nRow ) const;
391  bool HasStringCells( SCROW nStartRow, SCROW nEndRow ) const;
394  SCROW nRow1, SCROW nRow2, SCROW* pRow1 ) const;
396  bool IsFormulaDirty( SCROW nRow ) const;
400  void SetDirtyFromClip( SCROW nRow1, SCROW nRow2, sc::ColumnSpanSet& rBroadcastSpans );
401  void SetDirty( SCROW nRow1, SCROW nRow2, BroadcastMode );
402  void SetDirtyVar();
403  void SetDirtyAfterLoad();
404  void SetTableOpDirty( const ScRange& );
405  void CalcAll();
406  void CalcAfterLoad( sc::CompileFormulaContext& rCxt, bool bStartListening );
408  void CompileXML( sc::CompileFormulaContext& rCxt, ScProgress& rProgress );
415  bool BroadcastBroadcasters( SCROW nRow1, SCROW nRow2, ScHint& rHint );
419  void ResetChanged( SCROW nStartRow, SCROW nEndRow );
421  bool UpdateReferenceOnCopy( sc::RefUpdateContext& rCxt, ScDocument* pUndoDoc = nullptr );
430  bool UpdateReference( sc::RefUpdateContext& rCxt, ScDocument* pUndoDoc );
435  void UpdateMoveTab( sc::RefUpdateMoveTabContext& rCxt, SCTAB nTabNo );
436  void UpdateCompile( bool bForceIfNameInUse = false );
437  void UpdateTranspose( const ScRange& rSource, const ScAddress& rDest,
438  ScDocument* pUndoDoc );
439  void UpdateGrow( const ScRange& rArea, SCCOL nGrowX, SCROW nGrowY );
441  void SetTabNo(SCTAB nNewTab);
442  void FindRangeNamesInUse(SCROW nRow1, SCROW nRow2, sc::UpdatedRangeNames& rIndexes) const;
445  sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt );
448  sc::StartListeningContext& rStartListenCxt, sc::CompileFormulaContext& rCompileCxt );
451  sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt );
453  const SfxPoolItem& GetAttr( SCROW nRow, sal_uInt16 nWhich ) const;
454  template<class T> const T& GetAttr( SCROW nRow, TypedWhichId<T> nWhich ) const
455  {
456  return static_cast<const T&>(GetAttr(nRow, sal_uInt16(nWhich)));
457  }
458  const ScPatternAttr* GetPattern( SCROW nRow ) const;
459  const ScPatternAttr* GetMostUsedPattern( SCROW nStartRow, SCROW nEndRow ) const;
461  sal_uInt32 GetNumberFormat( const ScInterpreterContext& rContext, SCROW nRow ) const;
462  sal_uInt32 GetNumberFormat( SCROW nStartRow, SCROW nEndRow ) const;
464  void MergeSelectionPattern( ScMergePatternState& rState, const ScMarkData& rMark, bool bDeep ) const;
465  void MergePatternArea( ScMergePatternState& rState, SCROW nRow1, SCROW nRow2, bool bDeep ) const;
466  void MergeBlockFrame( SvxBoxItem* pLineOuter, SvxBoxInfoItem* pLineInner,
467  ScLineFlags& rFlags,
468  SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight ) const;
469  void ApplyBlockFrame(const SvxBoxItem& rLineOuter, const SvxBoxInfoItem* pLineInner,
470  SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight);
472  void ApplyAttr( SCROW nRow, const SfxPoolItem& rAttr );
473  void ApplyPattern( SCROW nRow, const ScPatternAttr& rPatAttr );
474  void ApplyPatternArea( SCROW nStartRow, SCROW nEndRow, const ScPatternAttr& rPatAttr,
475  ScEditDataArray* pDataArray = nullptr,
476  bool* const pIsChanged = nullptr);
477  const ScPatternAttr* SetPattern( SCROW nRow, std::unique_ptr<ScPatternAttr> );
478  void SetPattern( SCROW nRow, const ScPatternAttr& );
479  void SetPatternArea( SCROW nStartRow, SCROW nEndRow, const ScPatternAttr& );
481  const ScPatternAttr& rPattern, SvNumFormatType nNewType );
483  void ApplyStyle( SCROW nRow, const ScStyleSheet* rStyle );
484  void ApplyStyleArea( SCROW nStartRow, SCROW nEndRow, const ScStyleSheet& rStyle );
485  void ApplySelectionStyle(const ScStyleSheet& rStyle, const ScMarkData& rMark);
486  void ApplySelectionLineStyle( const ScMarkData& rMark,
487  const ::editeng::SvxBorderLine* pLine, bool bColorOnly );
488  void AddCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex );
489  void RemoveCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex );
491  const ScStyleSheet* GetStyle( SCROW nRow ) const;
492  const ScStyleSheet* GetSelectionStyle( const ScMarkData& rMark, bool& rFound ) const;
493  const ScStyleSheet* GetAreaStyle( bool& rFound, SCROW nRow1, SCROW nRow2 ) const;
495  void FindStyleSheet( const SfxStyleSheetBase* pStyleSheet, ScFlatBoolRowSegments& rUsedRows, bool bReset );
496  bool IsStyleSheetUsed( const ScStyleSheet& rStyle ) const;
500  SCROW nRow, const ScStyleSheet* pSearchStyle, bool bUp, bool bInSelection,
501  const ScMarkData& rMark) const;
503  bool SearchStyleRange(
504  SCROW& rRow, SCROW& rEndRow, const ScStyleSheet* pSearchStyle, bool bUp,
505  bool bInSelection, const ScMarkData& rMark) const;
507  bool ApplyFlags( SCROW nStartRow, SCROW nEndRow, ScMF nFlags );
508  bool RemoveFlags( SCROW nStartRow, SCROW nEndRow, ScMF nFlags );
509  void ClearItems( SCROW nStartRow, SCROW nEndRow, const sal_uInt16* pWhich );
511  void RemoveProtected( SCROW nStartRow, SCROW nEndRow );
513  SCROW ApplySelectionCache( SfxItemPoolCache* pCache, const ScMarkData& rMark, ScEditDataArray* pDataArray, bool* const pIsChanged );
514  void DeleteSelection( InsertDeleteFlags nDelFlag, const ScMarkData& rMark, bool bBroadcast );
516  void ClearSelectionItems( const sal_uInt16* pWhich, const ScMarkData& rMark );
517  void ChangeSelectionIndent( bool bIncrement, const ScMarkData& rMark );
519  long GetNeededSize(
520  SCROW nRow, OutputDevice* pDev, double nPPTX, double nPPTY,
521  const Fraction& rZoomX, const Fraction& rZoomY,
522  bool bWidth, const ScNeededSizeOptions& rOptions, const ScPatternAttr** pPatternChange,
523  bool bInPrintTwips = false ) const;
525  sal_uInt16 GetOptimalColWidth(
526  OutputDevice* pDev, double nPPTX, double nPPTY,
527  const Fraction& rZoomX, const Fraction& rZoomY,
528  bool bFormula, sal_uInt16 nOldWidth, const ScMarkData* pMarkData, const ScColWidthParam* pParam) const;
530  void GetOptimalHeight(
531  sc::RowHeightContext& rCxt, SCROW nStartRow, SCROW nEndRow, sal_uInt16 nMinHeight, SCROW nMinStart );
534  SCROW GetNextUnprotected( SCROW nRow, bool bUp ) const;
536  void GetFilterEntries(
537  sc::ColumnBlockConstPosition& rBlockPos, SCROW nStartRow, SCROW nEndRow,
538  ScFilterEntries& rFilterEntries );
540  bool GetDataEntries( SCROW nRow, std::set<ScTypedStrData>& rStrings, bool bLimit ) const;
542  void UpdateInsertTabAbs(SCTAB nNewPos);
543  bool TestTabRefAbs(SCTAB nTable) const;
544  bool GetNextSpellingCell(SCROW& nRow, bool bInSel, const ScMarkData& rData) const;
547  sc::StartListeningContext& rStartCxt, sc::EndListeningContext& rEndCxt, SCROW nRow1, SCROW nRow2 );
550  sc::EndListeningContext& rCxt, SCROW nRow1, SCROW nRow2,
551  SCROW* pStartRow, SCROW* pEndRow );
553  void StartListening( SvtListener& rLst, SCROW nRow );
554  void EndListening( SvtListener& rLst, SCROW nRow );
555  void StartListening( sc::StartListeningContext& rCxt, const ScAddress& rAddress, SvtListener& rListener );
556  void EndListening( sc::EndListeningContext& rCxt, const ScAddress& rAddress, SvtListener& rListener );
557  void StartListeners( sc::StartListeningContext& rCxt, bool bAll );
558  void SetDirtyIfPostponed();
560  void CollectListeners( std::vector<SvtListener*>& rListeners, SCROW nRow1, SCROW nRow2 );
561  void CollectFormulaCells( std::vector<ScFormulaCell*>& rCells, SCROW nRow1, SCROW nRow2 );
566  sal_Int32 GetMaxStringLen( SCROW nRowStart, SCROW nRowEnd, rtl_TextEncoding eCharSet ) const;
567  sal_Int32 GetMaxNumberStringLen( sal_uInt16& nPrecision,
568  SCROW nRowStart, SCROW nRowEnd ) const;
570  sal_uInt16 GetTextWidth(SCROW nRow) const;
571  void SetTextWidth(SCROW nRow, sal_uInt16 nWidth);
573  SvtScriptType GetScriptType( SCROW nRow ) const;
579  SvtScriptType GetRangeScriptType( sc::CellTextAttrStoreType::iterator& itPos, SCROW nRow1, SCROW nRow2,
580  const sc::CellStoreType::iterator& itr);
582  void SetScriptType( SCROW nRow, SvtScriptType nType );
583  void UpdateScriptTypes( SCROW nRow1, SCROW nRow2 );
585  size_t GetFormulaHash( SCROW nRow ) const;
589  bool ResolveStaticReference( ScMatrix& rMat, SCCOL nMatCol, SCROW nRow1, SCROW nRow2 );
590  void FillMatrix( ScMatrix& rMat, size_t nMatCol, SCROW nRow1, SCROW nRow2, svl::SharedStringPool* pPool ) const;
592  bool HandleRefArrayForParallelism( SCROW nRow1, SCROW nRow2, const ScFormulaCellGroupRef& mxGroup );
593 #ifdef DBG_UTIL
594  void AssertNoInterpretNeeded( SCROW nRow1, SCROW nRow2 );
595 #endif
596  void SetFormulaResults( SCROW nRow, const double* pResults, size_t nLen );
598  void CalculateInThread( ScInterpreterContext& rContext, SCROW nRow, size_t nLen, size_t nOffset,
599  unsigned nThisThread, unsigned nThreadsTotal );
600  void HandleStuffAfterParallelCalculation( SCROW nRow, size_t nLen, ScInterpreter* pInterpreter );
602  void SetNumberFormat( SCROW nRow, sal_uInt32 nNumberFormat );
605  const SvtBroadcaster* GetBroadcaster( SCROW nRow ) const;
607  void DeleteBroadcasters( sc::ColumnBlockPosition& rBlockPos, SCROW nRow1, SCROW nRow2 );
610  void Broadcast( SCROW nRow );
611  void BroadcastCells( const std::vector<SCROW>& rRows, SfxHintId nHint );
612  void BroadcastRows( SCROW nStartRow, SCROW nEndRow, SfxHintId nHint );
614  // cell notes
615  ScPostIt* GetCellNote( SCROW nRow );
616  const ScPostIt* GetCellNote( SCROW nRow ) const;
618  const ScPostIt* GetCellNote( sc::ColumnBlockConstPosition& rBlockPos, SCROW nRow ) const;
619  void DeleteCellNotes( sc::ColumnBlockPosition& rBlockPos, SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership );
620  bool HasCellNotes() const;
621  void SetCellNote( SCROW nRow, std::unique_ptr<ScPostIt> pNote);
622  bool IsNotesEmptyBlock(SCROW nStartRow, SCROW nEndRow) const;
624  std::unique_ptr<ScPostIt> ReleaseNote( SCROW nRow );
625  size_t GetNoteCount() const;
626  void CreateAllNoteCaptions();
627  void ForgetNoteCaptions( SCROW nRow1, SCROW nRow2, bool bPreserveData );
628  SCROW GetNotePosition( size_t nIndex ) const;
629  void GetAllNoteEntries( std::vector<sc::NoteEntry>& rNotes ) const;
630  void GetNotesInRange( SCROW nStartRow, SCROW nEndRow, std::vector<sc::NoteEntry>& rNotes ) const;
632  SCROW GetCellNotesMaxRow() const;
633  SCROW GetCellNotesMinRow() const;
636  SCROW nRow1, SCROW nRow2, ScColumn& rDestCol, bool bCloneCaption = true,
637  SCROW nRowOffsetDest = 0) const;
639  void DuplicateNotes(SCROW nStartRow, size_t nDataSize, ScColumn& rDestCol,
640  sc::ColumnBlockPosition& maDestBlockPos, bool bCloneCaption, SCROW nRowOffsetDest=0 ) const;
642  void UpdateNoteCaptions( SCROW nRow1, SCROW nRow2 );
644  void UpdateDrawObjects( std::vector<std::vector<SdrObject*>>& pObjects, SCROW nRowStart, SCROW nRowEnd );
645  void UpdateDrawObjectsForRow( std::vector<SdrObject*>& pObjects, SCCOL nTargetCol, SCROW nTargetRow );
646  bool IsDrawObjectsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const;
648  void InterpretDirtyCells( SCROW nRow1, SCROW nRow2 );
650  static void JoinNewFormulaCell( const sc::CellStoreType::position_type& aPos, ScFormulaCell& rCell );
660  void DetachFormulaCell( const sc::CellStoreType::position_type& aPos, ScFormulaCell& rCell,
661  std::vector<SCROW>& rNewSharedRows );
664  void StartListeningUnshared( const std::vector<SCROW>& rNewSharedRows );
666  void DetachFormulaCells( const sc::CellStoreType::position_type& aPos, size_t nLength,
667  std::vector<SCROW>* pNewSharedRows );
669  void AttachFormulaCells( sc::StartListeningContext& rCxt, SCROW nRow1, SCROW nRow2 );
670  void DetachFormulaCells( sc::EndListeningContext& rCxt, SCROW nRow1, SCROW nRow2,
671  std::vector<SCROW>* pNewSharedRows );
676  void RegroupFormulaCells( std::vector<ScAddress>* pGroupPos = nullptr );
693  void ResetFormulaCellPositions( SCROW nRow1, SCROW nRow2, bool bUpdateRefs );
695  void SplitFormulaGroupByRelativeRef( const ScRange& rBoundRange );
697  void TransferCellValuesTo( SCROW nRow, size_t nLen, sc::CellValues& rDest );
698  void CopyCellValuesFrom( SCROW nRow, const sc::CellValues& rSrc );
700  sc::EndListeningContext& rCxt, SCROW nRow1, SCROW nRow2, sc::TableValues* pUndo );
702  void SwapNonEmpty(
703  sc::TableValues& rValues, sc::StartListeningContext& rStartCxt, sc::EndListeningContext& rEndCxt );
705  std::unique_ptr<sc::ColumnIterator> GetColumnIterator( SCROW nRow1, SCROW nRow2 ) const;
707  bool EnsureFormulaCellResults( SCROW nRow1, SCROW nRow2, bool bSkipRunning = false );
709  void StoreToCache(SvStream& rStrm) const;
710  void RestoreFromCache(SvStream& rStrm);
713  void DumpColumnStorage() const;
714 #endif
716  SCSIZE GetPatternCount() const;
717  SCSIZE GetPatternCount( SCROW nRow1, SCROW nRow2 ) const;
718  bool ReservePatternCount( SCSIZE nReserve );
719 private:
721  sc::CellStoreType::iterator GetPositionToInsert( SCROW nRow, std::vector<SCROW>& rNewSharedRows,
722  bool bInsertFormula );
723  sc::CellStoreType::iterator GetPositionToInsert( const sc::CellStoreType::iterator& it, SCROW nRow,
724  std::vector<SCROW>& rNewSharedRows, bool bInsertFormula );
727  const sc::CellStoreType::iterator& itPos, SCROW nRow, ScFormulaCell& rCell,
728  const std::vector<SCROW>& rNewSharedRows,
729  bool bJoin = true, sc::StartListeningType eListenType = sc::SingleCellListening );
732  const sc::CellStoreType::position_type& aPos, ScFormulaCell& rCell,
733  const std::vector<SCROW>& rNewSharedRows,
734  bool bJoin = true, sc::StartListeningType eListenType = sc::SingleCellListening );
736  void AttachNewFormulaCells( const sc::CellStoreType::position_type& aPos, size_t nLength,
737  std::vector<SCROW>& rNewSharedRows );
739  void BroadcastNewCell( SCROW nRow );
740  bool UpdateScriptType( sc::CellTextAttr& rAttr, SCROW nRow, sc::CellStoreType::iterator& itr );
742  const ScFormulaCell* FetchFormulaCell( SCROW nRow ) const;
745  sc::CellStoreType::const_iterator& itPos, SCROW nRow, bool bForward) const;
746  SCROW FindNextVisibleRow(SCROW nRow, bool bForward) const;
748  void GetString( const ScRefCellValue& cell, SCROW nRow, OUString& rString, const ScInterpreterContext* pContext = nullptr ) const;
749  void GetInputString( const ScRefCellValue& cell, SCROW nRow, OUString& rString ) const;
757  void CellStorageModified();
758  void CellNotesDeleting(SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership );
760  void CopyCellTextAttrsToDocument(SCROW nRow1, SCROW nRow2, ScColumn& rDestCol) const;
762  void DeleteCells(
763  sc::ColumnBlockPosition& rBlockPos, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nDelFlag,
764  sc::SingleColumnSpanSet& rDeleted );
770  std::vector<sc::FormulaGroupEntry> GetFormulaGroupEntries();
773  sc::EndListeningContext& rCxt, SCROW nRow, std::vector<ScAddress>* pGroupPos );
776  sc::EndListeningContext& rCxt, SCROW nRow1, SCROW nRow2, std::vector<ScAddress>* pGroupPos );
778  void EndListeningGroup( sc::EndListeningContext& rCxt, SCROW nRow );
779  void SetNeedsListeningGroup( SCROW nRow );
780 };
782 #endif
784 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Matrix data type that can store values of mixed types.
Definition: scmatrix.hxx:113
sc::MatrixEdge GetBlockMatrixEdges(SCROW nRow1, SCROW nRow2, sc::MatrixEdge nMask, bool bNoMatrixAtAll) const
Definition: column.cxx:113
bool CompileErrorCells(sc::CompileFormulaContext &rCxt, FormulaError nErrCode)
Definition: column.cxx:3405
SCROW GetCellNotesMinRow() const
Definition: column2.cxx:2029
SCROW GetCellNotesMaxRow() const
Definition: column2.cxx:2018
void CellStorageModified()
Called whenever the state of cell array gets modified i.e.
Definition: column2.cxx:1596
void ApplyStyle(SCROW nRow, const ScStyleSheet *rStyle)
Definition: column.cxx:559
void FreeAll()
Definition: column3.cxx:150
void InterpretDirtyCells(SCROW nRow1, SCROW nRow2)
Definition: column3.cxx:109
constexpr double nPPTY
SCROW GetNotePosition(size_t nIndex) const
Definition: column4.cxx:684
void UpdateNoteCaptions(SCROW nRow1, SCROW nRow2)
Definition: column.cxx:1920
sal_uLong GetWeightedCount() const
Definition: column2.cxx:3577
SCSIZE GetEmptyLinesInBlock(SCROW nStartRow, SCROW nEndRow, ScDirection eDir) const
Definition: column2.cxx:1283
void MixMarked(sc::MixDocContext &rCxt, const ScMarkData &rMark, ScPasteFunc nFunction, bool bSkipEmpty, const ScColumn &rSrcCol)
Definition: column3.cxx:1461
::boost::intrusive_ptr< ScFormulaCellGroup > ScFormulaCellGroupRef
Definition: types.hxx:44
void SplitFormulaGroupByRelativeRef(const ScRange &rBoundRange)
Definition: column4.cxx:1191
void DeleteRow(SCROW nStartRow, SCSIZE nSize, std::vector< ScAddress > *pGroupPos)
Definition: column3.cxx:182
void SetDirty(SCROW nRow1, SCROW nRow2, BroadcastMode)
Definition: column.cxx:3292
void SetTextWidth(SCROW nRow, sal_uInt16 nWidth)
Definition: column2.cxx:2045
todo: It should be possible to have MarkArrays for each table, in order to enable "search all" across...
Definition: markdata.hxx:43
void DeleteArea(SCROW nStartRow, SCROW nEndRow, InsertDeleteFlags nDelFlag, bool bBroadcast=true, sc::ColumnSpanSet *pBroadcastSpans=nullptr)
Definition: column3.cxx:986
void GetAllNoteEntries(std::vector< sc::NoteEntry > &rNotes) const
Definition: column4.cxx:749
Store parameters used in the ScDocument::SetString() method.
Definition: stringutil.hxx:35
void CellNotesDeleting(SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership)
Definition: column2.cxx:1995
SCSIZE VisibleCount(SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:1223
bool HasAttrib(SCROW nRow1, SCROW nRow2, HasAttrFlags nMask) const
Definition: column.cxx:302
std::unique_ptr< ScAttrArray > pAttrArray
Definition: column.hxx:131
void MergeSelectionPattern(ScMergePatternState &rState, const ScMarkData &rMark, bool bDeep) const
Definition: column.cxx:334
const ScPatternAttr * GetPattern(SCROW nRow) const
Definition: column.cxx:369
void SetError(SCROW nRow, const FormulaError nError)
Definition: column3.cxx:2807
void StoreToCache(SvStream &rStrm) const
Definition: column4.cxx:1947
Definition: global.hxx:193
void CopyFromClip(sc::CopyFromClipContext &rCxt, SCROW nRow1, SCROW nRow2, long nDy, ScColumn &rColumn)
Definition: column3.cxx:1388
void PrepareBroadcastersForDestruction()
Definition: column2.cxx:1922
const SfxPoolItem & GetAttr(SCROW nRow, sal_uInt16 nWhich) const
Definition: column.cxx:374
void RestoreFromCache(SvStream &rStrm)
Definition: column4.cxx:1957
const sc::CellTextAttrStoreType & GetCellAttrStore() const
Definition: column.hxx:188
ScFormulaVectorState GetFormulaVectorState(SCROW nRow) const
Definition: column2.cxx:2155
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:2978
void MarkScenarioIn(ScMarkData &rDestMark) const
Definition: column.cxx:1866
Definition: column.cxx:93
bool HasVisibleAttrIn(SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:3207
Provides methods to allow direct shifting of document content without broadcasting or shifting of bro...
void CompileDBFormula(sc::CompileFormulaContext &rCxt)
Definition: column2.cxx:3364
broadcast only existing cell broadcasters => no AreaBroadcast of range!
Definition: column.hxx:174
FormulaError GetErrCode(SCROW nRow) const
Definition: column3.cxx:3058
void SetDirtyIfPostponed()
Definition: column.cxx:3371
void CopyUpdated(const ScColumn &rPosCol, ScColumn &rDestCol) const
Definition: column.cxx:1772
Think of this as a mini-ScColumn like storage that only stores cell values in a column.
Definition: cellvalues.hxx:42
bool GetNextDataPos(SCROW &rRow) const
Definition: column2.cxx:1416
Definition: column.hxx:136
void GetInputString(sc::ColumnBlockConstPosition &rBlockPos, SCROW nRow, OUString &rString) const
Definition: column.hxx:373
sal_uIntPtr sal_uLong
void SetCellNote(SCROW nRow, std::unique_ptr< ScPostIt > pNote)
Definition: column2.cxx:1962
Context for reference update during shifting, moving or copying of cell ranges.
void CalcAfterLoad(sc::CompileFormulaContext &rCxt, bool bStartListening)
Definition: column.cxx:3412
void DuplicateNotes(SCROW nStartRow, size_t nDataSize, ScColumn &rDestCol, sc::ColumnBlockPosition &maDestBlockPos, bool bCloneCaption, SCROW nRowOffsetDest=0) const
Definition: column2.cxx:1899
std::unique_ptr< ScPostIt > ReleaseNote(SCROW nRow)
Definition: column4.cxx:616
void SetEditText(SCROW nRow, std::unique_ptr< EditTextObject > pEditText)
Definition: column3.cxx:2208
void MergeBlockFrame(SvxBoxItem *pLineOuter, SvxBoxInfoItem *pLineInner, ScLineFlags &rFlags, SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight) const
Definition: column.cxx:356
void BroadcastNewCell(SCROW nRow)
Definition: column3.cxx:746
void UpdateDeleteTab(sc::RefUpdateDeleteTabContext &rCxt)
Definition: column.cxx:3155
void Broadcast(SCROW nRow)
Definition: column3.cxx:66
void ResetChanged(SCROW nStartRow, SCROW nEndRow)
Definition: column.cxx:3418
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:1196
void CopyStaticToDocument(SCROW nRow1, SCROW nRow2, const SvNumberFormatterMergeMap &rMap, ScColumn &rDestCol)
Definition: column.cxx:1061
Stores cell values for multiple tables.
Definition: cellvalues.hxx:87
CellType GetCellType(SCROW nRow) const
Definition: column3.cxx:3009
bool RemoveFlags(SCROW nStartRow, SCROW nEndRow, ScMF nFlags)
Definition: column.cxx:688
void BroadcastRows(SCROW nStartRow, SCROW nEndRow, SfxHintId nHint)
Definition: column3.cxx:87
bool HasVisibleDataAt(SCROW nRow) const
Definition: column2.cxx:1230
void ApplyPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPatternAttr &rPatAttr, ScEditDataArray *pDataArray=nullptr, bool *const pIsChanged=nullptr)
Definition: column.cxx:515
void CompileHybridFormula(sc::StartListeningContext &rStartListenCxt, sc::CompileFormulaContext &rCompileCxt)
Definition: column4.cxx:968
void HandleStuffAfterParallelCalculation(SCROW nRow, size_t nLen, ScInterpreter *pInterpreter)
Definition: column2.cxx:3014
bool ExtendMerge(SCCOL nThisCol, SCROW nStartRow, SCROW nEndRow, SCCOL &rPaintCol, SCROW &rPaintRow, bool bRefresh)
Definition: column.cxx:327
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:104
formula::FormulaTokenRef ResolveStaticReference(SCROW nRow)
Definition: column2.cxx:2161
bool HasAttribSelection(const ScMarkData &rMark, HasAttrFlags nMask) const
Definition: column.cxx:307
Accessor class to ScDocument.
void ChangeSelectionIndent(bool bIncrement, const ScMarkData &rMark)
Definition: column.cxx:449
mdds::multi_type_vector< CellFunc, CellStoreEvent > CellStoreType
void RemoveEditTextCharAttribs(SCROW nRow, const ScPatternAttr &rAttr)
Definition: column3.cxx:2976
void CompileAll(sc::CompileFormulaContext &rCxt)
Definition: column.cxx:3392
void DeleteRanges(const std::vector< sc::RowSpan > &rRanges, InsertDeleteFlags nDelFlag)
Definition: column4.cxx:534
bool IsEmptyAttr() const
Definition: column2.cxx:1241
void CompileColRowNameFormula(sc::CompileFormulaContext &rCxt)
Definition: column2.cxx:3371
void ApplyBlockFrame(const SvxBoxItem &rLineOuter, const SvxBoxInfoItem *pLineInner, SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight)
Definition: column.cxx:363
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:3284
bool ReservePatternCount(SCSIZE nReserve)
Definition: column2.cxx:3626
void StartListeners(sc::StartListeningContext &rCxt, bool bAll)
Definition: column3.cxx:1938
void UpdateDrawObjectsForRow(std::vector< SdrObject * > &pObjects, SCCOL nTargetCol, SCROW nTargetRow)
Definition: column.cxx:1940
void GetFormula(SCROW nRow, OUString &rFormula) const
Definition: column3.cxx:2990
Row-wise value iterator.
Definition: dociter.hxx:479
void ApplySelectionStyle(const ScStyleSheet &rStyle, const ScMarkData &rMark)
Definition: column.cxx:572
const sc::CellNoteStoreType & GetCellNoteStore() const
Definition: column.hxx:190
Store arbitrary cell value of any kind.
Definition: cellvalue.hxx:36
sal_Int32 GetMaxStringLen(SCROW nRowStart, SCROW nRowEnd, rtl_TextEncoding eCharSet) const
Definition: column3.cxx:3209
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:1689
ScFormulaCell * SetFormulaCell(SCROW nRow, ScFormulaCell *pCell, sc::StartListeningType eListenType=sc::SingleCellListening, bool bInheritNumFormatIfNeeded=true)
Takes ownership of pCell.
Definition: column3.cxx:2306
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:3123
void SetDirtyVar()
Definition: column.cxx:3209
bool HasFormulaCell() const
Definition: column4.cxx:1260
void SetAllFormulasDirty(const sc::SetFormulaDirtyContext &rCxt)
Definition: column.cxx:3237
void ApplySelectionLineStyle(const ScMarkData &rMark, const ::editeng::SvxBorderLine *pLine, bool bColorOnly)
Definition: column.cxx:585
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:1042
sc::CellStoreType::iterator GetPositionToInsert(SCROW nRow, std::vector< SCROW > &rNewSharedRows, bool bInsertFormula)
Definition: column3.cxx:263
Keep track of spans in a single column only.
const ScPatternAttr * pPattern
Definition: column.hxx:102
ScRefCellValue GetCellValue(SCROW nRow) const
Definition: column.cxx:732
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:45
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:3130
Additional class containing cell annotation data.
Definition: postit.hxx:160
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:3040
const ScStyleSheet * GetSelectionStyle(const ScMarkData &rMark, bool &rFound) const
Definition: column.cxx:607
Definition: address.hxx:69
void Delete(SCROW nRow)
Definition: column3.cxx:140
sc::CellStoreType maCells
Definition: column.hxx:129
void UpdateCompile(bool bForceIfNameInUse=false)
Definition: column.cxx:3188
bool SearchStyleRange(SCROW &rRow, SCROW &rEndRow, const ScStyleSheet *pSearchStyle, bool bUp, bool bInSelection, const ScMarkData &rMark) const
Definition: column.cxx:3457
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:208
SCROW GetLastDataPos() const
Definition: column2.cxx:1337
bool SetFormulaCells(SCROW nRow, std::vector< ScFormulaCell * > &rCells)
Definition: column3.cxx:2344
sal_uInt32 GetNumberFormat(const ScInterpreterContext &rContext, SCROW nRow) const
Definition: column.cxx:420
void DeleteContent(SCROW nRow, bool bBroadcast=true)
Definition: column3.cxx:118
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:675
void SetTabNo(SCTAB nNewTab)
Definition: column.cxx:3194
SvtBroadcaster * GetBroadcaster(SCROW nRow)
Definition: column2.cxx:1906
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:2188
void SetDirtyFromClip(SCROW nRow1, SCROW nRow2, sc::ColumnSpanSet &rBroadcastSpans)
Definition: column.cxx:3245
double GetValue(SCROW nRow) const
Definition: column3.cxx:2942
constexpr double nPPTX
size_t GetFormulaHash(SCROW nRow) const
Definition: column2.cxx:2149
bool UpdateReference(sc::RefUpdateContext &rCxt, ScDocument *pUndoDoc)
Update reference addresses in formula cell in response to mass cell movement.
Definition: column.cxx:2478
void GetString(sc::ColumnBlockConstPosition &rBlockPos, SCROW nRow, OUString &rString, const ScInterpreterContext *pContext=nullptr) const
Definition: column.hxx:367
svl::SharedString GetSharedString(SCROW nRow) const
Definition: column3.cxx:2385
Definition: global.hxx:189
void InsertRow(SCROW nStartRow, SCSIZE nSize)
Definition: column.cxx:866
Definition: column.hxx:135
bool IsStyleSheetUsed(const ScStyleSheet &rStyle) const
Definition: column.cxx:678
void InitBlockPosition(sc::ColumnBlockPosition &rBlockPos)
Definition: column3.cxx:1041
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:600
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:2446
void EndListening(SvtListener &rLst, SCROW nRow)
Definition: column2.cxx:3286
void FindDataAreaPos(SCROW &rRow, bool bDown) const
Definition: column2.cxx:3079
void SetRawString(SCROW nRow, const OUString &rStr)
Definition: column3.cxx:2825
void UndoToColumn(sc::CopyToDocContext &rCxt, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nFlags, bool bMarked, ScColumn &rColumn) const
Definition: column.cxx:1759
void StartListening(SvtListener &rLst, SCROW nRow)
Definition: column2.cxx:3280
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:1916
bool TrimEmptyBlocks(SCROW &rRowStart, SCROW &rRowEnd) const
Definition: column2.cxx:1462
const ScPatternAttr * GetMostUsedPattern(SCROW nStartRow, SCROW nEndRow) const
Definition: column.cxx:379
bool IsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:1249
sal_Int16 SCCOL
Definition: types.hxx:22
Definition: global.hxx:158
void RegroupFormulaCells(std::vector< ScAddress > *pGroupPos=nullptr)
Regroup formula cells for the entire column.
Definition: column3.cxx:3508
sc::MultiDataCellState::StateType HasDataCellsInRange(SCROW nRow1, SCROW nRow2, SCROW *pRow1) const
Definition: column4.cxx:47
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:3045
bool TestCopyScenarioTo(const ScColumn &rDestCol) const
Definition: column.cxx:1849
void CheckVectorizationState()
Definition: column.cxx:3230
bool HasSelectionMatrixFragment(const ScMarkData &rMark) const
Definition: column.cxx:194
const ScStyleSheet * GetStyle(SCROW nRow) const
Definition: column.cxx:602
const ScPatternAttr * SetPattern(SCROW nRow, std::unique_ptr< ScPatternAttr >)
Definition: column.cxx:698
Definition: types.hxx:124
void UpdateInsertTab(sc::RefUpdateInsertTabContext &rCxt)
Definition: column.cxx:3136
static void JoinNewFormulaCell(const sc::CellStoreType::position_type &aPos, ScFormulaCell &rCell)
Definition: column3.cxx:269
bool TestInsertRow(SCROW nStartRow, SCSIZE nSize) const
Definition: column.cxx:836
void UpdateDrawObjects(std::vector< std::vector< SdrObject * >> &pObjects, SCROW nRowStart, SCROW nRowEnd)
Definition: column.cxx:1926
::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:3092
void UpdateSelectionFunction(const ScRangeList &rRanges, ScFunctionData &rData, const ScFlatBoolRowSegments &rHiddenRows)
Definition: column2.cxx:3445
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:3238
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:3072
bool EnsureFormulaCellResults(SCROW nRow1, SCROW nRow2, bool bSkipRunning=false)
Definition: column4.cxx:1830
double * GetValueCell(SCROW nRow)
Definition: column3.cxx:2923
void FindRangeNamesInUse(SCROW nRow1, SCROW nRow2, sc::UpdatedRangeNames &rIndexes) const
Definition: column.cxx:3203
void UpdateScriptTypes(SCROW nRow1, SCROW nRow2)
Definition: column4.cxx:1067
bool TestInsertCol(SCROW nStartRow, SCROW nEndRow) const
Definition: column.cxx:814
bool IsNotesEmptyBlock(SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:1266
void DetachFormulaCells(const sc::CellStoreType::position_type &aPos, size_t nLength, std::vector< SCROW > *pNewSharedRows)
Definition: column3.cxx:400
sc::CellNoteStoreType & GetCellNoteStore()
Definition: column.hxx:189
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:2453
void FreeNotes()
Definition: column3.cxx:162
void ApplyAttr(SCROW nRow, const SfxPoolItem &rAttr)
Definition: column.cxx:714
Broadcast mode for SetDirty(SCROW,SCROW,BroadcastMode).
Definition: column.hxx:170
void CopyScenarioTo(ScColumn &rDestCol) const
Definition: column.cxx:1823
sal_uInt32 GetCodeCount() const
Definition: column2.cxx:3609
Iterate through all edit text cells in a given sheet.
void ClearItems(SCROW nStartRow, SCROW nEndRow, const sal_uInt16 *pWhich)
Definition: column.cxx:693
bool GetFirstVisibleAttr(SCROW &rFirstRow) const
Definition: column2.cxx:3186
void SetPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPatternAttr &)
Definition: column.cxx:708
void CopyCellNotesToDocument(SCROW nRow1, SCROW nRow2, ScColumn &rDestCol, bool bCloneCaption=true, SCROW nRowOffsetDest=0) const
Definition: column2.cxx:1877
bool GetLastVisibleAttr(SCROW &rLastRow) const
Definition: column2.cxx:3194
void MixData(sc::MixDocContext &rCxt, SCROW nRow1, SCROW nRow2, ScPasteFunc nFunction, bool bSkipEmpty, const ScColumn &rSrcCol)
Definition: column3.cxx:1878
bool TestTabRefAbs(SCTAB nTable) const
Definition: column2.cxx:1189
bool ApplyFlags(SCROW nStartRow, SCROW nEndRow, ScMF nFlags)
Definition: column.cxx:683
void GetOptimalHeight(sc::RowHeightContext &rCxt, SCROW nStartRow, SCROW nEndRow, sal_uInt16 nMinHeight, SCROW nMinStart)
Definition: column2.cxx:814
void DeleteCellNotes(sc::ColumnBlockPosition &rBlockPos, SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership)
Definition: column2.cxx:2002
void MergePatternArea(ScMergePatternState &rState, SCROW nRow1, SCROW nRow2, bool bDeep) const
Definition: column.cxx:351
ScDocument * GetDoc() const
Definition: column.hxx:182
sal_Int32 SCROW
Definition: types.hxx:18
void UpdateInsertTabOnlyCells(sc::RefUpdateInsertTabContext &rCxt)
Definition: column.cxx:3147
To calculate a single subtotal function.
Definition: subtotal.hxx:61
ScPostIt * GetCellNote(SCROW nRow)
Definition: column2.cxx:1936
void SetDirtyAfterLoad()
Definition: column.cxx:3344
bool ParseString(ScCellValue &rCell, SCROW nRow, SCTAB nTab, const OUString &rString, formula::FormulaGrammar::AddressConvention eConv, const ScSetStringParam *pParam)
Definition: column3.cxx:1956
sc::CellStoreEvent maCellsEvent
Definition: column.hxx:126
sc::BroadcasterStoreType maBroadcasters
Definition: column.hxx:124
const EditTextObject * GetEditText(SCROW nRow) const
Definition: column3.cxx:2963
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:2270
Definition: attrib.hxx:35
void AssertNoInterpretNeeded(SCROW nRow1, SCROW nRow2)
Definition: column2.cxx:2938
void RemoveProtected(SCROW nStartRow, SCROW nEndRow)
Definition: column3.cxx:2781
bool IsMerged(SCROW nRow) const
Definition: column4.cxx:42
void SetFormulaResults(SCROW nRow, const double *pResults, size_t nLen)
Definition: column2.cxx:2945
bool IsVisibleAttrEqual(const ScColumn &rCol, SCROW nStartRow=0, SCROW nEndRow=MAXROW) const
Definition: column2.cxx:3178
broadcast existing cells with position => does AreaBroadcast
Definition: column.hxx:173
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:664
void CopyCellValuesFrom(SCROW nRow, const sc::CellValues &rSrc)
Definition: column4.cxx:366
void Init(SCCOL nNewCol, SCTAB nNewTab, ScDocument *pDoc, bool bEmptyAttrArray)
Definition: column.cxx:98
void AttachFormulaCells(sc::StartListeningContext &rCxt, SCROW nRow1, SCROW nRow2)
Definition: column3.cxx:465
SCROW GetFirstDataPos() const
Definition: column2.cxx:1325
std::unique_ptr< ScAttrIterator > CreateAttrIterator(SCROW nStartRow, SCROW nEndRow) const
Definition: column3.cxx:1895
void DumpColumnStorage() const
SCCOL GetCol() const
Definition: column.hxx:184
void SetTableOpDirty(const ScRange &)
Definition: column.cxx:3334
SCROW FindNextVisibleRowWithContent(sc::CellStoreType::const_iterator &itPos, SCROW nRow, bool bForward) const
Definition: column2.cxx:1532
bool HasCellNotes() const
Definition: column2.cxx:2010
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:2064
Definition: global.hxx:281
formula::VectorRefArray FetchVectorRefArray(SCROW nRow1, SCROW nRow2)
Definition: column2.cxx:2721
sc::CellTextAttrStoreType & GetCellAttrStore()
Definition: column.hxx:187
void CopyCellTextAttrsToDocument(SCROW nRow1, SCROW nRow2, ScColumn &rDestCol) const
Definition: column2.cxx:1781
Definition: column.cxx:80
void DeleteSelection(InsertDeleteFlags nDelFlag, const ScMarkData &rMark, bool bBroadcast)
Definition: column.cxx:487
void MoveTo(SCROW nStartRow, SCROW nEndRow, ScColumn &rCol)
Definition: column.cxx:1991
void ClearSelectionItems(const sal_uInt16 *pWhich, const ScMarkData &rMark)
Definition: column.cxx:462
SvtScriptType GetScriptType(SCROW nRow) const
Definition: column2.cxx:2056
const sc::CellStoreType & GetCellStore() const
Definition: column.hxx:186
void RemoveEditAttribs(SCROW nStartRow, SCROW nEndRow)
Definition: column2.cxx:1182
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:365
void ApplyPattern(SCROW nRow, const ScPatternAttr &rPatAttr)
Definition: column.cxx:500
const ScFormulaCell * FetchFormulaCell(SCROW nRow) const
Definition: column2.cxx:3072
void GetFilterEntries(sc::ColumnBlockConstPosition &rBlockPos, SCROW nStartRow, SCROW nEndRow, ScFilterEntries &rFilterEntries)
Definition: column3.cxx:2523
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:2999
Definition: qproform.cxx:401
void CopyScenarioFrom(const ScColumn &rSrcCol)
Definition: column.cxx:1794
std::vector< sc::FormulaGroupEntry > GetFormulaGroupEntries()
Get all non-grouped formula cells and formula cell groups in the whole column.
Definition: column.cxx:2542
bool GetNextSpellingCell(SCROW &nRow, bool bInSel, const ScMarkData &rData) const
Definition: column2.cxx:1018
SCROW SearchStyle(SCROW nRow, const ScStyleSheet *pSearchStyle, bool bUp, bool bInSelection, const ScMarkData &rMark) const
May return -1 if not found.
Definition: column.cxx:3439
void UpdateMoveTab(sc::RefUpdateMoveTabContext &rCxt, SCTAB nTabNo)
Definition: column.cxx:3177
size_t GetNoteCount() const
Definition: column4.cxx:626
void AddCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex)
Definition: column.cxx:549
sal_Int32 GetMaxNumberStringLen(sal_uInt16 &nPrecision, SCROW nRowStart, SCROW nRowEnd) const
Definition: column3.cxx:3370
SCROW FindNextVisibleRow(SCROW nRow, bool bForward) const
Definition: column2.cxx:1508
bool IsDrawObjectsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const
Definition: column.cxx:1953
SCSIZE GetCellCount() const
Definition: column3.cxx:3051
void ConvertFormulaToValue(sc::EndListeningContext &rCxt, SCROW nRow1, SCROW nRow2, sc::TableValues *pUndo)
Definition: column4.cxx:432
bool HasDataAt(SCROW nRow, bool bConsiderCellNotes=false, bool bConsiderCellDrawObjects=false) const
Definition: column2.cxx:3127
const T & GetAttr(SCROW nRow, TypedWhichId< T > nWhich) const
Definition: column.hxx:454
SCROW GetNextUnprotected(SCROW nRow, bool bUp) const
Including current, may return -1.
Definition: column.cxx:108
void SwapCol(ScColumn &rCol)
Definition: column.cxx:1963
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 BroadcastCells(const std::vector< SCROW > &rRows, SfxHintId nHint)
Definition: column3.cxx:72
void SetScriptType(SCROW nRow, SvtScriptType nType)
Definition: column2.cxx:2135
void FindStyleSheet(const SfxStyleSheetBase *pStyleSheet, ScFlatBoolRowSegments &rUsedRows, bool bReset)
Definition: column.cxx:673
void ApplyStyleArea(SCROW nStartRow, SCROW nEndRow, const ScStyleSheet &rStyle)
Definition: column.cxx:567
SCROW ApplySelectionCache(SfxItemPoolCache *pCache, const ScMarkData &rMark, ScEditDataArray *pDataArray, bool *const pIsChanged)
Definition: column.cxx:425
void GetInputString(SCROW nRow, OUString &rString) const
Definition: column.hxx:371
bool HandleRefArrayForParallelism(SCROW nRow1, SCROW nRow2, const ScFormulaCellGroupRef &mxGroup)
Definition: column4.cxx:1843
SCTAB GetTab() const
Definition: column.hxx:183
Definition: global.hxx:351
When vectorization is enabled, we could potentially mass-calculate a series of formula token arrays i...
Definition: types.hxx:52
void SetValue(SCROW nRow, double fVal)
Definition: column3.cxx:2874
void CalcAll()
Definition: column.cxx:3386
void ApplyPatternIfNumberformatIncompatible(const ScRange &rRange, const ScPatternAttr &rPattern, SvNumFormatType nNewType)
Definition: column.cxx:523
bool IsFormulaDirty(SCROW nRow) const
Definition: column.cxx:3215
void RemoveCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex)
Definition: column.cxx:554
void BroadcastRecalcOnRefMove()
Definition: column.cxx:3378
bool GetPrevDataPos(SCROW &rRow) const
Definition: column2.cxx:1370
const sc::CellTextAttr * GetCellTextAttr(SCROW nRow) const
Definition: column.cxx:793
void DeleteCells(sc::ColumnBlockPosition &rBlockPos, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nDelFlag, sc::SingleColumnSpanSet &rDeleted)
Definition: column3.cxx:965
const ScStyleSheet * GetAreaStyle(bool &rFound, SCROW nRow1, SCROW nRow2) const
Definition: column.cxx:646
bool HasStringCells(SCROW nStartRow, SCROW nEndRow) const
Return true if there is a string or editcell in the range.
Definition: column3.cxx:3114
Definition: types.hxx:66
void DeleteBeforeCopyFromClip(sc::CopyFromClipContext &rCxt, const ScColumn &rClipCol, sc::ColumnSpanSet &rBroadcastSpans)
Definition: column4.cxx:95
sal_uInt16 GetTextWidth(SCROW nRow) const
Definition: column2.cxx:2040
void CopyCellToDocument(SCROW nSrcRow, SCROW nDestRow, ScColumn &rDestCol)
Definition: column.cxx:1186
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:2664
mdds::multi_type_vector< CTAttrFunc > CellTextAttrStoreType
sc::CellStoreType & GetCellStore()
Definition: column.hxx:185
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:3170
void UpdateInsertTabAbs(SCTAB nNewPos)
Definition: column.cxx:3169
bool HasEditCells(SCROW nStartRow, SCROW nEndRow, SCROW &rFirst)
Definition: column.cxx:3424
void StartListeningUnshared(const std::vector< SCROW > &rNewSharedRows)
Re-establish listeners on unshared formula groups.
Definition: column3.cxx:342
sal_Int16 SCTAB
Definition: types.hxx:23
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:289
bool UpdateScriptType(sc::CellTextAttr &rAttr, SCROW nRow, sc::CellStoreType::iterator &itr)
Definition: column3.cxx:759
SCSIZE GetPatternCount() const
Definition: column2.cxx:3616
void CompileXML(sc::CompileFormulaContext &rCxt, ScProgress &rProgress)
Definition: column.cxx:3398
no broadcasting
Definition: column.hxx:172