LibreOffice Module sw (master) 1
Classes | Functions
flowfrm.hxx File Reference
#include "frame.hxx"
#include "layfrm.hxx"
#include <swtypes.hxx>
Include dependency graph for flowfrm.hxx:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  FlowFrameJoinLockGuard
 

Functions

class SAL_DLLPUBLIC_RTTI SAL_LOPLUGIN_ANNOTATE ("crosscast") SwFlowFrame
 Base class that provides the general functionalities for frames that are allowed at page breaks (flow) and shall continue on the next page (can be split), e.g. More...
 

Function Documentation

◆ SAL_LOPLUGIN_ANNOTATE()

class SAL_DLLPUBLIC_RTTI SAL_LOPLUGIN_ANNOTATE ( "crosscast"  )

Base class that provides the general functionalities for frames that are allowed at page breaks (flow) and shall continue on the next page (can be split), e.g.

paragraphs (ContentFrame) or tables (TabFrame).

Some parts of these functionalities are implemented in FlowFrame while the specific ones are done in the corresponding Frame classes. The FlowFrame has to be seen as a base class. As such it is no Frame by itself and thus no direct instances of FlowFrame can exist.

Actually it is not even a real Frame. The obvious implementation would be a FlowFrame that is virtually inherited from SwFrame and that works with its own member data. Further classes would need to inherit from FlowFrame and (via multiple base classes since the class tree splits exactly at the branch from SwFrame to SwContentFrame and SwLayoutFrame) also virtually from SwFrame as well. Unfortunately, this leads - besides problems with compilers and debugging programs - to high additional costs, that we IMHO are not able to afford nowadays.

Hence, we use another technique: A FlowFrame keeps a reference to a SwFrame

  • which it is actually itself - and they are friends. As a result, the FlowFrame can work with the reference to the SwFrame instead of working with its own this-pointer.

indicates that a backward move was done over multiple pages

Needed for the interaction of _GetPrevxxx and MoveBwd so that multiple pages can be skipped at the same time. In addition, it is evaluated by the MoveBwd() method in TabFrame.

helper method to determine previous frame for calculation of the upper space

#i11860#

Parameters
_pProposedPrevFrameoptional input parameter - pointer to frame, which should be used instead of the direct previous frame.

method to determine the upper space amount, which is considered for the previous frame

#i11860#

method to determine the upper space amount, which is considered for the page grid

#i11860#

method to determine overlapping of an object that requests floating

0: no overlapping 1: objects that are anchored at the FlowFrame overlap 2: objects that are anchored somewhere else overlap 3: both types of objects overlap

hook tree onto new parent with minimal operations and notifications

method to determine if a Keep needs to be considered (Breaks!)

method to determine the upper space hold by the frame

#i11860#

Parameters
_bConsiderGridoptional input parameter - consider the page grid while calculating?

method to determine the upper space amount, which is considered for the previous frame and the page grid, if option 'Use former object positioning' is OFF

#i11860#

calculation of lower space

calculation of the additional space to be considered, if flow frame is the last inside a table cell

#i26250

Parameters
_pAttrsoptional input parameter - border attributes of the flow frame. Used for optimization, if caller has already determined the border attributes.
Returns
SwTwips

Definition at line 59 of file flowfrm.hxx.

References CalcContent(), SwNode2LayImpl::GetFrame(), MakeFrames(), MoveFwd, PrepareLock(), PrepareUnlock(), TableSplitRecalcLock(), TableSplitRecalcUnlock(), and UnsetFollow().