LibreOffice Module sw (master)  1
porfly.cxx
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 #include <dcontact.hxx>
21 #include <dflyobj.hxx>
22 #include <pam.hxx>
23 #include "portab.hxx"
24 #include <flyfrm.hxx>
25 #include <rootfrm.hxx>
26 #include <frmfmt.hxx>
27 #include <viewsh.hxx>
28 #include <textboxhelper.hxx>
29 
30 #include <vcl/outdev.hxx>
31 #include <editeng/lrspitem.hxx>
32 #include <editeng/ulspitem.hxx>
33 #include <sal/log.hxx>
34 #include <fmtanchr.hxx>
35 #include <fmtflcnt.hxx>
36 #include <fmtornt.hxx>
37 #include <frmatr.hxx>
38 #include <flyfrms.hxx>
39 #include <txatbase.hxx>
40 #include "porfly.hxx"
41 #include "porlay.hxx"
42 #include "inftxt.hxx"
43 
44 #include <sortedobjs.hxx>
45 
51 {
52 }
53 
55 {
56  OSL_ENSURE( GetFix() >= rInf.X(), "SwFlyPortion::Format" );
57 
58  // tabs must be expanded
59  if( rInf.GetLastTab() )
60  rInf.GetLastTab()->FormatEOL( rInf );
61 
62  rInf.GetLast()->FormatEOL( rInf );
63  PrtWidth( static_cast<sal_uInt16>(GetFix() - rInf.X() + PrtWidth()) );
64  if( !Width() )
65  {
66  OSL_ENSURE( Width(), "+SwFlyPortion::Format: a fly is a fly is a fly" );
67  Width(1);
68  }
69 
70  // resetting
71  rInf.SetFly( nullptr );
72  rInf.Width( rInf.RealWidth() );
73  rInf.GetParaPortion()->SetFly();
74 
75  // trailing blank:
76  if( rInf.GetIdx() < TextFrameIndex(rInf.GetText().getLength())
77  && TextFrameIndex(1) < rInf.GetIdx()
78  && !rInf.GetRest()
79  && ' ' == rInf.GetChar( rInf.GetIdx() )
80  && ' ' != rInf.GetChar(rInf.GetIdx() - TextFrameIndex(1))
81  && ( !rInf.GetLast() || !rInf.GetLast()->IsBreakPortion() ) )
82  {
83  SetBlankWidth( rInf.GetTextSize(OUString(' ')).Width() );
85  }
86 
87  const sal_uInt16 nNewWidth = static_cast<sal_uInt16>(rInf.X() + PrtWidth());
88  if( rInf.Width() <= nNewWidth )
89  {
90  Truncate();
91  if( nNewWidth > rInf.Width() )
92  {
93  PrtWidth( nNewWidth - rInf.Width() );
94  SetFixWidth( PrtWidth() );
95  }
96  return true;
97  }
98  return false;
99 }
100 
102 {
103  bool bFull = rInf.Width() < rInf.X() + PrtWidth();
104 
105  if( bFull )
106  {
107  // If the line is full, and the character-bound frame is at
108  // the beginning of a line
109  // If it is not possible to side step into a Fly
110  // "Begin of line" criteria ( ! rInf.X() ) has to be extended.
111  // KerningPortions at beginning of line, e.g., for grid layout
112  // must be considered.
113  const SwLinePortion* pLastPor = rInf.GetLast();
114  const sal_uInt16 nLeft = ( pLastPor &&
115  ( pLastPor->IsKernPortion() ||
116  pLastPor->IsErgoSumPortion() ) ) ?
117  pLastPor->Width() :
118  0;
119 
120  if( nLeft == rInf.X() && ! rInf.GetFly() )
121  {
122  Width( rInf.Width() );
123  bFull = false; // so that notes can still be placed in this line
124  }
125  else
126  {
127  if( !rInf.GetFly() )
128  rInf.SetNewLine( true );
129  Width(0);
130  SetAscent(0);
132  if( rInf.GetLast() )
133  rInf.GetLast()->FormatEOL( rInf );
134 
135  return bFull;
136  }
137  }
138 
139  rInf.GetParaPortion()->SetFly();
140  return bFull;
141 }
142 
143 //TODO: improve documentation
153  TextFrameIndex const nStart, TextFrameIndex const nEnd)
154 {
155  SwSortedObjs *pObjs = nullptr;
156  if ( nullptr != (pObjs = GetDrawObjs()) )
157  {
158  for ( size_t i = 0; GetDrawObjs() && i < pObjs->size(); ++i )
159  {
160  // Consider changed type of <SwSortedList> entries
161  SwAnchoredObject* pAnchoredObj = (*pObjs)[i];
162  const SwFormatAnchor& rAnch = pAnchoredObj->GetFrameFormat().GetAnchor();
163  if (rAnch.GetAnchorId() == RndStdIds::FLY_AS_CHAR)
164  {
165  const SwPosition* pPos = rAnch.GetContentAnchor();
166  TextFrameIndex const nIndex(MapModelToViewPos(*pPos));
167  if (nStart <= nIndex && nIndex < nEnd)
168  {
169  if ( dynamic_cast< const SwFlyFrame *>( pAnchoredObj ) != nullptr )
170  {
171  RemoveFly( static_cast<SwFlyFrame*>(pAnchoredObj) );
172  pNew->AppendFly( static_cast<SwFlyFrame*>(pAnchoredObj) );
173  }
174  else if ( dynamic_cast< const SwAnchoredDrawObject *>( pAnchoredObj ) != nullptr )
175  {
176  RemoveDrawObj( *pAnchoredObj );
177  pNew->AppendDrawObj( *pAnchoredObj );
178  }
179  --i;
180  }
181  }
182  }
183  }
184 }
185 
187 {
188  sw::MergedAttrIter iter(*this);
189  for (SwTextAttr const* pHt = iter.NextAttr(); pHt; pHt = iter.NextAttr())
190  {
191  if( RES_TXTATR_FLYCNT == pHt->Which() )
192  {
193  SwFrameFormat* pFrameFormat = pHt->GetFlyCnt().GetFrameFormat();
194  if( pFrameFormat == pSearch )
195  {
196  return TextFrameIndex(pHt->GetStart());
197  }
198  }
199  }
200  OSL_ENSURE(false, "CalcFlyPos: Not Found!");
202 }
203 
205 {
206  // Baseline output
207  // Re-paint everything at a CompletePaint call
208  SwRect aRepaintRect(rInf.GetPaintRect());
209 
210  if(rInf.GetTextFrame()->IsRightToLeft())
211  rInf.GetTextFrame()->SwitchLTRtoRTL(aRepaintRect);
212 
213  if(rInf.GetTextFrame()->IsVertical())
214  rInf.GetTextFrame()->SwitchHorizontalToVertical(aRepaintRect);
215 
216  if((m_pFly->IsCompletePaint() ||
217  m_pFly->getFrameArea().IsOver(aRepaintRect)) &&
219  {
220  SwRect aRect(m_pFly->getFrameArea());
221  if(!m_pFly->IsCompletePaint())
222  aRect.Intersection_(aRepaintRect);
223 
224  // GetFlyFrame() may change the layout mode at the output device.
225  {
226  SwLayoutModeModifier aLayoutModeModifier(*rInf.GetOut());
227  m_pFly->PaintSwFrame(const_cast<vcl::RenderContext&>(*rInf.GetOut()), aRect);
228  }
229  const_cast<SwTextPaintInfo&>(rInf).GetRefDev()->SetLayoutMode(rInf.GetOut()->GetLayoutMode());
230 
231  // As the OutputDevice might be anything, the font must be re-selected.
232  // Being in const method should not be a problem.
233  const_cast<SwTextPaintInfo&>(rInf).SelectFont();
234 
235  assert(rInf.GetVsh());
236  SAL_WARN_IF(rInf.GetVsh()->GetOut() != rInf.GetOut(), "sw.core", "SwFlyCntPortion::Paint: Outdev has changed");
237  if(rInf.GetVsh())
238  const_cast<SwTextPaintInfo&>(rInf).SetOut(rInf.GetVsh()->GetOut());
239  }
240 }
241 
243 {
244  if(!m_pContact->GetAnchorFrame())
245  {
246  // No direct positioning of the drawing object is needed
247  m_pContact->ConnectToLayout();
248  }
249 }
250 
255  : m_bMax(false)
256  , m_eAlign(sw::LineAlign::NONE)
257 {
260 }
261 
263  : m_pFly(pFly)
264 {
265  SAL_WARN_IF(!pFly, "sw.core", "SwFlyCntPortion::SwFlyCntPortion: no SwFlyInContentFrame!");
266 }
267 
269  : m_pContact(nullptr)
270 {
272  assert(m_pContact);
273 }
274 
275 sw::FlyContentPortion* sw::FlyContentPortion::Create(const SwTextFrame& rFrame, SwFlyInContentFrame* pFly, const Point& rBase, long nLnAscent, long nLnDescent, long nFlyAsc, long nFlyDesc, AsCharFlags nFlags)
276 {
277  auto pNew(new sw::FlyContentPortion(pFly));
278  pNew->SetBase(rFrame, rBase, nLnAscent, nLnDescent, nFlyAsc, nFlyDesc, nFlags | AsCharFlags::UlSpace | AsCharFlags::Init);
279  return pNew;
280 }
281 
282 sw::DrawFlyCntPortion* sw::DrawFlyCntPortion::Create(const SwTextFrame& rFrame, SwFrameFormat const & rFormat, const Point& rBase, long nLnAscent, long nLnDescent, long nFlyAsc, long nFlyDesc, AsCharFlags nFlags)
283 {
284  auto pNew(new DrawFlyCntPortion(rFormat));
285  pNew->SetBase(rFrame, rBase, nLnAscent, nLnDescent, nFlyAsc, nFlyDesc, nFlags | AsCharFlags::UlSpace | AsCharFlags::Init);
286  return pNew;
287 }
288 
291 
293 {
294  return m_pFly->GetVirtDrawObj();
295 }
296 
298 {
299  SdrObject* pSdrObj;
300  // Determine drawing object ('master' or 'virtual') by frame
301  pSdrObj = m_pContact->GetDrawObjectByAnchorFrame(rFrame);
302  if(!pSdrObj)
303  {
304  SAL_WARN("sw.core", "SwFlyCntPortion::SetBase(..) - No drawing object found by <GetDrawContact()->GetDrawObjectByAnchorFrame( rFrame )>");
305  pSdrObj = m_pContact->GetMaster();
306  }
307 
308  // Call <SwAnchoredDrawObject::MakeObjPos()> to assure that flag at
309  // the <DrawFrameFormat> and at the <SwAnchoredDrawObject> instance are
310  // correctly set
311  if(pSdrObj)
312  m_pContact->GetAnchoredObj(pSdrObj)->MakeObjPos();
313  return pSdrObj;
314 }
315 
322 void SwFlyCntPortion::SetBase( const SwTextFrame& rFrame, const Point &rBase,
323  long nLnAscent, long nLnDescent,
324  long nFlyAsc, long nFlyDesc,
325  AsCharFlags nFlags )
326 {
327  // Use new class to position object
328  // Determine drawing object
329  SdrObject* pSdrObj = GetSdrObj(rFrame);
330  if (!pSdrObj)
331  return;
332 
333  // position object
335  *pSdrObj,
336  rBase, nFlags,
337  nLnAscent, nLnDescent, nFlyAsc, nFlyDesc );
338 
339  // Scope of local variable <aObjPosInProgress>
340  {
341  SwObjPositioningInProgress aObjPosInProgress( *pSdrObj );
342  aObjPositioning.CalcPosition();
343  }
344 
345  SwFrameFormat* pShape = FindFrameFormat(pSdrObj);
346  const SwFormatAnchor& rAnchor(pShape->GetAnchor());
347  if (rAnchor.GetAnchorId() == RndStdIds::FLY_AS_CHAR)
348  {
349  // This is an inline draw shape, see if it has a textbox.
351  if (pTextBox)
352  {
353  // It has, so look up its text rectangle, and adjust the position
354  // of the textbox accordingly.
355  // Both rectangles are absolute, SwFormatHori/VertOrient's position
356  // is relative to the print area of the anchor text frame.
357  tools::Rectangle aTextRectangle = SwTextBoxHelper::getTextRectangle(pShape);
358 
359  SwFormatHoriOrient aHori(pTextBox->GetHoriOrient());
361  sal_Int32 nLeft = aTextRectangle.getX() - rFrame.getFrameArea().Left()
362  - rFrame.getFramePrintArea().Left();
363  aHori.SetPos(nLeft);
364 
365  SwFormatVertOrient aVert(pTextBox->GetVertOrient());
367  sal_Int32 const nTop = aTextRectangle.getY() - rFrame.getFrameArea().Top()
368  - rFrame.getFramePrintArea().Top();
369  aVert.SetPos(nTop);
370 
371  pTextBox->LockModify();
372  pTextBox->SetFormatAttr(aHori);
373  pTextBox->SetFormatAttr(aVert);
374  pTextBox->UnlockModify();
375  }
376  }
377 
378  SetAlign( aObjPositioning.GetLineAlignment() );
379 
380  m_aRef = aObjPositioning.GetAnchorPos();
381  if( nFlags & AsCharFlags::Rotate )
382  SvXSize( aObjPositioning.GetObjBoundRectInclSpacing().SSize() );
383  else
384  SvLSize( aObjPositioning.GetObjBoundRectInclSpacing().SSize() );
385  if( Height() )
386  {
387  // GetRelPosY returns the relative position to baseline (if 0, the
388  // upper border of the FlyCnt if on the baseline of a line)
389  SwTwips nRelPos = aObjPositioning.GetRelPosY();
390  if ( nRelPos < 0 )
391  {
392  nAscent = static_cast<sal_uInt16>(-nRelPos);
393  if( nAscent > Height() )
394  Height( nAscent );
395  }
396  else
397  {
398  nAscent = 0;
399  Height( Height() + static_cast<sal_uInt16>(nRelPos) );
400  }
401  }
402  else
403  {
404  Height( 1 );
405  nAscent = 0;
406  }
407 }
408 
409 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
vcl::RenderContext * GetOut() const
Definition: viewsh.hxx:341
const SwVirtFlyDrawObj * GetVirtDrawObj() const
Definition: fly.cxx:2727
Represents the visualization of a paragraph.
Definition: txtfrm.hxx:149
SwViewShell * GetVsh()
Definition: inftxt.hxx:228
virtual void Paint(const SwTextPaintInfo &rInf) const override
Definition: porfly.cxx:204
const SwSortedObjs * GetDrawObjs() const
Definition: frame.hxx:543
Marks a position in the document model.
Definition: pam.hxx:35
static FlyContentPortion * Create(const SwTextFrame &rFrame, SwFlyInContentFrame *pFly, const Point &rBase, long nAscent, long nDescent, long nFlyAsc, long nFlyDesc, AsCharFlags nFlags)
Definition: porfly.cxx:275
void SetBlankWidth(const sal_uInt16 nNew)
Definition: porfly.hxx:38
const SwFormatVertOrient & GetVertOrient(bool=true) const
Definition: fmtornt.hxx:106
void SwitchHorizontalToVertical(SwRect &rRect) const
Calculates the coordinates of a rectangle when switching from horizontal to vertical layout...
Definition: txtfrm.cxx:483
void SetFixWidth(const sal_uInt16 nNew)
Definition: porglue.hxx:38
virtual bool Format(SwTextFormatInfo &rInf) override
Definition: porfly.cxx:54
const SwRect & getFramePrintArea() const
Definition: frame.hxx:176
SwTabPortion * GetLastTab()
Definition: inftxt.hxx:620
void MoveFlyInCnt(SwTextFrame *pNew, TextFrameIndex nStart, TextFrameIndex nEnd)
Rewires FlyInContentFrame, if nEnd > Index >= nStart.
Definition: porfly.cxx:152
ComplexTextLayoutFlags GetLayoutMode() const
void SetLen(TextFrameIndex const nLen)
Definition: porlin.hxx:74
long SwTwips
Definition: swtypes.hxx:49
sal_uInt16 RealWidth() const
Definition: inftxt.hxx:554
Dialog to specify the properties of date form field.
Definition: accfrmobj.cxx:38
Helper class for notify that positioning of an anchored object is in progress.
sal_uInt16 GetFix() const
Definition: porglue.hxx:56
Of course Writer needs its own rectangles.
Definition: swrect.hxx:34
virtual void PaintSwFrame(vcl::RenderContext &rRenderContext, SwRect const &, SwPrintData const *const pPrintData=nullptr) const override
Definition: paintfrm.cxx:3867
long getY() const
SwPosSize GetTextSize(OutputDevice *pOut, const SwScriptInfo *pSI, const OUString &rText, TextFrameIndex nIdx, TextFrameIndex nLen) const
Definition: inftxt.cxx:387
static SwFrameFormat * getOtherTextBoxFormat(const SwFrameFormat *pFormat, sal_uInt16 nType)
If we have an associated TextFrame, then return that.
virtual bool Format(SwTextFormatInfo &rInf) override
Definition: porfly.cxx:101
SwTextAttr const * NextAttr(SwTextNode const **ppNode=nullptr)
Definition: txtfrm.cxx:97
void SetFly()
Definition: porlay.hxx:280
SwRect & Intersection_(const SwRect &rRect)
Definition: swrect.cxx:78
wrapper class for the positioning of Writer fly frames and drawing objects
void AppendFly(SwFlyFrame *pNew)
Definition: fly.cxx:2134
void Top(const long nTop)
Definition: swrect.hxx:202
NONE
void SetHoriOrient(sal_Int16 eNew)
Definition: fmtornt.hxx:89
void RemoveDrawObj(SwAnchoredObject &_rToRemoveObj)
Definition: fly.cxx:2273
bool IsBreakPortion() const
Definition: porlin.hxx:113
const SwRect & getFrameArea() const
Definition: frame.hxx:175
virtual SdrObject * GetSdrObj(const SwTextFrame &) override
Definition: porfly.cxx:297
virtual ~FlyContentPortion() override
Definition: porfly.cxx:290
sal_Unicode GetChar(TextFrameIndex const nPos) const
Definition: inftxt.hxx:247
SwDrawContact * m_pContact
Definition: porfly.hxx:79
SwFrameFormat * FindFrameFormat(SdrObject *pObj)
The Get reverse way: seeks the format to the specified object.
Definition: dcontact.cxx:125
long getX() const
Style of a layout element.
Definition: frmfmt.hxx:57
virtual ~DrawFlyCntPortion() override
Definition: porfly.cxx:289
TextFrameIndex MapModelToViewPos(SwPosition const &rPos) const
Definition: txtfrm.cxx:1266
void SetBase(const SwTextFrame &rFrame, const Point &rBase, long nLnAscent, long nLnDescent, long nFlyAscent, long nFlyDescent, AsCharFlags nFlags)
After setting the RefPoints, the ascent needs to be recalculated because it is dependent on RelPos...
Definition: porfly.cxx:322
TextFrameIndex nLineLength
Definition: porlin.hxx:55
void RemoveFly(SwFlyFrame *pToRemove)
Definition: fly.cxx:2152
const SwFormatAnchor & GetAnchor(bool=true) const
Definition: fmtanchr.hxx:81
void SetVertOrient(sal_Int16 eNew)
Definition: fmtornt.hxx:56
RndStdIds GetAnchorId() const
Definition: fmtanchr.hxx:65
vcl::RenderContext * GetOut()
Definition: inftxt.hxx:231
const SwFormatHoriOrient & GetHoriOrient(bool=true) const
Definition: fmtornt.hxx:108
size_t size() const
Definition: sortedobjs.cxx:42
const SwPosition * GetContentAnchor() const
Definition: fmtanchr.hxx:67
SwParaPortion * GetParaPortion()
Definition: inftxt.hxx:128
void SetWhichPor(const PortionType nNew)
Definition: porlin.hxx:93
bool IsCompletePaint() const
Definition: frame.hxx:579
virtual void Paint(const SwTextPaintInfo &rInf) const override
Definition: porfly.cxx:242
int i
FlyAnchors.
Definition: fmtanchr.hxx:34
bool IsKernPortion() const
Definition: porlin.hxx:131
void UnlockModify()
Definition: calbck.hxx:217
sal_uInt16 Width() const
Definition: inftxt.hxx:533
void LockModify()
Definition: calbck.hxx:216
TextFrameIndex GetIdx() const
Definition: inftxt.hxx:278
void SSize(const Size &rNew)
Definition: swrect.hxx:176
void SetFly(SwFlyPortion *pNew)
Definition: inftxt.hxx:615
SwTextFrame * GetTextFrame()
Definition: inftxt.hxx:291
const OUString & GetText() const
Definition: inftxt.hxx:246
void Truncate()
Definition: porlin.hxx:195
virtual bool SetFormatAttr(const SfxPoolItem &rAttr)
Definition: format.cxx:458
SwTwips X() const
Definition: inftxt.hxx:385
void SwitchLTRtoRTL(SwRect &rRect) const
Calculates the coordinates of a rectangle when switching from LTR to RTL layout.
Definition: txtfrm.cxx:693
Base class for anything that can be part of a line in the Writer layout.
Definition: porlin.hxx:49
void Left(const long nLeft)
Definition: swrect.hxx:193
HFONT SelectFont(HDC hDC, HFONT hFont)
virtual SwFrameFormat & GetFrameFormat()=0
#define SAL_WARN_IF(condition, area, stream)
#define RES_DRAWFRMFMT
Definition: hintids.hxx:277
virtual void Paint(const SwTextPaintInfo &rInf) const override
class SwFlyPortion => we expect a frame-locale SwRect!
Definition: porfly.cxx:50
SwLinePortion * GetRest()
Definition: inftxt.hxx:581
bool IsErgoSumPortion() const
Definition: porlin.hxx:114
bool IsRightToLeft() const
Definition: frame.hxx:963
TextFrameIndex CalcFlyPos(SwFrameFormat const *pSearch)
Calculates the position of FlyInContentFrames.
Definition: porfly.cxx:186
sal_uInt16 Width() const
Definition: possiz.hxx:46
static tools::Rectangle getTextRectangle(SwFrameFormat *pShape, bool bAbsolute=true)
Return the textbox rectangle of a draw shape (in twips).
SwFlyCntPortion()
Use the dimensions of pFly->OutRect()
Definition: porfly.cxx:254
SwLinePortion * GetLast()
Definition: inftxt.hxx:566
#define RES_TXTATR_FLYCNT
Definition: hintids.hxx:151
static bool IsPaint(SdrObject *pObj, const SwViewShell *pSh)
Definition: paintfrm.cxx:3763
virtual void CallSwClientNotify(const SfxHint &rHint) const override
Definition: calbck.cxx:376
static DrawFlyCntPortion * Create(const SwTextFrame &rFrame, SwFrameFormat const &rFormat, const Point &rBase, long nAsc, long nDescent, long nFlyAsc, long nFlyDesc, AsCharFlags nFlags)
Definition: porfly.cxx:282
void AppendDrawObj(SwAnchoredObject &_rNewObj)
Definition: fly.cxx:2192
void SetAscent(const sal_uInt16 nNewAsc)
Definition: porlin.hxx:78
FlyContentPortion(SwFlyInContentFrame *pFly)
Definition: porfly.cxx:262
bool IsVertical() const
Definition: frame.hxx:949
virtual SdrObject * GetSdrObj(const SwTextFrame &) override
Definition: porfly.cxx:292
void SetNewLine(const bool bNew)
Definition: inftxt.hxx:584
#define SAL_WARN(area, stream)
const SwRect & GetPaintRect() const
Definition: inftxt.hxx:438
SwFlyInContentFrame * m_pFly
Definition: porfly.hxx:67
virtual void FormatEOL(SwTextFormatInfo &rInf)
Definition: porlin.cxx:269
sal_uInt16 PrtWidth() const
Definition: porlin.hxx:80
DrawFlyCntPortion(SwFrameFormat const &rFormat)
Definition: porfly.cxx:268
SwFlyPortion * GetFly()
Definition: inftxt.hxx:614
bool IsOver(const SwRect &rRect) const
Definition: swrect.cxx:125
SwViewShell * GetCurrShell() const
Definition: rootfrm.hxx:204
o3tl::strong_int< sal_Int32, struct Tag_TextFrameIndex > TextFrameIndex
Denotes a character index in a text frame at a layout level, after extent mapping from a text node at...
class for collecting anchored objects
Definition: sortedobjs.hxx:48
virtual void FormatEOL(SwTextFormatInfo &rInf) override
Definition: txttab.cxx:313
virtual void CalcPosition() override
calculate position for object position
const sal_Int32 COMPLETE_STRING
Definition: swtypes.hxx:61
SwRootFrame * getRootFrame()
Definition: frame.hxx:657