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, SwNodeOffset nIndex,
60  SwFrame *pFrame, SwPageFrame *pPage, SwDoc* doc );
61 
62 void AppendObjsOfNode(SwFrameFormats const* pTable, SwNodeOffset 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, SwNodeOffset nIndex,
144  bool bPages = false, SwNodeOffset nEndIndex = SwNodeOffset(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 private:
228  void ImplDestroy();
229 
230 protected:
233  const SwRect maPrt;
239 
240 public:
241  SwFrameNotify( SwFrame *pFrame );
242  ~SwFrameNotify();
243 
244  const SwRect &getFrameArea() const { return maFrame; }
245  void SetInvaKeep() { mbInvaKeep = true; }
246 };
247 
249 {
251 
252  void ImplDestroy();
253 
254 public:
255  SwLayNotify( SwLayoutFrame *pLayFrame );
256  ~SwLayNotify();
257 
258  void SetLowersComplete( bool b ) { m_bLowersComplete = b; }
259  bool IsLowersComplete() const { return m_bLowersComplete; }
260 };
261 
262 class SwFlyNotify : public SwLayNotify
263 {
266 
267  void ImplDestroy();
268 
269 public:
270  SwFlyNotify( SwFlyFrame *pFlyFrame );
271  ~SwFlyNotify();
272 };
273 
275 {
276 private:
277  // #i11859#
280 
281  // #i25029#
284 
285  void ImplDestroy();
286 
287 public:
288  SwContentNotify( SwContentFrame *pContentFrame );
290 
291  // #i25029#
293  {
294  mbInvalidatePrevPrtArea = true;
295  }
296 
298  {
299  mbBordersJoinedWithPrev = true;
300  }
301 };
302 
303 // SwBorderAttrs encapsulates the calculation for margin attributes including
304 // border. The whole class is cached.
305 
306 // WARNING! If more attributes should be cached also adjust the method
307 // Modify::Modify!
308 class SwBorderAttrs final : public SwCacheObj
309 {
312  // #i96772#
313  std::shared_ptr<SvxLRSpaceItem> m_rLR;
317 
318  // the following bool values set the cached values to INVALID - until they
319  // are calculated for the first time
320  bool m_bTopLine : 1;
321  bool m_bBottomLine : 1;
322  bool m_bLeftLine : 1;
323  bool m_bRightLine : 1;
324  bool m_bTop : 1;
325  bool m_bBottom : 1;
326  bool m_bLine : 1;
327  bool m_bLineSpacing : 1;
328 
329  bool m_bIsLine : 1; // border on at least one side?
330 
331  bool m_bCacheGetLine : 1; // cache GetTopLine(), GetBottomLine()?
332  bool m_bCachedGetTopLine : 1; // is GetTopLine() cached?
333  bool m_bCachedGetBottomLine : 1; // is GetBottomLine() cached?
334  // Booleans indicate that <m_bJoinedWithPrev> and <m_bJoinedWithNext> are
335  // cached and valid.
336  // Caching depends on value of <m_bCacheGetLine>.
337  mutable bool m_bCachedJoinedWithPrev : 1;
338  mutable bool m_bCachedJoinedWithNext : 1;
339  // Booleans indicate that borders are joined with previous/next frame.
342 
343  // The cached values (un-defined until calculated for the first time)
344  sal_uInt16 m_nTopLine,
346  m_nLeftLine,
347  m_nRightLine,
348  m_nTop,
349  m_nBottom,
353 
354  // only calculate lines and shadow
355  void CalcTopLine_();
356  void CalcBottomLine_();
357  void CalcLeftLine_();
358  void CalcRightLine_();
359 
360  // lines + shadow + margin
361  void CalcTop_();
362  void CalcBottom_();
363 
364  void IsLine_();
365 
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 GetTopLine_ ( const SwFrame& _rFrame,
369  const SwFrame* _pPrevFrame );
370  void GetBottomLine_( const SwFrame& _rFrame );
371 
372  // calculate cached values <m_bJoinedWithPrev> and <m_bJoinedWithNext>
373  // #i25029# - If <_pPrevFrame> is set, its value is taken for testing, if
374  // borders/shadow have to be joined with previous frame.
375  void CalcJoinedWithPrev( const SwFrame& _rFrame,
376  const SwFrame* _pPrevFrame );
377  void CalcJoinedWithNext( const SwFrame& _rFrame );
378 
379  // internal helper method for CalcJoinedWithPrev and CalcJoinedWithNext
380  bool JoinWithCmp( const SwFrame& _rCallerFrame,
381  const SwFrame& _rCmpFrame ) const;
382 
383  // Are the left and right line and the LRSpace equal?
384  bool CmpLeftRight( const SwBorderAttrs &rCmpAttrs,
385  const SwFrame *pCaller,
386  const SwFrame *pCmp ) const;
387 
388  // tdf#125300 line spacing before cell border
389  void CalcLineSpacing_();
390 
391 public:
392  SwBorderAttrs( const sw::BorderCacheOwner* pOwner, const SwFrame *pConstructor );
393  virtual ~SwBorderAttrs() override;
394 
395  const SwAttrSet &GetAttrSet() const { return m_rAttrSet; }
396  const SvxULSpaceItem &GetULSpace() const { return m_rUL; }
397  const SvxBoxItem &GetBox() const { return m_rBox; }
398  const SvxShadowItem &GetShadow() const { return m_rShadow; }
399 
400  inline sal_uInt16 CalcTopLine() const;
401  inline sal_uInt16 CalcBottomLine() const;
402  inline sal_uInt16 CalcLeftLine() const;
403  inline sal_uInt16 CalcRightLine() const;
404  inline sal_uInt16 CalcTop() const;
405  inline sal_uInt16 CalcBottom() const;
406  inline sal_uInt16 CalcLineSpacing() const;
407  tools::Long CalcLeft( const SwFrame *pCaller ) const;
408  tools::Long CalcRight( const SwFrame *pCaller ) const;
409 
410  inline bool IsLine() const;
411 
412  const Size &GetSize() const { return m_aFrameSize; }
413 
414  // Should upper (or lower) border be evaluated for this frame?
415  // #i25029# - If <_pPrevFrame> is set, its value is taken for testing, if
416  // borders/shadow have to be joined with previous frame.
417  inline sal_uInt16 GetTopLine ( const SwFrame& _rFrame,
418  const SwFrame* _pPrevFrame = nullptr ) const;
419  inline sal_uInt16 GetBottomLine( const SwFrame& _rFrame ) const;
420  inline void SetGetCacheLine( bool bNew ) const;
421 
422  // Accessors for cached values <m_bJoinedWithPrev> and <m_bJoinedWithNext>
423  // #i25029# - If <_pPrevFrame> is set, its value is taken for testing, if
424  // borders/shadow have to be joined with previous frame.
425  bool JoinedWithPrev( const SwFrame& _rFrame,
426  const SwFrame* _pPrevFrame = nullptr ) const;
427  bool JoinedWithNext( const SwFrame& _rFrame ) const;
428 };
429 
430 class SwBorderAttrAccess final : public SwCacheAccess
431 {
432  const SwFrame *m_pConstructor; //opt: for passing on to SwBorderAttrs
433 
434  virtual SwCacheObj *NewObj() override;
435 
436 public:
437  SwBorderAttrAccess( SwCache &rCache, const SwFrame *pOwner );
438 
439  SwBorderAttrs *Get();
440 };
441 
442 // Iterator for draw objects of a page. The objects will be iterated sorted by
443 // their Z-order. Iterating is not cheap since for each operation the _whole_
444 // SortArray needs to be traversed.
446 {
449 
450 public:
451  SwOrderIter( const SwPageFrame *pPage );
452 
453  void Current( const SdrObject *pNew ) { m_pCurrent = pNew; }
454  const SdrObject *operator()() const { return m_pCurrent; }
455  void Top();
456  const SdrObject *Bottom();
457  const SdrObject *Next();
458  void Prev();
459 };
460 
462 {
464  static bool s_bLocked;
465 
466 public:
468  {
469  if ( ++StackHack::s_nCnt > 50 )
470  StackHack::s_bLocked = true;
471  }
473  {
474  if ( --StackHack::s_nCnt < 5 )
475  StackHack::s_bLocked = false;
476  }
477 
478  static bool IsLocked() { return StackHack::s_bLocked; }
479  static sal_uInt8 Count() { return StackHack::s_nCnt; }
480 };
481 
482 // Should upper (or lower) border be evaluated for this frame?
483 // #i25029# - If <_pPrevFrame> is set, its value is taken for testing, if
484 // borders/shadow have to be joined with previous frame.
485 inline sal_uInt16 SwBorderAttrs::GetTopLine ( const SwFrame& _rFrame,
486  const SwFrame* _pPrevFrame ) const
487 {
488  if ( !m_bCachedGetTopLine || _pPrevFrame )
489  {
490  const_cast<SwBorderAttrs*>(this)->GetTopLine_( _rFrame, _pPrevFrame );
491  }
492  return m_nGetTopLine;
493 }
494 inline sal_uInt16 SwBorderAttrs::GetBottomLine( const SwFrame& _rFrame ) const
495 {
496  if ( !m_bCachedGetBottomLine )
497  const_cast<SwBorderAttrs*>(this)->GetBottomLine_( _rFrame );
498  return m_nGetBottomLine;
499 }
500 inline void SwBorderAttrs::SetGetCacheLine( bool bNew ) const
501 {
502  const_cast<SwBorderAttrs*>(this)->m_bCacheGetLine = bNew;
503  const_cast<SwBorderAttrs*>(this)->m_bCachedGetBottomLine =
504  const_cast<SwBorderAttrs*>(this)->m_bCachedGetTopLine = false;
505  // invalidate cache for values <m_bJoinedWithPrev> and <m_bJoinedWithNext>
506  m_bCachedJoinedWithPrev = false;
507  m_bCachedJoinedWithNext = false;
508 }
509 
510 inline sal_uInt16 SwBorderAttrs::CalcTopLine() const
511 {
512  if ( m_bTopLine )
513  const_cast<SwBorderAttrs*>(this)->CalcTopLine_();
514  return m_nTopLine;
515 }
516 inline sal_uInt16 SwBorderAttrs::CalcBottomLine() const
517 {
518  if ( m_bBottomLine )
519  const_cast<SwBorderAttrs*>(this)->CalcBottomLine_();
520  return m_nBottomLine;
521 }
522 inline sal_uInt16 SwBorderAttrs::CalcLeftLine() const
523 {
524  if ( m_bLeftLine )
525  const_cast<SwBorderAttrs*>(this)->CalcLeftLine_();
526  return m_nLeftLine;
527 }
528 inline sal_uInt16 SwBorderAttrs::CalcRightLine() const
529 {
530  if ( m_bRightLine )
531  const_cast<SwBorderAttrs*>(this)->CalcRightLine_();
532  return m_nRightLine;
533 }
534 inline sal_uInt16 SwBorderAttrs::CalcTop() const
535 {
536  if ( m_bTop )
537  const_cast<SwBorderAttrs*>(this)->CalcTop_();
538  return m_nTop;
539 }
540 inline sal_uInt16 SwBorderAttrs::CalcBottom() const
541 {
542  if ( m_bBottom )
543  const_cast<SwBorderAttrs*>(this)->CalcBottom_();
544  return m_nBottom;
545 }
546 inline sal_uInt16 SwBorderAttrs::CalcLineSpacing() const
547 {
548  if ( m_bLineSpacing )
549  const_cast<SwBorderAttrs*>(this)->CalcLineSpacing_();
550  return m_nLineSpacing;
551 }
552 inline bool SwBorderAttrs::IsLine() const
553 {
554  if ( m_bLine )
555  const_cast<SwBorderAttrs*>(this)->IsLine_();
556  return m_bIsLine;
557 }
558 
580 void GetSpacingValuesOfFrame( const SwFrame& rFrame,
581  SwTwips& onLowerSpacing,
582  SwTwips& onLineSpacing,
583  bool& obIsLineSpacingProportional,
584  bool bIdenticalStyles );
585 
598 const SwContentFrame* GetCellContent( const SwLayoutFrame& rCell_ );
599 
606 {
607 private:
608  const SwFrame* mpFrame;
610 
611 public:
612  SwDeletionChecker(const SwFrame* pFrame);
613 
619  bool HasBeenDeleted() const;
620 };
621 
622 #endif
623 
624 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
bool m_bJoinedWithPrev
Definition: frmtool.hxx:340
SwTwips mnFlyAnchorOfstNoWrap
Definition: frmtool.hxx:235
void SetInvalidatePrevPrtArea()
Definition: frmtool.hxx:292
sal_uInt16 CalcBottomLine() const
Definition: frmtool.hxx:516
static bool s_bLocked
Definition: frmtool.hxx:464
Base class of the Writer layout elements.
Definition: frame.hxx:315
sal_uInt16 m_nLineSpacing
Definition: frmtool.hxx:344
SwFlyNotify(SwFlyFrame *pFlyFrame)
Definition: frmtool.cxx:657
Represents the visualization of a paragraph.
Definition: txtfrm.hxx:159
const SwRect m_aFrameAndSpace
Definition: frmtool.hxx:265
FlyCreationSuppressor(bool isAlreadySuppressedAllowed=true)
Definition: frmtool.cxx:89
bool m_bBottom
Definition: frmtool.hxx:325
void RestoreContent(SwFrame *pSav, SwLayoutFrame *pParent, SwFrame *pSibling)
Definition: frmtool.cxx:3008
const SdrObject * Next()
Definition: frmtool.cxx:2733
const SvxBoxItem & m_rBox
Definition: frmtool.hxx:314
sal_uInt16 m_nLeftLine
Definition: frmtool.hxx:344
bool m_bTopLine
Definition: frmtool.hxx:320
void SetInvaKeep()
Definition: frmtool.hxx:245
Marks a position in the document model.
Definition: pam.hxx:36
SwFrame * mpFrame
Definition: frmtool.hxx:231
const SwFrame * m_pConstructor
Definition: frmtool.hxx:432
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:3619
const SwPageFrame * m_pPage
Definition: frmtool.hxx:447
bool m_bRightLine
Definition: frmtool.hxx:323
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:3230
void ImplDestroy()
Definition: frmtool.cxx:134
const SwRect & getFrameArea() const
Definition: frmtool.hxx:244
SwTwips mnHeightOfLastLine
Definition: frmtool.hxx:279
void Current(const SdrObject *pNew)
Definition: frmtool.hxx:453
const SwFrame * FindPage(const SwRect &rRect, const SwFrame *pPage)
Definition: frmtool.cxx:3716
long Long
std::shared_ptr< SvxLRSpaceItem > m_rLR
Definition: frmtool.hxx:313
bool IsAnchoredObjShown(SwTextFrame const &rFrame, SwFormatAnchor const &rAnchor)
Definition: frmtool.cxx:1318
tools::Long CalcRight(const SwFrame *pCaller) const
Definition: frmtool.cxx:2297
bool mbValidSize
Definition: frmtool.hxx:238
bool JoinedWithPrev(const SwFrame &_rFrame, const SwFrame *_pPrevFrame=nullptr) const
Definition: frmtool.cxx:2577
Definition: doc.hxx:188
SwLayNotify(SwLayoutFrame *pLayFrame)
Definition: frmtool.cxx:440
bool m_bJoinedWithNext
Definition: frmtool.hxx:341
void Prev()
Definition: frmtool.cxx:2761
const SvxShadowItem & GetShadow() const
Definition: frmtool.hxx:398
SwFrameNotify(SwFrame *pFrame)
Definition: frmtool.cxx:108
bool JoinWithCmp(const SwFrame &_rCallerFrame, const SwFrame &_rCmpFrame) const
Definition: frmtool.cxx:2489
~StackHack()
Definition: frmtool.hxx:472
sal_uInt16 CalcTopLine() const
Definition: frmtool.hxx:510
void SetBordersJoinedWithPrev()
Definition: frmtool.hxx:297
void AppendObjsOfNode(SwFrameFormats const *pTable, SwNodeOffset 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:1220
Dialog to specify the properties of date form field.
sal_uInt16 m_nRightLine
Definition: frmtool.hxx:344
void Top()
Definition: frmtool.cxx:2680
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:3377
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:103
virtual SwCacheObj * NewObj() override
Can be use in NewObj.
Definition: frmtool.cxx:2663
void CalcBottomLine_()
Definition: frmtool.cxx:2431
tools::Long CalcHeightWithFlys(const SwFrame *pFrame)
Definition: tabfrm.cxx:4010
sal_uInt16 CalcLeftLine() const
Definition: frmtool.hxx:522
bool m_bLineSpacing
Definition: frmtool.hxx:327
void SwAlignRect(SwRect &rRect, const SwViewShell *pSh, const vcl::RenderContext *pRenderContext)
Function is also used outside this file.
Definition: paintfrm.cxx:1126
bool IsLowersComplete() const
Definition: frmtool.hxx:259
bool m_bCachedGetBottomLine
Definition: frmtool.hxx:333
bool DrawFillAttributes(const drawinglayer::attribute::SdrAllFillAttributesHelperPtr &rFillAttributes, const SwRect &rOriginalLayoutRect, const SwRegionRects &rPaintRegion, const basegfx::utils::B2DClipState &rClipState, vcl::RenderContext &rOut)
Definition: paintfrm.cxx:1725
const SvxShadowItem & m_rShadow
Definition: frmtool.hxx:315
bool IsFrameInSameContext(const SwFrame *pInnerFrame, const SwFrame *pFrame)
Definition: frmtool.cxx:3633
std::shared_ptr< SdrAllFillAttributesHelper > SdrAllFillAttributesHelperPtr
Definition: format.hxx:41
void CalcJoinedWithNext(const SwFrame &_rFrame)
Definition: frmtool.cxx:2546
void CalcTopLine_()
Definition: frmtool.cxx:2424
void CalcJoinedWithPrev(const SwFrame &_rFrame, const SwFrame *_pPrevFrame)
Definition: frmtool.cxx:2511
bool mbHadFollow
Definition: frmtool.hxx:236
void GetTopLine_(const SwFrame &_rFrame, const SwFrame *_pPrevFrame)
Definition: frmtool.cxx:2601
bool m_bLeftLine
Definition: frmtool.hxx:322
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:1816
const SwAttrSet & m_rAttrSet
Definition: frmtool.hxx:310
bool mbInvaKeep
Definition: frmtool.hxx:237
const SwRect maPrt
Definition: frmtool.hxx:233
const SwRect maFrame
Definition: frmtool.hxx:232
SwFrame * SaveContent(SwLayoutFrame *pLay, SwFrame *pStart=nullptr)
Definition: frmtool.cxx:2846
helper class to check if a frame has been deleted during an operation WARNING! This should only be us...
Definition: frmtool.hxx:605
void MakeFrames(SwDoc *pDoc, const SwNodeIndex &rSttIdx, const SwNodeIndex &rEndIdx)
Definition: frmtool.cxx:2002
void CalcLineSpacing_()
Definition: frmtool.cxx:2633
Specific frame formats (frames, DrawObjects).
FrameMode
Definition: txtfrm.hxx:104
const bool m_wasAlreadySuppressed
Definition: frmtool.hxx:164
void CalcContent(SwLayoutFrame *pLay, bool bNoColl=false)
Definition: fly.cxx:1410
void SetGetCacheLine(bool bNew) const
Definition: frmtool.hxx:500
PrepareHint
Definition: swtypes.hxx:194
SwBorderAttrs(const sw::BorderCacheOwner *pOwner, const SwFrame *pConstructor)
Definition: frmtool.cxx:2209
sal_uInt16 GetBottomLine(const SwFrame &_rFrame) const
Definition: frmtool.hxx:494
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:250
tools::Long CalcLeft(const SwFrame *pCaller) const
Definition: frmtool.cxx:2359
sal_uInt16 m_nTopLine
Definition: frmtool.hxx:344
bool CmpLeftRight(const SwBorderAttrs &rCmpAttrs, const SwFrame *pCaller, const SwFrame *pCmp) const
Definition: frmtool.cxx:2478
SwOrderIter(const SwPageFrame *pPage)
Definition: frmtool.cxx:2674
FlyAnchors.
Definition: fmtanchr.hxx:34
const SvxBoxItem & GetBox() const
Definition: frmtool.hxx:397
const SwFrame * mpFrame
Definition: frmtool.hxx:608
SwBorderAttrAccess(SwCache &rCache, const SwFrame *pOwner)
Definition: frmtool.cxx:2655
static sal_uInt8 Count()
Definition: frmtool.hxx:479
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:4922
constexpr tools::Long BROWSE_HEIGHT
Definition: frmtool.hxx:54
const SwAttrSet & GetAttrSet() const
Definition: frmtool.hxx:395
sal_uInt16 m_nBottom
Definition: frmtool.hxx:344
sal_uInt16 GetTopLine(const SwFrame &_rFrame, const SwFrame *_pPrevFrame=nullptr) const
Definition: frmtool.hxx:485
const SdrObject * m_pCurrent
Definition: frmtool.hxx:448
SwPageFrame * m_pOldPage
Definition: frmtool.hxx:264
Marks a node in the document model.
Definition: ndindex.hxx:32
bool IsExtraData(const SwDoc *pDoc)
Definition: frmtool.cxx:3878
Bookkeeping helper for SwCache caching writer borders.
bool m_bCachedJoinedWithNext
Definition: frmtool.hxx:338
void ImplDestroy()
Definition: frmtool.cxx:475
bool IsLine() const
Definition: frmtool.hxx:552
bool bObjsDirect
Definition: frmtool.cxx:102
SwContentNotify(SwContentFrame *pContentFrame)
Definition: frmtool.cxx:777
bool mbBordersJoinedWithPrev
Definition: frmtool.hxx:283
A page of the document layout.
Definition: pagefrm.hxx:57
bool mbChkHeightOfLastLine
Definition: frmtool.hxx:278
SwDeletionChecker(const SwFrame *pFrame)
Definition: frmtool.cxx:3983
tools::Long SwTwips
Definition: swtypes.hxx:52
void CalcRightLine_()
Definition: frmtool.cxx:2445
sal_uInt16 CalcTop() const
Definition: frmtool.hxx:534
void ImplDestroy()
Definition: frmtool.cxx:802
SwBorderAttrs * Get()
Definition: frmtool.cxx:2669
bool m_bCacheGetLine
Definition: frmtool.hxx:331
SwTwips mnFlyAnchorOfst
Definition: frmtool.hxx:234
void ImplDestroy()
Definition: frmtool.cxx:666
void CalcTop_()
Definition: frmtool.cxx:2273
const SwContentFrame * GetCellContent(const SwLayoutFrame &rCell_)
method to get the content of the table cell
Definition: frmtool.cxx:3957
SwTextNode is a paragraph in the document model.
Definition: ndtxt.hxx:79
const sw::BroadcastingModify * mpRegIn
Definition: frmtool.hxx:609
void InsertCnt_(SwLayoutFrame *pLay, SwDoc *pDoc, SwNodeOffset nIndex, bool bPages=false, SwNodeOffset nEndIndex=SwNodeOffset(0), SwFrame *pPrv=nullptr, sw::FrameMode eMode=sw::FrameMode::New)
Definition: frmtool.cxx:1479
bool Is_Lower_Of(const SwFrame *pCurrFrame, const SdrObject *pObj)
Definition: frmtool.cxx:3587
general base class for all free-flowing frames
Definition: flyfrm.hxx:78
void IsLine_()
Definition: frmtool.cxx:2452
bool IsRightPageByNumber(SwRootFrame const &rLayout, sal_uInt16 nPageNum)
Definition: frmtool.cxx:3098
sal_uInt16 CalcLineSpacing() const
Definition: frmtool.hxx:546
const Size m_aFrameSize
Definition: frmtool.hxx:316
void AppendAllObjs(const SwFrameFormats *pTable, const SwFrame *pSib)
Definition: frmtool.cxx:1370
const SvxULSpaceItem & m_rUL
Definition: frmtool.hxx:311
unsigned char sal_uInt8
const SdrObject * operator()() const
Definition: frmtool.hxx:454
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:258
void SwAlignGrfRect(SwRect *pGrfRect, const vcl::RenderContext &rOut)
Method to pixel-align rectangle for drawing graphic object.
Definition: paintfrm.cxx:1232
sal_uInt16 CalcBottom() const
Definition: frmtool.hxx:540
sal_uInt16 m_nBottomLine
Definition: frmtool.hxx:344
void GetBottomLine_(const SwFrame &_rFrame)
Definition: frmtool.cxx:2618
void CalcLeftLine_()
Definition: frmtool.cxx:2438
SwPageFrame * InsertNewPage(SwPageDesc &rDesc, SwFrame *pUpper, bool isRightPage, bool bFirst, bool bInsertEmpty, bool bFootnote, SwFrame *pSibling, bool bVeryFirstPage=false)
Definition: frmtool.cxx:3109
bool JoinedWithNext(const SwFrame &_rFrame) const
Definition: frmtool.cxx:2589
bool mbInvalidatePrevPrtArea
Definition: frmtool.hxx:282
bool HasBeenDeleted() const
return true if mpFrame != 0 and mpFrame is not client of pRegIn false otherwise
Definition: frmtool.cxx:3995
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:3921
const SwFrame * GetVirtualUpper(const SwFrame *pFrame, const Point &rPos)
Provides the Upper of an anchor in paragraph-bound objects.
Definition: frmtool.cxx:3555
o3tl::strong_int< sal_Int32, struct Tag_SwNodeOffset > SwNodeOffset
Definition: nodeoffset.hxx:16
bool m_bBottomLine
Definition: frmtool.hxx:321
static bool IsLocked()
Definition: frmtool.hxx:478
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:1199
const Size & GetSize() const
Definition: frmtool.hxx:412
void AppendObjs(const SwFrameFormats *pTable, SwNodeOffset nIndex, SwFrame *pFrame, SwPageFrame *pPage, SwDoc *doc)
Definition: frmtool.cxx:1267
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:917
bool m_bIsLine
Definition: frmtool.hxx:329
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:3214
bool m_bCachedGetTopLine
Definition: frmtool.hxx:332
#define GRFNUM_NO
Definition: frmtool.hxx:55
sal_uInt16 m_nGetBottomLine
Definition: frmtool.hxx:344
virtual ~SwBorderAttrs() override
Definition: frmtool.cxx:2263
sal_uInt16 m_nTop
Definition: frmtool.hxx:344
sal_uInt16 m_nGetTopLine
Definition: frmtool.hxx:344
const SdrObject * Bottom()
Definition: frmtool.cxx:2706
bool m_bCachedJoinedWithPrev
Definition: frmtool.hxx:337
const SvxULSpaceItem & GetULSpace() const
Definition: frmtool.hxx:396
static sal_uInt8 s_nCnt
Definition: frmtool.hxx:463
sal_uInt16 CalcRightLine() const
Definition: frmtool.hxx:528
void CalcBottom_()
Definition: frmtool.cxx:2291
SwTwips CalcRowRstHeight(SwLayoutFrame *pRow)
Definition: frmtool.cxx:3700