LibreOffice Module sw (master) 1
xmldump.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
10#include <frame.hxx>
11#include <frmfmt.hxx>
12#include <ftnfrm.hxx>
13#include <sectfrm.hxx>
14#include <tabfrm.hxx>
15#include <pagefrm.hxx>
16#include <txtfrm.hxx>
17#include <cellfrm.hxx>
18#include <flyfrm.hxx>
19#include <hffrm.hxx>
20#include <rootfrm.hxx>
21#include <ndtxt.hxx>
22#include <sortedobjs.hxx>
23#include <swfont.hxx>
24#include <txttypes.hxx>
25#include <anchoredobject.hxx>
26#include <libxml/xmlwriter.h>
27#include <SwPortionHandler.hxx>
28#include <view.hxx>
29#include <flyfrms.hxx>
30#include <svx/svdobj.hxx>
31
32#include "porlay.hxx"
33
35{
36 switch (nType)
37 {
39 return "PortionType::NONE";
41 return "PortionType::FlyCnt";
42
44 return "PortionType::Hole";
46 return "PortionType::TempEnd";
48 return "PortionType::Break";
50 return "PortionType::Kern";
52 return "PortionType::Arrow";
54 return "PortionType::Multi";
56 return "PortionType::HiddenText";
58 return "PortionType::ControlChar";
60 return "PortionType::Bookmark";
61
63 return "PortionType::Text";
65 return "PortionType::Lay";
67 return "PortionType::Para";
69 return "PortionType::Hanging";
70
72 return "PortionType::Drop";
74 return "PortionType::Tox";
76 return "PortionType::IsoTox";
78 return "PortionType::Ref";
80 return "PortionType::IsoRef";
82 return "PortionType::Meta";
84 return "PortionType::ContentControl";
86 return "PortionType::FieldMark";
88 return "PortionType::FieldFormCheckbox";
90 return "PortionType::InputField";
91
93 return "PortionType::Expand";
95 return "PortionType::Blank";
97 return "PortionType::PostIts";
98
100 return "PortionType::Hyphen";
102 return "PortionType::HyphenStr";
104 return "PortionType::SoftHyphen";
106 return "PortionType::SoftHyphenStr";
108 return "PortionType::SoftHyphenComp";
109
111 return "PortionType::Field";
113 return "PortionType::Hidden";
115 return "PortionType::QuoVadis";
117 return "PortionType::ErgoSum";
119 return "PortionType::Combined";
121 return "PortionType::Footnote";
122
124 return "PortionType::FootnoteNum";
126 return "PortionType::Number";
128 return "PortionType::Bullet";
130 return "PortionType::GrfNum";
131
133 return "PortionType::Glue";
134
136 return "PortionType::Margin";
137
138 case PortionType::Fix:
139 return "PortionType::Fix";
140 case PortionType::Fly:
141 return "PortionType::Fly";
142
143 case PortionType::Tab:
144 return "PortionType::Tab";
145
147 return "PortionType::TabRight";
149 return "PortionType::TabCenter";
151 return "PortionType::TabDecimal";
152
154 return "PortionType::TabLeft";
155 default:
156 return "Unknown";
157 }
158}
159
161{
162 const SwFrame* pFrame = this;
163 while (pFrame->GetUpper())
164 {
165 pFrame = pFrame->GetUpper();
166 }
167
168 pFrame->dumpAsXml(writer);
169}
170
172{
173 const char *name = nullptr;
174
175 switch ( GetType( ) )
176 {
177 case SwFrameType::Txt:
178 name = "txt";
179 break;
181 name = "notxt";
182 break;
183 default: break;
184 }
185
186 if ( name != nullptr )
187 {
188 (void)xmlTextWriterStartElement( writer, reinterpret_cast<const xmlChar *>(name) );
189
190 dumpAsXmlAttributes( writer );
191
192 if (IsTextFrame())
193 {
194 const SwTextFrame *pTextFrame = static_cast<const SwTextFrame *>(this);
195 sw::MergedPara const*const pMerged(pTextFrame->GetMergedPara());
196 if (pMerged)
197 {
198 (void)xmlTextWriterStartElement( writer, BAD_CAST( "merged" ) );
199 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "paraPropsNodeIndex" ), "%" SAL_PRIdINT32, sal_Int32(pMerged->pParaPropsNode->GetIndex()) );
200 for (auto const& e : pMerged->extents)
201 {
202 (void)xmlTextWriterStartElement( writer, BAD_CAST( "extent" ) );
203 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "txtNodeIndex" ), "%" SAL_PRIdINT32, sal_Int32(e.pNode->GetIndex()) );
204 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "start" ), "%" SAL_PRIdINT32, e.nStart );
205 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "end" ), "%" SAL_PRIdINT32, e.nEnd );
206 (void)xmlTextWriterEndElement( writer );
207 }
208 (void)xmlTextWriterEndElement( writer );
209 }
210 }
211
212 (void)xmlTextWriterStartElement( writer, BAD_CAST( "infos" ) );
213 dumpInfosAsXml( writer );
214 (void)xmlTextWriterEndElement( writer );
215
216 // Dump Anchored objects if any
217 const SwSortedObjs* pAnchored = GetDrawObjs();
218 if ( pAnchored && pAnchored->size() > 0 )
219 {
220 (void)xmlTextWriterStartElement( writer, BAD_CAST( "anchored" ) );
221
222 for (SwAnchoredObject* pObject : *pAnchored)
223 {
224 pObject->dumpAsXml( writer );
225 }
226
227 (void)xmlTextWriterEndElement( writer );
228 }
229
230 // Dump the children
231 if ( IsTextFrame( ) )
232 {
233 const SwTextFrame *pTextFrame = static_cast<const SwTextFrame *>(this);
234 OUString aText = pTextFrame->GetText( );
235 for ( int i = 0; i < 32; i++ )
236 {
237 aText = aText.replace( i, '*' );
238 }
239 auto nTextOffset = static_cast<sal_Int32>(pTextFrame->GetOffset());
240 sal_Int32 nTextLength = aText.getLength() - nTextOffset;
241 if (const SwTextFrame* pTextFrameFollow = pTextFrame->GetFollow())
242 {
243 nTextLength = static_cast<sal_Int32>(pTextFrameFollow->GetOffset() - pTextFrame->GetOffset());
244 }
245 OString aText8
246 = OUStringToOString(aText.subView(nTextOffset, nTextLength), RTL_TEXTENCODING_UTF8);
247 (void)xmlTextWriterWriteString( writer,
248 reinterpret_cast<const xmlChar *>(aText8.getStr( )) );
249 if (const SwParaPortion* pPara = pTextFrame->GetPara())
250 {
251 (void)xmlTextWriterStartElement(writer, BAD_CAST("SwParaPortion"));
252 TextFrameIndex nOffset(0);
253 const OUString& rText = pTextFrame->GetText();
254 (void)xmlTextWriterWriteFormatAttribute(writer, BAD_CAST("ptr"), "%p", pPara);
255 const SwLineLayout* pLine = pPara;
256 if (pTextFrame->IsFollow())
257 {
258 nOffset += pTextFrame->GetOffset();
259 }
260 while (pLine)
261 {
262 (void)xmlTextWriterStartElement(writer, BAD_CAST("SwLineLayout"));
263 pLine->dumpAsXmlAttributes(writer, rText, nOffset);
264 const SwLinePortion* pPor = pLine->GetFirstPortion();
265 while (pPor)
266 {
267 pPor->dumpAsXml(writer, rText, nOffset);
268 pPor = pPor->GetNextPortion();
269 }
270 (void)xmlTextWriterEndElement(writer);
271 pLine = pLine->GetNext();
272 }
273 (void)xmlTextWriterEndElement(writer);
274 }
275
276 }
277 else
278 {
279 dumpChildrenAsXml( writer );
280 }
281 (void)xmlTextWriterEndElement( writer );
282 }
283}
284
286{
287 // output the Frame
288 (void)xmlTextWriterStartElement( writer, BAD_CAST( "bounds" ) );
290 (void)xmlTextWriterWriteAttribute(writer, BAD_CAST("mbFixSize"), BAD_CAST(OString::boolean(HasFixSize()).getStr()));
291 (void)xmlTextWriterWriteAttribute(writer, BAD_CAST("mbFrameAreaPositionValid"), BAD_CAST(OString::boolean(isFrameAreaPositionValid()).getStr()));
292 (void)xmlTextWriterWriteAttribute(writer, BAD_CAST("mbFrameAreaSizeValid"), BAD_CAST(OString::boolean(isFrameAreaSizeValid()).getStr()));
293 (void)xmlTextWriterWriteAttribute(writer, BAD_CAST("mbFramePrintAreaValid"), BAD_CAST(OString::boolean(isFramePrintAreaValid()).getStr()));
294 (void)xmlTextWriterEndElement( writer );
295
296 // output the print area
297 (void)xmlTextWriterStartElement( writer, BAD_CAST( "prtBounds" ) );
299 (void)xmlTextWriterEndElement( writer );
300}
301
303{
304 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "ptr" ), "%p", this );
305 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "id" ), "%" SAL_PRIuUINT32, GetFrameId() );
306 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "symbol" ), "%s", BAD_CAST( typeid( *this ).name( ) ) );
307 if ( GetNext( ) )
308 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "next" ), "%" SAL_PRIuUINT32, GetNext()->GetFrameId() );
309 if ( GetPrev( ) )
310 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "prev" ), "%" SAL_PRIuUINT32, GetPrev()->GetFrameId() );
311 if ( GetUpper( ) )
312 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "upper" ), "%" SAL_PRIuUINT32, GetUpper()->GetFrameId() );
313 if ( GetLower( ) )
314 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "lower" ), "%" SAL_PRIuUINT32, GetLower()->GetFrameId() );
315 if (IsFootnoteFrame())
316 {
317 SwFootnoteFrame const*const pFF(static_cast<SwFootnoteFrame const*>(this));
318 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST("ref"), "%" SAL_PRIuUINT32, pFF->GetRef()->GetFrameId() );
319 if (pFF->GetMaster())
320 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST("master"), "%" SAL_PRIuUINT32, pFF->GetMaster()->GetFrameId() );
321 if (pFF->GetFollow())
322 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST("follow"), "%" SAL_PRIuUINT32, pFF->GetFollow()->GetFrameId() );
323 }
324 if (IsSctFrame())
325 {
326 SwSectionFrame const*const pFrame(static_cast<SwSectionFrame const*>(this));
327 SwSectionNode const*const pNode(pFrame->GetSection() ? pFrame->GetSection()->GetFormat()->GetSectionNode() : nullptr);
328 (void)xmlTextWriterWriteFormatAttribute(writer, BAD_CAST("sectionNodeIndex"), "%" SAL_PRIdINT32, pNode ? sal_Int32(pNode->GetIndex()) : -1);
329 }
330 if ( IsTextFrame( ) )
331 {
332 const SwTextFrame *pTextFrame = static_cast<const SwTextFrame *>(this);
333 const SwTextNode *pTextNode = pTextFrame->GetTextNodeFirst();
334 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "txtNodeIndex" ), "%" SAL_PRIdINT32, sal_Int32(pTextNode->GetIndex()) );
335
336 OString aMode = "Horizontal";
337 if (IsVertLRBT())
338 {
339 aMode = "VertBTLR";
340 }
341 else if (IsVertLR())
342 {
343 aMode = "VertLR";
344 }
345 else if (IsVertical())
346 {
347 aMode = "Vertical";
348 }
349 (void)xmlTextWriterWriteAttribute(writer, BAD_CAST("WritingMode"), BAD_CAST(aMode.getStr()));
350 }
351 if (IsHeaderFrame() || IsFooterFrame())
352 {
353 const SwHeadFootFrame *pHeadFootFrame = static_cast<const SwHeadFootFrame*>(this);
354 OUString aFormatName = pHeadFootFrame->GetFormat()->GetName();
355 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "fmtName" ), "%s", BAD_CAST(OUStringToOString(aFormatName, RTL_TEXTENCODING_UTF8).getStr()));
356 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "fmtPtr" ), "%p", pHeadFootFrame->GetFormat());
357 }
358}
359
361{
362 const SwFrame *pFrame = GetLower( );
363 for ( ; pFrame != nullptr; pFrame = pFrame->GetNext( ) )
364 {
365 pFrame->dumpAsXml( writer );
366 }
367}
368
370{
371 (void)xmlTextWriterStartElement( writer, BAD_CAST( getElementName() ) );
372 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "ptr" ), "%p", this );
373 (void)xmlTextWriterWriteAttribute(writer, BAD_CAST("anchor-frame"), BAD_CAST(OString::number(mpAnchorFrame->GetFrameId()).getStr()));
374 SwTextFrame* pAnchorCharFrame = const_cast<SwAnchoredObject*>(this)->FindAnchorCharFrame();
375 if (pAnchorCharFrame)
376 {
377 (void)xmlTextWriterWriteAttribute(writer, BAD_CAST("anchor-char-frame"), BAD_CAST(OString::number(pAnchorCharFrame->GetFrameId()).getStr()));
378 }
379
380 (void)xmlTextWriterStartElement( writer, BAD_CAST( "bounds" ) );
381 // don't call GetObjBoundRect(), it modifies the layout
382 SwRect(GetDrawObj()->GetLastBoundRect()).dumpAsXmlAttributes(writer);
383 (void)xmlTextWriterEndElement( writer );
384
385 if (const SdrObject* pObject = GetDrawObj())
386 pObject->dumpAsXml(writer);
387
388 (void)xmlTextWriterEndElement( writer );
389}
390
392{
393 (void)xmlTextWriterStartElement(writer, BAD_CAST("SwFont"));
394 (void)xmlTextWriterWriteFormatAttribute(writer, BAD_CAST("ptr"), "%p", this);
395 // do not use Color::AsRGBHexString() as that omits the transparency
396 (void)xmlTextWriterWriteFormatAttribute(writer, BAD_CAST("color"), "%08" SAL_PRIxUINT32, sal_uInt32(GetColor()));
397 (void)xmlTextWriterWriteAttribute(writer, BAD_CAST("height"), BAD_CAST(OString::number(GetSize(GetActual()).Height()).getStr()));
398 (void)xmlTextWriterWriteAttribute(writer, BAD_CAST("width"), BAD_CAST(OString::number(GetSize(GetActual()).Width()).getStr()));
399 {
400 std::stringstream ss;
401 ss << GetWeight();
402 (void)xmlTextWriterWriteAttribute(writer, BAD_CAST("weight"), BAD_CAST(ss.str().c_str()));
403 }
404 (void)xmlTextWriterEndElement(writer);
405}
406
408{
410 if ( HasFollow() )
411 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "follow" ), "%" SAL_PRIuUINT32, GetFollow()->GetFrameId() );
412
413 if (m_pPrecede != nullptr)
414 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "precede" ), "%" SAL_PRIuUINT32, static_cast<SwTextFrame*>(m_pPrecede)->GetFrameId() );
415
416 (void)xmlTextWriterWriteAttribute(writer, BAD_CAST("offset"), BAD_CAST(OString::number(static_cast<sal_Int32>(mnOffset)).getStr()));
417}
418
420{
422
423 if (m_pFollow != nullptr)
424 {
425 (void)xmlTextWriterWriteAttribute(
426 pWriter, BAD_CAST("follow"),
427 BAD_CAST(OString::number(m_pFollow->GetFrame().GetFrameId()).getStr()));
428 }
429 if (m_pPrecede != nullptr)
430 {
431 (void)xmlTextWriterWriteAttribute(
432 pWriter, BAD_CAST("precede"),
433 BAD_CAST(OString::number(m_pPrecede->GetFrame().GetFrameId()).getStr()));
434 }
435}
436
438{
440 if ( HasFollow() )
441 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "follow" ), "%" SAL_PRIuUINT32, GetFollow()->GetFrameId() );
442
443 if (m_pPrecede != nullptr)
444 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "precede" ), "%" SAL_PRIuUINT32, static_cast<SwSectionFrame*>( m_pPrecede )->GetFrameId() );
445}
446
448{
450 if ( HasFollow() )
451 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "follow" ), "%" SAL_PRIuUINT32, GetFollow()->GetFrameId() );
452
453 if (m_pPrecede != nullptr)
454 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST( "precede" ), "%" SAL_PRIuUINT32, static_cast<SwTabFrame*>( m_pPrecede )->GetFrameId() );
455}
456
457/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
wrapper class for the positioning of Writer fly frames and drawing objects
SwTextFrame * FindAnchorCharFrame()
get frame, which contains the anchor character, if the object is anchored at-character or as-characte...
virtual void dumpAsXml(xmlTextWriterPtr pWriter=nullptr) const
Dump a bunch of useful data to an XML representation to ease layout understanding,...
Definition: xmldump.cxx:369
virtual const char * getElementName() const
The element name to show in the XML dump.
const SdrObject * GetDrawObj() const
SwFrame * mpAnchorFrame
Frame the object is anchored at.
void dumpAsXmlAttributes(xmlTextWriterPtr pWriter) const override
Definition: xmldump.cxx:419
void dumpAsXml(xmlTextWriterPtr writer) const
Definition: xmldump.cxx:391
const Size & GetSize(SwFontScript nWhich) const
Definition: swfont.hxx:209
SwFontScript GetActual() const
Definition: swfont.hxx:187
FontWeight GetWeight() const
Definition: swfont.hxx:288
const Color & GetColor() const
Definition: swfont.hxx:280
Represents one footnote or endnote in the layout.
Definition: ftnfrm.hxx:84
const SwFootnoteFrame * GetFollow() const
Definition: ftnfrm.hxx:120
const SwFootnoteFrame * GetMaster() const
Definition: ftnfrm.hxx:123
const SwContentFrame * GetRef() const
Definition: ftnfrm.cxx:2909
const OUString & GetName() const
Definition: format.hxx:131
const SwRect & getFrameArea() const
Definition: frame.hxx:179
bool isFrameAreaPositionValid() const
Definition: frame.hxx:166
const SwRect & getFramePrintArea() const
Definition: frame.hxx:180
bool isFramePrintAreaValid() const
Definition: frame.hxx:168
bool isFrameAreaSizeValid() const
Definition: frame.hxx:167
sal_uInt32 GetFrameId() const
Definition: frame.hxx:174
Base class of the Writer layout elements.
Definition: frame.hxx:315
bool IsTextFrame() const
Definition: frame.hxx:1240
SwFrame * GetNext()
Definition: frame.hxx:682
bool HasFixSize() const
Definition: frame.hxx:676
bool IsVertLRBT() const
Definition: frame.hxx:989
virtual void dumpAsXml(xmlTextWriterPtr writer=nullptr) const
Definition: xmldump.cxx:171
SwFrameType GetType() const
Definition: frame.hxx:521
bool IsHeaderFrame() const
Definition: frame.hxx:1196
const SwSortedObjs * GetDrawObjs() const
Definition: frame.hxx:568
SwFrame * GetLower()
Definition: findfrm.cxx:196
void dumpInfosAsXml(xmlTextWriterPtr writer) const
Definition: xmldump.cxx:285
bool IsFooterFrame() const
Definition: frame.hxx:1200
bool IsFootnoteFrame() const
Definition: frame.hxx:1208
SwLayoutFrame * GetUpper()
Definition: frame.hxx:684
virtual void dumpAsXmlAttributes(xmlTextWriterPtr writer) const
Definition: xmldump.cxx:302
bool IsVertical() const
Definition: frame.hxx:979
void dumpTopMostAsXml(xmlTextWriterPtr writer=nullptr) const
Definition: xmldump.cxx:160
SwFrame * GetPrev()
Definition: frame.hxx:683
bool IsSctFrame() const
Definition: frame.hxx:1220
bool IsVertLR() const
Definition: frame.hxx:985
void dumpChildrenAsXml(xmlTextWriterPtr writer) const
Definition: xmldump.cxx:360
virtual const SwFrameFormat * GetFormat() const
Definition: ssfrm.cxx:401
Collection of SwLinePortion instances, representing one line of text.
Definition: porlay.hxx:79
SwLineLayout * GetNext()
Definition: porlay.hxx:159
SwLinePortion * GetFirstPortion() const
Definition: porlay.cxx:848
Base class for anything that can be part of a line in the Writer layout.
Definition: porlin.hxx:52
void dumpAsXmlAttributes(xmlTextWriterPtr writer, std::u16string_view rText, TextFrameIndex nOffset) const
Definition: porlin.cxx:333
SwLinePortion * GetNextPortion() const
Definition: porlin.hxx:75
virtual void dumpAsXml(xmlTextWriterPtr pWriter, const OUString &rText, TextFrameIndex &rOffset) const
Definition: porlin.cxx:324
SwNodeOffset GetIndex() const
Definition: node.hxx:312
Collection of SwLineLayout instances, represents the paragraph text in Writer layout.
Definition: porlay.hxx:251
Of course Writer needs its own rectangles.
Definition: swrect.hxx:35
void dumpAsXmlAttributes(xmlTextWriterPtr writer) const
Definition: swrect.cxx:178
SwSectionNode * GetSectionNode()
Definition: section.cxx:923
SwSection * GetSection()
Definition: sectfrm.hxx:97
virtual void dumpAsXmlAttributes(xmlTextWriterPtr writer) const override
Definition: xmldump.cxx:437
const SwSectionFrame * GetFollow() const
Definition: sectfrm.hxx:174
A section node represents the start of a section on the UI, i.e.
Definition: node.hxx:575
SwSectionFormat * GetFormat()
Definition: section.hxx:341
class for collecting anchored objects
Definition: sortedobjs.hxx:49
size_t size() const
Definition: sortedobjs.cxx:43
SwTabFrame is one table in the document layout, containing rows (which contain cells).
Definition: tabfrm.hxx:49
const SwTabFrame * GetFollow() const
Definition: tabfrm.hxx:255
virtual void dumpAsXmlAttributes(xmlTextWriterPtr writer) const override
Definition: xmldump.cxx:447
Represents the visualization of a paragraph.
Definition: txtfrm.hxx:168
SwTextFrame * GetFollow()
Definition: txtfrm.hxx:876
TextFrameIndex GetOffset() const
Definition: txtfrm.hxx:453
virtual void dumpAsXmlAttributes(xmlTextWriterPtr writer) const override
Definition: xmldump.cxx:407
sw::MergedPara * GetMergedPara()
Definition: txtfrm.hxx:465
SwParaPortion * GetPara()
Definition: txtcache.cxx:90
SwTextNode * GetTextNodeFirst()
Definition: txtfrm.hxx:472
const OUString & GetText() const
Returns the text portion we want to edit (for inline see underneath)
Definition: txtfrm.cxx:1293
TextFrameIndex mnOffset
Definition: txtfrm.hxx:207
SwTextNode is a paragraph in the document model.
Definition: ndtxt.hxx:112
struct _xmlTextWriter * xmlTextWriterPtr
EmbeddedObjectRef * pObject
const char * name
int i
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
const char * PortionTypeToString(PortionType nType)
Definition: xmldump.cxx:34
QPRO_FUNC_TYPE nType
Describes parts of multiple text nodes, which will form a text frame, even when redlines are hidden a...
Definition: txtfrm.hxx:978
SwTextNode * pParaPropsNode
most paragraph properties are taken from the first non-empty node
Definition: txtfrm.hxx:985
std::vector< Extent > extents
Definition: txtfrm.hxx:980
PortionType
Definition: txttypes.hxx:24