LibreOffice Module sw (master)  1
frmtool.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_FRMTOOL_HXX
21 #define INCLUDED_SW_SOURCE_CORE_INC_FRMTOOL_HXX
22 
23 #include <swtypes.hxx>
24 #include <BorderCacheOwner.hxx>
25 #include "frame.hxx"
26 #include "txtfrm.hxx"
27 #include "swcache.hxx"
28 #include <swatrset.hxx>
29 
30 class SwLayoutFrame;
31 class SwFont;
32 class SwTextFrame;
33 class SwFormatAnchor;
34 class SwViewShell;
35 class SwPageFrame;
36 class SwFlyFrame;
37 class SwContentFrame;
38 class SwRootFrame;
39 class SwDoc;
40 class SdrObject;
41 class SvxBrushItem;
42 class SdrMarkList;
43 class SwNodeIndex;
44 class GraphicObject;
45 class GraphicAttr;
46 class SwPageDesc;
47 class SwFrameFormats;
48 class SwRegionRects;
49 class SwTextNode;
50 namespace sw { struct Extent; }
51 namespace basegfx::utils { class B2DClipState; }
52 
53 #define FAR_AWAY (SAL_MAX_INT32 - 20000) // initial position of a Fly
54 constexpr tools::Long BROWSE_HEIGHT = 56700 * 10; // 10 Meters
55 #define GRFNUM_NO 0
56 #define GRFNUM_YES 1
57 #define GRFNUM_REPLACE 2
58 
59 void AppendObjs( const SwFrameFormats *pTable, sal_uLong nIndex,
60  SwFrame *pFrame, SwPageFrame *pPage, SwDoc* doc );
61 
62 void AppendObjsOfNode(SwFrameFormats const* pTable, sal_uLong nIndex,
63  SwFrame * pFrame, SwPageFrame * pPage, SwDoc * pDoc,
64  std::vector<sw::Extent>::const_iterator const* pIter,
65  std::vector<sw::Extent>::const_iterator const* pEnd,
66  SwTextNode const* pFirstNode, SwTextNode const* pLastNode);
67 
68 void RemoveHiddenObjsOfNode(SwTextNode const& rNode,
69  std::vector<sw::Extent>::const_iterator const* pIter,
70  std::vector<sw::Extent>::const_iterator const* pEnd,
71  SwTextNode const* pFirstNode, SwTextNode const* pLastNode);
72 
73 bool IsAnchoredObjShown(SwTextFrame const& rFrame, SwFormatAnchor const& rAnchor);
74 
75 void AppendAllObjs(const SwFrameFormats* pTable, const SwFrame* pSib);
76 
77 // draw background with brush or graphics
78 // The 6th parameter indicates that the method should consider background
79 // transparency, saved in the color of the brush item.
80 void DrawGraphic(
81  const SvxBrushItem *,
83  const SwRect &rOrg,
84  const SwRect &rOut,
85  const sal_uInt8 nGrfNum = GRFNUM_NO,
86  const bool bConsiderBackgroundTransparency = false );
89  const SwRect& rOriginalLayoutRect,
90  const SwRegionRects& rPaintRegion,
91  const basegfx::utils::B2DClipState& rClipState,
92  vcl::RenderContext& rOut);
93 
94 // RotGrfFlyFrame: Adapted to rotation
96  vcl::RenderContext & rOutputDevice,
97  GraphicObject const& rGraphicObj,
98  GraphicAttr const& rGraphicAttr,
99  const basegfx::B2DHomMatrix& rGraphicTransform,
100  const OUString& rName,
101  const OUString& rTitle,
102  const OUString& rDescription);
103 
104 // MM02 new VOC and primitive-based version
106  vcl::RenderContext & rOutputDevice,
108  const basegfx::B2DHomMatrix& rGraphicTransform,
109  const OUString& rName,
110  const OUString& rTitle,
111  const OUString& rDescription);
112 
113 // method to align rectangle.
114 // Created declaration here to avoid <extern> declarations
115 void SwAlignRect( SwRect &rRect, const SwViewShell *pSh, const vcl::RenderContext* pRenderContext );
116 
117 // method to align graphic rectangle
118 // Created declaration here to avoid <extern> declarations
119 void SwAlignGrfRect( SwRect *pGrfRect, const vcl::RenderContext &rOut );
120 
131 void PaintCharacterBorder(const SwFont& rFont, const SwRect& rPaintArea, const bool bVerticalLayout,
132  const bool bVerticalLayoutLRBT, const bool bJoinWithPrev,
133  const bool bJoinWithNext);
134 
135 // get Fly, if no List is given use the current shell
136 // Implementation in feshview.cxx
137 SwFlyFrame *GetFlyFromMarked( const SdrMarkList *pLst, SwViewShell *pSh );
138 
139 SwFrame *SaveContent( SwLayoutFrame *pLay, SwFrame *pStart = nullptr );
140 void RestoreContent( SwFrame *pSav, SwLayoutFrame *pParent, SwFrame *pSibling );
141 
142 // Get ContentNodes, create ContentFrames, and add them to LayFrame.
143 void InsertCnt_( SwLayoutFrame *pLay, SwDoc *pDoc, sal_uLong nIndex,
144  bool bPages = false, sal_uLong nEndIndex = 0,
145  SwFrame *pPrv = nullptr, sw::FrameMode eMode = sw::FrameMode::New);
146 
147 // Creation of frames for a specific section (uses InsertCnt_)
148 void MakeFrames( SwDoc *pDoc, const SwNodeIndex &rSttIdx,
149  const SwNodeIndex &rEndIdx );
150 
151 extern bool bObjsDirect;
152 
153 // for FlyCnts, see SwFlyAtContentFrame::MakeAll()
155 
156 // for table settings via keyboard
158 tools::Long CalcHeightWithFlys( const SwFrame *pFrame );
159 
160 namespace sw {
161  bool IsRightPageByNumber(SwRootFrame const& rLayout, sal_uInt16 nPageNum);
163  {
165  public:
166  FlyCreationSuppressor(bool isAlreadySuppressedAllowed = true);
168  };
169 } // namespace sw
170 
171 SwPageFrame *InsertNewPage( SwPageDesc &rDesc, SwFrame *pUpper,
172  bool isRightPage, bool bFirst, bool bInsertEmpty, bool bFootnote,
173  SwFrame *pSibling, bool bVeryFirstPage = false );
174 
175 // connect Flys with page
176 void RegistFlys( SwPageFrame*, const SwLayoutFrame* );
177 
178 // notification of Fly's background if needed
179 void Notify( SwFlyFrame *pFly, SwPageFrame *pOld, const SwRect &rOld,
180  const SwRect* pOldRect = nullptr );
181 
182 void Notify_Background( const SdrObject* pObj,
183  SwPageFrame* pPage,
184  const SwRect& rRect,
185  const PrepareHint eHint,
186  const bool bInva );
187 
188 const SwFrame* GetVirtualUpper( const SwFrame* pFrame, const Point& rPos );
189 
190 bool Is_Lower_Of( const SwFrame *pCurrFrame, const SdrObject* pObj );
191 
192 // FIXME: EasyHack (refactoring): rename method and parameter name in all files
193 const SwFrame *FindContext( const SwFrame *pFrame, SwFrameType nAdditionalContextTyp );
194 
195 bool IsFrameInSameContext( const SwFrame *pInnerFrame, const SwFrame *pFrame );
196 
197 const SwFrame * FindPage( const SwRect &rRect, const SwFrame *pPage );
198 
211 SwFrame* GetFrameOfModify( const SwRootFrame* pLayout,
212  sw::BroadcastingModify const&,
213  SwFrameType const nFrameType,
214  const SwPosition *pPos = nullptr,
215  std::pair<Point, bool> const* pViewPosAndCalcFrame = nullptr);
216 
217 // Should extra data (redline stroke, line numbers) be painted?
218 bool IsExtraData( const SwDoc *pDoc );
219 
220 // #i11760# - method declaration <CalcContent(..)>
221 void CalcContent( SwLayoutFrame *pLay, bool bNoColl = false );
222 
223 // Notify classes memorize the current sizes in their constructor and do
224 // the necessary notifications in their destructor if needed
226 {
227 protected:
230  const SwRect maPrt;
236 
237 public:
238  SwFrameNotify( SwFrame *pFrame );
239  ~SwFrameNotify() COVERITY_NOEXCEPT_FALSE;
240 
241  const SwRect &getFrameArea() const { return maFrame; }
242  void SetInvaKeep() { mbInvaKeep = true; }
243 };
244 
246 {
248 
249 public:
250  SwLayNotify( SwLayoutFrame *pLayFrame );
251  ~SwLayNotify();
252 
253  void SetLowersComplete( bool b ) { m_bLowersComplete = b; }
254  bool IsLowersComplete() const { return m_bLowersComplete; }
255 };
256 
257 class SwFlyNotify : public SwLayNotify
258 {
261 
262 public:
263  SwFlyNotify( SwFlyFrame *pFlyFrame );
264  ~SwFlyNotify();
265 };
266 
268 {
269 private:
270  // #i11859#
273 
274  // #i25029#
277 
278  void ImplDestroy();
279 
280 public:
281  SwContentNotify( SwContentFrame *pContentFrame );
283 
284  // #i25029#
286  {
287  mbInvalidatePrevPrtArea = true;
288  }
289 
291  {
292  mbBordersJoinedWithPrev = true;
293  }
294 };
295 
296 // SwBorderAttrs encapsulates the calculation for margin attributes including
297 // border. The whole class is cached.
298 
299 // WARNING! If more attributes should be cached also adjust the method
300 // Modify::Modify!
301 class SwBorderAttrs final : public SwCacheObj
302 {
305  // #i96772#
306  std::shared_ptr<SvxLRSpaceItem> m_rLR;
310 
311  // the following bool values set the cached values to INVALID - until they
312  // are calculated for the first time
313  bool m_bTopLine : 1;
314  bool m_bBottomLine : 1;
315  bool m_bLeftLine : 1;
316  bool m_bRightLine : 1;
317  bool m_bTop : 1;
318  bool m_bBottom : 1;
319  bool m_bLine : 1;
320  bool m_bLineSpacing : 1;
321 
322  bool m_bIsLine : 1; // border on at least one side?
323 
324  bool m_bCacheGetLine : 1; // cache GetTopLine(), GetBottomLine()?
325  bool m_bCachedGetTopLine : 1; // is GetTopLine() cached?
326  bool m_bCachedGetBottomLine : 1; // is GetBottomLine() cached?
327  // Booleans indicate that <m_bJoinedWithPrev> and <m_bJoinedWithNext> are
328  // cached and valid.
329  // Caching depends on value of <m_bCacheGetLine>.
330  mutable bool m_bCachedJoinedWithPrev : 1;
331  mutable bool m_bCachedJoinedWithNext : 1;
332  // Booleans indicate that borders are joined with previous/next frame.
335 
336  // The cached values (un-defined until calculated for the first time)
337  sal_uInt16 m_nTopLine,
339  m_nLeftLine,
340  m_nRightLine,
341  m_nTop,
342  m_nBottom,
346 
347  // only calculate lines and shadow
348  void CalcTopLine_();
349  void CalcBottomLine_();
350  void CalcLeftLine_();
351  void CalcRightLine_();
352 
353  // lines + shadow + margin
354  void CalcTop_();
355  void CalcBottom_();
356 
357  void IsLine_();
358 
359  // #i25029# - If <_pPrevFrame> is set, its value is taken for testing, if
360  // borders/shadow have to be joined with previous frame.
361  void GetTopLine_ ( const SwFrame& _rFrame,
362  const SwFrame* _pPrevFrame );
363  void GetBottomLine_( const SwFrame& _rFrame );
364 
365  // calculate cached values <m_bJoinedWithPrev> and <m_bJoinedWithNext>
366  // #i25029# - If <_pPrevFrame> is set, its value is taken for testing, if
367  // borders/shadow have to be joined with previous frame.
368  void CalcJoinedWithPrev( const SwFrame& _rFrame,
369  const SwFrame* _pPrevFrame );
370  void CalcJoinedWithNext( const SwFrame& _rFrame );
371 
372  // internal helper method for CalcJoinedWithPrev and CalcJoinedWithNext
373  bool JoinWithCmp( const SwFrame& _rCallerFrame,
374  const SwFrame& _rCmpFrame ) const;
375 
376  // Are the left and right line and the LRSpace equal?
377  bool CmpLeftRight( const SwBorderAttrs &rCmpAttrs,
378  const SwFrame *pCaller,
379  const SwFrame *pCmp ) const;
380 
381  // tdf#125300 line spacing before cell border
382  void CalcLineSpacing_();
383 
384 public:
385  SwBorderAttrs( const sw::BorderCacheOwner* pOwner, const SwFrame *pConstructor );
386  virtual ~SwBorderAttrs() override;
387 
388  const SwAttrSet &GetAttrSet() const { return m_rAttrSet; }
389  const SvxULSpaceItem &GetULSpace() const { return m_rUL; }
390  const SvxBoxItem &GetBox() const { return m_rBox; }
391  const SvxShadowItem &GetShadow() const { return m_rShadow; }
392 
393  inline sal_uInt16 CalcTopLine() const;
394  inline sal_uInt16 CalcBottomLine() const;
395  inline sal_uInt16 CalcLeftLine() const;
396  inline sal_uInt16 CalcRightLine() const;
397  inline sal_uInt16 CalcTop() const;
398  inline sal_uInt16 CalcBottom() const;
399  inline sal_uInt16 CalcLineSpacing() const;
400  tools::Long CalcLeft( const SwFrame *pCaller ) const;
401  tools::Long CalcRight( const SwFrame *pCaller ) const;
402 
403  inline bool IsLine() const;
404 
405  const Size &GetSize() const { return m_aFrameSize; }
406 
407  // Should upper (or lower) border be evaluated for this frame?
408  // #i25029# - If <_pPrevFrame> is set, its value is taken for testing, if
409  // borders/shadow have to be joined with previous frame.
410  inline sal_uInt16 GetTopLine ( const SwFrame& _rFrame,
411  const SwFrame* _pPrevFrame = nullptr ) const;
412  inline sal_uInt16 GetBottomLine( const SwFrame& _rFrame ) const;
413  inline void SetGetCacheLine( bool bNew ) const;
414 
415  // Accessors for cached values <m_bJoinedWithPrev> and <m_bJoinedWithNext>
416  // #i25029# - If <_pPrevFrame> is set, its value is taken for testing, if
417  // borders/shadow have to be joined with previous frame.
418  bool JoinedWithPrev( const SwFrame& _rFrame,
419  const SwFrame* _pPrevFrame = nullptr ) const;
420  bool JoinedWithNext( const SwFrame& _rFrame ) const;
421 };
422 
423 class SwBorderAttrAccess final : public SwCacheAccess
424 {
425  const SwFrame *m_pConstructor; //opt: for passing on to SwBorderAttrs
426 
427  virtual SwCacheObj *NewObj() override;
428 
429 public:
430  SwBorderAttrAccess( SwCache &rCache, const SwFrame *pOwner );
431 
432  SwBorderAttrs *Get();
433 };
434 
435 // Iterator for draw objects of a page. The objects will be iterated sorted by
436 // their Z-order. Iterating is not cheap since for each operation the _whole_
437 // SortArray needs to be traversed.
439 {
442 
443 public:
444  SwOrderIter( const SwPageFrame *pPage );
445 
446  void Current( const SdrObject *pNew ) { m_pCurrent = pNew; }
447  const SdrObject *operator()() const { return m_pCurrent; }
448  void Top();
449  const SdrObject *Bottom();
450  const SdrObject *Next();
451  void Prev();
452 };
453 
455 {
457  static bool s_bLocked;
458 
459 public:
461  {
462  if ( ++StackHack::s_nCnt > 50 )
463  StackHack::s_bLocked = true;
464  }
466  {
467  if ( --StackHack::s_nCnt < 5 )
468  StackHack::s_bLocked = false;
469  }
470 
471  static bool IsLocked() { return StackHack::s_bLocked; }
472  static sal_uInt8 Count() { return StackHack::s_nCnt; }
473 };
474 
475 // Should upper (or lower) border be evaluated for this frame?
476 // #i25029# - If <_pPrevFrame> is set, its value is taken for testing, if
477 // borders/shadow have to be joined with previous frame.
478 inline sal_uInt16 SwBorderAttrs::GetTopLine ( const SwFrame& _rFrame,
479  const SwFrame* _pPrevFrame ) const
480 {
481  if ( !m_bCachedGetTopLine || _pPrevFrame )
482  {
483  const_cast<SwBorderAttrs*>(this)->GetTopLine_( _rFrame, _pPrevFrame );
484  }
485  return m_nGetTopLine;
486 }
487 inline sal_uInt16 SwBorderAttrs::GetBottomLine( const SwFrame& _rFrame ) const
488 {
489  if ( !m_bCachedGetBottomLine )
490  const_cast<SwBorderAttrs*>(this)->GetBottomLine_( _rFrame );
491  return m_nGetBottomLine;
492 }
493 inline void SwBorderAttrs::SetGetCacheLine( bool bNew ) const
494 {
495  const_cast<SwBorderAttrs*>(this)->m_bCacheGetLine = bNew;
496  const_cast<SwBorderAttrs*>(this)->m_bCachedGetBottomLine =
497  const_cast<SwBorderAttrs*>(this)->m_bCachedGetTopLine = false;
498  // invalidate cache for values <m_bJoinedWithPrev> and <m_bJoinedWithNext>
499  m_bCachedJoinedWithPrev = false;
500  m_bCachedJoinedWithNext = false;
501 }
502 
503 inline sal_uInt16 SwBorderAttrs::CalcTopLine() const
504 {
505  if ( m_bTopLine )
506  const_cast<SwBorderAttrs*>(this)->CalcTopLine_();
507  return m_nTopLine;
508 }
509 inline sal_uInt16 SwBorderAttrs::CalcBottomLine() const
510 {
511  if ( m_bBottomLine )
512  const_cast<SwBorderAttrs*>(this)->CalcBottomLine_();
513  return m_nBottomLine;
514 }
515 inline sal_uInt16 SwBorderAttrs::CalcLeftLine() const
516 {
517  if ( m_bLeftLine )
518  const_cast<SwBorderAttrs*>(this)->CalcLeftLine_();
519  return m_nLeftLine;
520 }
521 inline sal_uInt16 SwBorderAttrs::CalcRightLine() const
522 {
523  if ( m_bRightLine )
524  const_cast<SwBorderAttrs*>(this)->CalcRightLine_();
525  return m_nRightLine;
526 }
527 inline sal_uInt16 SwBorderAttrs::CalcTop() const
528 {
529  if ( m_bTop )
530  const_cast<SwBorderAttrs*>(this)->CalcTop_();
531  return m_nTop;
532 }
533 inline sal_uInt16 SwBorderAttrs::CalcBottom() const
534 {
535  if ( m_bBottom )
536  const_cast<SwBorderAttrs*>(this)->CalcBottom_();
537  return m_nBottom;
538 }
539 inline sal_uInt16 SwBorderAttrs::CalcLineSpacing() const
540 {
541  if ( m_bLineSpacing )
542  const_cast<SwBorderAttrs*>(this)->CalcLineSpacing_();
543  return m_nLineSpacing;
544 }
545 inline bool SwBorderAttrs::IsLine() const
546 {
547  if ( m_bLine )
548  const_cast<SwBorderAttrs*>(this)->IsLine_();
549  return m_bIsLine;
550 }
551 
573 void GetSpacingValuesOfFrame( const SwFrame& rFrame,
574  SwTwips& onLowerSpacing,
575  SwTwips& onLineSpacing,
576  bool& obIsLineSpacingProportional,
577  bool bIdenticalStyles );
578 
591 const SwContentFrame* GetCellContent( const SwLayoutFrame& rCell_ );
592 
599 {
600 private:
601  const SwFrame* mpFrame;
603 
604 public:
605  SwDeletionChecker(const SwFrame* pFrame);
606 
612  bool HasBeenDeleted() const;
613 };
614 
615 #endif
616 
617 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
bool m_bJoinedWithPrev
Definition: frmtool.hxx:333
SwTwips mnFlyAnchorOfstNoWrap
Definition: frmtool.hxx:232
void SetInvalidatePrevPrtArea()
Definition: frmtool.hxx:285
sal_uInt16 CalcBottomLine() const
Definition: frmtool.hxx:509
static bool s_bLocked
Definition: frmtool.hxx:457
Base class of the Writer layout elements.
Definition: frame.hxx:315
sal_uInt16 m_nLineSpacing
Definition: frmtool.hxx:337
SwFlyNotify(SwFlyFrame *pFlyFrame)
Definition: frmtool.cxx:646
Represents the visualization of a paragraph.
Definition: txtfrm.hxx:158
FlyCreationSuppressor(bool isAlreadySuppressedAllowed=true)
Definition: frmtool.cxx:88
bool m_bBottom
Definition: frmtool.hxx:318
void RestoreContent(SwFrame *pSav, SwLayoutFrame *pParent, SwFrame *pSibling)
Definition: frmtool.cxx:2988
const SdrObject * Next()
Definition: frmtool.cxx:2713
const SvxBoxItem & m_rBox
Definition: frmtool.hxx:307
sal_uInt16 m_nLeftLine
Definition: frmtool.hxx:337
bool m_bTopLine
Definition: frmtool.hxx:313
void SetInvaKeep()
Definition: frmtool.hxx:242
Marks a position in the document model.
Definition: pam.hxx:35
void InsertCnt_(SwLayoutFrame *pLay, SwDoc *pDoc, sal_uLong nIndex, bool bPages=false, sal_uLong nEndIndex=0, SwFrame *pPrv=nullptr, sw::FrameMode eMode=sw::FrameMode::New)
Definition: frmtool.cxx:1464
SwFrame * mpFrame
Definition: frmtool.hxx:228
const SwFrame * m_pConstructor
Definition: frmtool.hxx:425
const SwFrame * FindContext(const SwFrame *pFrame, SwFrameType nAdditionalContextTyp)
provides the area of a frame in that no Fly from another area can overlap
Definition: frmtool.cxx:3599
const SwPageFrame * m_pPage
Definition: frmtool.hxx:440
bool m_bRightLine
Definition: frmtool.hxx:316
void Notify(SwFlyFrame *pFly, SwPageFrame *pOld, const SwRect &rOld, const SwRect *pOldRect=nullptr)
Notify the background based on the difference between old and new rectangle.
Definition: frmtool.cxx:3210
const SwRect & getFrameArea() const
Definition: frmtool.hxx:241
~SwFrameNotify() COVERITY_NOEXCEPT_FALSE
Definition: frmtool.cxx:128
SwTwips mnHeightOfLastLine
Definition: frmtool.hxx:272
void Current(const SdrObject *pNew)
Definition: frmtool.hxx:446
const SwFrame * FindPage(const SwRect &rRect, const SwFrame *pPage)
Definition: frmtool.cxx:3696
sal_uIntPtr sal_uLong
long Long
std::shared_ptr< SvxLRSpaceItem > m_rLR
Definition: frmtool.hxx:306
bool IsAnchoredObjShown(SwTextFrame const &rFrame, SwFormatAnchor const &rAnchor)
Definition: frmtool.cxx:1303
tools::Long CalcRight(const SwFrame *pCaller) const
Definition: frmtool.cxx:2277
bool mbValidSize
Definition: frmtool.hxx:235
bool JoinedWithPrev(const SwFrame &_rFrame, const SwFrame *_pPrevFrame=nullptr) const
Definition: frmtool.cxx:2557
Definition: doc.hxx:188
SwLayNotify(SwLayoutFrame *pLayFrame)
Definition: frmtool.cxx:434
bool m_bJoinedWithNext
Definition: frmtool.hxx:334
void Prev()
Definition: frmtool.cxx:2741
const SvxShadowItem & GetShadow() const
Definition: frmtool.hxx:391
SwFrameNotify(SwFrame *pFrame)
Definition: frmtool.cxx:107
bool JoinWithCmp(const SwFrame &_rCallerFrame, const SwFrame &_rCmpFrame) const
Definition: frmtool.cxx:2469
~StackHack()
Definition: frmtool.hxx:465
sal_uInt16 CalcTopLine() const
Definition: frmtool.hxx:503
void SetBordersJoinedWithPrev()
Definition: frmtool.hxx:290
Dialog to specify the properties of date form field.
sal_uInt16 m_nRightLine
Definition: frmtool.hxx:337
void Top()
Definition: frmtool.cxx:2660
Of course Writer needs its own rectangles.
Definition: swrect.hxx:34
void Notify_Background(const SdrObject *pObj, SwPageFrame *pPage, const SwRect &rRect, const PrepareHint eHint, const bool bInva)
Definition: frmtool.cxx:3357
The root element of a Writer document layout.
Definition: rootfrm.hxx:82
SwFlyFrame * GetFlyFromMarked(const SdrMarkList *pLst, SwViewShell *pSh)
Definition: feshview.cxx:139
static bool bFootnote
Definition: insfnote.cxx:33
bool bSetCompletePaintOnInvalidate
Definition: frmtool.cxx:102
virtual SwCacheObj * NewObj() override
Can be use in NewObj.
Definition: frmtool.cxx:2643
void CalcBottomLine_()
Definition: frmtool.cxx:2411
tools::Long CalcHeightWithFlys(const SwFrame *pFrame)
Definition: tabfrm.cxx:4010
sal_uInt16 CalcLeftLine() const
Definition: frmtool.hxx:515
bool m_bLineSpacing
Definition: frmtool.hxx:320
void SwAlignRect(SwRect &rRect, const SwViewShell *pSh, const vcl::RenderContext *pRenderContext)
Function is also used outside this file.
Definition: paintfrm.cxx:1124
bool IsLowersComplete() const
Definition: frmtool.hxx:254
bool m_bCachedGetBottomLine
Definition: frmtool.hxx:326
bool DrawFillAttributes(const drawinglayer::attribute::SdrAllFillAttributesHelperPtr &rFillAttributes, const SwRect &rOriginalLayoutRect, const SwRegionRects &rPaintRegion, const basegfx::utils::B2DClipState &rClipState, vcl::RenderContext &rOut)
Definition: paintfrm.cxx:1723
const SvxShadowItem & m_rShadow
Definition: frmtool.hxx:308
bool IsFrameInSameContext(const SwFrame *pInnerFrame, const SwFrame *pFrame)
Definition: frmtool.cxx:3613
std::shared_ptr< SdrAllFillAttributesHelper > SdrAllFillAttributesHelperPtr
Definition: format.hxx:41
void CalcJoinedWithNext(const SwFrame &_rFrame)
Definition: frmtool.cxx:2526
void CalcTopLine_()
Definition: frmtool.cxx:2404
void CalcJoinedWithPrev(const SwFrame &_rFrame, const SwFrame *_pPrevFrame)
Definition: frmtool.cxx:2491
bool mbHadFollow
Definition: frmtool.hxx:233
void GetTopLine_(const SwFrame &_rFrame, const SwFrame *_pPrevFrame)
Definition: frmtool.cxx:2581
bool m_bLeftLine
Definition: frmtool.hxx:315
void DrawGraphic(const SvxBrushItem *, vcl::RenderContext &, const SwRect &rOrg, const SwRect &rOut, const sal_uInt8 nGrfNum=GRFNUM_NO, const bool bConsiderBackgroundTransparency=false)
Definition: paintfrm.cxx:1814
const SwAttrSet & m_rAttrSet
Definition: frmtool.hxx:303
bool mbInvaKeep
Definition: frmtool.hxx:234
const SwRect aFrameAndSpace
Definition: frmtool.hxx:260
const SwRect maPrt
Definition: frmtool.hxx:230
const SwRect maFrame
Definition: frmtool.hxx:229
SwFrame * SaveContent(SwLayoutFrame *pLay, SwFrame *pStart=nullptr)
Definition: frmtool.cxx:2826
helper class to check if a frame has been deleted during an operation WARNING! This should only be us...
Definition: frmtool.hxx:598
void MakeFrames(SwDoc *pDoc, const SwNodeIndex &rSttIdx, const SwNodeIndex &rEndIdx)
Definition: frmtool.cxx:1984
void CalcLineSpacing_()
Definition: frmtool.cxx:2613
Specific frame formats (frames, DrawObjects).
FrameMode
Definition: txtfrm.hxx:103
const bool m_wasAlreadySuppressed
Definition: frmtool.hxx:164
void CalcContent(SwLayoutFrame *pLay, bool bNoColl=false)
Definition: fly.cxx:1411
void SetGetCacheLine(bool bNew) const
Definition: frmtool.hxx:493
PrepareHint
Definition: swtypes.hxx:194
SwBorderAttrs(const sw::BorderCacheOwner *pOwner, const SwFrame *pConstructor)
Definition: frmtool.cxx:2189
sal_uInt16 GetBottomLine(const SwFrame &_rFrame) const
Definition: frmtool.hxx:487
SwFrameType
Definition: frame.hxx:75
SwFrame * GetFrameOfModify(const SwRootFrame *pLayout, sw::BroadcastingModify const &, SwFrameType const nFrameType, const SwPosition *pPos=nullptr, std::pair< Point, bool > const *pViewPosAndCalcFrame=nullptr)
bool m_bLowersComplete
Definition: frmtool.hxx:247
tools::Long CalcLeft(const SwFrame *pCaller) const
Definition: frmtool.cxx:2339
sal_uInt16 m_nTopLine
Definition: frmtool.hxx:337
bool CmpLeftRight(const SwBorderAttrs &rCmpAttrs, const SwFrame *pCaller, const SwFrame *pCmp) const
Definition: frmtool.cxx:2458
SwOrderIter(const SwPageFrame *pPage)
Definition: frmtool.cxx:2654
FlyAnchors.
Definition: fmtanchr.hxx:34
const SvxBoxItem & GetBox() const
Definition: frmtool.hxx:390
const SwFrame * mpFrame
Definition: frmtool.hxx:601
SwBorderAttrAccess(SwCache &rCache, const SwFrame *pOwner)
Definition: frmtool.cxx:2635
static sal_uInt8 Count()
Definition: frmtool.hxx:472
void PaintCharacterBorder(const SwFont &rFont, const SwRect &rPaintArea, const bool bVerticalLayout, const bool bVerticalLayoutLRBT, const bool bJoinWithPrev, const bool bJoinWithNext)
Paint border around a run of characters using frame painting code.
Definition: paintfrm.cxx:4865
constexpr tools::Long BROWSE_HEIGHT
Definition: frmtool.hxx:54
const SwAttrSet & GetAttrSet() const
Definition: frmtool.hxx:388
sal_uInt16 m_nBottom
Definition: frmtool.hxx:337
sal_uInt16 GetTopLine(const SwFrame &_rFrame, const SwFrame *_pPrevFrame=nullptr) const
Definition: frmtool.hxx:478
const SdrObject * m_pCurrent
Definition: frmtool.hxx:441
Marks a node in the document model.
Definition: ndindex.hxx:31
bool IsExtraData(const SwDoc *pDoc)
Definition: frmtool.cxx:3858
Bookkeeping helper for SwCache caching writer borders.
bool m_bCachedJoinedWithNext
Definition: frmtool.hxx:331
bool IsLine() const
Definition: frmtool.hxx:545
bool bObjsDirect
Definition: frmtool.cxx:101
SwContentNotify(SwContentFrame *pContentFrame)
Definition: frmtool.cxx:761
bool mbBordersJoinedWithPrev
Definition: frmtool.hxx:276
A page of the document layout.
Definition: pagefrm.hxx:57
bool mbChkHeightOfLastLine
Definition: frmtool.hxx:271
SwDeletionChecker(const SwFrame *pFrame)
Definition: frmtool.cxx:3963
tools::Long SwTwips
Definition: swtypes.hxx:52
void CalcRightLine_()
Definition: frmtool.cxx:2425
sal_uInt16 CalcTop() const
Definition: frmtool.hxx:527
void ImplDestroy()
Definition: frmtool.cxx:786
SwBorderAttrs * Get()
Definition: frmtool.cxx:2649
bool m_bCacheGetLine
Definition: frmtool.hxx:324
SwTwips mnFlyAnchorOfst
Definition: frmtool.hxx:231
void CalcTop_()
Definition: frmtool.cxx:2253
const SwContentFrame * GetCellContent(const SwLayoutFrame &rCell_)
method to get the content of the table cell
Definition: frmtool.cxx:3937
SwTextNode is a paragraph in the document model.
Definition: ndtxt.hxx:79
SwPageFrame * pOldPage
Definition: frmtool.hxx:259
const sw::BroadcastingModify * mpRegIn
Definition: frmtool.hxx:602
bool Is_Lower_Of(const SwFrame *pCurrFrame, const SdrObject *pObj)
Definition: frmtool.cxx:3567
general base class for all free-flowing frames
Definition: flyfrm.hxx:78
void IsLine_()
Definition: frmtool.cxx:2432
bool IsRightPageByNumber(SwRootFrame const &rLayout, sal_uInt16 nPageNum)
Definition: frmtool.cxx:3078
sal_uInt16 CalcLineSpacing() const
Definition: frmtool.hxx:539
const Size m_aFrameSize
Definition: frmtool.hxx:309
void AppendAllObjs(const SwFrameFormats *pTable, const SwFrame *pSib)
Definition: frmtool.cxx:1355
const SvxULSpaceItem & m_rUL
Definition: frmtool.hxx:304
unsigned char sal_uInt8
const SdrObject * operator()() const
Definition: frmtool.hxx:447
The Cache object base class Users of the Cache must derive a class from the SwCacheObj and store thei...
Definition: swcache.hxx:134
void SetLowersComplete(bool b)
Definition: frmtool.hxx:253
void SwAlignGrfRect(SwRect *pGrfRect, const vcl::RenderContext &rOut)
Method to pixel-align rectangle for drawing graphic object.
Definition: paintfrm.cxx:1230
sal_uInt16 CalcBottom() const
Definition: frmtool.hxx:533
sal_uInt16 m_nBottomLine
Definition: frmtool.hxx:337
void GetBottomLine_(const SwFrame &_rFrame)
Definition: frmtool.cxx:2598
void CalcLeftLine_()
Definition: frmtool.cxx:2418
SwPageFrame * InsertNewPage(SwPageDesc &rDesc, SwFrame *pUpper, bool isRightPage, bool bFirst, bool bInsertEmpty, bool bFootnote, SwFrame *pSibling, bool bVeryFirstPage=false)
Definition: frmtool.cxx:3089
bool JoinedWithNext(const SwFrame &_rFrame) const
Definition: frmtool.cxx:2569
bool mbInvalidatePrevPrtArea
Definition: frmtool.hxx:275
bool HasBeenDeleted() const
return true if mpFrame != 0 and mpFrame is not client of pRegIn false otherwise
Definition: frmtool.cxx:3975
void GetSpacingValuesOfFrame(const SwFrame &rFrame, SwTwips &onLowerSpacing, SwTwips &onLineSpacing, bool &obIsLineSpacingProportional, bool bIdenticalStyles)
method to determine the spacing values of a frame
Definition: frmtool.cxx:3901
const SwFrame * GetVirtualUpper(const SwFrame *pFrame, const Point &rPos)
Provides the Upper of an anchor in paragraph-bound objects.
Definition: frmtool.cxx:3535
bool m_bBottomLine
Definition: frmtool.hxx:314
static bool IsLocked()
Definition: frmtool.hxx:471
void RemoveHiddenObjsOfNode(SwTextNode const &rNode, std::vector< sw::Extent >::const_iterator const *pIter, std::vector< sw::Extent >::const_iterator const *pEnd, SwTextNode const *pFirstNode, SwTextNode const *pLastNode)
Definition: frmtool.cxx:1183
void AppendObjsOfNode(SwFrameFormats const *pTable, sal_uLong nIndex, SwFrame *pFrame, SwPageFrame *pPage, SwDoc *pDoc, std::vector< sw::Extent >::const_iterator const *pIter, std::vector< sw::Extent >::const_iterator const *pEnd, SwTextNode const *pFirstNode, SwTextNode const *pLastNode)
Definition: frmtool.cxx:1205
const Size & GetSize() const
Definition: frmtool.hxx:405
void paintGraphicUsingPrimitivesHelper(vcl::RenderContext &rOutputDevice, GraphicObject const &rGraphicObj, GraphicAttr const &rGraphicAttr, const basegfx::B2DHomMatrix &rGraphicTransform, const OUString &rName, const OUString &rTitle, const OUString &rDescription)
Definition: notxtfrm.cxx:916
bool m_bIsLine
Definition: frmtool.hxx:322
Access class for the Cache.
Definition: swcache.hxx:195
A layout frame is a frame that contains other frames (m_pLower), e.g. SwPageFrame or SwTabFrame...
Definition: layfrm.hxx:35
void RegistFlys(SwPageFrame *, const SwLayoutFrame *)
Definition: frmtool.cxx:3194
bool m_bCachedGetTopLine
Definition: frmtool.hxx:325
#define GRFNUM_NO
Definition: frmtool.hxx:55
sal_uInt16 m_nGetBottomLine
Definition: frmtool.hxx:337
virtual ~SwBorderAttrs() override
Definition: frmtool.cxx:2243
sal_uInt16 m_nTop
Definition: frmtool.hxx:337
void AppendObjs(const SwFrameFormats *pTable, sal_uLong nIndex, SwFrame *pFrame, SwPageFrame *pPage, SwDoc *doc)
Definition: frmtool.cxx:1252
sal_uInt16 m_nGetTopLine
Definition: frmtool.hxx:337
const SdrObject * Bottom()
Definition: frmtool.cxx:2686
bool m_bCachedJoinedWithPrev
Definition: frmtool.hxx:330
const SvxULSpaceItem & GetULSpace() const
Definition: frmtool.hxx:389
static sal_uInt8 s_nCnt
Definition: frmtool.hxx:456
sal_uInt16 CalcRightLine() const
Definition: frmtool.hxx:521
void CalcBottom_()
Definition: frmtool.cxx:2271
SwTwips CalcRowRstHeight(SwLayoutFrame *pRow)
Definition: frmtool.cxx:3680