20 #ifndef INCLUDED_SC_INC_ATTARRAY_HXX
21 #define INCLUDED_SC_INC_ATTARRAY_HXX
43 namespace editeng {
class SvxBorderLine; }
45 #define SC_LINE_EMPTY 0
47 #define SC_LINE_DONTCARE 2
49 #define SC_ATTRARRAY_DELTA 4
51 #define DEBUG_SC_TESTATTRARRAY 0
76 mbValidPatternId(true), mnPatternId(0) {}
102 bool bLeft,
SCCOL nDistRight,
bool bTop,
SCROW nDistBottom );
119 #if DEBUG_SC_TESTATTRARRAY
144 {
return SetPatternAreaImpl(nRow, nRow, pPattern.release(), bPutToPool,
nullptr,
true); }
147 {
SetPatternAreaImpl(nStartRow, nEndRow, pPattern.release(), bPutToPool, pDataArray,
true); }
153 ScEditDataArray* pDataArray =
nullptr,
bool*
const pIsChanged =
nullptr );
156 const ::editeng::SvxBorderLine* pLine,
bool bColorOnly );
225 bool bPassingPatternOwnership =
false );
246 pDefPattern( pDefaultPattern ),
298 return Next( rTop, rBottom );
314 return Next( rTop, rBottom);
bool IsVisibleEqual(const ScAttrArray &rOther, SCROW nStartRow, SCROW nEndRow) const
void DeleteRange(SCSIZE nStartIndex, SCSIZE nEndIndex)
bool TestInsertRow(SCSIZE nSize) const
bool RemoveFlags(SCROW nStartRow, SCROW nEndRow, ScMF nFlags)
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)
void InsertRow(SCROW nStartRow, SCSIZE nSize)
bool IsMerged(SCROW nRow) const
bool Reserve(SCSIZE nReserve)
const ScPatternAttr * pDefPattern
bool HasAttrib(SCROW nRow1, SCROW nRow2, HasAttrFlags nMask) const
std::unique_ptr< SfxItemSet > pItemSet
ScAttrArray(const ScAttrArray &)=delete
void SetPatternAreaSafe(SCROW nStartRow, SCROW nEndRow, const ScPatternAttr *pWantedPattern, bool bDefault)
void SetDefaultIfNotInit(SCSIZE nNeeded=1)
void ApplyBlockFrame(const SvxBoxItem &rLineOuter, const SvxBoxInfoItem *pLineInner, SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight)
void SetAttrEntries(std::vector< ScAttrEntry > &&vNewData)
void DeleteRow(SCROW nStartRow, SCSIZE nSize)
bool IsStyleSheetUsed(const ScStyleSheet &rStyle) const
bool HasVisibleAttrIn(SCROW nStartRow, SCROW nEndRow) const
const ScPatternAttr * pPattern
const ScPatternAttr * Next(SCROW &rTop, SCROW &rBottom)
void DeleteHardAttr(SCROW nStartRow, SCROW nEndRow)
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 ...
This is a rather odd datastructure.
bool SearchStyleRange(SCROW &rRow, SCROW &rEndRow, const ScStyleSheet *pSearchStyle, bool bUp, const ScMarkArray *pMarkArray=nullptr) const
void CopyAreaSafe(SCROW nStartRow, SCROW nEndRow, tools::Long nDy, ScAttrArray &rAttrArray)
Leave flags summarized with CopyArea.
bool TestInsertCol(SCROW nStartRow, SCROW nEndRow) const
bool Search(SCROW nRow, SCSIZE &nIndex) const
std::vector< std::unique_ptr< SvLinkSource_Entry_Impl > > mvData
std::vector< ScAttrEntry > mvData
void MergePatternArea(SCROW nStartRow, SCROW nEndRow, ScMergePatternState &rState, bool bDeep) const
const ScPatternAttr * SetPattern(SCROW nRow, std::unique_ptr< ScPatternAttr > pPattern, bool bPutToPool=false)
void ApplyCacheArea(SCROW nStartRow, SCROW nEndRow, SfxItemPoolCache *pCache, ScEditDataArray *pDataArray=nullptr, bool *const pIsChanged=nullptr)
const ScPatternAttr * Resync(SCROW nRow, SCROW &rTop, SCROW &rBottom)
const ScAttrArray * pArray
void ClearItems(SCROW nStartRow, SCROW nEndRow, const sal_uInt16 *pWhich)
void CopyArea(SCROW nStartRow, SCROW nEndRow, tools::Long nDy, ScAttrArray &rAttrArray, ScMF nStripFlags=ScMF::NONE) const
Copy between documents (Clipboard)
void ApplyStyleArea(SCROW nStartRow, SCROW nEndRow, const ScStyleSheet &rStyle)
void SetPattern(SCROW nRow, const ScPatternAttr *pPattern, bool bPutToPool=false)
bool HasAttrib_Impl(const ScPatternAttr *pPattern, HasAttrFlags nMask, SCROW nRow1, SCROW nRow2, SCSIZE i) const
SCROW SearchStyle(SCROW nRow, const ScStyleSheet *pSearchStyle, bool bUp, const ScMarkArray *pMarkArray=nullptr) const
May return -1 if not found.
void RemoveCellCharAttribs(SCROW nStartRow, SCROW nEndRow, const ScPatternAttr *pPattern, ScEditDataArray *pDataArray)
bool IsAllEqual(const ScAttrArray &rOther, SCROW nStartRow, SCROW nEndRow) const
friend class ScDocumentIterator
void SetPatternArea(SCROW nStartRow, SCROW nEndRow, std::unique_ptr< ScPatternAttr > pPattern, bool bPutToPool=false, ScEditDataArray *pDataArray=nullptr)
ScAttrArray & operator=(const ScAttrArray &)=delete
void MoveTo(SCROW nStartRow, SCROW nEndRow, ScAttrArray &rAttrArray)
Move within a document.
bool GetFirstVisibleAttr(SCROW &rFirstRow) const
const ScPatternAttr * pOld2
void SetPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPatternAttr *pPattern, bool bPutToPool=false, ScEditDataArray *pDataArray=nullptr)
void ChangeIndent(SCROW nStartRow, SCROW nEndRow, bool bIncrement)
const ScPatternAttr * SetPatternAreaImpl(SCROW nStartRow, SCROW nEndRow, const ScPatternAttr *pPattern, bool bPutToPool=false, ScEditDataArray *pDataArray=nullptr, bool bPassingPatternOwnership=false)
ScAttrIterator(const ScAttrArray *pNewArray, SCROW nStart, SCROW nEnd, const ScPatternAttr *pDefaultPattern)
void MergeBlockFrame(SvxBoxItem *pLineOuter, SvxBoxInfoItem *pLineInner, ScLineFlags &rFlags, SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight) const
void DeleteArea(SCROW nStartRow, SCROW nEndRow)
SCROW GetNextUnprotected(SCROW nRow, bool bUp) const
Including current, may return -1.
void ApplyLineStyleArea(SCROW nStartRow, SCROW nEndRow, const ::editeng::SvxBorderLine *pLine, bool bColorOnly)
bool GetLastVisibleAttr(SCROW &rLastRow, SCROW nLastData) const
void Reset(const ScPatternAttr *pPattern)
void FindStyleSheet(const SfxStyleSheetBase *pStyleSheet, ScFlatBoolRowSegments &rUsedRows, bool bReset)
void RemoveCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex)
if nIndex == 0, remove all conditional format data
const ScPatternAttr * pOld1
existing objects, temporary
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...
bool ApplyFrame(const SvxBoxItem *pLineOuter, const SvxBoxInfoItem *pLineInner, SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight, bool bTop, SCROW nDistBottom)
void AddCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex)
void RemoveAreaMerge(SCROW nStartRow, SCROW nEndRow)
void SetCol(SCCOL nNewCol)
bool ApplyFlags(SCROW nStartRow, SCROW nEndRow, ScMF nFlags)
void SetTab(SCTAB nNewTab)
const ScPatternAttr * GetPattern(SCROW nRow) const