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() );
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 auto 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() );
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{
291 rFormat.CallSwClientNotify(sw::CreatePortionHint(&m_pContact));
292 assert(m_pContact);
293}
294
295sw::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
302sw::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
342void 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 && pFormat->GetAnchor().GetAnchorId() == RndStdIds::FLY_AS_CHAR)
369 {
370 // TODO: Improve security with moving this sync call to other place,
371 // where it works for typing but not during layout calc.
372 const bool bModified = pFormat->GetDoc()->getIDocumentState().IsEnableSetModified();
373 pFormat->GetDoc()->getIDocumentState().SetEnableSetModified(false);
375 pFormat->FindRealSdrObject());
377 pFormat, pFormat->FindRealSdrObject());
378 pFormat->GetDoc()->getIDocumentState().SetEnableSetModified(bModified);
379 }
380 }
381
382 SetAlign( aObjPositioning.GetLineAlignment() );
383
384 m_aRef = aObjPositioning.GetAnchorPos();
385 if( nFlags & AsCharFlags::Rotate )
386 SvXSize( aObjPositioning.GetObjBoundRectInclSpacing().SSize() );
387 else
388 SvLSize( aObjPositioning.GetObjBoundRectInclSpacing().SSize() );
389 if( Height() )
390 {
391 // GetRelPosY returns the relative position to baseline (if 0, the
392 // upper border of the FlyCnt if on the baseline of a line)
393 SwTwips nRelPos = aObjPositioning.GetRelPosY();
394 if ( nRelPos < 0 )
395 {
396 mnAscent = -nRelPos;
397 if( mnAscent > Height() )
398 Height( mnAscent );
399 }
400 else
401 {
402 mnAscent = 0;
403 Height( Height() + o3tl::narrowing<sal_uInt16>(nRelPos) );
404 }
405 }
406 else
407 {
408 Height( 1 );
409 mnAscent = 0;
410 }
411}
412
413/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
AntialiasingFlags
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...
vcl::text::ComplexTextLayoutFlags GetLayoutMode() const
AntialiasingFlags GetAntialiasing() const
class for the positioning of drawing objects
wrapper class for the positioning of Writer fly frames and drawing objects
virtual SwFrameFormat & GetFrameFormat()=0
virtual const SwFlyFrame * DynCastFlyFrame() const
sal_uInt16 GetFix() const
Definition: porglue.hxx:61
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
virtual bool Format(SwTextFormatInfo &rInf) override
Definition: porfly.cxx:99
bool IsDeleted() const
Definition: porfly.hxx:58
SwFlyCntPortion()
Use the dimensions of pFly->OutRect()
Definition: porfly.cxx:272
size_t GetAuthor() const
Definition: porfly.hxx:60
const SwVirtFlyDrawObj * GetVirtDrawObj() const
Definition: fly.cxx:3025
static bool IsPaint(SdrObject *pObj, const SwViewShell *pSh)
Definition: paintfrm.cxx:3952
virtual void PaintSwFrame(vcl::RenderContext &rRenderContext, SwRect const &, SwPrintData const *const pPrintData=nullptr) const override
Definition: paintfrm.cxx:4073
Flys that are anchored as a character in the content.
Definition: flyfrms.hxx:210
virtual bool Format(SwTextFormatInfo &rInf) override
Definition: porfly.cxx:52
virtual void Paint(const SwTextPaintInfo &rInf) const override
class SwFlyPortion => we expect a frame-locale SwRect!
Definition: porfly.cxx:48
void SetBlankWidth(const sal_uInt16 nNew)
Definition: porfly.hxx:38
FlyAnchors.
Definition: fmtanchr.hxx:37
RndStdIds GetAnchorId() const
Definition: fmtanchr.hxx:67
const SwPosition * GetContentAnchor() const
Definition: fmtanchr.hxx:74
const SwFormatAnchor & GetAnchor(bool=true) const
Definition: fmtanchr.hxx:88
const SwRect & getFrameArea() const
Definition: frame.hxx:179
Style of a layout element.
Definition: frmfmt.hxx:72
Base class of the Writer layout elements.
Definition: frame.hxx:315
SwRect GetPaintArea() const
|* The paintarea is the area, in which the content of a frame is allowed |* to be displayed.
Definition: ssfrm.cxx:595
void RemoveFly(SwFlyFrame *pToRemove)
Definition: fly.cxx:2429
const SwSortedObjs * GetDrawObjs() const
Definition: frame.hxx:568
bool IsRightToLeft() const
Definition: frame.hxx:993
void AppendFly(SwFlyFrame *pNew)
Definition: fly.cxx:2411
bool IsCompletePaint() const
Definition: frame.hxx:605
bool IsVertical() const
Definition: frame.hxx:979
SwRootFrame * getRootFrame()
Definition: frame.hxx:685
void RemoveDrawObj(SwAnchoredObject &_rToRemoveObj)
Definition: fly.cxx:2554
void AppendDrawObj(SwAnchoredObject &_rNewObj)
Definition: fly.cxx:2471
void SetFixWidth(const sal_uInt16 nNew)
Definition: porglue.hxx:41
const SwFrame * Lower() const
Definition: layfrm.hxx:101
Base class for anything that can be part of a line in the Writer layout.
Definition: porlin.hxx:52
TextFrameIndex mnLineLength
Definition: porlin.hxx:57
virtual void FormatEOL(SwTextFormatInfo &rInf)
Definition: porlin.cxx:269
void SetAscent(const SwTwips nNewAsc)
Definition: porlin.hxx:82
bool IsKernPortion() const
Definition: porlin.hxx:141
void Truncate()
Definition: porlin.hxx:214
bool IsErgoSumPortion() const
Definition: porlin.hxx:122
bool IsBreakPortion() const
Definition: porlin.hxx:121
void SetLen(TextFrameIndex const nLen)
Definition: porlin.hxx:78
SwTwips PrtWidth() const
Definition: porlin.hxx:84
void SetWhichPor(const PortionType nNew)
Definition: porlin.hxx:101
Helper class for notify that positioning of an anchored object is in progress.
void SetFly()
Definition: porlay.hxx:301
SwTwips Width() const
Definition: possiz.hxx:51
static Color GetColorAnchor(std::size_t aAuthorIndex)
Definition: PostItMgr.cxx:2185
Of course Writer needs its own rectangles.
Definition: swrect.hxx:35
void Top(const tools::Long nTop)
Definition: swrect.hxx:206
void Right(const tools::Long nRight)
Definition: swrect.hxx:202
void Bottom(const tools::Long nBottom)
Definition: swrect.hxx:211
SwRect & Intersection_(const SwRect &rRect)
Definition: swrect.cxx:81
void SSize(const Size &rNew)
Definition: swrect.hxx:180
bool Overlaps(const SwRect &rRect) const
Definition: swrect.hxx:374
void Left(const tools::Long nLeft)
Definition: swrect.hxx:197
SwViewShell * GetCurrShell() const
Definition: rootfrm.hxx:215
class for collecting anchored objects
Definition: sortedobjs.hxx:49
size_t size() const
Definition: sortedobjs.cxx:43
virtual void FormatEOL(SwTextFormatInfo &rInf) override
Definition: txttab.cxx:348
A wrapper around SfxPoolItem to store the start position of (usually) a text portion,...
Definition: txatbase.hxx:44
static bool syncTextBoxSize(SwFrameFormat *pShape, SdrObject *pObj)
Sets the correct size of textframe depending on the given SdrObject.
static bool changeAnchor(SwFrameFormat *pShape, SdrObject *pObj)
Sets the anchor of the associated textframe of the given shape, and returns true on success.
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.
SwLinePortion * GetLast()
Definition: inftxt.hxx:566
SwTabPortion * GetLastTab()
Definition: inftxt.hxx:620
void SetFly(SwFlyPortion *pNew)
Definition: inftxt.hxx:615
sal_uInt16 RealWidth() const
Definition: inftxt.hxx:554
SwLinePortion * GetRest()
Definition: inftxt.hxx:581
sal_uInt16 Width() const
Definition: inftxt.hxx:533
SwFlyPortion * GetFly()
Definition: inftxt.hxx:614
void SetNewLine(const bool bNew)
Definition: inftxt.hxx:584
Represents the visualization of a paragraph.
Definition: txtfrm.hxx:168
TextFrameIndex CalcFlyPos(SwFrameFormat const *pSearch)
Calculates the position of FlyInContentFrames.
Definition: porfly.cxx:184
void SwitchLTRtoRTL(SwRect &rRect) const
Calculates the coordinates of a rectangle when switching from LTR to RTL layout.
Definition: txtfrm.cxx:683
void SwitchHorizontalToVertical(SwRect &rRect) const
Calculates the coordinates of a rectangle when switching from horizontal to vertical layout.
Definition: txtfrm.cxx:473
TextFrameIndex MapModelToViewPos(SwPosition const &rPos) const
Definition: txtfrm.cxx:1354
void MoveFlyInCnt(SwTextFrame *pNew, TextFrameIndex nStart, TextFrameIndex nEnd)
Rewires FlyInContentFrame, if nEnd > Index >= nStart.
Definition: porfly.cxx:150
SwParaPortion * GetParaPortion()
Definition: inftxt.hxx:121
const SwRect & GetPaintRect() const
Definition: inftxt.hxx:437
SwTwips X() const
Definition: inftxt.hxx:382
SwTextFrame * GetTextFrame()
Definition: inftxt.hxx:288
vcl::RenderContext * GetOut()
Definition: inftxt.hxx:225
SwViewShell * GetVsh()
Definition: inftxt.hxx:222
SwPosSize GetTextSize(OutputDevice *pOut, const SwScriptInfo *pSI, const OUString &rText, TextFrameIndex nIdx, TextFrameIndex nLen) const
Definition: inftxt.cxx:395
sal_Unicode GetChar(TextFrameIndex const nPos) const
Definition: inftxt.hxx:241
const OUString & GetText() const
Definition: inftxt.hxx:240
TextFrameIndex GetIdx() const
Definition: inftxt.hxx:273
vcl::RenderContext * GetOut() const
Definition: viewsh.hxx:365
virtual void CalcPosition() override
calculate position for object position
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
virtual SdrObject * GetSdrObj(const SwTextFrame &) override
Definition: porfly.cxx:317
DrawFlyCntPortion(SwFrameFormat const &rFormat)
Definition: porfly.cxx:288
virtual ~DrawFlyCntPortion() override
Definition: porfly.cxx:309
SwDrawContact * m_pContact
Definition: porfly.hxx:85
virtual void Paint(const SwTextPaintInfo &rInf) const override
Definition: porfly.cxx:260
FlyContentPortion(SwFlyInContentFrame *pFly)
Definition: porfly.cxx:282
virtual SdrObject * GetSdrObj(const SwTextFrame &) override
Definition: porfly.cxx:312
SwFlyInContentFrame * m_pFly
Definition: porfly.hxx:73
virtual ~FlyContentPortion() override
Definition: porfly.cxx:310
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
virtual void Paint(const SwTextPaintInfo &rInf) const override
Definition: porfly.cxx:202
SwTextAttr const * NextAttr(SwTextNode const **ppNode=nullptr)
Definition: txtfrm.cxx:91
SwFrameFormat * FindFrameFormat(SdrObject *pObj)
The Get reverse way: seeks the format to the specified object.
Definition: dcontact.cxx:121
constexpr TypedWhichId< SwFormatFlyCnt > RES_TXTATR_FLYCNT(58)
sal_Int32 nIndex
#define SAL_WARN_IF(condition, area, stream)
#define SAL_WARN(area, stream)
void SetLineColor(const css::uno::Reference< css::beans::XPropertySet > &xGridProperties, sal_Int32 nColor)
NONE
int i
void DrawLine(OutputDevice &rDev, const basegfx::B2DPoint &rP1, const basegfx::B2DPoint &rP2, sal_uInt32 nWidth, SvxBorderLineStyle nDashing)
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)
Dialog to specify the properties of date form field.
long Long
Marks a position in the document model.
Definition: pam.hxx:38
tools::Long SwTwips
Definition: swtypes.hxx:51
constexpr sal_Int32 COMPLETE_STRING
Definition: swtypes.hxx:57
HFONT SelectFont(HDC hDC, HFONT hFont)