LibreOffice Module sw (master)  1
Classes | Functions | Variables
frmtool.cxx File Reference
#include <svx/svdmodel.hxx>
#include <svx/svdpage.hxx>
#include <editeng/brushitem.hxx>
#include <editeng/shaditem.hxx>
#include <editeng/ulspitem.hxx>
#include <editeng/boxitem.hxx>
#include <editeng/lspcitem.hxx>
#include <sal/log.hxx>
#include <drawdoc.hxx>
#include <fmtornt.hxx>
#include <fmthdft.hxx>
#include <fmtfsize.hxx>
#include <fmtsrnd.hxx>
#include <docary.hxx>
#include <lineinfo.hxx>
#include <swmodule.hxx>
#include <pagefrm.hxx>
#include <colfrm.hxx>
#include <fesh.hxx>
#include <viewimp.hxx>
#include <viewopt.hxx>
#include <dflyobj.hxx>
#include <dcontact.hxx>
#include <frmatr.hxx>
#include <frmtool.hxx>
#include <tabfrm.hxx>
#include <rowfrm.hxx>
#include <ftnfrm.hxx>
#include <txtfrm.hxx>
#include <notxtfrm.hxx>
#include <flyfrms.hxx>
#include <layact.hxx>
#include <pagedesc.hxx>
#include <section.hxx>
#include <sectfrm.hxx>
#include <node2lay.hxx>
#include <ndole.hxx>
#include <hints.hxx>
#include "layhelp.hxx"
#include <laycache.hxx>
#include <rootfrm.hxx>
#include <paratr.hxx>
#include <redline.hxx>
#include <sortedobjs.hxx>
#include <objectformatter.hxx>
#include <calbck.hxx>
#include <ndtxt.hxx>
#include <DocumentSettingManager.hxx>
#include <IDocumentDrawModelAccess.hxx>
#include <IDocumentTimerAccess.hxx>
#include <IDocumentRedlineAccess.hxx>
#include <IDocumentFieldsAccess.hxx>
#include <IDocumentState.hxx>
#include <boost/circular_buffer.hpp>
#include <svx/sdr/attribute/sdrallfillattributeshelper.hxx>
Include dependency graph for frmtool.cxx:

Go to the source code of this file.

Classes

class  SwFrameHolder
 

Functions

static void lcl_InvalidatePosOfLowers (SwLayoutFrame &_rLayoutFrame)
 
void AppendObj (SwFrame *const pFrame, SwPageFrame *const pPage, SwFrameFormat *const pFormat, const SwFormatAnchor &rAnch)
 
static bool IsShown (sal_uLong const nIndex, const SwFormatAnchor &rAnch, std::vector< sw::Extent >::const_iterator const *const pIter, std::vector< sw::Extent >::const_iterator const *const pEnd)
 
void RemoveHiddenObjsOfNode (SwTextNode const &rNode, std::vector< sw::Extent >::const_iterator const *const pIter, std::vector< sw::Extent >::const_iterator const *const pEnd)
 
void AppendObjsOfNode (SwFrameFormats const *const pTable, sal_uLong const nIndex, SwFrame *const pFrame, SwPageFrame *const pPage, SwDoc *const pDoc, std::vector< sw::Extent >::const_iterator const *const pIter, std::vector< sw::Extent >::const_iterator const *const pEnd)
 
void AppendObjs (const SwFrameFormats *const pTable, sal_uLong const nIndex, SwFrame *const pFrame, SwPageFrame *const pPage, SwDoc *const pDoc)
 
bool IsAnchoredObjShown (SwTextFrame const &rFrame, SwFormatAnchor const &rAnchor)
 
void AppendAllObjs (const SwFrameFormats *pTable, const SwFrame *pSib)
 
static void lcl_SetPos (SwFrame &_rNewFrame, const SwLayoutFrame &_rLayFrame)
 local method to set 'working' position for newly inserted frames More...
 
void InsertCnt_ (SwLayoutFrame *pLay, SwDoc *pDoc, sal_uLong nIndex, bool bPages, sal_uLong nEndIndex, SwFrame *pPrv)
 
void MakeFrames (SwDoc *pDoc, const SwNodeIndex &rSttIdx, const SwNodeIndex &rEndIdx)
 
static bool lcl_hasTabFrame (const SwTextFrame *pTextFrame)
 Tries to detect if this paragraph has a floating table attached. More...
 
static bool CmpLines (const editeng::SvxBorderLine *pL1, const editeng::SvxBorderLine *pL2)
 
static SwModify const * GetCacheOwner (SwFrame const &rFrame)
 
static void lcl_RemoveObjsFromPage (SwFrame *_pFrame)
 Keep and restore the substructure of a layout frame for an action. More...
 
SwFrameSaveContent (SwLayoutFrame *pLay, SwFrame *pStart)
 
static void lcl_AddObjsToPage (SwFrame *_pFrame, SwPageFrame *_pPage)
 
void RestoreContent (SwFrame *pSav, SwLayoutFrame *pParent, SwFrame *pSibling)
 
SwPageFrameInsertNewPage (SwPageDesc &rDesc, SwFrame *pUpper, bool bOdd, bool bFirst, bool bInsertEmpty, bool bFootnote, SwFrame *pSibling)
 
static void lcl_Regist (SwPageFrame *pPage, const SwFrame *pAnch)
 
void RegistFlys (SwPageFrame *pPage, const SwLayoutFrame *pLay)
 
void Notify (SwFlyFrame *pFly, SwPageFrame *pOld, const SwRect &rOld, const SwRect *pOldPrt)
 Notify the background based on the difference between old and new rectangle. More...
 
static void lcl_CheckFlowBack (SwFrame *pFrame, const SwRect &rRect)
 
static void lcl_NotifyContent (const SdrObject *pThis, SwContentFrame *pCnt, const SwRect &rRect, const PrepareHint eHint)
 
void Notify_Background (const SdrObject *pObj, SwPageFrame *pPage, const SwRect &rRect, const PrepareHint eHint, const bool bInva)
 
const SwFrameGetVirtualUpper (const SwFrame *pFrame, const Point &rPos)
 Provides the Upper of an anchor in paragraph-bound objects. More...
 
bool Is_Lower_Of (const SwFrame *pCurrFrame, const SdrObject *pObj)
 
const SwFrameFindContext (const SwFrame *pFrame, SwFrameType nAdditionalContextType)
 provides the area of a frame in that no Fly from another area can overlap More...
 
bool IsFrameInSameContext (const SwFrame *pInnerFrame, const SwFrame *pFrame)
 
static SwTwips lcl_CalcCellRstHeight (SwLayoutFrame *pCell)
 
SwTwips CalcRowRstHeight (SwLayoutFrame *pRow)
 
const SwFrameFindPage (const SwRect &rRect, const SwFrame *pPage)
 
SwFrameGetFrameOfModify (SwRootFrame const *const pLayout, SwModify const &rMod, SwFrameType const nFrameType, SwPosition const *const pPos, std::pair< Point, bool > const *const pViewPosAndCalcFrame)
 
bool IsExtraData (const SwDoc *pDoc)
 
void GetSpacingValuesOfFrame (const SwFrame &rFrame, SwTwips &onLowerSpacing, SwTwips &onLineSpacing, bool &obIsLineSpacingProportional)
 method to determine the spacing values of a frame More...
 
const SwContentFrameGetCellContent (const SwLayoutFrame &rCell)
 get the content of the table cell, skipping content from nested tables More...
 

Variables

bool bObjsDirect = true
 
bool bDontCreateObjects = false
 
bool bSetCompletePaintOnInvalidate = false
 

Function Documentation

void AppendAllObjs ( const SwFrameFormats pTable,
const SwFrame pSib 
)
void AppendObj ( SwFrame *const  pFrame,
SwPageFrame *const  pPage,
SwFrameFormat *const  pFormat,
const SwFormatAnchor rAnch 
)
void AppendObjs ( const SwFrameFormats *const  pTable,
sal_uLong const  nIndex,
SwFrame *const  pFrame,
SwPageFrame *const  pPage,
SwDoc *const  pDoc 
)
void AppendObjsOfNode ( SwFrameFormats const *const  pTable,
sal_uLong const  nIndex,
SwFrame *const  pFrame,
SwPageFrame *const  pPage,
SwDoc *const  pDoc,
std::vector< sw::Extent >::const_iterator const *const  pIter,
std::vector< sw::Extent >::const_iterator const *const  pEnd 
)
SwTwips CalcRowRstHeight ( SwLayoutFrame pRow)
static bool CmpLines ( const editeng::SvxBorderLine pL1,
const editeng::SvxBorderLine pL2 
)
static

Definition at line 2186 of file frmtool.cxx.

Referenced by SwBorderAttrs::CmpLeftRight(), and SwBorderAttrs::JoinWithCmp().

const SwFrame* FindContext ( const SwFrame pFrame,
SwFrameType  nAdditionalContextType 
)
const SwFrame* FindPage ( const SwRect rRect,
const SwFrame pPage 
)
static SwModify const* GetCacheOwner ( SwFrame const &  rFrame)
static

Definition at line 2350 of file frmtool.cxx.

References GetNode(), SwFrame::IsContentFrame(), and SwFrame::IsTextFrame().

const SwContentFrame* GetCellContent ( const SwLayoutFrame rCell)

get the content of the table cell, skipping content from nested tables

method to get the content of the table cell

Definition at line 3637 of file frmtool.cxx.

References SwLayoutFrame::ContainsContent(), SwTabFrame::FindLastContent(), SwFrame::FindNextCnt(), SwFrame::FindTabFrame(), and SwLayoutFrame::IsAnLower().

Referenced by SwDoc::GetTabRows(), SwFEShell::SelTableRowCol(), and SwDoc::SetTabRows().

SwFrame* GetFrameOfModify ( SwRootFrame const *const  pLayout,
SwModify const &  rMod,
SwFrameType const  nFrameType,
SwPosition const *const  pPos,
std::pair< Point, bool > const *const  pViewPosAndCalcFrame 
)
void GetSpacingValuesOfFrame ( const SwFrame rFrame,
SwTwips onLowerSpacing,
SwTwips onLineSpacing,
bool &  obIsLineSpacingProportional 
)

method to determine the spacing values of a frame

OD 2004-03-10 #i28701# OD 2009-08-28 #i102458# Add output parameter <obIsLineSpacingProportional>

Definition at line 3606 of file frmtool.cxx.

References SwFrame::GetAttrSet(), SvxULSpaceItem::GetLower(), SwAttrSet::GetULSpace(), SwFrame::IsFlowFrame(), and SwFrame::IsTextFrame().

Referenced by SwFlowFrame::CalcUpperSpace(), and SwFlowFrame::GetUpperSpaceAmountConsideredForPrevFrame().

const SwFrame* GetVirtualUpper ( const SwFrame pFrame,
const Point rPos 
)

Provides the Upper of an anchor in paragraph-bound objects.

If the latter is a chained border or a footnote, the "virtual" Upper might be returne.

Definition at line 3247 of file frmtool.cxx.

References SwFrame::FindFlyFrame(), SwFootnoteFrame::GetFollow(), SwFrameAreaDefinition::getFrameArea(), SwFlyFrame::GetNextLink(), SwFrame::GetUpper(), SwFrame::IsFootnoteFrame(), SwRect::IsInside(), and SwFrame::IsTextFrame().

Referenced by SwTextFly::GetTop(), Is_Lower_Of(), and IsFrameInSameContext().

void InsertCnt_ ( SwLayoutFrame pLay,
SwDoc pDoc,
sal_uLong  nIndex,
bool  bPages,
sal_uLong  nEndIndex,
SwFrame pPrv 
)

Definition at line 1322 of file frmtool.cxx.

References AppendAllObjs(), AppendObjs(), bDontCreateObjects, IDocumentTimerAccess::BlockIdling(), bObjsDirect, SwSection::CalcHiddenFlag(), SwFrame::CheckDirChange(), SwLayoutCache::ClearImpl(), SwLayoutCache::CompareLayout(), SwLayoutFrame::ContainsContent(), SwSectionFrame::DelEmpty(), Delete, SwFrame::DestroyFrame(), SwFrameFormats::empty(), SwNode::EndOfSectionIndex(), SwFrame::FindFlyFrame(), SwTabFrame::FindMaster(), SwFrame::FindNextCnt(), SwFrame::FindPageFrame(), SwFrame::FindPrevCnt(), SwFrame::FindSctFrame(), SwTable::GCLines(), SwRootFrame::GetCurrShell(), SwSectionFrame::GetFollow(), SwDoc::getIDocumentFieldsAccess(), SwDoc::getIDocumentRedlineAccess(), SwDoc::getIDocumentTimerAccess(), SwDoc::GetLayoutCache(), SwContentNode::getLayoutFrame(), SwFrame::GetNextLayoutLeaf(), SwNode::GetNodes(), SwDoc::GetNodes(), SwFrame::GetPrev(), IDocumentRedlineAccess::GetRedline(), SwNode::GetRedlineMergeFlag(), SwFrame::getRootFrame(), SwSectionNode::GetSection(), SwDoc::GetSpzFrameFormats(), SwTableNode::GetTable(), SwFrame::GetUpper(), SwNode::Hidden, SwFrame::ImplFindFootnoteFrame(), Init(), SwFrame::InsertBehind(), SwViewShell::InvalidateAccessibleParaFlowRelation(), SwPageFrame::InvalidateContent(), SwPageFrame::InvalidateFlyContent(), SwFrame::InvalidateInfFlags(), SwFrame::InvalidatePage(), SwFrame::InvalidateSize(), SwRootFrame::IsCallbackActionEnabled(), SwFrame::IsColLocked(), SwFrame::IsColumnFrame(), SwNode::IsContentNode(), SwNode::IsCreateFrameWhenHidingRedlines(), SwNode::IsEndNode(), SwFlowFrame::IsFollow(), SwRootFrame::IsHideRedlines(), SwFrame::IsInFly(), SwFrame::IsInFootnote(), SwFrame::IsInSct(), SwFrame::IsInTab(), SwFrame::IsLayoutFrame(), SwFrame::IsSctFrame(), SwNode::IsSectionNode(), SwNode::IsStartNode(), SwNode::IsTableNode(), SwFrame::IsTextFrame(), SwNode::IsTextNode(), lcl_SetPos(), SwLayoutFrame::Lower(), SwTableFormulaUpdate::m_eFlags, SwContentNode::MakeFrame(), SwTableNode::MakeFrame(), SwSectionNode::MakeFrame(), SwNode::NonFirst, PREP_QUOVADIS, SwFrame::Prepare(), SwFrame::RemoveFromLayout(), SAL_WARN, SwRootFrame::SetCallbackActionEnabled(), SwFlowFrame::SetFollow(), SwNode::StartOfSectionNode(), SwFlyStartNode, TBL_BOXPTR, IDocumentTimerAccess::UnblockIdling(), and IDocumentFieldsAccess::UpdateTableFields().

Referenced by SwFootnoteBossFrame::AppendFootnote(), SwTextFrame::ConnectFootnote(), SwRootFrame::Init(), SwFlyFrame::InsertCnt(), MakeFrames(), SwNode2LayImpl::RestoreUpperFrames(), SwCellFrame::SwCellFrame(), SwHeadFootFrame::SwHeadFootFrame(), and SwFlyFrame::UnchainFrames().

SwPageFrame* InsertNewPage ( SwPageDesc rDesc,
SwFrame pUpper,
bool  bOdd,
bool  bFirst,
bool  bInsertEmpty,
bool  bFootnote,
SwFrame pSibling 
)
bool Is_Lower_Of ( const SwFrame pCurrFrame,
const SdrObject pObj 
)
bool IsAnchoredObjShown ( SwTextFrame const &  rFrame,
SwFormatAnchor const &  rAnchor 
)
bool IsExtraData ( const SwDoc pDoc)
bool IsFrameInSameContext ( const SwFrame pInnerFrame,
const SwFrame pFrame 
)
static bool IsShown ( sal_uLong const  nIndex,
const SwFormatAnchor rAnch,
std::vector< sw::Extent >::const_iterator const *const  pIter,
std::vector< sw::Extent >::const_iterator const *const  pEnd 
)
static
static void lcl_AddObjsToPage ( SwFrame _pFrame,
SwPageFrame _pPage 
)
static
static SwTwips lcl_CalcCellRstHeight ( SwLayoutFrame pCell)
static
static void lcl_CheckFlowBack ( SwFrame pFrame,
const SwRect rRect 
)
static
static bool lcl_hasTabFrame ( const SwTextFrame pTextFrame)
static

Tries to detect if this paragraph has a floating table attached.

Definition at line 2071 of file frmtool.cxx.

References SwFrame::GetDrawObjs(), SwFrame::IsTabFrame(), SwLayoutFrame::Lower(), and SwSortedObjs::size().

Referenced by SwBorderAttrs::CalcLeft().

static void lcl_InvalidatePosOfLowers ( SwLayoutFrame _rLayoutFrame)
static
static void lcl_NotifyContent ( const SdrObject pThis,
SwContentFrame pCnt,
const SwRect rRect,
const PrepareHint  eHint 
)
static
static void lcl_Regist ( SwPageFrame pPage,
const SwFrame pAnch 
)
static
static void lcl_RemoveObjsFromPage ( SwFrame _pFrame)
static

Keep and restore the substructure of a layout frame for an action.

Definition at line 2503 of file frmtool.cxx.

References SwLayoutFrame::ContainsContent(), SwFrame::GetDrawObjs(), SwContentFrame::GetNextContentFrame(), SwAnchoredObject::GetPageFrame(), SwFlyFrame::IsFlyFreeFrame(), and SwPageFrame::RemoveFlyFromPage().

Referenced by SaveContent().

static void lcl_SetPos ( SwFrame _rNewFrame,
const SwLayoutFrame _rLayFrame 
)
static

local method to set 'working' position for newly inserted frames

OD 12.08.2003 #i17969#

Definition at line 1303 of file frmtool.cxx.

References SwFrameAreaDefinition::getFrameArea(), SwRectFnSet::GetPos(), SwRectFnSet::IsVert(), SwRect::Pos(), and SwRectFnSet::SetPos().

Referenced by InsertCnt_().

void MakeFrames ( SwDoc pDoc,
const SwNodeIndex rSttIdx,
const SwNodeIndex rEndIdx 
)
void Notify ( SwFlyFrame pFly,
SwPageFrame pOld,
const SwRect rOld,
const SwRect pOldPrt = nullptr 
)
void Notify_Background ( const SdrObject pObj,
SwPageFrame pPage,
const SwRect rRect,
const PrepareHint  eHint,
const bool  bInva 
)

Definition at line 3069 of file frmtool.cxx.

References SwAnchoredObject::AnchorFrame(), SwRect::Bottom(), SwLayoutFrame::ContainsContent(), FAR_AWAY, SwFrame::FindFlyFrame(), SwFrame::FindFooterOrHeader(), SwFrame::FindTabFrame(), SwContact::GetAnchoredObj(), SwAnchoredObject::GetAnchorFrame(), SwRootFrame::GetCurrShell(), SwLayoutFrame::GetFormat(), SwFlyFrame::GetFormat(), SwFrameAreaDefinition::getFrameArea(), SwFormatHoriOrient::GetHoriOrient(), SwFormat::GetHoriOrient(), SdrObject::GetLastBoundRect(), SwContentFrame::GetNextContentFrame(), SdrObject::GetOrdNum(), SdrObject::GetOrdNumDirect(), SwFrame::GetPrev(), SwFormatHoriOrient::GetRelationOrient(), SwFrame::getRootFrame(), SwPageFrame::GetSortedObjs(), SwFormatSurround::GetSurround(), SwFormat::GetSurround(), SwFrame::GetUpper(), GetUserCall(), SwFormatVertOrient::GetVertOrient(), SwFormat::GetVertOrient(), SwFlyFrame::GetVirtDrawObj(), SwFrame::InvalidatePos(), SwFrame::InvalidatePrt(), SwFrame::InvalidateSize(), SwViewShell::InvalidateWindows(), SwLayoutFrame::IsAnLower(), SwFlyFrame::IsAutoPos(), SwFrame::IsCellFrame(), SwFrame::IsColumnFrame(), SwFlyFrame::IsFlyAtContentFrame(), SwFlyFrame::IsFlyLayFrame(), SwFlowFrame::IsFollow(), SwFrame::IsInFly(), SwFrame::IsInTab(), SwFlyFrame::IsLowerOf(), SwRect::IsOver(), lcl_CheckFlowBack(), lcl_NotifyContent(), SwRect::Left(), SwLayoutFrame::Lower(), sw::sidebar::NONE, PREP_FLY_ARRIVE, PREP_FLY_LEAVE, SwRect::Right(), and SwRect::Top().

Referenced by lcl_NotifyBackgroundOfObj(), SwContact::MoveObjToInvisibleLayer(), SwContact::MoveObjToVisibleLayer(), SwDrawContact::NotifyBackgrdOfAllVirtObjs(), SwFlyFreeFrame::NotifyBackground(), SwAnchoredDrawObject::NotifyBackground(), and SwFlyAtContentFrame::SetAbsPos().

void RegistFlys ( SwPageFrame pPage,
const SwLayoutFrame pLay 
)
void RemoveHiddenObjsOfNode ( SwTextNode const &  rNode,
std::vector< sw::Extent >::const_iterator const *const  pIter,
std::vector< sw::Extent >::const_iterator const *const  pEnd 
)
void RestoreContent ( SwFrame pSav,
SwLayoutFrame pParent,
SwFrame pSibling 
)
SwFrame* SaveContent ( SwLayoutFrame pLay,
SwFrame pStart = nullptr 
)

Variable Documentation

bool bDontCreateObjects = false
bool bObjsDirect = true

Definition at line 79 of file frmtool.cxx.

Referenced by InsertCnt_(), MakeFrames(), and SwHeadFootFrame::SwHeadFootFrame().

bool bSetCompletePaintOnInvalidate = false

Definition at line 81 of file frmtool.cxx.

Referenced by SwFlyAtContentFrame::MakeAll(), and SwContentNotify::~SwContentNotify().