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