LibreOffice Module sw (master)  1
frame.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #ifndef INCLUDED_SW_SOURCE_CORE_INC_FRAME_HXX
21 #define INCLUDED_SW_SOURCE_CORE_INC_FRAME_HXX
22 
24 #include <editeng/borderline.hxx>
25 #include <svl/poolitem.hxx>
26 #include <swtypes.hxx>
27 #include <swrect.hxx>
28 #include <calbck.hxx>
29 #include <svl/SfxBroadcaster.hxx>
30 #include <o3tl/typed_flags_set.hxx>
31 #include <com/sun/star/style/TabStop.hpp>
33 #include <vcl/outdev.hxx>
34 
35 #include <memory>
36 #include <optional>
37 
38 namespace drawinglayer::processor2d { class BaseProcessor2D; }
39 
40 class SwLayoutFrame;
41 class SwRootFrame;
42 class SwPageFrame;
43 class SwBodyFrame;
44 class SwFlyFrame;
45 class SwSectionFrame;
46 class SwFootnoteFrame;
48 class SwTabFrame;
49 class SwRowFrame;
50 class SwContentFrame;
51 class SwAttrSet;
52 class Color;
53 class SwBorderAttrs;
54 class SwCache;
55 class SvxBrushItem;
56 class SvxFormatBreakItem;
57 class SwFormatPageDesc;
58 class SwSelectionList;
59 struct SwPosition;
60 struct SwCursorMoveState;
61 class SwFormat;
62 class SwPrintData;
63 class SwSortedObjs;
64 class SwAnchoredObject;
65 enum class SvxFrameDirection;
67 class SwTextFrame;
68 
69 // Each FrameType is represented here as a bit.
70 // The bits must be set in a way that it can be determined with masking of
71 // which kind of FrameType an instance is _and_ from what classes it was derived.
72 // Each frame has in its base class a member that must be set by the
73 // constructors accordingly.
74 enum class SwFrameType
75 {
76  None = 0x0000,
77  Root = 0x0001,
78  Page = 0x0002,
79  Column = 0x0004,
80  Header = 0x0008,
81  Footer = 0x0010,
82  FtnCont = 0x0020,
83  Ftn = 0x0040,
84  Body = 0x0080,
85  Fly = 0x0100,
86  Section = 0x0200,
87 // UNUSED 0x0400
88  Tab = 0x0800,
89  Row = 0x1000,
90  Cell = 0x2000,
91  Txt = 0x4000,
92  NoTxt = 0x8000,
93 };
94 
95 namespace o3tl
96 {
97  template<> struct typed_flags<SwFrameType> : is_typed_flags<SwFrameType, 0xfbff> {};
98 };
99 
100 // for internal use some common combinations
101 #define FRM_LAYOUT SwFrameType(0x3bFF)
102 #define FRM_ALL SwFrameType(0xfbff)
103 #define FRM_CNTNT (SwFrameType::Txt | SwFrameType::NoTxt)
104 #define FRM_FTNBOSS (SwFrameType::Page | SwFrameType::Column)
105 #define FRM_ACCESSIBLE (SwFrameType::Root | SwFrameType::Page | SwFrameType::Header | SwFrameType::Footer | SwFrameType::Ftn | SwFrameType::Fly | SwFrameType::Tab | SwFrameType::Cell | SwFrameType::Txt)
106 #define FRM_NEIGHBOUR (SwFrameType::Column | SwFrameType::Cell)
107 #define FRM_NOTE_VERT (SwFrameType::FtnCont | SwFrameType::Ftn | SwFrameType::Section | SwFrameType::Tab | SwFrameType::Row | SwFrameType::Cell | SwFrameType::Txt)
108 #define FRM_HEADFOOT (SwFrameType::Header | SwFrameType::Footer)
109 #define FRM_BODYFTNC (SwFrameType::FtnCont | SwFrameType::Body)
110 
111 // for GetNextLeaf/GetPrevLeaf.
113 {
114  MAKEPAGE_NONE, // do not create page/footnote
115  MAKEPAGE_APPEND, // only append page if needed
116  MAKEPAGE_INSERT, // add or append page if needed
117  MAKEPAGE_FTN, // add footnote if needed
118  MAKEPAGE_NOSECTION // Don't create section frames
119 };
120 
121 namespace drawinglayer::attribute {
123  typedef std::shared_ptr< SdrAllFillAttributesHelper > SdrAllFillAttributesHelperPtr;
124 }
125 
132 class SAL_DLLPUBLIC_RTTI SwFrameAreaDefinition
133 {
134 private:
136 
137  // The absolute position and size of the SwFrame in the document.
138  // This values are set by the layouter implementations
140 
141  // The 'inner' Frame Area defined by a SwRect relative to FrameArea:
142  // When identical to FrameArea, Pos() will be (0, 0) and Size identical.
144 
145  // bitfield
146  bool mbFrameAreaPositionValid : 1;
147  bool mbFrameAreaSizeValid : 1;
148  bool mbFramePrintAreaValid : 1;
149 
150  // #i65250#
151  // frame ID is now in general available - used for layout loop control
152  static sal_uInt32 snLastFrameId;
153  const sal_uInt32 mnFrameId;
154 
155 protected:
156  // write access to mb*Valid flags
157  void setFrameAreaPositionValid(bool bNew);
158  void setFrameAreaSizeValid(bool bNew);
159  void setFramePrintAreaValid(bool bNew);
160 
161 public:
163  virtual ~SwFrameAreaDefinition();
164 
165  // read access to mb*Valid flags
166  bool isFrameAreaPositionValid() const { return mbFrameAreaPositionValid; }
167  bool isFrameAreaSizeValid() const { return mbFrameAreaSizeValid; }
168  bool isFramePrintAreaValid() const { return mbFramePrintAreaValid; }
169 
170  // syntactic sugar: test whole FrameAreaDefinition
171  bool isFrameAreaDefinitionValid() const { return isFrameAreaPositionValid() && isFrameAreaSizeValid() && isFramePrintAreaValid(); }
172 
173  // #i65250#
174  sal_uInt32 GetFrameId() const { return mnFrameId; }
175 
176  // read accesses to FrameArea definitions - only const access allowed.
177  // Do *not* const_cast results, it is necessary to track changes. use
178  // the below offered WriteAccess helper classes instead
179  const SwRect& getFrameArea() const { return maFrameArea; }
180  const SwRect& getFramePrintArea() const { return maFramePrintArea; }
181 
182  // helper class(es) for FrameArea manipulation. These
183  // have to be used to apply changes to FrameAreas. They hold a copy of the
184  // SwRect for manipulation. It gets written back at destruction. Thus, this
185  // mechanism depends on scope usage, take care. It prevents errors using
186  // different instances of SwFrame in get/set methods which is more safe
188  {
189  private:
191 
193  FrameAreaWriteAccess& operator=(const FrameAreaWriteAccess&) = delete;
194 
195  public:
196  FrameAreaWriteAccess(SwFrameAreaDefinition& rTarget) : SwRect(rTarget.getFrameArea()), mrTarget(rTarget) {}
198  void setSwRect(const SwRect& rNew) { *reinterpret_cast< SwRect* >(this) = rNew; }
199  };
200 
201  // same helper for FramePrintArea
203  {
204  private:
206 
208  FramePrintAreaWriteAccess& operator=(const FramePrintAreaWriteAccess&) = delete;
209 
210  public:
211  FramePrintAreaWriteAccess(SwFrameAreaDefinition& rTarget) : SwRect(rTarget.getFramePrintArea()), mrTarget(rTarget) {}
213  void setSwRect(const SwRect& rNew) { *reinterpret_cast< SwRect* >(this) = rNew; }
214  };
215 
216  // RotateFlyFrame3 - Support for Transformations
217  // Hand out the Transformations for the current FrameAreaDefinition
218  // for the FrameArea and FramePrintArea.
219  // FramePrintArea is not relative to FrameArea in this
220  // transformation representation (to make it easier to use and understand).
221  // There is no 'set' method since SwFrame is a layout object. For
222  // some cases rotation will be included (used for SwGrfNode in inner
223  // SwFrame of a SwFlyFrame)
224  virtual basegfx::B2DHomMatrix getFrameAreaTransformation() const;
225  virtual basegfx::B2DHomMatrix getFramePrintAreaTransformation() const;
226 
227  // RotateFlyFrame3 - Support for Transformations
228  // Modify current transformations by applying given translation
229  virtual void transform_translate(const Point& rOffset);
230 };
231 
236 {
237 private:
238  // The SwFrameAreaDefinition to work on
240 
241  // FrameAreaTransformation and FramePrintAreaTransformation
242  // !identity when needed (translate/scale is used (e.g. rotation))
245 
246 public:
248  : mrSwFrameAreaDefinition(rSwFrameAreaDefinition),
249  maFrameAreaTransformation(),
250  maFramePrintAreaTransformation()
251  {
252  }
253 
254  // get SwFrameArea in transformation form
256  {
258  }
259 
260  // get SwFramePrintArea in transformation form
262  {
264  }
265 
266  // Helpers to re-create the untransformed SwRect(s) originally
267  // in the SwFrameAreaDefinition, based on the current Transformations.
270 
271  // Helper method to re-create FrameAreaTransformations based on the
272  // current FrameAreaDefinition transformed by given rotation and Center
274  double fRotation,
275  const basegfx::B2DPoint& rCenter);
276 
277  // Tooling method to reset the SwRect(s) in the current
278  // SwFrameAreaDefinition which are already adapted to
279  // Transformation back to the untransformed state, using
280  // the getUntransformedFrame*Area calls above when needed.
281  // Only the SwRect(s) are changed back, not the transformations.
282  void restoreFrameAreas();
283 
284  // Re-Creates the SwRect(s) as BoundAreas based on the current
285  // set Transformations.
287 
288  // Modify current definitions by applying the given transformation
289  void transform(const basegfx::B2DHomMatrix& aTransform);
290 };
291 
293 {
294  NONE = 0x00,
295  InvalidatePrt = 0x01,
296  InvalidateSize = 0x02,
297  InvalidatePos = 0x04,
298  SetCompletePaint = 0x08,
299  NextInvalidatePos = 0x10,
300  NextSetCompletePaint = 0x20,
301 };
302 
303 namespace o3tl {
304  template<> struct typed_flags<SwFrameInvFlags> : is_typed_flags<SwFrameInvFlags, 0x003f> {};
305 }
306 
315 {
316  // the hidden Frame
317  friend class SwFlowFrame;
318  friend class SwLayoutFrame;
319  friend class SwLooping;
320  friend class SwDeletionChecker; // for GetDep()
321 
322  // voids lower during creation of a column
323  friend SwFrame *SaveContent( SwLayoutFrame *, SwFrame* pStart );
324  friend void RestoreContent( SwFrame *, SwLayoutFrame *, SwFrame *pSibling );
325 
326  // for validating a mistakenly invalidated one in SwContentFrame::MakeAll
327  friend void ValidateSz( SwFrame *pFrame );
328  // implemented in text/txtftn.cxx, prevents Footnote oscillation
329  friend void ValidateText( SwFrame *pFrame );
330 
331  friend void MakeNxt( SwFrame *pFrame, SwFrame *pNxt );
332 
333  // cache for (border) attributes
334  static SwCache *spCache;
335 
340 
341  // sw_redlinehide: hide these dangerous SwClient functions
344 
345  SwFrame *FindNext_();
346  SwFrame *FindPrev_();
347 
375  SwContentFrame* FindNextCnt_( const bool _bInSameFootnote );
376 
402  SwContentFrame* FindPrevCnt_();
403 
404  void UpdateAttrFrame( const SfxPoolItem*, const SfxPoolItem*, SwFrameInvFlags & );
405  SwFrame* GetIndNext_();
406  void SetDirFlags( bool bVert );
407 
408  const SwLayoutFrame* ImplGetNextLayoutLeaf( bool bFwd ) const;
409 
410  SwPageFrame* ImplFindPageFrame();
411 
412 protected:
413  std::unique_ptr<SwSortedObjs> m_pDrawObjs; // draw objects, can be null
415 
416  bool mbInDtor : 1;
417  bool mbInvalidR2L : 1;
418  bool mbDerivedR2L : 1;
419  bool mbRightToLeft : 1;
420  bool mbInvalidVert : 1;
421  bool mbDerivedVert : 1;
422  bool mbVertical : 1;
423 
424  bool mbVertLR : 1;
425  bool mbVertLRBT : 1;
426 
427  bool mbValidLineNum : 1;
428  bool mbFixSize : 1;
429 
430  // if true, frame will be painted completely even content was changed
431  // only partially. For ContentFrames a border (from Action) will exclusively
432  // painted if <mbCompletePaint> is true.
433  bool mbCompletePaint : 1;
434 
435  bool mbRetouche : 1; // frame is responsible for retouching
436 
437  bool mbInfInvalid : 1; // InfoFlags are invalid
438  bool mbInfBody : 1; // Frame is in document body
439  bool mbInfTab : 1; // Frame is in a table
440  bool mbInfFly : 1; // Frame is in a Fly
441  bool mbInfFootnote : 1; // Frame is in a footnote
442  bool mbInfSct : 1; // Frame is in a section
443  bool mbColLocked : 1; // lock Grow/Shrink for column-wise section
444  // or fly frames, will be set in Format
445  bool m_isInDestroy : 1;
447 
448  void ColLock() { mbColLocked = true; }
449  void ColUnlock() { mbColLocked = false; }
450 
451  virtual void DestroyImpl();
452  virtual ~SwFrame() override;
453 
454  // Only used by SwRootFrame Ctor to get 'this' into mpRoot...
455  void setRootFrame( SwRootFrame* pRoot ) { mpRoot = pRoot; }
456 
457  SwPageFrame *InsertPage( SwPageFrame *pSibling, bool bFootnote );
458  void PrepareMake(vcl::RenderContext* pRenderContext);
459  void OptPrepareMake();
460  virtual void MakePos();
461  // Format next frame of table frame to assure keeping attributes.
462  // In case of nested tables method <SwFrame::MakeAll()> is called to
463  // avoid formatting of superior table frame.
464  friend SwFrame* sw_FormatNextContentForKeep( SwTabFrame* pTabFrame );
465 
466  virtual void MakeAll(vcl::RenderContext* pRenderContext) = 0;
467  // adjust frames of a page
468  SwTwips AdjustNeighbourhood( SwTwips nDiff, bool bTst = false );
469 
470  // change only frame size not the size of PrtArea
471  virtual SwTwips ShrinkFrame( SwTwips, bool bTst = false, bool bInfo = false ) = 0;
472  virtual SwTwips GrowFrame ( SwTwips, bool bTst = false, bool bInfo = false ) = 0;
473 
477  { return static_cast<sw::BroadcastingModify*>(GetRegisteredInNonConst()); }
479  { return static_cast<const sw::BroadcastingModify*>(GetRegisteredIn()); }
480 
482 
483  void CheckDir( SvxFrameDirection nDir, bool bVert, bool bOnlyBiDi, bool bBrowse );
484 
489  {
490  INVALID_SIZE, INVALID_PRTAREA, INVALID_POS, INVALID_LINENUM, INVALID_ALL
491  };
492 
496  virtual bool InvalidationAllowed( const InvalidationType _nInvalid ) const;
497 
504  virtual void ActionOnInvalidation( const InvalidationType _nInvalid );
505 
506  // draw shadow and borders
507  void PaintShadow( const SwRect&, SwRect&, const SwBorderAttrs& ) const;
508  virtual void SwClientNotify(const SwModify&, const SfxHint&) override;
509 
510  virtual const IDocumentDrawModelAccess& getIDocumentDrawModelAccess( );
511 
512 public:
513  virtual css::uno::Sequence< css::style::TabStop > GetTabStopInfo( SwTwips )
514  {
515  return css::uno::Sequence< css::style::TabStop >();
516  }
517 
518 
519  SwFrameType GetType() const { return mnFrameType; }
520 
521  static SwCache &GetCache() { return *spCache; }
522  static SwCache *GetCachePtr() { return spCache; }
523  static void SetCache( SwCache *pNew ) { spCache = pNew; }
524 
525  // change PrtArea size and FrameSize
526  SwTwips Shrink( SwTwips, bool bTst = false, bool bInfo = false );
527  SwTwips Grow ( SwTwips, bool bTst = false, bool bInfo = false );
528 
529  // different methods for inserting in layout tree (for performance reasons)
530 
531  // insert before pBehind or at the end of the chain below mpUpper
532  void InsertBefore( SwLayoutFrame* pParent, SwFrame* pBehind );
533  // insert after pBefore or at the beginning of the chain below mpUpper
534  void InsertBehind( SwLayoutFrame *pParent, SwFrame *pBefore );
535  // insert before pBehind or at the end of the chain while considering
536  // the siblings of pSct
537  bool InsertGroupBefore( SwFrame* pParent, SwFrame* pWhere, SwFrame* pSct );
538  void RemoveFromLayout();
539 
540  // For internal use only - who ignores this will be put in a sack and has
541  // to stay there for two days
542  // Does special treatment for Get_[Next|Prev]Leaf() (for tables).
543  SwLayoutFrame *GetLeaf( MakePageType eMakePage, bool bFwd );
544  SwLayoutFrame *GetNextLeaf ( MakePageType eMakePage );
545  SwLayoutFrame *GetNextFootnoteLeaf( MakePageType eMakePage );
546  SwLayoutFrame *GetNextSctLeaf( MakePageType eMakePage );
547  SwLayoutFrame *GetNextCellLeaf();
548  SwLayoutFrame *GetPrevLeaf ();
549  SwLayoutFrame *GetPrevFootnoteLeaf( MakePageType eMakeFootnote );
550  SwLayoutFrame *GetPrevSctLeaf();
551  SwLayoutFrame *GetPrevCellLeaf();
552  const SwLayoutFrame *GetLeaf ( MakePageType eMakePage, bool bFwd,
553  const SwFrame *pAnch ) const;
554 
555  bool WrongPageDesc( SwPageFrame* pNew );
556 
557  //#i28701# - new methods to append/remove drawing objects
558  void AppendDrawObj( SwAnchoredObject& _rNewObj );
559  void RemoveDrawObj( SwAnchoredObject& _rToRemoveObj );
560 
561  // work with chain of FlyFrames
562  void AppendFly( SwFlyFrame *pNew );
563  void RemoveFly( SwFlyFrame *pToRemove );
564  const SwSortedObjs *GetDrawObjs() const { return m_pDrawObjs.get(); }
565  SwSortedObjs *GetDrawObjs() { return m_pDrawObjs.get(); }
566  void SetDrawObjsAsDeleted( bool bDeleted ); // change tracking of objects anchored to character
567  // #i28701# - change purpose of method and adjust its name
568  void InvalidateObjs( const bool _bNoInvaOfAsCharAnchoredObjs = true );
569 
570  virtual void PaintSwFrameShadowAndBorder(
571  const SwRect&,
572  const SwPageFrame* pPage,
573  const SwBorderAttrs&) const;
574  void PaintBaBo( const SwRect&, const SwPageFrame *pPage,
575  const bool bOnlyTextBackground = false) const;
576  void PaintSwFrameBackground( const SwRect&, const SwPageFrame *pPage,
577  const SwBorderAttrs &,
578  const bool bLowerMode = false,
579  const bool bLowerBorder = false,
580  const bool bOnlyTextBackground = false ) const;
581  void PaintBorderLine( const SwRect&, const SwRect&, const SwPageFrame*,
582  const Color *pColor,
583  const SvxBorderLineStyle = SvxBorderLineStyle::SOLID ) const;
584 
585  std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> CreateProcessor2D( ) const;
586  void ProcessPrimitives( const drawinglayer::primitive2d::Primitive2DContainer& rSequence ) const;
587 
588  // retouch, not in the area of the given Rect!
589  void Retouch( const SwPageFrame *pPage, const SwRect &rRect ) const;
590 
591  bool GetBackgroundBrush(
593  const SvxBrushItem*& rpBrush,
594  std::optional<Color>& rxColor,
595  SwRect &rOrigRect,
596  bool bLowerMode,
597  bool bConsiderTextBox ) const;
598 
599  inline void SetCompletePaint() const;
600  inline void ResetCompletePaint() const;
601  bool IsCompletePaint() const { return mbCompletePaint; }
602 
603  inline void SetRetouche() const;
604  inline void ResetRetouche() const;
605  bool IsRetouche() const { return mbRetouche; }
606 
607  void SetInfFlags();
608  void InvalidateInfFlags() { mbInfInvalid = true; }
609  inline bool IsInDocBody() const; // use InfoFlags, determine flags
610  inline bool IsInFootnote() const; // if necessary
611  inline bool IsInTab() const;
612  inline bool IsInFly() const;
613  inline bool IsInSct() const;
614 
615  // If frame is inside a split table row, this function returns
616  // the corresponding row frame in the follow table.
617  const SwRowFrame* IsInSplitTableRow() const;
618 
619  // If frame is inside a follow flow row, this function returns
620  // the corresponding row frame master table
621  const SwRowFrame* IsInFollowFlowRow() const;
622 
623  bool IsInBalancedSection() const;
624 
625  inline bool IsVertical() const;
626  inline bool IsVertLR() const;
627  inline bool IsVertLRBT() const;
628 
629  void SetDerivedVert( bool bNew ){ mbDerivedVert = bNew; }
630  void SetInvalidVert( bool bNew) { mbInvalidVert = bNew; }
631  inline bool IsRightToLeft() const;
632  void SetDerivedR2L( bool bNew ) { mbDerivedR2L = bNew; }
633 
634  void CheckDirChange();
635  // returns upper left frame position for LTR and
636  // upper right frame position for Asian / RTL frames
637  Point GetFrameAnchorPos( bool bIgnoreFlysAnchoredAtThisFrame ) const;
638 
652  bool IsMoveable( const SwLayoutFrame* _pLayoutFrame = nullptr ) const;
653 
654  // Is it permitted for the (Text)Frame to add a footnote in the current
655  // environment (not e.g. for repeating table headlines)
656  bool IsFootnoteAllowed() const;
657 
658  virtual void Format( vcl::RenderContext* pRenderContext, const SwBorderAttrs *pAttrs = nullptr );
659 
660  virtual void CheckDirection( bool bVert );
661 
662  void ReinitializeFrameSizeAttrFlags();
663 
666  const SwAttrSet *GetAttrSet() const;
667  virtual const SvxFormatBreakItem& GetBreakItem() const;
668  virtual const SwFormatPageDesc& GetPageDescItem() const;
669 
670  bool HasFixSize() const { return mbFixSize; }
671 
672  // check all pages (starting from the given) and correct them if needed
673  static void CheckPageDescs( SwPageFrame *pStart, bool bNotifyFields = true, SwPageFrame** ppPrev = nullptr);
674 
675  // might return 0, with and without const
676  SwFrame *GetNext() { return mpNext; }
677  SwFrame *GetPrev() { return mpPrev; }
678  SwLayoutFrame *GetUpper() { return mpUpper; }
679  SwRootFrame *getRootFrame(){ return mpRoot; }
680  SwPageFrame *FindPageFrame() { return IsPageFrame() ? reinterpret_cast<SwPageFrame*>(this) : ImplFindPageFrame(); }
681  SwFrame *FindColFrame();
682  SwRowFrame *FindRowFrame();
683  SwFootnoteBossFrame *FindFootnoteBossFrame( bool bFootnotes = false );
684  SwTabFrame *ImplFindTabFrame();
685  SwFootnoteFrame *ImplFindFootnoteFrame();
686  SwFlyFrame *ImplFindFlyFrame();
687  SwSectionFrame *ImplFindSctFrame();
688  const SwBodyFrame *ImplFindBodyFrame() const;
689  SwFrame *FindFooterOrHeader();
690  SwFrame *GetLower();
691  const SwFrame *GetNext() const { return mpNext; }
692  const SwFrame *GetPrev() const { return mpPrev; }
693  const SwLayoutFrame *GetUpper() const { return mpUpper; }
694  const SwRootFrame *getRootFrame() const { return mpRoot; }
695  inline SwTabFrame *FindTabFrame();
696  inline SwFootnoteFrame *FindFootnoteFrame();
697  inline SwFlyFrame *FindFlyFrame();
698  inline SwSectionFrame *FindSctFrame();
699  inline SwFrame *FindNext();
700  // #i27138# - add parameter <_bInSameFootnote>
701  SwContentFrame* FindNextCnt( const bool _bInSameFootnote = false );
702  inline SwFrame *FindPrev();
703  inline const SwPageFrame *FindPageFrame() const;
704  inline const SwFootnoteBossFrame *FindFootnoteBossFrame( bool bFootnote = false ) const;
705  inline const SwFrame *FindColFrame() const;
706  inline const SwFrame *FindFooterOrHeader() const;
707  inline const SwTabFrame *FindTabFrame() const;
708  inline const SwFootnoteFrame *FindFootnoteFrame() const;
709  inline const SwFlyFrame *FindFlyFrame() const;
710  inline const SwSectionFrame *FindSctFrame() const;
711  inline const SwBodyFrame *FindBodyFrame() const;
712  inline const SwFrame *FindNext() const;
713  // #i27138# - add parameter <_bInSameFootnote>
714  const SwContentFrame* FindNextCnt( const bool _bInSameFootnote = false ) const;
715  inline const SwFrame *FindPrev() const;
716  const SwFrame *GetLower() const;
717 
718  SwContentFrame* FindPrevCnt();
719 
720  const SwContentFrame* FindPrevCnt() const;
721 
722  // #i79774#
723  SwFrame* GetIndPrev_() const;
725  { return ( mpPrev || !IsInSct() ) ? mpPrev : GetIndPrev_(); }
726 
728  { return ( mpNext || !IsInSct() ) ? mpNext : GetIndNext_(); }
729  const SwFrame* GetIndNext() const { return const_cast<SwFrame*>(this)->GetIndNext(); }
730 
731  sal_uInt16 GetPhyPageNum() const; // page number without offset
732  sal_uInt16 GetVirtPageNum() const; // page number with offset
733  bool OnRightPage() const { return 0 != GetPhyPageNum() % 2; };
734  bool WannaRightPage() const;
735  bool OnFirstPage() const;
736 
737  inline const SwLayoutFrame *GetPrevLayoutLeaf() const;
738  inline const SwLayoutFrame *GetNextLayoutLeaf() const;
739  inline SwLayoutFrame *GetPrevLayoutLeaf();
740  inline SwLayoutFrame *GetNextLayoutLeaf();
741 
742  virtual void Calc(vcl::RenderContext* pRenderContext) const; // here might be "formatted"
743  inline void OptCalc() const; // here we assume (for optimization) that
744  // the predecessors are already formatted
745  Point GetRelPos() const;
746 
747  // PaintArea is the area where content might be displayed.
748  // The margin of a page or the space between columns belongs to it.
749  SwRect GetPaintArea() const;
750 
751  // UnionFrame is the union of Frame- and PrtArea, normally identical
752  // to the FrameArea except in case of negative Prt margins.
753  SwRect UnionFrame( bool bBorder = false ) const;
754 
755  virtual Size ChgSize( const Size& aNewSize );
756 
757  virtual void Cut() = 0;
758  virtual void Paste( SwFrame* pParent, SwFrame* pSibling = nullptr ) = 0;
759 
760  void ValidateLineNum() { mbValidLineNum = true; }
761 
762  bool GetValidLineNumFlag()const { return mbValidLineNum; }
763 
764  // Only invalidate Frame
765  // #i28701# - add call to method <ActionOnInvalidation(..)>
766  // for all invalidation methods.
767  // #i28701# - use method <InvalidationAllowed(..)> to
768  // decide, if invalidation will to be performed or not.
769  // #i26945# - no additional invalidation, if it's already
770  // invalidate.
772  {
773  if ( isFrameAreaSizeValid() && InvalidationAllowed( INVALID_SIZE ) )
774  {
775  setFrameAreaSizeValid(false);
776  ActionOnInvalidation( INVALID_SIZE );
777  }
778  }
780  {
781  if ( isFramePrintAreaValid() && InvalidationAllowed( INVALID_PRTAREA ) )
782  {
783  setFramePrintAreaValid(false);
784  ActionOnInvalidation( INVALID_PRTAREA );
785  }
786  }
788  {
789  if ( isFrameAreaPositionValid() && InvalidationAllowed( INVALID_POS ) )
790  {
792  ActionOnInvalidation( INVALID_POS );
793  }
794  }
796  {
797  if ( mbValidLineNum && InvalidationAllowed( INVALID_LINENUM ) )
798  {
799  mbValidLineNum = false;
800  ActionOnInvalidation( INVALID_LINENUM );
801  }
802  }
804  {
805  if ( ( isFrameAreaSizeValid() || isFramePrintAreaValid() || isFrameAreaPositionValid() ) && InvalidationAllowed( INVALID_ALL ) )
806  {
807  setFrameAreaSizeValid(false);
809  setFramePrintAreaValid(false);
810  ActionOnInvalidation( INVALID_ALL );
811  }
812  }
813  // also notify page at the same time
814  inline void InvalidateSize();
815  inline void InvalidatePrt();
816  inline void InvalidatePos();
817  inline void InvalidateLineNum();
818  inline void InvalidateAll();
819  void ImplInvalidateSize();
820  void ImplInvalidatePrt();
821  void ImplInvalidatePos();
822  void ImplInvalidateLineNum();
823 
824  inline void InvalidateNextPos( bool bNoFootnote = false );
825  void ImplInvalidateNextPos( bool bNoFootnote );
826 
830  void InvalidateNextPrtArea();
831 
832  void InvalidatePage( const SwPageFrame *pPage = nullptr ) const;
833 
834  virtual bool FillSelection( SwSelectionList& rList, const SwRect& rRect ) const;
835 
836  virtual bool GetModelPositionForViewPoint( SwPosition *, Point&,
837  SwCursorMoveState* = nullptr, bool bTestBackground = false ) const;
838  virtual bool GetCharRect( SwRect &, const SwPosition&,
839  SwCursorMoveState* = nullptr, bool bAllowFarAway = true ) const;
840  virtual void PaintSwFrame( vcl::RenderContext& rRenderContext, SwRect const&,
841  SwPrintData const*const pPrintData = nullptr ) const;
842 
843  // HACK: shortcut between frame and formatting
844  // It's your own fault if you cast void* incorrectly! In any case check
845  // the void* for 0.
846  virtual bool Prepare( const PrepareHint ePrep = PrepareHint::Clear,
847  const void *pVoid = nullptr, bool bNotify = true );
848 
849  // true if it is the correct class, false otherwise
850  inline bool IsLayoutFrame() const;
851  inline bool IsRootFrame() const;
852  inline bool IsPageFrame() const;
853  inline bool IsColumnFrame() const;
854  inline bool IsFootnoteBossFrame() const; // footnote bosses might be PageFrames or ColumnFrames
855  inline bool IsHeaderFrame() const;
856  inline bool IsFooterFrame() const;
857  inline bool IsFootnoteContFrame() const;
858  inline bool IsFootnoteFrame() const;
859  inline bool IsBodyFrame() const;
860  inline bool IsColBodyFrame() const; // implemented in layfrm.hxx, BodyFrame above ColumnFrame
861  inline bool IsPageBodyFrame() const; // implemented in layfrm.hxx, BodyFrame above PageFrame
862  inline bool IsFlyFrame() const;
863  inline bool IsSctFrame() const;
864  inline bool IsTabFrame() const;
865  inline bool IsRowFrame() const;
866  inline bool IsCellFrame() const;
867  inline bool IsContentFrame() const;
868  inline bool IsTextFrame() const;
869  SwTextFrame* DynCastTextFrame();
870  const SwTextFrame* DynCastTextFrame() const;
871  inline bool IsNoTextFrame() const;
872  // Frames where its PrtArea depends on their neighbors and that are
873  // positioned in the content flow
874  inline bool IsFlowFrame() const;
875  // Frames that are capable of retouching or that might need to retouch behind
876  // themselves
877  inline bool IsRetoucheFrame() const;
878  inline bool IsAccessibleFrame() const;
879 
880  void PrepareCursor(); // CursorShell is allowed to call this
881 
882  // Is the Frame (or the section containing it) protected? Same for Fly in
883  // Fly in ... and footnotes
884  bool IsProtected() const;
885 
886  bool IsColLocked() const { return mbColLocked; }
887  virtual bool IsDeleteForbidden() const { return mnForbidDelete > 0; }
888 
890  static void DestroyFrame(SwFrame *const pFrame);
891 
892  bool IsInDtor() const { return mbInDtor; }
893 
894  // No inline cause we need the function pointers
895  tools::Long GetTopMargin() const;
896  tools::Long GetBottomMargin() const;
897  tools::Long GetLeftMargin() const;
898  tools::Long GetRightMargin() const;
899  void SetTopBottomMargins( tools::Long, tools::Long );
900  void SetLeftRightMargins( tools::Long, tools::Long );
901  void SetRightLeftMargins( tools::Long, tools::Long );
902  tools::Long GetPrtLeft() const;
903  tools::Long GetPrtBottom() const;
904  tools::Long GetPrtRight() const;
905  tools::Long GetPrtTop() const;
906  bool SetMinLeft( tools::Long );
907  bool SetMaxBottom( tools::Long );
908  bool SetMaxRight( tools::Long );
909  void MakeBelowPos( const SwFrame*, const SwFrame*, bool );
910  void MakeLeftPos( const SwFrame*, const SwFrame*, bool );
911  void MakeRightPos( const SwFrame*, const SwFrame*, bool );
912  bool IsNeighbourFrame() const
913  { return bool(GetType() & FRM_NEIGHBOUR); }
914 
915  // NEW TABLES
916  // Some functions for covered/covering table cells. This way unnecessary
917  // includes can be avoided
918  virtual bool IsLeaveUpperAllowed() const;
919  virtual bool IsCoveredCell() const;
920  bool IsInCoveredCell() const;
921 
922  // #i81146# new loop control
923  bool KnowsFormat( const SwFormat& rFormat ) const;
924  void RegisterToFormat( SwFormat& rFormat );
925  void ValidateThisAndAllLowers( const sal_uInt16 nStage );
926 
927  void ForbidDelete() { ++mnForbidDelete; }
928  void AllowDelete() { assert(mnForbidDelete > 0); --mnForbidDelete; }
929 
930  drawinglayer::attribute::SdrAllFillAttributesHelperPtr getSdrAllFillAttributesHelper() const;
931  bool supportsFullDrawingLayerFillAttributeSet() const;
932 
933 public:
934  // if writer is NULL, dumps the layout structure as XML in layout.xml
935  virtual void dumpAsXml(xmlTextWriterPtr writer = nullptr) const;
936  void dumpTopMostAsXml(xmlTextWriterPtr writer = nullptr) const;
937  void dumpInfosAsXml(xmlTextWriterPtr writer) const;
938  virtual void dumpAsXmlAttributes(xmlTextWriterPtr writer) const;
939  void dumpChildrenAsXml(xmlTextWriterPtr writer) const;
940  bool IsCollapse() const;
941 };
942 
943 inline bool SwFrame::IsInDocBody() const
944 {
945  if ( mbInfInvalid )
946  const_cast<SwFrame*>(this)->SetInfFlags();
947  return mbInfBody;
948 }
949 inline bool SwFrame::IsInFootnote() const
950 {
951  if ( mbInfInvalid )
952  const_cast<SwFrame*>(this)->SetInfFlags();
953  return mbInfFootnote;
954 }
955 inline bool SwFrame::IsInTab() const
956 {
957  if ( mbInfInvalid )
958  const_cast<SwFrame*>(this)->SetInfFlags();
959  return mbInfTab;
960 }
961 inline bool SwFrame::IsInFly() const
962 {
963  if ( mbInfInvalid )
964  const_cast<SwFrame*>(this)->SetInfFlags();
965  return mbInfFly;
966 }
967 inline bool SwFrame::IsInSct() const
968 {
969  if ( mbInfInvalid )
970  const_cast<SwFrame*>(this)->SetInfFlags();
971  return mbInfSct;
972 }
974 {
975  if( mbInvalidVert )
976  const_cast<SwFrame*>(this)->SetDirFlags( true );
977  return mbVertical;
978 }
979 inline bool SwFrame::IsVertLR() const
980 {
981  return mbVertLR;
982 }
983 inline bool SwFrame::IsVertLRBT() const
984 {
985  return mbVertLRBT;
986 }
987 inline bool SwFrame::IsRightToLeft() const
988 {
989  if( mbInvalidR2L )
990  const_cast<SwFrame*>(this)->SetDirFlags( false );
991  return mbRightToLeft;
992 }
993 
994 inline void SwFrame::SetCompletePaint() const
995 {
996  const_cast<SwFrame*>(this)->mbCompletePaint = true;
997 }
998 inline void SwFrame::ResetCompletePaint() const
999 {
1000  const_cast<SwFrame*>(this)->mbCompletePaint = false;
1001 }
1002 
1003 inline void SwFrame::SetRetouche() const
1004 {
1005  const_cast<SwFrame*>(this)->mbRetouche = true;
1006 }
1007 inline void SwFrame::ResetRetouche() const
1008 {
1009  const_cast<SwFrame*>(this)->mbRetouche = false;
1010 }
1011 
1013 {
1014  return const_cast<SwLayoutFrame*>(static_cast<const SwFrame*>(this)->GetNextLayoutLeaf());
1015 }
1017 {
1018  return const_cast<SwLayoutFrame*>(static_cast<const SwFrame*>(this)->GetPrevLayoutLeaf());
1019 }
1021 {
1022  return ImplGetNextLayoutLeaf( true );
1023 }
1025 {
1026  return ImplGetNextLayoutLeaf( false );
1027 }
1028 
1030 {
1031  if ( isFrameAreaSizeValid() )
1032  {
1034  }
1035 }
1037 {
1038  if ( isFramePrintAreaValid() )
1039  {
1041  }
1042 }
1044 {
1045  if ( isFrameAreaPositionValid() )
1046  {
1048  }
1049 }
1051 {
1052  if ( mbValidLineNum )
1054 }
1056 {
1058  {
1060  {
1062  }
1063 
1064  setFrameAreaSizeValid(false);
1066  setFramePrintAreaValid(false);
1067 
1068  // #i28701#
1070  }
1071 }
1072 inline void SwFrame::InvalidateNextPos( bool bNoFootnote )
1073 {
1074  if ( mpNext && !mpNext->IsSctFrame() )
1075  mpNext->InvalidatePos();
1076  else
1077  ImplInvalidateNextPos( bNoFootnote );
1078 }
1079 
1080 inline void SwFrame::OptCalc() const
1081 {
1083  {
1084  const_cast<SwFrame*>(this)->OptPrepareMake();
1085  }
1086 }
1088 {
1089  return const_cast<SwFrame*>(this)->FindPageFrame();
1090 }
1091 inline const SwFrame *SwFrame::FindColFrame() const
1092 {
1093  return const_cast<SwFrame*>(this)->FindColFrame();
1094 }
1096 {
1097  return const_cast<SwFrame*>(this)->FindFooterOrHeader();
1098 }
1100 {
1101  return IsInTab() ? ImplFindTabFrame() : nullptr;
1102 }
1104 {
1105  return const_cast<SwFrame*>(this)->FindFootnoteBossFrame( bFootnote );
1106 }
1108 {
1109  return IsInFootnote() ? ImplFindFootnoteFrame() : nullptr;
1110 }
1112 {
1113  return IsInFly() ? ImplFindFlyFrame() : nullptr;
1114 }
1116 {
1117  return IsInSct() ? ImplFindSctFrame() : nullptr;
1118 }
1119 
1121 {
1122  return IsInDocBody() ? ImplFindBodyFrame() : nullptr;
1123 }
1124 
1125 inline const SwTabFrame *SwFrame::FindTabFrame() const
1126 {
1127  return IsInTab() ? const_cast<SwFrame*>(this)->ImplFindTabFrame() : nullptr;
1128 }
1130 {
1131  return IsInFootnote() ? const_cast<SwFrame*>(this)->ImplFindFootnoteFrame() : nullptr;
1132 }
1133 inline const SwFlyFrame *SwFrame::FindFlyFrame() const
1134 {
1135  return IsInFly() ? const_cast<SwFrame*>(this)->ImplFindFlyFrame() : nullptr;
1136 }
1138 {
1139  return IsInSct() ? const_cast<SwFrame*>(this)->ImplFindSctFrame() : nullptr;
1140 }
1142 {
1143  if ( mpNext )
1144  return mpNext;
1145  else
1146  return FindNext_();
1147 }
1148 inline const SwFrame *SwFrame::FindNext() const
1149 {
1150  if ( mpNext )
1151  return mpNext;
1152  else
1153  return const_cast<SwFrame*>(this)->FindNext_();
1154 }
1156 {
1157  if ( mpPrev && !mpPrev->IsSctFrame() )
1158  return mpPrev;
1159  else
1160  return FindPrev_();
1161 }
1162 inline const SwFrame *SwFrame::FindPrev() const
1163 {
1164  if ( mpPrev && !mpPrev->IsSctFrame() )
1165  return mpPrev;
1166  else
1167  return const_cast<SwFrame*>(this)->FindPrev_();
1168 }
1169 
1170 inline bool SwFrame::IsLayoutFrame() const
1171 {
1172  return bool(GetType() & FRM_LAYOUT);
1173 }
1174 inline bool SwFrame::IsRootFrame() const
1175 {
1176  return mnFrameType == SwFrameType::Root;
1177 }
1178 inline bool SwFrame::IsPageFrame() const
1179 {
1180  return mnFrameType == SwFrameType::Page;
1181 }
1182 inline bool SwFrame::IsColumnFrame() const
1183 {
1184  return mnFrameType == SwFrameType::Column;
1185 }
1186 inline bool SwFrame::IsFootnoteBossFrame() const
1187 {
1188  return bool(GetType() & FRM_FTNBOSS);
1189 }
1190 inline bool SwFrame::IsHeaderFrame() const
1191 {
1192  return mnFrameType == SwFrameType::Header;
1193 }
1194 inline bool SwFrame::IsFooterFrame() const
1195 {
1196  return mnFrameType == SwFrameType::Footer;
1197 }
1198 inline bool SwFrame::IsFootnoteContFrame() const
1199 {
1201 }
1202 inline bool SwFrame::IsFootnoteFrame() const
1203 {
1204  return mnFrameType == SwFrameType::Ftn;
1205 }
1206 inline bool SwFrame::IsBodyFrame() const
1207 {
1208  return mnFrameType == SwFrameType::Body;
1209 }
1210 inline bool SwFrame::IsFlyFrame() const
1211 {
1212  return mnFrameType == SwFrameType::Fly;
1213 }
1214 inline bool SwFrame::IsSctFrame() const
1215 {
1217 }
1218 inline bool SwFrame::IsTabFrame() const
1219 {
1220  return mnFrameType == SwFrameType::Tab;
1221 }
1222 inline bool SwFrame::IsRowFrame() const
1223 {
1224  return mnFrameType == SwFrameType::Row;
1225 }
1226 inline bool SwFrame::IsCellFrame() const
1227 {
1228  return mnFrameType == SwFrameType::Cell;
1229 }
1230 inline bool SwFrame::IsContentFrame() const
1231 {
1232  return bool(GetType() & FRM_CNTNT);
1233 }
1234 inline bool SwFrame::IsTextFrame() const
1235 {
1236  return mnFrameType == SwFrameType::Txt;
1237 }
1238 inline bool SwFrame::IsNoTextFrame() const
1239 {
1240  return mnFrameType == SwFrameType::NoTxt;
1241 }
1242 inline bool SwFrame::IsFlowFrame() const
1243 {
1245 }
1246 inline bool SwFrame::IsRetoucheFrame() const
1247 {
1249 }
1250 inline bool SwFrame::IsAccessibleFrame() const
1251 {
1252  return bool(GetType() & FRM_ACCESSIBLE);
1253 }
1254 
1255 //use this to protect a SwFrame for a given scope from getting deleted
1257 {
1258 private:
1260 public:
1261  //Flag pFrame for SwFrameDeleteGuard lifetime that we shouldn't delete
1262  //it in e.g. SwSectionFrame::MergeNext etc because we will need it
1263  //again after the SwFrameDeleteGuard dtor
1264  explicit SwFrameDeleteGuard(SwFrame* pFrame)
1265  : m_pForbidFrame(pFrame)
1266  {
1267  if (m_pForbidFrame)
1268  m_pForbidFrame->ForbidDelete();
1269  }
1270 
1271  SwFrameDeleteGuard(const SwFrameDeleteGuard&) =delete;
1272 
1274  {
1275  if (m_pForbidFrame)
1276  m_pForbidFrame->AllowDelete();
1277  }
1278 
1280 };
1281 
1282 typedef tools::Long (SwFrame::*SwFrameGet)() const;
1283 typedef bool (SwFrame::*SwFrameMax)( tools::Long );
1284 typedef void (SwFrame::*SwFrameMakePos)( const SwFrame*, const SwFrame*, bool );
1287 
1289 {
1298 
1305 
1312 
1315 
1332 
1339 
1342 };
1343 
1345 
1346 // This class allows to use proper methods regardless of orientation (LTR/RTL, horizontal or vertical)
1349 public:
1350  explicit SwRectFnSet(const SwFrame *pFrame)
1351  : m_bVert(pFrame->IsVertical())
1352  , m_bVertL2R(pFrame->IsVertLR())
1353  , m_bVertL2RB2T(pFrame->IsVertLRBT())
1354  {
1355  m_fnRect = m_bVert ? (m_bVertL2R ? (m_bVertL2RB2T ? fnRectVertL2RB2T : fnRectVertL2R) : fnRectVert) : fnRectHori;
1356  }
1357 
1358  void Refresh(const SwFrame *pFrame)
1359  {
1360  m_bVert = pFrame->IsVertical();
1361  m_bVertL2R = pFrame->IsVertLR();
1362  m_bVertL2RB2T = pFrame->IsVertLRBT();
1363  m_fnRect = m_bVert ? (m_bVertL2R ? (m_bVertL2RB2T ? fnRectVertL2RB2T : fnRectVertL2R) : fnRectVert) : fnRectHori;
1364  }
1365 
1366  bool IsVert() const { return m_bVert; }
1367  bool IsVertL2R() const { return m_bVertL2R; }
1368  SwRectFn FnRect() const { return m_fnRect; }
1369 
1370  bool PosDiff(const SwRect &rRect1, const SwRect &rRect2) const
1371  {
1372  return ((rRect1.*m_fnRect->fnGetTop)() != (rRect2.*m_fnRect->fnGetTop)()
1373  || (rRect1.*m_fnRect->fnGetLeft)() != (rRect2.*m_fnRect->fnGetLeft)());
1374  }
1375 
1376  tools::Long GetTop (const SwRect& rRect) const { return (rRect.*m_fnRect->fnGetTop) (); }
1377  tools::Long GetBottom(const SwRect& rRect) const { return (rRect.*m_fnRect->fnGetBottom)(); }
1378  tools::Long GetLeft (const SwRect& rRect) const { return (rRect.*m_fnRect->fnGetLeft) (); }
1379  tools::Long GetRight (const SwRect& rRect) const { return (rRect.*m_fnRect->fnGetRight) (); }
1380  tools::Long GetWidth (const SwRect& rRect) const { return (rRect.*m_fnRect->fnGetWidth) (); }
1381  tools::Long GetHeight(const SwRect& rRect) const { return (rRect.*m_fnRect->fnGetHeight)(); }
1382  Point GetPos (const SwRect& rRect) const { return (rRect.*m_fnRect->fnGetPos) (); }
1383  Size GetSize (const SwRect& rRect) const { return (rRect.*m_fnRect->fnGetSize) (); }
1384 
1385  void SetTop (SwRect& rRect, tools::Long nNew) const { (rRect.*m_fnRect->fnSetTop) (nNew); }
1386  void SetBottom(SwRect& rRect, tools::Long nNew) const { (rRect.*m_fnRect->fnSetBottom)(nNew); }
1387  void SetLeft (SwRect& rRect, tools::Long nNew) const { (rRect.*m_fnRect->fnSetLeft) (nNew); }
1388  void SetRight (SwRect& rRect, tools::Long nNew) const { (rRect.*m_fnRect->fnSetRight) (nNew); }
1389  void SetWidth (SwRect& rRect, tools::Long nNew) const { (rRect.*m_fnRect->fnSetWidth) (nNew); }
1390  void SetHeight(SwRect& rRect, tools::Long nNew) const { (rRect.*m_fnRect->fnSetHeight)(nNew); }
1391 
1392  void SubTop (SwRect& rRect, tools::Long nNew) const { (rRect.*m_fnRect->fnSubTop) (nNew); }
1393  void AddBottom(SwRect& rRect, tools::Long nNew) const { (rRect.*m_fnRect->fnAddBottom)(nNew); }
1394  void SubLeft (SwRect& rRect, tools::Long nNew) const { (rRect.*m_fnRect->fnSubLeft) (nNew); }
1395  void AddRight (SwRect& rRect, tools::Long nNew) const { (rRect.*m_fnRect->fnAddRight) (nNew); }
1396  void AddWidth (SwRect& rRect, tools::Long nNew) const { (rRect.*m_fnRect->fnAddWidth) (nNew); }
1397  void AddHeight(SwRect& rRect, tools::Long nNew) const { (rRect.*m_fnRect->fnAddHeight)(nNew); }
1398 
1399  void SetPosX(SwRect& rRect, tools::Long nNew) const { (rRect.*m_fnRect->fnSetPosX)(nNew); }
1400  void SetPosY(SwRect& rRect, tools::Long nNew) const { (rRect.*m_fnRect->fnSetPosY)(nNew); }
1401 
1402  tools::Long GetTopMargin (const SwFrame& rFrame) const { return (rFrame.*m_fnRect->fnGetTopMargin) (); }
1403  tools::Long GetBottomMargin(const SwFrame& rFrame) const { return (rFrame.*m_fnRect->fnGetBottomMargin)(); }
1404  tools::Long GetLeftMargin (const SwFrame& rFrame) const { return (rFrame.*m_fnRect->fnGetLeftMargin) (); }
1405  tools::Long GetRightMargin (const SwFrame& rFrame) const { return (rFrame.*m_fnRect->fnGetRightMargin) (); }
1406  void SetXMargins(SwFrame& rFrame, tools::Long nLeft, tools::Long nRight) const { (rFrame.*m_fnRect->fnSetXMargins)(nLeft, nRight); }
1407  void SetYMargins(SwFrame& rFrame, tools::Long nTop, tools::Long nBottom) const { (rFrame.*m_fnRect->fnSetYMargins)(nTop, nBottom); }
1408  tools::Long GetPrtTop (const SwFrame& rFrame) const { return (rFrame.*m_fnRect->fnGetPrtTop) (); }
1409  tools::Long GetPrtBottom (const SwFrame& rFrame) const { return (rFrame.*m_fnRect->fnGetPrtBottom) (); }
1410  tools::Long GetPrtLeft (const SwFrame& rFrame) const { return (rFrame.*m_fnRect->fnGetPrtLeft) (); }
1411  tools::Long GetPrtRight (const SwFrame& rFrame) const { return (rFrame.*m_fnRect->fnGetPrtRight) (); }
1412  tools::Long TopDist (const SwRect& rRect, tools::Long nPos) const { return (rRect.*m_fnRect->fnTopDist) (nPos); }
1413  tools::Long BottomDist(const SwRect& rRect, tools::Long nPos) const { return (rRect.*m_fnRect->fnBottomDist) (nPos); }
1414  tools::Long LeftDist (const SwRect& rRect, tools::Long nPos) const { return (rRect.*m_fnRect->fnLeftDist) (nPos); }
1415  tools::Long RightDist (const SwRect& rRect, tools::Long nPos) const { return (rRect.*m_fnRect->fnRightDist) (nPos); }
1416  void SetLimit (SwFrame& rFrame, tools::Long nNew) const { (rFrame.*m_fnRect->fnSetLimit) (nNew); }
1417  bool OverStep (const SwRect& rRect, tools::Long nPos) const { return (rRect.*m_fnRect->fnOverStep) (nPos); }
1418 
1419  void SetPos(SwRect& rRect, const Point& rNew) const { (rRect.*m_fnRect->fnSetPos)(rNew); }
1420  void MakePos(SwFrame& rFrame, const SwFrame* pUp, const SwFrame* pPrv, bool bNotify) const { (rFrame.*m_fnRect->fnMakePos)(pUp, pPrv, bNotify); }
1421  tools::Long XDiff(tools::Long n1, tools::Long n2) const { return (m_fnRect->fnXDiff) (n1, n2); }
1422  tools::Long YDiff(tools::Long n1, tools::Long n2) const { return (m_fnRect->fnYDiff) (n1, n2); }
1423  tools::Long XInc (tools::Long n1, tools::Long n2) const { return (m_fnRect->fnXInc) (n1, n2); }
1424  tools::Long YInc (tools::Long n1, tools::Long n2) const { return (m_fnRect->fnYInc) (n1, n2); }
1425 
1426  void SetLeftAndWidth(SwRect& rRect, tools::Long nLeft, tools::Long nWidth) const { (rRect.*m_fnRect->fnSetLeftAndWidth)(nLeft, nWidth); }
1427  void SetTopAndHeight(SwRect& rRect, tools::Long nTop, tools::Long nHeight) const { (rRect.*m_fnRect->fnSetTopAndHeight)(nTop, nHeight); }
1428 
1429 private:
1430  bool m_bVert;
1434 };
1435 
1436 #endif
1437 
1438 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
#define FRM_NEIGHBOUR
Definition: frame.hxx:106
SwFrame * FindFooterOrHeader()
Definition: findfrm.cxx:602
void SetTop(SwRect &rRect, tools::Long nNew) const
Definition: frame.hxx:1385
void transform(const basegfx::B2DHomMatrix &aTransform)
Definition: wsfrm.cxx:287
Base class of the Writer layout elements.
Definition: frame.hxx:314
Base class that provides the general functionalities for frames that are allowed at page breaks (flow...
Definition: flowfrm.hxx:58
Represents the visualization of a paragraph.
Definition: txtfrm.hxx:162
bool mbInfFootnote
Definition: frame.hxx:441
const SwFrame * GetIndNext() const
Definition: frame.hxx:729
void InvalidateInfFlags()
Definition: frame.hxx:608
SwFrameGet fnGetPrtBottom
Definition: frame.hxx:1323
tools::Long GetRight(const SwRect &rRect) const
Definition: frame.hxx:1379
void RestoreContent(SwFrame *pSav, SwLayoutFrame *pParent, SwFrame *pSibling)
Definition: frmtool.cxx:3020
bool(SwRect::* SwRectMax)(tools::Long) const
Definition: swrect.hxx:160
Point GetPos(const SwRect &rRect) const
Definition: frame.hxx:1382
const SwSortedObjs * GetDrawObjs() const
Definition: frame.hxx:564
SwRectMax fnOverStep
Definition: frame.hxx:1331
Marks a position in the document model.
Definition: pam.hxx:36
SwFrame * mpNext
Definition: frame.hxx:338
void AddHeight(SwRect &rRect, tools::Long nNew) const
Definition: frame.hxx:1397
SwRectDist fnBottomDist
Definition: frame.hxx:1327
SwFrame * mpPrev
Definition: frame.hxx:339
bool IsInDocBody() const
Definition: frame.hxx:943
tools::Long GetPrtRight(const SwFrame &rFrame) const
Definition: frame.hxx:1411
bool IsInFly() const
Definition: frame.hxx:961
bool IsRootFrame() const
Definition: frame.hxx:1174
Pagedescriptor Client of SwPageDesc that is "described" by the attribute.
Definition: fmtpdsc.hxx:35
void SetPosY(SwRect &rRect, tools::Long nNew) const
Definition: frame.hxx:1400
bool mbValidLineNum
Definition: frame.hxx:427
bool IsInSct() const
Definition: frame.hxx:967
Size GetSize(const SwRect &rRect) const
Definition: frame.hxx:1383
SwRootFrame * mpRoot
Definition: frame.hxx:336
tools::Long BottomDist(const SwRect &rRect, tools::Long nPos) const
Definition: frame.hxx:1413
basegfx::B2DHomMatrix maFrameAreaTransformation
Definition: frame.hxx:243
SwRect getUntransformedFramePrintArea() const
Definition: wsfrm.cxx:189
bool mbInvalidVert
Definition: frame.hxx:420
SwFootnoteFrame * ImplFindFootnoteFrame()
Definition: findfrm.cxx:559
const SwBodyFrame * ImplFindBodyFrame() const
Definition: findfrm.cxx:547
bool IsColLocked() const
Definition: frame.hxx:886
tools::Long GetLeftMargin(const SwFrame &rFrame) const
Definition: frame.hxx:1404
void Refresh(const SwFrame *pFrame)
Definition: frame.hxx:1358
void SetCompletePaint() const
Definition: frame.hxx:994
void ImplInvalidateSize()
Definition: wsfrm.cxx:1950
bool IsInFootnote() const
Definition: frame.hxx:949
SwOperator fnXInc
Definition: frame.hxx:1337
SwFrameType GetType() const
Definition: frame.hxx:519
SwRectFn FnRect() const
Definition: frame.hxx:1368
SwRectSetTwice fnSetLeftAndWidth
Definition: frame.hxx:1340
void ValidateText(SwFrame *pFrame)
Definition: frmform.cxx:72
void setSwRect(const SwRect &rNew)
Definition: frame.hxx:198
void SetDerivedR2L(bool bNew)
Definition: frame.hxx:632
SwRectSet fnSetPosX
Definition: frame.hxx:1313
#define FRM_CNTNT
Definition: frame.hxx:103
long Long
const SwRect & getFramePrintArea() const
Definition: frame.hxx:180
void InvalidateLineNum_()
Definition: frame.hxx:795
SwRect maFramePrintArea
Definition: frame.hxx:143
static SwCache & GetCache()
Definition: frame.hxx:521
SwTabFrame is one table in the document layout, containing rows (which contain cells).
Definition: tabfrm.hxx:46
tools::Long XInc(tools::Long n1, tools::Long n2) const
Definition: frame.hxx:1423
void InvalidateSize_()
Definition: frame.hxx:771
SwFrame * FindPrev()
Definition: frame.hxx:1155
struct _ADOColumn Column
const SwFrame * GetNext() const
Definition: frame.hxx:691
virtual bool InvalidationAllowed(const InvalidationType _nInvalid) const
method to determine, if an invalidation is allowed.
Definition: wsfrm.cxx:1944
void InvalidatePos()
Definition: frame.hxx:1043
SwFrameAreaDefinition & mrSwFrameAreaDefinition
Definition: frame.hxx:239
SwRectGet fnGetHeight
Definition: frame.hxx:1295
SwOperator fnXDiff
Definition: frame.hxx:1335
const SwBodyFrame * FindBodyFrame() const
Definition: frame.hxx:1120
bool GetValidLineNumFlag() const
Definition: frame.hxx:762
This class is used as parameter for creation of a block cursor selection.
SvxFrameDirection
bool IsVert() const
Definition: frame.hxx:1366
SwRectGet fnGetWidth
Definition: frame.hxx:1294
void SubTop(SwRect &rRect, tools::Long nNew) const
Definition: frame.hxx:1392
RotateFlyFrame3: Helper class when you want to make your SwFrame derivate transformable.
Definition: frame.hxx:235
SwFrameAreaDefinition & mrTarget
Definition: frame.hxx:190
SwFrame * FindNext()
Definition: frame.hxx:1141
virtual void SwClientNotify(const SwModify &, const SfxHint &rHint) override
Definition: calbck.cxx:120
bool IsCellFrame() const
Definition: frame.hxx:1226
Of course Writer needs its own rectangles.
Definition: swrect.hxx:34
void ImplInvalidatePrt()
Definition: wsfrm.cxx:1966
bool mbInfBody
Definition: frame.hxx:438
tools::Long GetWidth(const SwRect &rRect) const
Definition: frame.hxx:1380
SwRectSet fnSubLeft
Definition: frame.hxx:1308
bool mbVertLR
Definition: frame.hxx:424
void AddBottom(SwRect &rRect, tools::Long nNew) const
Definition: frame.hxx:1393
The root element of a Writer document layout.
Definition: rootfrm.hxx:81
bool IsFootnoteFrame() const
Definition: frame.hxx:1202
void SetXMargins(SwFrame &rFrame, tools::Long nLeft, tools::Long nRight) const
Definition: frame.hxx:1406
void ValidateLineNum()
Definition: frame.hxx:760
FrameAreaWriteAccess(SwFrameAreaDefinition &rTarget)
Definition: frame.hxx:196
SwFrame * sw_FormatNextContentForKeep(SwTabFrame *pTabFrame)
Definition: tabfrm.cxx:1807
bool isFrameAreaDefinitionValid() const
Definition: frame.hxx:171
SwRectGet fnGetBottom
Definition: frame.hxx:1291
static bool bFootnote
Definition: insfnote.cxx:33
void AddRight(SwRect &rRect, tools::Long nNew) const
Definition: frame.hxx:1395
SwRectSize fnGetSize
Definition: frame.hxx:1297
void ValidateSz(SwFrame *pFrame)
Definition: calcmove.cxx:1200
SwRectSet fnAddRight
Definition: frame.hxx:1309
tools::Long TopDist(const SwRect &rRect, tools::Long nPos) const
Definition: frame.hxx:1412
SwRectFnSet(const SwFrame *pFrame)
Definition: frame.hxx:1350
bool IsVertLRBT() const
Definition: frame.hxx:983
SwRectGet fnGetRight
Definition: frame.hxx:1293
tools::Long GetTop(const SwRect &rRect) const
Definition: frame.hxx:1376
SwSectionFrame * ImplFindSctFrame()
Definition: findfrm.cxx:535
SvxBorderLineStyle
bool mbVertLRBT
Definition: frame.hxx:425
void SetRetouche() const
Definition: frame.hxx:1003
SwFrameMakePos fnMakePos
Definition: frame.hxx:1334
bool IsFlyFrame() const
Definition: frame.hxx:1210
void SetBottom(SwRect &rRect, tools::Long nNew) const
Definition: frame.hxx:1386
static SwCache * spCache
Definition: frame.hxx:334
wrapper class for the positioning of Writer fly frames and drawing objects
tools::Long(SwRect::* SwRectDist)(tools::Long) const
Definition: swrect.hxx:161
SwFrameGet fnGetRightMargin
Definition: frame.hxx:1319
const SwLayoutFrame * GetPrevLayoutLeaf() const
Definition: frame.hxx:1024
static void SetCache(SwCache *pNew)
Definition: frame.hxx:523
void restoreFrameAreas()
Definition: wsfrm.cxx:269
const SwRect & getFrameArea() const
Definition: frame.hxx:179
bool mbInfTab
Definition: frame.hxx:439
SwRectSet fnAddWidth
Definition: frame.hxx:1310
bool IsInTab() const
Definition: frame.hxx:955
SwFrameGet fnGetPrtRight
Definition: frame.hxx:1325
void setRootFrame(SwRootFrame *pRoot)
Definition: frame.hxx:455
bool IsTextFrame() const
Definition: frame.hxx:1234
std::shared_ptr< SdrAllFillAttributesHelper > SdrAllFillAttributesHelperPtr
Definition: format.hxx:41
SwRectFn fnRectVertL2R
Definition: newfrm.cxx:288
SwFrameGet fnGetPrtTop
Definition: frame.hxx:1322
tools::Long GetPrtLeft(const SwFrame &rFrame) const
Definition: frame.hxx:1410
void setFramePrintAreaValid(bool bNew)
Definition: wsfrm.cxx:100
bool m_bVertL2R
Definition: frame.hxx:1431
bool OnRightPage() const
Definition: frame.hxx:733
const SwLayoutFrame * GetUpper() const
Definition: frame.hxx:693
bool mbInfInvalid
Definition: frame.hxx:437
SwFrameInvFlags
Definition: frame.hxx:292
bool IsSctFrame() const
Definition: frame.hxx:1214
SwFrameGet fnGetLeftMargin
Definition: frame.hxx:1318
SwFlyFrame * FindFlyFrame()
Definition: frame.hxx:1111
SwFrame * FindPrev_()
Definition: findfrm.cxx:1210
SwRectSet fnAddHeight
Definition: frame.hxx:1311
tools::Long GetLeft(const SwRect &rRect) const
Definition: frame.hxx:1378
SwFrameSet fnSetXMargins
Definition: frame.hxx:1320
bool IsFlowFrame() const
Definition: frame.hxx:1242
SwOperator fnYInc
Definition: frame.hxx:1338
SwFrameGet fnGetTopMargin
Definition: frame.hxx:1316
SwRectFn fnRectHori
Definition: newfrm.cxx:286
SwFrame * SaveContent(SwLayoutFrame *pLay, SwFrame *pStart=nullptr)
Definition: frmtool.cxx:2858
void SetLimit(SwFrame &rFrame, tools::Long nNew) const
Definition: frame.hxx:1416
helper class to check if a frame has been deleted during an operation WARNING! This should only be us...
Definition: frmtool.hxx:605
SwFrameGet fnGetPrtLeft
Definition: frame.hxx:1324
Base class for various Writer styles.
Definition: format.hxx:46
bool IsColumnFrame() const
Definition: frame.hxx:1182
SwRectFn fnRectVertL2RB2T
Definition: newfrm.cxx:289
SwRectFn m_fnRect
Definition: frame.hxx:1433
void(SwRect::* SwRectSet)(const tools::Long nNew)
Definition: swrect.hxx:156
SwFootnoteFrame * FindFootnoteFrame()
Definition: frame.hxx:1107
tools::Long XDiff(tools::Long n1, tools::Long n2) const
Definition: frame.hxx:1421
void SetInvalidVert(bool bNew)
Definition: frame.hxx:630
void(SwFrame::* SwFrameMakePos)(const SwFrame *, const SwFrame *, bool)
Definition: frame.hxx:1284
bool IsInDtor() const
Definition: frame.hxx:892
void SetDerivedVert(bool bNew)
Definition: frame.hxx:629
void AddWidth(SwRect &rRect, tools::Long nNew) const
Definition: frame.hxx:1396
SwTabFrame * ImplFindTabFrame()
Definition: findfrm.cxx:523
FramePrintAreaWriteAccess(SwFrameAreaDefinition &rTarget)
Definition: frame.hxx:211
void SetDirFlags(bool bVert)
Updates the vertical or the righttoleft-flags.
Definition: findfrm.cxx:1521
PrepareHint
Definition: swtypes.hxx:193
void FriendHackInvalidateRowFrame(SwFrameAreaDefinition &rRowFrame)
Definition: tabfrm.cxx:1858
bool IsContentFrame() const
Definition: frame.hxx:1230
void InvalidateLineNum()
Definition: frame.hxx:1050
virtual css::uno::Sequence< css::style::TabStop > GetTabStopInfo(SwTwips)
Definition: frame.hxx:513
SwFrame * GetIndPrev() const
Definition: frame.hxx:724
void InvalidatePrt()
Definition: frame.hxx:1036
sw::BroadcastingModify * GetDep()
use these so we can grep for SwFrame's GetRegisteredIn accesses beware that SwTextFrame may return sw...
Definition: frame.hxx:476
tools::Long GetPrtBottom(const SwFrame &rFrame) const
Definition: frame.hxx:1409
SwFrameType
Definition: frame.hxx:74
SwFrame * FindNext_()
Definition: findfrm.cxx:829
SwFrame * GetIndNext()
Definition: frame.hxx:727
basegfx::B2DHomMatrix maFramePrintAreaTransformation
Definition: frame.hxx:244
void ColUnlock()
Definition: frame.hxx:449
SwPageFrame * FindPageFrame()
Definition: frame.hxx:680
virtual bool IsDeleteForbidden() const
Definition: frame.hxx:887
static tools::Long GetLeftMargin(SwView const &rView)
Definition: viewport.cxx:66
const SwLayoutFrame * ImplGetNextLayoutLeaf(bool bFwd) const
Finds the next layout leaf.
Definition: findfrm.cxx:334
tools::Long YInc(tools::Long n1, tools::Long n2) const
Definition: frame.hxx:1424
bool IsCompletePaint() const
Definition: frame.hxx:601
void AllowDelete()
Definition: frame.hxx:928
tools::Long GetHeight(const SwRect &rRect) const
Definition: frame.hxx:1381
void SubLeft(SwRect &rRect, tools::Long nNew) const
Definition: frame.hxx:1394
tools::Long(* SwOperator)(tools::Long, tools::Long)
Definition: frame.hxx:1285
bool(SwFrame::* SwFrameMax)(tools::Long)
Definition: frame.hxx:1283
bool mbInvalidR2L
Definition: frame.hxx:417
void SetRight(SwRect &rRect, tools::Long nNew) const
Definition: frame.hxx:1388
SwLayoutFrame * GetUpper()
Definition: frame.hxx:678
bool PosDiff(const SwRect &rRect1, const SwRect &rRect2) const
Definition: frame.hxx:1370
bool mbVertical
Definition: frame.hxx:422
bool isFramePrintAreaValid() const
Definition: frame.hxx:168
bool IsRowFrame() const
Definition: frame.hxx:1222
tools::Long GetPrtTop(const SwFrame &rFrame) const
Definition: frame.hxx:1408
SwFlyFrame * ImplFindFlyFrame()
Definition: findfrm.cxx:571
SwFootnoteBossFrame * FindFootnoteBossFrame(bool bFootnotes=false)
Definition: findfrm.cxx:460
bool IsRetoucheFrame() const
Definition: frame.hxx:1246
SwFrame * GetPrev()
Definition: frame.hxx:677
SwLayoutFrame * mpUpper
Definition: frame.hxx:337
const SwRootFrame * getRootFrame() const
Definition: frame.hxx:694
tools::Long GetTopMargin(const SwFrame &rFrame) const
Definition: frame.hxx:1402
void ImplInvalidateNextPos(bool bNoFootnote)
Definition: findfrm.cxx:1287
bool isFrameAreaPositionValid() const
Definition: frame.hxx:166
tools::Long YDiff(tools::Long n1, tools::Long n2) const
Definition: frame.hxx:1422
SwFrameSet fnSetYMargins
Definition: frame.hxx:1321
SwFrameDeleteGuard(SwFrame *pFrame)
Definition: frame.hxx:1264
tools::Long GetRightMargin(const SwFrame &rFrame) const
Definition: frame.hxx:1405
#define SW_DLLPUBLIC
Definition: swdllapi.h:28
SwRectDist fnTopDist
Definition: frame.hxx:1326
bool HasFixSize() const
Definition: frame.hxx:670
bool isFrameAreaSizeValid() const
Definition: frame.hxx:167
void InvalidatePos_()
Definition: frame.hxx:787
SwContentFrame is the layout for content nodes: a common base class for text (paragraph) and non-text...
Definition: cntfrm.hxx:57
A page of the document layout.
Definition: pagefrm.hxx:57
tools::Long(SwFrame::* SwFrameGet)() const
Definition: frame.hxx:1282
void OptCalc() const
Definition: frame.hxx:1080
SwRectSet fnSetLeft
Definition: frame.hxx:1301
tools::Long SwTwips
Definition: swtypes.hxx:51
Footer
SwRectSet fnSubTop
Definition: frame.hxx:1306
bool m_bVertL2RB2T
Definition: frame.hxx:1432
void(SwRect::* SwRectSetTwice)(tools::Long, tools::Long)
Definition: swrect.hxx:162
void InvalidateSize()
Definition: frame.hxx:1029
void ResetCompletePaint() const
Definition: frame.hxx:998
SwSectionFrame * FindSctFrame()
Definition: frame.hxx:1115
SwRectSet fnSetBottom
Definition: frame.hxx:1300
static SwCache * GetCachePtr()
Definition: frame.hxx:522
const sal_uInt32 mnFrameId
Definition: frame.hxx:153
SwFrame * FindColFrame()
Definition: findfrm.cxx:584
bool mbInfSct
Definition: frame.hxx:442
void ResetRetouche() const
Definition: frame.hxx:1007
SwRectFnCollection * SwRectFn
Definition: frame.hxx:1344
SwRectGet fnGetLeft
Definition: frame.hxx:1292
void setFrameAreaPositionValid(bool bNew)
Definition: wsfrm.cxx:84
void SetTopAndHeight(SwRect &rRect, tools::Long nTop, tools::Long nHeight) const
Definition: frame.hxx:1427
void SetPosX(SwRect &rRect, tools::Long nNew) const
Definition: frame.hxx:1399
bool IsLayoutFrame() const
Definition: frame.hxx:1170
static sal_uInt32 snLastFrameId
Definition: frame.hxx:152
bool OverStep(const SwRect &rRect, tools::Long nPos) const
Definition: frame.hxx:1417
SwFrame * m_pForbidFrame
Definition: frame.hxx:1259
SwRectSetTwice fnSetTopAndHeight
Definition: frame.hxx:1341
void SetYMargins(SwFrame &rFrame, tools::Long nTop, tools::Long nBottom) const
Definition: frame.hxx:1407
void MakeNxt(SwFrame *pFrame, SwFrame *pNxt)
Definition: calcmove.cxx:1908
void SetWidth(SwRect &rRect, tools::Long nNew) const
Definition: frame.hxx:1389
bool IsVertLR() const
Definition: frame.hxx:979
MakePageType
Definition: frame.hxx:112
tools::Long GetBottomMargin(const SwFrame &rFrame) const
Definition: frame.hxx:1403
bool IsTabFrame() const
Definition: frame.hxx:1218
SwRectSet fnAddBottom
Definition: frame.hxx:1307
general base class for all free-flowing frames
Definition: flyfrm.hxx:78
tools::Long(SwRect::* SwRectGet)() const
Definition: swrect.hxx:157
void(SwFrame::* SwFrameSet)(tools::Long, tools::Long)
Definition: frame.hxx:1286
void OptPrepareMake()
Definition: calcmove.cxx:378
tools::Long LeftDist(const SwRect &rRect, tools::Long nPos) const
Definition: frame.hxx:1414
SwFrameMax fnSetLimit
Definition: frame.hxx:1330
unsigned char sal_uInt8
#define FRM_LAYOUT
Definition: frame.hxx:101
int mnForbidDelete
Definition: frame.hxx:446
void InvalidateAll_()
Definition: frame.hxx:803
SwRectPoint fnGetPos
Definition: frame.hxx:1296
SwFrameDeleteGuard & operator=(const SwFrameDeleteGuard &)=delete
void SetHeight(SwRect &rRect, tools::Long nNew) const
Definition: frame.hxx:1390
SwSortedObjs * GetDrawObjs()
Definition: frame.hxx:565
bool IsNoTextFrame() const
Definition: frame.hxx:1238
#define FRM_ACCESSIBLE
Definition: frame.hxx:105
const sw::BroadcastingModify * GetDep() const
Definition: frame.hxx:478
SwRectSet fnSetHeight
Definition: frame.hxx:1304
SwRect getUntransformedFrameArea() const
Definition: wsfrm.cxx:165
void InvalidateNextPos(bool bNoFootnote=false)
Definition: frame.hxx:1072
bool IsRightToLeft() const
Definition: frame.hxx:987
const SwModify * GetRegisteredIn() const
Definition: calbck.hxx:164
void setFrameAreaSizeValid(bool bNew)
Definition: wsfrm.cxx:92
bool IsVertL2R() const
Definition: frame.hxx:1367
SwFrameType mnFrameType
Definition: frame.hxx:414
bool IsPageFrame() const
Definition: frame.hxx:1178
bool mbRetouche
Definition: frame.hxx:435
SwRectSet fnSetWidth
Definition: frame.hxx:1303
const basegfx::B2DHomMatrix & getLocalFrameAreaTransformation() const
Definition: frame.hxx:255
virtual void ActionOnInvalidation(const InvalidationType _nInvalid)
method to perform additional actions on an invalidation
Definition: wsfrm.cxx:1938
void SetPos(SwRect &rRect, const Point &rNew) const
Definition: frame.hxx:1419
Helper class to isolate geometry-defining members of SwFrame and to control their accesses...
Definition: frame.hxx:132
SwRectSet fnSetTop
Definition: frame.hxx:1299
void SetInfFlags()
Definition: findfrm.cxx:1484
Size(SwRect::* SwRectSize)() const
Definition: swrect.hxx:159
bool IsRetouche() const
Definition: frame.hxx:605
void MakePos(SwFrame &rFrame, const SwFrame *pUp, const SwFrame *pPrv, bool bNotify) const
Definition: frame.hxx:1420
bool mbRightToLeft
Definition: frame.hxx:419
bool mbCompletePaint
Definition: frame.hxx:433
SwRectSetPos fnSetPos
Definition: frame.hxx:1333
bool IsVertical() const
Definition: frame.hxx:973
tools::Long GetBottom(const SwRect &rRect) const
Definition: frame.hxx:1377
SwModify * GetRegisteredInNonConst() const
Definition: calbck.hxx:146
void ImplInvalidateLineNum()
Definition: wsfrm.cxx:2002
bool IsAccessibleFrame() const
Definition: frame.hxx:1250
void InvalidatePrt_()
Definition: frame.hxx:779
SwRectSet fnSetRight
Definition: frame.hxx:1302
void SetLeft(SwRect &rRect, tools::Long nNew) const
Definition: frame.hxx:1387
void InvalidateAll()
Definition: frame.hxx:1055
struct _xmlTextWriter * xmlTextWriterPtr
SwRectDist fnLeftDist
Definition: frame.hxx:1328
void ForbidDelete()
Definition: frame.hxx:927
A layout frame is a frame that contains other frames (m_pLower), e.g. SwPageFrame or SwTabFrame...
Definition: layfrm.hxx:35
SwRectFn fnRectVert
Definition: newfrm.cxx:287
bool IsFootnoteBossFrame() const
Definition: frame.hxx:1186
const SwLayoutFrame * GetNextLayoutLeaf() const
Definition: frame.hxx:1020
const SwFrame * GetPrev() const
Definition: frame.hxx:692
SwRectDist fnRightDist
Definition: frame.hxx:1329
SwRectSet fnSetPosY
Definition: frame.hxx:1314
SwOperator fnYDiff
Definition: frame.hxx:1336
tools::Long RightDist(const SwRect &rRect, tools::Long nPos) const
Definition: frame.hxx:1415
bool IsFootnoteContFrame() const
Definition: frame.hxx:1198
Point(SwRect::* SwRectPoint)() const
Definition: swrect.hxx:158
void adaptFrameAreasToTransformations()
Definition: wsfrm.cxx:234
void ImplInvalidatePos()
Definition: wsfrm.cxx:1982
bool IsNeighbourFrame() const
Definition: frame.hxx:912
bool IsBodyFrame() const
Definition: frame.hxx:1206
void SetLeftAndWidth(SwRect &rRect, tools::Long nLeft, tools::Long nWidth) const
Definition: frame.hxx:1426
class for collecting anchored objects
Definition: sortedobjs.hxx:48
void ColLock()
Definition: frame.hxx:448
void createFrameAreaTransformations(double fRotation, const basegfx::B2DPoint &rCenter)
Definition: wsfrm.cxx:214
Container of body content (i.e.
Definition: bodyfrm.hxx:28
const basegfx::B2DHomMatrix & getLocalFramePrintAreaTransformation() const
Definition: frame.hxx:261
std::unique_ptr< SwSortedObjs > m_pDrawObjs
Definition: frame.hxx:413
InvalidationType
enumeration for the different invalidations #i28701#
Definition: frame.hxx:488
bool mbInfFly
Definition: frame.hxx:440
bool m_bVert
Definition: frame.hxx:1430
bool IsFooterFrame() const
Definition: frame.hxx:1194
void(SwRect::* SwRectSetPos)(const Point &)
Definition: swrect.hxx:163
SwRootFrame * getRootFrame()
Definition: frame.hxx:679
sal_uInt32 GetFrameId() const
Definition: frame.hxx:174
#define FRM_FTNBOSS
Definition: frame.hxx:104
SwRowFrame is one table row in the document layout.
Definition: rowfrm.hxx:28
bool IsHeaderFrame() const
Definition: frame.hxx:1190
SwRectGet fnGetTop
Definition: frame.hxx:1290
TransformableSwFrame(SwFrameAreaDefinition &rSwFrameAreaDefinition)
Definition: frame.hxx:247
SwTabFrame * FindTabFrame()
Definition: frame.hxx:1099
SwFrame * GetNext()
Definition: frame.hxx:676
SwFrameGet fnGetBottomMargin
Definition: frame.hxx:1317
typedef void(CALLTYPE *GetFuncDataPtr)(sal_uInt16 &nNo