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 #include <IDocumentState.hxx>
30 
31 #include <sal/log.hxx>
32 #include <fmtanchr.hxx>
33 #include <fmtflcnt.hxx>
34 #include <flyfrms.hxx>
35 #include <txatbase.hxx>
36 #include "porfly.hxx"
37 #include "porlay.hxx"
38 #include "inftxt.hxx"
39 
40 #include <sortedobjs.hxx>
41 #include <officecfg/Office/Common.hxx>
42 #include <PostItMgr.hxx>
43 
49 {
50 }
51 
53 {
54  OSL_ENSURE( GetFix() >= rInf.X(), "SwFlyPortion::Format" );
55 
56  // tabs must be expanded
57  if( rInf.GetLastTab() )
58  rInf.GetLastTab()->FormatEOL( rInf );
59 
60  rInf.GetLast()->FormatEOL( rInf );
61  PrtWidth( o3tl::narrowing<sal_uInt16>(GetFix() - rInf.X() + PrtWidth()) );
62  if( !Width() )
63  {
64  OSL_ENSURE( Width(), "+SwFlyPortion::Format: a fly is a fly is a fly" );
65  Width(1);
66  }
67 
68  // resetting
69  rInf.SetFly( nullptr );
70  rInf.Width( rInf.RealWidth() );
71  rInf.GetParaPortion()->SetFly();
72 
73  // trailing blank:
74  if( rInf.GetIdx() < TextFrameIndex(rInf.GetText().getLength())
75  && TextFrameIndex(1) < rInf.GetIdx()
76  && !rInf.GetRest()
77  && ' ' == rInf.GetChar( rInf.GetIdx() )
78  && ' ' != rInf.GetChar(rInf.GetIdx() - TextFrameIndex(1))
79  && ( !rInf.GetLast() || !rInf.GetLast()->IsBreakPortion() ) )
80  {
81  SetBlankWidth( rInf.GetTextSize(OUString(' ')).Width() );
83  }
84 
85  const sal_uInt16 nNewWidth = o3tl::narrowing<sal_uInt16>(rInf.X() + PrtWidth());
86  if( rInf.Width() <= nNewWidth )
87  {
88  Truncate();
89  if( nNewWidth > rInf.Width() )
90  {
91  PrtWidth( nNewWidth - rInf.Width() );
92  SetFixWidth( PrtWidth() );
93  }
94  return true;
95  }
96  return false;
97 }
98 
100 {
101  bool bFull = rInf.Width() < rInf.X() + PrtWidth();
102 
103  if( bFull )
104  {
105  // If the line is full, and the character-bound frame is at
106  // the beginning of a line
107  // If it is not possible to side step into a Fly
108  // "Begin of line" criteria ( ! rInf.X() ) has to be extended.
109  // KerningPortions at beginning of line, e.g., for grid layout
110  // must be considered.
111  const SwLinePortion* pLastPor = rInf.GetLast();
112  const sal_uInt16 nLeft = ( pLastPor &&
113  ( pLastPor->IsKernPortion() ||
114  pLastPor->IsErgoSumPortion() ) ) ?
115  pLastPor->Width() :
116  0;
117 
118  if( nLeft == rInf.X() && ! rInf.GetFly() )
119  {
120  Width( rInf.Width() );
121  bFull = false; // so that notes can still be placed in this line
122  }
123  else
124  {
125  if( !rInf.GetFly() )
126  rInf.SetNewLine( true );
127  Width(0);
128  SetAscent(0);
130  if( rInf.GetLast() )
131  rInf.GetLast()->FormatEOL( rInf );
132 
133  return bFull;
134  }
135  }
136 
137  rInf.GetParaPortion()->SetFly();
138  return bFull;
139 }
140 
141 //TODO: improve documentation
151  TextFrameIndex const nStart, TextFrameIndex const nEnd)
152 {
153  SwSortedObjs *pObjs = GetDrawObjs();
154  if ( nullptr == pObjs )
155  return;
156 
157  for ( size_t i = 0; GetDrawObjs() && i < pObjs->size(); ++i )
158  {
159  // Consider changed type of <SwSortedList> entries
160  SwAnchoredObject* pAnchoredObj = (*pObjs)[i];
161  const SwFormatAnchor& rAnch = pAnchoredObj->GetFrameFormat().GetAnchor();
162  if (rAnch.GetAnchorId() == RndStdIds::FLY_AS_CHAR)
163  {
164  const SwPosition* pPos = rAnch.GetContentAnchor();
166  if (nStart <= nIndex && nIndex < nEnd)
167  {
168  if ( auto pFlyFrame = pAnchoredObj->DynCastFlyFrame() )
169  {
170  RemoveFly( pFlyFrame );
171  pNew->AppendFly( pFlyFrame );
172  }
173  else if ( dynamic_cast< const SwAnchoredDrawObject *>( pAnchoredObj ) != nullptr )
174  {
175  RemoveDrawObj( *pAnchoredObj );
176  pNew->AppendDrawObj( *pAnchoredObj );
177  }
178  --i;
179  }
180  }
181  }
182 }
183 
185 {
186  sw::MergedAttrIter iter(*this);
187  for (SwTextAttr const* pHt = iter.NextAttr(); pHt; pHt = iter.NextAttr())
188  {
189  if( RES_TXTATR_FLYCNT == pHt->Which() )
190  {
191  SwFrameFormat* pFrameFormat = pHt->GetFlyCnt().GetFrameFormat();
192  if( pFrameFormat == pSearch )
193  {
194  return TextFrameIndex(pHt->GetStart());
195  }
196  }
197  }
198  OSL_ENSURE(false, "CalcFlyPos: Not Found!");
200 }
201 
203 {
204  // Baseline output
205  // Re-paint everything at a CompletePaint call
206  SwRect aRepaintRect(rInf.GetPaintRect());
207 
208  if(rInf.GetTextFrame()->IsRightToLeft())
209  rInf.GetTextFrame()->SwitchLTRtoRTL(aRepaintRect);
210 
211  if(rInf.GetTextFrame()->IsVertical())
212  rInf.GetTextFrame()->SwitchHorizontalToVertical(aRepaintRect);
213 
214  if(!((m_pFly->IsCompletePaint() ||
215  m_pFly->getFrameArea().Overlaps(aRepaintRect)) &&
217  return;
218 
219  SwRect aRect(m_pFly->getFrameArea());
220  if(!m_pFly->IsCompletePaint())
221  aRect.Intersection_(aRepaintRect);
222 
223  // GetFlyFrame() may change the layout mode at the output device.
224  {
225  SwLayoutModeModifier aLayoutModeModifier(*rInf.GetOut());
226  m_pFly->PaintSwFrame(const_cast<vcl::RenderContext&>(*rInf.GetOut()), aRect);
227 
228  // track changes: cross out the image, if it is deleted
229  const SwFrame *pFrame = m_pFly->Lower();
230  if ( GetAuthor() != std::string::npos && IsDeleted() && pFrame )
231  {
232  SwRect aPaintRect( pFrame->GetPaintArea() );
233 
234  const AntialiasingFlags nFormerAntialiasing( rInf.GetOut()->GetAntialiasing() );
235  const bool bIsAntiAliasing = officecfg::Office::Common::Drawinglayer::AntiAliasing::get();
236  if ( bIsAntiAliasing )
237  const_cast<vcl::RenderContext&>(*rInf.GetOut()).SetAntialiasing(AntialiasingFlags::Enable);
238  tools::Long startX = aPaintRect.Left( ), endX = aPaintRect.Right();
239  tools::Long startY = aPaintRect.Top( ), endY = aPaintRect.Bottom();
240  const_cast<vcl::RenderContext&>(*rInf.GetOut()).SetLineColor(
242  const_cast<vcl::RenderContext&>(*rInf.GetOut()).DrawLine(Point(startX, startY), Point(endX, endY));
243  const_cast<vcl::RenderContext&>(*rInf.GetOut()).DrawLine(Point(startX, endY), Point(endX, startY));
244  if ( bIsAntiAliasing )
245  const_cast<vcl::RenderContext&>(*rInf.GetOut()).SetAntialiasing(nFormerAntialiasing);
246  }
247  }
248  const_cast<SwTextPaintInfo&>(rInf).GetRefDev()->SetLayoutMode(rInf.GetOut()->GetLayoutMode());
249 
250  // As the OutputDevice might be anything, the font must be re-selected.
251  // Being in const method should not be a problem.
252  const_cast<SwTextPaintInfo&>(rInf).SelectFont();
253 
254  assert(rInf.GetVsh());
255  SAL_WARN_IF(rInf.GetVsh()->GetOut() != rInf.GetOut(), "sw.core", "SwFlyCntPortion::Paint: Outdev has changed");
256  if(rInf.GetVsh())
257  const_cast<SwTextPaintInfo&>(rInf).SetOut(rInf.GetVsh()->GetOut());
258 }
259 
261 {
262  if(!m_pContact->GetAnchorFrame())
263  {
264  // No direct positioning of the drawing object is needed
265  m_pContact->ConnectToLayout();
266  }
267 }
268 
273  : m_bMax(false)
274  , m_bDeleted(false)
275  , m_nAuthor(std::string::npos)
276  , m_eAlign(sw::LineAlign::NONE)
277 {
280 }
281 
283  : m_pFly(pFly)
284 {
285  SAL_WARN_IF(!pFly, "sw.core", "SwFlyCntPortion::SwFlyCntPortion: no SwFlyInContentFrame!");
286 }
287 
289  : m_pContact(nullptr)
290 {
292  assert(m_pContact);
293 }
294 
295 sw::FlyContentPortion* sw::FlyContentPortion::Create(const SwTextFrame& rFrame, SwFlyInContentFrame* pFly, const Point& rBase, tools::Long nLnAscent, tools::Long nLnDescent, tools::Long nFlyAsc, tools::Long nFlyDesc, AsCharFlags nFlags)
296 {
297  auto pNew(new sw::FlyContentPortion(pFly));
298  pNew->SetBase(rFrame, rBase, nLnAscent, nLnDescent, nFlyAsc, nFlyDesc, nFlags | AsCharFlags::UlSpace | AsCharFlags::Init);
299  return pNew;
300 }
301 
302 sw::DrawFlyCntPortion* sw::DrawFlyCntPortion::Create(const SwTextFrame& rFrame, SwFrameFormat const & rFormat, const Point& rBase, tools::Long nLnAscent, tools::Long nLnDescent, tools::Long nFlyAsc, tools::Long nFlyDesc, AsCharFlags nFlags)
303 {
304  auto pNew(new DrawFlyCntPortion(rFormat));
305  pNew->SetBase(rFrame, rBase, nLnAscent, nLnDescent, nFlyAsc, nFlyDesc, nFlags | AsCharFlags::UlSpace | AsCharFlags::Init);
306  return pNew;
307 }
308 
311 
313 {
314  return m_pFly->GetVirtDrawObj();
315 }
316 
318 {
319  SdrObject* pSdrObj;
320  // Determine drawing object ('master' or 'virtual') by frame
321  pSdrObj = m_pContact->GetDrawObjectByAnchorFrame(rFrame);
322  if(!pSdrObj)
323  {
324  SAL_WARN("sw.core", "SwFlyCntPortion::SetBase(..) - No drawing object found by <GetDrawContact()->GetDrawObjectByAnchorFrame( rFrame )>");
325  pSdrObj = m_pContact->GetMaster();
326  }
327 
328  // Call <SwAnchoredDrawObject::MakeObjPos()> to assure that flag at
329  // the <DrawFrameFormat> and at the <SwAnchoredDrawObject> instance are
330  // correctly set
331  if(pSdrObj)
332  m_pContact->GetAnchoredObj(pSdrObj)->MakeObjPos();
333  return pSdrObj;
334 }
335 
342 void SwFlyCntPortion::SetBase( const SwTextFrame& rFrame, const Point &rBase,
343  tools::Long nLnAscent, tools::Long nLnDescent,
344  tools::Long nFlyAsc, tools::Long nFlyDesc,
345  AsCharFlags nFlags )
346 {
347  // Use new class to position object
348  // Determine drawing object
349  SdrObject* pSdrObj = GetSdrObj(rFrame);
350  if (!pSdrObj)
351  return;
352 
353  // position object
355  *pSdrObj,
356  rBase, nFlags,
357  nLnAscent, nLnDescent, nFlyAsc, nFlyDesc );
358 
359  // Scope of local variable <aObjPosInProgress>
360  {
361  SwObjPositioningInProgress aObjPosInProgress( *pSdrObj );
362  aObjPositioning.CalcPosition();
363  }
364 
365  if (auto pFormat = FindFrameFormat(pSdrObj))
366  {
367  if (pFormat->GetOtherTextBoxFormats())
368  {
369  const bool bModified = pFormat->GetDoc()->getIDocumentState().IsEnableSetModified();
370  pFormat->GetDoc()->getIDocumentState().SetEnableSetModified(false);
372  pFormat->FindRealSdrObject());
373  pFormat->GetDoc()->getIDocumentState().SetEnableSetModified(bModified);
374  }
375  }
376 
377  SetAlign( aObjPositioning.GetLineAlignment() );
378 
379  m_aRef = aObjPositioning.GetAnchorPos();
380  if( nFlags & AsCharFlags::Rotate )
381  SvXSize( aObjPositioning.GetObjBoundRectInclSpacing().SSize() );
382  else
383  SvLSize( aObjPositioning.GetObjBoundRectInclSpacing().SSize() );
384  if( Height() )
385  {
386  // GetRelPosY returns the relative position to baseline (if 0, the
387  // upper border of the FlyCnt if on the baseline of a line)
388  SwTwips nRelPos = aObjPositioning.GetRelPosY();
389  if ( nRelPos < 0 )
390  {
391  mnAscent = -nRelPos;
392  if( mnAscent > Height() )
393  Height( mnAscent );
394  }
395  else
396  {
397  mnAscent = 0;
398  Height( Height() + o3tl::narrowing<sal_uInt16>(nRelPos) );
399  }
400  }
401  else
402  {
403  Height( 1 );
404  mnAscent = 0;
405  }
406 }
407 
408 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)
vcl::RenderContext * GetOut() const
Definition: viewsh.hxx:339
SwTwips PrtWidth() const
Definition: porlin.hxx:82
const SwVirtFlyDrawObj * GetVirtDrawObj() const
Definition: fly.cxx:2799
Base class of the Writer layout elements.
Definition: frame.hxx:314
Represents the visualization of a paragraph.
Definition: txtfrm.hxx:159
SwViewShell * GetVsh()
Definition: inftxt.hxx:221
sal_Int32 nIndex
virtual void Paint(const SwTextPaintInfo &rInf) const override
Definition: porfly.cxx:202
const SwSortedObjs * GetDrawObjs() const
Definition: frame.hxx:564
Marks a position in the document model.
Definition: pam.hxx:36
size_t GetAuthor() const
Definition: porfly.hxx:60
AntialiasingFlags
void SetBlankWidth(const sal_uInt16 nNew)
Definition: porfly.hxx:38
void SwitchHorizontalToVertical(SwRect &rRect) const
Calculates the coordinates of a rectangle when switching from horizontal to vertical layout...
Definition: txtfrm.cxx:476
void SetFixWidth(const sal_uInt16 nNew)
Definition: porglue.hxx:38
virtual bool Format(SwTextFormatInfo &rInf) override
Definition: porfly.cxx:52
long Long
SwTabPortion * GetLastTab()
Definition: inftxt.hxx:614
void MoveFlyInCnt(SwTextFrame *pNew, TextFrameIndex nStart, TextFrameIndex nEnd)
Rewires FlyInContentFrame, if nEnd > Index >= nStart.
Definition: porfly.cxx:150
void SetLen(TextFrameIndex const nLen)
Definition: porlin.hxx:76
sal_uInt16 RealWidth() const
Definition: inftxt.hxx:548
static Color GetColorAnchor(std::size_t aAuthorIndex)
Definition: PostItMgr.cxx:2179
Dialog to specify the properties of date form field.
Helper class for notify that positioning of an anchored object is in progress.
sal_uInt16 GetFix() const
Definition: porglue.hxx:58
vcl::text::ComplexTextLayoutFlags GetLayoutMode() const
Of course Writer needs its own rectangles.
Definition: swrect.hxx:34
virtual void CalcPosition() override
calculate position for object position
virtual void PaintSwFrame(vcl::RenderContext &rRenderContext, SwRect const &, SwPrintData const *const pPrintData=nullptr) const override
Definition: paintfrm.cxx:4042
SwPosSize GetTextSize(OutputDevice *pOut, const SwScriptInfo *pSI, const OUString &rText, TextFrameIndex nIdx, TextFrameIndex nLen) const
Definition: inftxt.cxx:382
void SetBase(const SwTextFrame &rFrame, const Point &rBase, tools::Long nLnAscent, tools::Long nLnDescent, tools::Long nFlyAscent, tools::Long nFlyDescent, AsCharFlags nFlags)
After setting the RefPoints, the ascent needs to be recalculated because it is dependent on RelPos...
Definition: porfly.cxx:342
AntialiasingFlags GetAntialiasing() const
virtual bool Format(SwTextFormatInfo &rInf) override
Definition: porfly.cxx:99
SwTextAttr const * NextAttr(SwTextNode const **ppNode=nullptr)
Definition: txtfrm.cxx:91
void SetFly()
Definition: porlay.hxx:301
SwRect & Intersection_(const SwRect &rRect)
Definition: swrect.cxx:81
SwRect GetPaintArea() const
|* The paintarea is the area, in which the content of a frame is allowed |* to be displayed...
Definition: ssfrm.cxx:593
wrapper class for the positioning of Writer fly frames and drawing objects
void AppendFly(SwFlyFrame *pNew)
Definition: fly.cxx:2190
NONE
void RemoveDrawObj(SwAnchoredObject &_rToRemoveObj)
Definition: fly.cxx:2333
bool IsBreakPortion() const
Definition: porlin.hxx:115
const SwRect & getFrameArea() const
Definition: frame.hxx:179
virtual SdrObject * GetSdrObj(const SwTextFrame &) override
Definition: porfly.cxx:317
virtual ~FlyContentPortion() override
Definition: porfly.cxx:310
A wrapper around SfxPoolItem to store the start position of (usually) a text portion, with an optional end.
Definition: txatbase.hxx:43
sal_Unicode GetChar(TextFrameIndex const nPos) const
Definition: inftxt.hxx:240
SwDrawContact * m_pContact
Definition: porfly.hxx:85
SwFrameFormat * FindFrameFormat(SdrObject *pObj)
The Get reverse way: seeks the format to the specified object.
Definition: dcontact.cxx:121
static DrawFlyCntPortion * Create(const SwTextFrame &rFrame, SwFrameFormat const &rFormat, const Point &rBase, tools::Long nAsc, tools::Long nDescent, tools::Long nFlyAsc, tools::Long nFlyDesc, AsCharFlags nFlags)
Definition: porfly.cxx:302
static FlyContentPortion * Create(const SwTextFrame &rFrame, SwFlyInContentFrame *pFly, const Point &rBase, tools::Long nAscent, tools::Long nDescent, tools::Long nFlyAsc, tools::Long nFlyDesc, AsCharFlags nFlags)
Definition: porfly.cxx:295
void DrawLine(OutputDevice &rDev, const basegfx::B2DPoint &rP1, const basegfx::B2DPoint &rP2, sal_uInt32 nWidth, SvxBorderLineStyle nDashing)
static void synchronizeGroupTextBoxProperty(bool pFunc(SwFrameFormat *, SdrObject *), SwFrameFormat *pFormat, SdrObject *pObj)
Calls the method given by pFunc with every textboxes of the group given by pFormat.
Style of a layout element.
Definition: frmfmt.hxx:59
virtual ~DrawFlyCntPortion() override
Definition: porfly.cxx:309
TextFrameIndex MapModelToViewPos(SwPosition const &rPos) const
Definition: txtfrm.cxx:1270
void RemoveFly(SwFlyFrame *pToRemove)
Definition: fly.cxx:2208
const SwFormatAnchor & GetAnchor(bool=true) const
Definition: fmtanchr.hxx:81
int i
RndStdIds GetAnchorId() const
Definition: fmtanchr.hxx:65
vcl::RenderContext * GetOut()
Definition: inftxt.hxx:224
size_t size() const
Definition: sortedobjs.cxx:43
const SwPosition * GetContentAnchor() const
Definition: fmtanchr.hxx:67
constexpr TypedWhichId< SwFormatFlyCnt > RES_TXTATR_FLYCNT(58)
SwParaPortion * GetParaPortion()
Definition: inftxt.hxx:121
void SetWhichPor(const PortionType nNew)
Definition: porlin.hxx:95
bool IsCompletePaint() const
Definition: frame.hxx:601
virtual void Paint(const SwTextPaintInfo &rInf) const override
Definition: porfly.cxx:260
const SwFrame * Lower() const
Definition: layfrm.hxx:101
FlyAnchors.
Definition: fmtanchr.hxx:34
bool IsKernPortion() const
Definition: porlin.hxx:135
virtual const SwFlyFrame * DynCastFlyFrame() const
sal_uInt16 Width() const
Definition: inftxt.hxx:527
bool IsDeleted() const
Definition: porfly.hxx:58
TextFrameIndex GetIdx() const
Definition: inftxt.hxx:271
void SSize(const Size &rNew)
Definition: swrect.hxx:180
static bool changeAnchor(SwFrameFormat *pShape, SdrObject *pObj)
Sets the anchor of the associated textframe of the given shape, and returns true on success...
void SetFly(SwFlyPortion *pNew)
Definition: inftxt.hxx:609
SwTextFrame * GetTextFrame()
Definition: inftxt.hxx:284
tools::Long SwTwips
Definition: swtypes.hxx:51
const OUString & GetText() const
Definition: inftxt.hxx:239
void Truncate()
Definition: porlin.hxx:204
SwTwips X() const
Definition: inftxt.hxx:378
void SwitchLTRtoRTL(SwRect &rRect) const
Calculates the coordinates of a rectangle when switching from LTR to RTL layout.
Definition: txtfrm.cxx:686
Base class for anything that can be part of a line in the Writer layout.
Definition: porlin.hxx:51
TextFrameIndex mnLineLength
Definition: porlin.hxx:57
HFONT SelectFont(HDC hDC, HFONT hFont)
SwTwips Width() const
Definition: possiz.hxx:51
virtual SwFrameFormat & GetFrameFormat()=0
#define SAL_WARN_IF(condition, area, stream)
virtual void Paint(const SwTextPaintInfo &rInf) const override
class SwFlyPortion => we expect a frame-locale SwRect!
Definition: porfly.cxx:48
SwLinePortion * GetRest()
Definition: inftxt.hxx:575
bool IsErgoSumPortion() const
Definition: porlin.hxx:116
bool IsRightToLeft() const
Definition: frame.hxx:987
TextFrameIndex CalcFlyPos(SwFrameFormat const *pSearch)
Calculates the position of FlyInContentFrames.
Definition: porfly.cxx:184
SwFlyCntPortion()
Use the dimensions of pFly->OutRect()
Definition: porfly.cxx:272
SwLinePortion * GetLast()
Definition: inftxt.hxx:560
static bool IsPaint(SdrObject *pObj, const SwViewShell *pSh)
Definition: paintfrm.cxx:3921
virtual void CallSwClientNotify(const SfxHint &rHint) const override
Definition: calbck.cxx:325
void AppendDrawObj(SwAnchoredObject &_rNewObj)
Definition: fly.cxx:2250
constexpr sal_Int32 COMPLETE_STRING
Definition: swtypes.hxx:57
FlyContentPortion(SwFlyInContentFrame *pFly)
Definition: porfly.cxx:282
bool IsVertical() const
Definition: frame.hxx:973
virtual SdrObject * GetSdrObj(const SwTextFrame &) override
Definition: porfly.cxx:312
void SetNewLine(const bool bNew)
Definition: inftxt.hxx:578
#define SAL_WARN(area, stream)
const SwRect & GetPaintRect() const
Definition: inftxt.hxx:431
SwFlyInContentFrame * m_pFly
Definition: porfly.hxx:73
void SetLineColor(const css::uno::Reference< css::beans::XPropertySet > &xGridProperties, sal_Int32 nColor)
virtual void FormatEOL(SwTextFormatInfo &rInf)
Definition: porlin.cxx:265
DrawFlyCntPortion(SwFrameFormat const &rFormat)
Definition: porfly.cxx:288
SwFlyPortion * GetFly()
Definition: inftxt.hxx:608
SwViewShell * GetCurrShell() const
Definition: rootfrm.hxx:206
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:348
bool Overlaps(const SwRect &rRect) const
Definition: swrect.hxx:374
SwRootFrame * getRootFrame()
Definition: frame.hxx:679
bool m_bDetectedRangeSegmentation false
void SetAscent(const SwTwips nNewAsc)
Definition: porlin.hxx:80