29 #include <section.hxx>
31 #include <osl/diagnose.h>
39 std::unique_ptr<SwIterator<SwFrame, sw::BroadcastingModify, sw::IteratorMode::UnwrapMulti>>
mpIter;
67 while( aTmp < rNodes.
Count()-1 )
87 if( aTmp == rNodes.
Count()-1 )
138 :
mnIndex( nIdx ), mbInit( false )
149 if( pNd && rNode.
GetIndex() > pNd->GetIndex() )
170 mpMod = const_cast<sw::BroadcastingModify*>(static_cast<sw::BroadcastingModify const *>(pNd->
GetContentNode()));
244 if( pNd->GetIndex() >=
mnIndex )
247 else if( pNd->EndOfSectionIndex() <
mnIndex )
261 while(
nullptr != (pFrame =
NextFrame()) )
268 static_cast<SwFootnoteFrame*>(pFrame)->
ColLock();
272 static_cast<SwSectionFrame*>(pPrv)->LockJoin();
296 if( static_cast<SwSectionFrame*>(pFrame)->GetSection() &&
313 assert((!rpFrame || rpFrame->IsFlowFrame()) &&
314 "<SwNode2LayImpl::UpperFrame(..)> - expected sibling isn't a flow frame." );
318 pUpper =
new SwSectionFrame(const_cast<SwSectionNode*>(static_cast<const SwSectionNode*>(pNode))->GetSection(), rpFrame);
325 while ( pUpper->
Lower() &&
345 for( ; nStt < nEnd; ++nStt )
350 if( (pNd = rNds[nStt])->IsContentNode() )
351 for( std::vector<SwFrame*>::size_type
n = 0;
n <
mvUpperFrames.size(); )
355 static_cast<SwSectionFrame*>(pNxt)->UnlockJoin();
362 pNew->
Paste( pUp, pNxt );
366 for( std::vector<SwFrame*>::size_type
x = 0;
x <
mvUpperFrames.size(); )
370 static_cast<SwSectionFrame*>(pNxt)->UnlockJoin();
376 pNew =
static_cast<SwTableNode*
>(pNd)->MakeFrame( pUp );
378 pNew->
Paste( pUp, pNxt );
385 for( std::vector<SwFrame*>::size_type
x = 0;
x <
mvUpperFrames.size(); )
389 static_cast<SwSectionFrame*>(pNxt)->UnlockJoin();
399 for( std::vector<SwFrame*>::size_type
x = 0;
x <
mvUpperFrames.size(); ++
x )
403 static_cast<SwFootnoteFrame*>(pTmp)->ColUnlock();
419 std::pair<Point, bool> tmp;
422 tmp.first = *pDocPos;
442 m_pImpl->RestoreUpperFrames( rNds, nStt, nEnd );
452 return m_pImpl->UpperFrame( rpFrame, rNode );
465 return m_pImpl->GetFrame( pDocPos );
const SwEndNode * EndOfSectionNode() const
Base class of the Writer layout elements.
Base class that provides the general functionalities for frames that are allowed at page breaks (flow...
sal_uLong GetIndex() const
bool IsSectionNode() const
void RestoreUpperFrames(SwNodes &rNds, sal_uLong nStt, sal_uLong nEnd)
SwDoc & GetDoc()
Which Doc contains the nodes-array?
bool IsInFootnote() const
SwTabFrame is one table in the document layout, containing rows (which contain cells).
SwFrame * GetFrame(const Point *pDocPos) const
SwFrame * NextFrame()
Returns the next "useful" Frame.
virtual void Paste(SwFrame *pParent, SwFrame *pSibling=nullptr) override
SwSectionFormat * GetFormat()
static SwFlowFrame * CastFlowFrame(SwFrame *pFrame)
bool IsFootnoteFrame() const
SwTableFormat * GetFrameFormat()
SwTableNode * GetTableNode()
std::vector< SwFrame * > mvUpperFrames
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
sal_uLong GetIndex() const
const SwTable & GetTable() const
const SwFrame & GetFrame() const
virtual void Paste(SwFrame *pParent, SwFrame *pSibling=nullptr)=0
SwNode2Layout(const SwNode &rNd, sal_uLong nIdx)
Use this ctor for inserting before/after rNd.
bool IsContentNode() const
SwNode2LayImpl & operator=(const SwNode2LayImpl &)=delete
const SwFrame * GetLastLower() const
const SwStartNode * StartOfSectionNode() const
SwNode2LayoutSaveUpperFrames(const SwNode &rNd)
Use this ctor for collecting the UpperFrames.
const SwFrame * Lower() const
SwContentNode * GetContentNode()
SwLayoutFrame * UpperFrame(SwFrame *&rpFrame, const SwNode &rNode)
std::unique_ptr< SwIterator< SwFrame, sw::BroadcastingModify, sw::IteratorMode::UnwrapMulti > > mpIter
SwLayoutFrame * GetUpper()
std::unique_ptr< SwNode2LayImpl > m_pImpl
Marks a node in the document model.
SwNodes & GetNodes()
Node is in which nodes-array/doc?
SwLayoutFrame * UpperFrame(SwFrame *&rpFrame, const SwNode &rNode)
SwSectionFrame * FindSctFrame()
void RestoreUpperFrames(SwNodes &rNds, sal_uLong nStt, sal_uLong nEnd)
bool IsLayoutFrame() const
std::unique_ptr< SwNode2LayImpl > m_pImpl
sal_uLong EndOfSectionIndex() const
static SwNode * GoPreviousWithFrame(SwNodeIndex *pIdx)
The SwNode2LayImpl class does the actual work, the SwNode2Layout class is just the public interface...
sw::BroadcastingModify * mpMod
SwFrame * GetFrame(const Point *pDocPos) const
~SwNode2LayoutSaveUpperFrames()
static SwNode * GoNextWithFrame(const SwNodes &rNodes, SwNodeIndex *pIdx)
A layout frame is a frame that contains other frames (m_pLower), e.g. SwPageFrame or SwTabFrame...
SwNode2LayImpl(const SwNode2LayImpl &)=delete
const SwFlowFrame * GetFollow() const
Base class of the Writer document model elements.