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