44namespace editeng {
class SvxBorderLine; }
46#define SC_LINE_EMPTY 0
48#define SC_LINE_DONTCARE 2
50#define SC_ATTRARRAY_DELTA 4
52#define DEBUG_SC_TESTATTRARRAY 0
107 bool bLeft,
SCCOL nDistRight,
bool bTop,
SCROW nDistBottom );
125#if DEBUG_SC_TESTATTRARRAY
159 ScEditDataArray* pDataArray =
nullptr,
bool*
const pIsChanged =
nullptr );
162 const ::editeng::SvxBorderLine* pLine,
bool bColorOnly );
232 bool bPassingPatternOwnership =
false );
253 pDefPattern( pDefaultPattern ),
305 return Next( rTop, rBottom );
321 return Next( rTop, rBottom);
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 ...
const ScDocument & GetDoc() const
bool RemoveFlags(SCROW nStartRow, SCROW nEndRow, ScMF nFlags)
void SetPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPatternAttr *pPattern, bool bPutToPool=false, ScEditDataArray *pDataArray=nullptr)
SCROW GetNextUnprotected(SCROW nRow, bool bUp) const
Including current, may return -1.
void ClearItems(SCROW nStartRow, SCROW nEndRow, const sal_uInt16 *pWhich)
const ScPatternAttr * SetPattern(SCROW nRow, std::unique_ptr< ScPatternAttr > pPattern, bool bPutToPool=false)
ScAttrArray(const ScAttrArray &)=delete
void SetAttrEntries(std::vector< ScAttrEntry > &&vNewData)
void FindStyleSheet(const SfxStyleSheetBase *pStyleSheet, ScFlatBoolRowSegments &rUsedRows, bool bReset)
void DeleteArea(SCROW nStartRow, SCROW nEndRow)
bool Search(SCROW nRow, SCSIZE &nIndex) const
void DeleteHardAttr(SCROW nStartRow, SCROW nEndRow)
void SetPattern(SCROW nRow, const ScPatternAttr *pPattern, bool bPutToPool=false)
bool ApplyFrame(const SvxBoxItem &rLineOuter, const SvxBoxInfoItem *pLineInner, SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight, bool bTop, SCROW nDistBottom)
bool Reserve(SCSIZE nReserve)
bool HasVisibleAttrIn(SCROW nStartRow, SCROW nEndRow) const
bool IsVisibleEqual(const ScAttrArray &rOther, SCROW nStartRow, SCROW nEndRow) const
void RemoveCellCharAttribs(SCROW nStartRow, SCROW nEndRow, const ScPatternAttr *pPattern, ScEditDataArray *pDataArray)
bool IsMerged(SCROW nRow) const
bool ApplyFlags(SCROW nStartRow, SCROW nEndRow, ScMF nFlags)
void ApplyCacheArea(SCROW nStartRow, SCROW nEndRow, SfxItemPoolCache *pCache, ScEditDataArray *pDataArray=nullptr, bool *const pIsChanged=nullptr)
void Reset(const ScPatternAttr *pPattern)
void SetTab(SCTAB nNewTab)
SCROW SearchStyle(SCROW nRow, const ScStyleSheet *pSearchStyle, bool bUp, const ScMarkArray *pMarkArray=nullptr) const
May return -1 if not found.
void ChangeIndent(SCROW nStartRow, SCROW nEndRow, bool bIncrement)
void SetDefaultIfNotInit(SCSIZE nNeeded=1)
void DeleteRow(SCROW nStartRow, SCSIZE nSize)
void MoveTo(SCROW nStartRow, SCROW nEndRow, ScAttrArray &rAttrArray)
Move within a document.
void RemoveCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex)
if nIndex == 0, remove all conditional format data
const ScPatternAttr * GetPattern(SCROW nRow) const
ScAttrArray & operator=(const ScAttrArray &)=delete
void DeleteRange(SCSIZE nStartIndex, SCSIZE nEndIndex)
void ApplyLineStyleArea(SCROW nStartRow, SCROW nEndRow, const ::editeng::SvxBorderLine *pLine, bool bColorOnly)
bool GetLastVisibleAttr(SCROW &rLastRow, SCROW nLastData, bool bSkipEmpty) const
void MergePatternArea(SCROW nStartRow, SCROW nEndRow, ScMergePatternState &rState, bool bDeep) const
bool GetFirstVisibleAttr(SCROW &rFirstRow) const
void MergeBlockFrame(SvxBoxItem *pLineOuter, SvxBoxInfoItem *pLineInner, ScLineFlags &rFlags, SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight) const
bool ExtendMerge(SCCOL nThisCol, SCROW nStartRow, SCROW nEndRow, SCCOL &rPaintCol, SCROW &rPaintRow, bool bRefresh)
Area around any given summaries expand and adapt any MergeFlag (bRefresh)
const ScPatternAttr * SetPatternAreaImpl(SCROW nStartRow, SCROW nEndRow, const ScPatternAttr *pPattern, bool bPutToPool=false, ScEditDataArray *pDataArray=nullptr, bool bPassingPatternOwnership=false)
void SetPatternArea(SCROW nStartRow, SCROW nEndRow, std::unique_ptr< ScPatternAttr > pPattern, bool bPutToPool=false, ScEditDataArray *pDataArray=nullptr)
bool IsAllEqual(const ScAttrArray &rOther, SCROW nStartRow, SCROW nEndRow) const
bool TestInsertRow(SCSIZE nSize) const
bool IsStyleSheetUsed(const ScStyleSheet &rStyle) const
bool HasAttrib_Impl(const ScPatternAttr *pPattern, HasAttrFlags nMask, SCROW nRow1, SCROW nRow2, SCSIZE i) const
void CopyAreaSafe(SCROW nStartRow, SCROW nEndRow, tools::Long nDy, ScAttrArray &rAttrArray)
Leave flags summarized with CopyArea.
const ScPatternAttr * GetPatternRange(SCROW &rStartRow, SCROW &rEndRow, SCROW nRow) const
Returns if you search for attributes at nRow the range from rStartRow to rEndRow where that attribute...
void ApplyStyleArea(SCROW nStartRow, SCROW nEndRow, const ScStyleSheet &rStyle)
bool SearchStyleRange(SCROW &rRow, SCROW &rEndRow, const ScStyleSheet *pSearchStyle, bool bUp, const ScMarkArray *pMarkArray=nullptr) const
void CopyArea(SCROW nStartRow, SCROW nEndRow, tools::Long nDy, ScAttrArray &rAttrArray, ScMF nStripFlags=ScMF::NONE) const
Copy between documents (Clipboard)
bool HasAttrib(SCROW nRow1, SCROW nRow2, HasAttrFlags nMask) const
friend class ScDocumentIterator
void ApplyBlockFrame(const SvxBoxItem &rLineOuter, const SvxBoxInfoItem *pLineInner, SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight)
bool TestInsertCol(SCROW nStartRow, SCROW nEndRow) const
void SetCol(SCCOL nNewCol)
void InsertRow(SCROW nStartRow, SCSIZE nSize)
void SetPatternAreaSafe(SCROW nStartRow, SCROW nEndRow, const ScPatternAttr *pWantedPattern, bool bDefault)
std::vector< ScAttrEntry > mvData
void AddCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex)
void RemoveAreaMerge(SCROW nStartRow, SCROW nEndRow)
ScAttrIterator(const ScAttrArray *pNewArray, SCROW nStart, SCROW nEnd, const ScPatternAttr *pDefaultPattern)
const ScAttrArray * pArray
const ScPatternAttr * Next(SCROW &rTop, SCROW &rBottom)
const ScPatternAttr * pDefPattern
const ScPatternAttr * Resync(SCROW nRow, SCROW &rTop, SCROW &rBottom)
SC_DLLPUBLIC SCROW MaxRow() const
This is a rather odd datastructure.
std::vector< std::unique_ptr< SvLinkSource_Entry_Impl > > mvData
bool operator==(const ScAttrEntry &other) const
const ScPatternAttr * pPattern
const ScPatternAttr * pOld2
std::optional< SfxItemSet > pItemSet
const ScPatternAttr * pOld1
existing objects, temporary