1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #ifndef INCLUDED_XMLOFF_TXTPARAE_HXX
21 #define INCLUDED_XMLOFF_TXTPARAE_HXX
23 #include <sal/config.h>
24 #include <xmloff/dllapi.h>
25 #include <rtl/ustring.hxx>
26 #include <com/sun/star/uno/Reference.h>
27 #include <com/sun/star/beans/PropertyValue.hpp>
28 #include <xmloff/xmlexppr.hxx>
29 #include <xmloff/styleexp.hxx>
30 #include <xmloff/xmltoken.hxx>
31 #include <xmloff/SinglePropertySetInfoCache.hxx>
35 class XMLTextListsHelper
;
37 class SvXMLAutoStylePoolP
;
38 class XMLTextFieldExport
;
39 class XMLTextNumRuleInfo
;
40 class XMLTextListAutoStylePool
;
41 class XMLSectionExport
;
42 class XMLIndexMarkExport
;
43 class XMLRedlineExport
;
44 struct XMLPropertyState
;
45 class MultiPropertySetHelper
;
46 enum class XMLShapeExportFlags
;
48 namespace com
{ namespace sun
{ namespace star
50 namespace beans
{ class XPropertySet
; class XPropertyState
;
51 class XPropertySetInfo
; }
52 namespace container
{ class XEnumerationAccess
; class XEnumeration
; class XIndexAccess
; }
53 namespace text
{ class XTextContent
; class XTextRange
; class XText
;
54 class XFootnote
; class XTextFrame
; class XTextSection
;
56 class XDocumentIndex
; class XTextShapesSupplier
; }
61 class OFormLayerXMLExport
;
72 class XMLOFF_DLLPUBLIC XMLTextParagraphExport
: public XMLStyleExport
75 std::unique_ptr
<Impl
> m_xImpl
;
77 // SvXMLExport& rExport;
78 SvXMLAutoStylePoolP
& rAutoStylePool
;
79 rtl::Reference
< SvXMLExportPropertyMapper
> xParaPropMapper
;
80 rtl::Reference
< SvXMLExportPropertyMapper
> xTextPropMapper
;
81 rtl::Reference
< SvXMLExportPropertyMapper
> xFramePropMapper
;
82 rtl::Reference
< SvXMLExportPropertyMapper
> xAutoFramePropMapper
;
83 rtl::Reference
< SvXMLExportPropertyMapper
> xSectionPropMapper
;
84 rtl::Reference
< SvXMLExportPropertyMapper
> xRubyPropMapper
;
86 const ::std::unique_ptr
< ::xmloff::BoundFrameSets
> pBoundFrameSets
;
87 XMLTextFieldExport
*pFieldExport
;
88 std::vector
<OUString
> *pListElements
;
89 XMLTextListAutoStylePool
*pListAutoPool
;
90 XMLSectionExport
*pSectionExport
;
91 XMLIndexMarkExport
*pIndexMarkExport
;
93 /// may be NULL (if no redlines should be exported; e.g. in block mode)
94 XMLRedlineExport
*pRedlineExport
;
100 // keep track of open rubies
101 OUString sOpenRubyText
;
102 OUString sOpenRubyCharStyle
;
105 XMLTextListsHelper
* mpTextListsHelper
;
106 ::std::vector
< XMLTextListsHelper
* > maTextListsHelperStack
;
108 enum class FrameType
{ Text
, Graphic
, Embedded
, Shape
};
111 enum FieldmarkType
{ NONE
, TEXT
, CHECK
}; // Used for simulating fieldmarks in OpenDocument 1.n Strict (for n <= 2). CHECK currently ignored.
114 void exportTextRangeSpan(
115 const css::uno::Reference
< css::text::XTextRange
> & rTextRange
,
116 css::uno::Reference
< css::beans::XPropertySet
> & xPropSet
,
117 css::uno::Reference
< css::beans::XPropertySetInfo
> & xPropSetInfo
,
118 const bool bIsUICharStyle
,
119 const bool bHasAutoStyle
,
120 const OUString
& sStyle
,
121 bool& rPrevCharIsSpace
,
122 FieldmarkType
& openFieldMark
);
126 // Implement Title/Description Elements UI (#i73249#)
127 const OUString sTitle
;
128 const OUString sDescription
;
129 const OUString sAnchorCharStyleName
;
130 const OUString sAnchorPageNo
;
131 const OUString sAnchorType
;
132 const OUString sBeginNotice
;
133 const OUString sBookmark
;
134 const OUString sCategory
;
135 const OUString sChainNextName
;
136 const OUString sCharStyleName
;
137 const OUString sCharStyleNames
;
138 const OUString sContourPolyPolygon
;
139 const OUString sDocumentIndexMark
;
140 const OUString sEndNotice
;
141 const OUString sFootnote
;
142 const OUString sFootnoteCounting
;
143 const OUString sFrame
;
144 const OUString sGraphicFilter
;
145 const OUString sGraphicRotation
;
146 const OUString sGraphicURL
;
147 const OUString sReplacementGraphicURL
;
148 const OUString sHeight
;
149 const OUString sHoriOrient
;
150 const OUString sHoriOrientPosition
;
151 const OUString sHyperLinkName
;
152 const OUString sHyperLinkTarget
;
153 const OUString sHyperLinkURL
;
154 const OUString sIsAutomaticContour
;
155 const OUString sIsCollapsed
;
156 const OUString sIsPixelContour
;
157 const OUString sIsStart
;
158 const OUString sIsSyncHeightToWidth
;
159 const OUString sIsSyncWidthToHeight
;
160 const OUString sNumberingRules
;
161 const OUString sNumberingType
;
162 const OUString sPageDescName
;
163 const OUString sPageStyleName
;
164 const OUString sParaConditionalStyleName
;
165 const OUString sParagraphService
;
166 const OUString sParaStyleName
;
167 const OUString sPositionEndOfDoc
;
168 const OUString sPrefix
;
169 const OUString sRedline
;
170 const OUString sReferenceId
;
171 const OUString sReferenceMark
;
172 const OUString sRelativeHeight
;
173 const OUString sRelativeWidth
;
174 const OUString sRuby
;
175 const OUString sRubyCharStyleName
;
176 const OUString sRubyText
;
177 const OUString sServerMap
;
178 const OUString sShapeService
;
179 const OUString sSizeType
;
180 const OUString sSoftPageBreak
;
181 const OUString sStartAt
;
182 const OUString sSuffix
;
183 const OUString sTableService
;
184 const OUString sText
;
185 const OUString sTextContentService
;
186 const OUString sTextEmbeddedService
;
187 const OUString sTextEndnoteService
;
188 const OUString sTextField
;
189 const OUString sTextFieldService
;
190 const OUString sTextFrameService
;
191 const OUString sTextGraphicService
;
192 const OUString sTextPortionType
;
193 const OUString sTextSection
;
194 const OUString sUnvisitedCharStyleName
;
195 const OUString sVertOrient
;
196 const OUString sVertOrientPosition
;
197 const OUString sVisitedCharStyleName
;
198 const OUString sWidth
;
199 const OUString sWidthType
;
200 const OUString sTextFieldStart
;
201 const OUString sTextFieldEnd
;
202 const OUString sTextFieldStartEnd
;
205 const OUString sFrameStyleName
;
206 SinglePropertySetInfoCache aCharStyleNamesPropInfoCache
;
208 SvXMLAutoStylePoolP
& GetAutoStylePool() { return rAutoStylePool
; }
209 const SvXMLAutoStylePoolP
& GetAutoStylePool() const { return rAutoStylePool
; }
212 const rtl::Reference
< SvXMLExportPropertyMapper
>& GetParaPropMapper() const
214 return xParaPropMapper
;
217 const rtl::Reference
< SvXMLExportPropertyMapper
>& GetTextPropMapper() const
219 return xTextPropMapper
;
222 const rtl::Reference
< SvXMLExportPropertyMapper
>& GetAutoFramePropMapper() const
224 return xAutoFramePropMapper
;
226 const rtl::Reference
< SvXMLExportPropertyMapper
>& GetSectionPropMapper() const
228 return xSectionPropMapper
;
230 const rtl::Reference
< SvXMLExportPropertyMapper
>& GetRubyPropMapper() const
232 return xRubyPropMapper
;
235 OUString
FindTextStyleAndHyperlink(
236 const css::uno::Reference
< css::beans::XPropertySet
> & rPropSet
,
238 bool& rbHasCharStyle
,
239 bool& rbHasAutoStyle
,
240 const XMLPropertyState
** pAddState
= nullptr) const;
241 bool addHyperlinkAttributes(
242 const css::uno::Reference
< css::beans::XPropertySet
> & rPropSet
,
243 const css::uno::Reference
< css::beans::XPropertyState
> & rPropState
,
244 const css::uno::Reference
< css::beans::XPropertySetInfo
> & rPropSetInfo
);
246 void exportTextRangeEnumeration(
247 const css::uno::Reference
< css::container::XEnumeration
> & rRangeEnum
,
248 bool bAutoStyles
, bool bProgress
,
249 bool bPrvChrIsSpc
= true );
253 XMLShapeExportFlags
addTextFrameAttributes(
254 const css::uno::Reference
< css::beans::XPropertySet
>& rPropSet
,
256 OUString
*pMinHeightValue
= nullptr,
257 OUString
*pMinWidthValue
= nullptr );
259 virtual void exportStyleAttributes(
260 const css::uno::Reference
< css::style::XStyle
> & rStyle
) override
;
262 void exportPageFrames( bool bProgress
);
263 void exportFrameFrames( bool bAutoStyles
, bool bProgress
,
264 const css::uno::Reference
< css::text::XTextFrame
> *pParentTxtFrame
);
266 void exportNumStyles( bool bUsed
);
269 const css::uno::Reference
<
270 css::text::XText
> & rText
,
271 bool bAutoStyles
, bool bProgress
, bool bExportParagraph
, TextPNS eExtensionNS
= TextPNS::ODF
);
274 const css::uno::Reference
< css::text::XText
> & rText
,
275 const css::uno::Reference
< css::text::XTextSection
> & rBaseSection
,
276 bool bAutoStyles
, bool bProgress
, bool bExportParagraph
, TextPNS eExtensionNS
= TextPNS::ODF
);
278 bool exportTextContentEnumeration(
279 const css::uno::Reference
< css::container::XEnumeration
> & rContentEnum
,
281 const css::uno::Reference
< css::text::XTextSection
> & rBaseSection
,
283 bool bExportParagraph
= true,
284 const css::uno::Reference
< css::beans::XPropertySet
> *pRangePropSet
= nullptr,
285 bool bExportLevels
= true,
286 TextPNS eExtensionNS
= TextPNS::ODF
);
287 void exportParagraph(
288 const css::uno::Reference
< css::text::XTextContent
> & rTextContent
,
289 bool bAutoStyles
, bool bProgress
,
290 bool bExportParagraph
,
291 MultiPropertySetHelper
& rPropSetHelper
,
292 TextPNS eExtensionNS
);
294 virtual void exportTable(
295 const css::uno::Reference
< css::text::XTextContent
> & rTextContent
,
296 bool bAutoStyles
, bool bProgress
);
298 void exportTextField(
299 const css::uno::Reference
< css::text::XTextRange
> & rTextRange
,
300 bool bAutoStyles
, bool bProgress
);
302 void exportTextField(
303 const css::uno::Reference
< css::text::XTextField
> & xTextField
,
304 const bool bAutoStyles
, const bool bProgress
,
305 const bool bRecursive
);
307 void exportAnyTextFrame(
308 const css::uno::Reference
< css::text::XTextContent
> & rTextContent
,
310 bool bAutoStyles
, bool bProgress
, bool bExportContent
,
311 const css::uno::Reference
< css::beans::XPropertySet
> *pRangePropSet
);
312 void _exportTextFrame(
313 const css::uno::Reference
< css::beans::XPropertySet
> & rPropSet
,
314 const css::uno::Reference
< css::beans::XPropertySetInfo
> & rPropSetInfo
,
316 inline void exportTextFrame(
317 const css::uno::Reference
< css::text::XTextContent
> & rTextContent
,
318 bool bAutoStyles
, bool bProgress
, bool bExportContent
,
319 const css::uno::Reference
< css::beans::XPropertySet
> *pRangePropSet
= nullptr );
320 inline void exportShape(
321 const css::uno::Reference
< css::text::XTextContent
> & rTextContent
,
323 const css::uno::Reference
< css::beans::XPropertySet
> *pRangePropSet
= nullptr );
326 const css::uno::Reference
< css::beans::XPropertySet
> & rPropSet
,
327 const css::uno::Reference
< css::beans::XPropertySetInfo
> & rPropSetInfo
);
328 void _exportTextGraphic(
329 const css::uno::Reference
< css::beans::XPropertySet
> & rPropSet
,
330 const css::uno::Reference
< css::beans::XPropertySetInfo
> & rPropSetInfo
);
331 inline void exportTextGraphic(
332 const css::uno::Reference
< css::text::XTextContent
> & rTextContent
,
334 const css::uno::Reference
< css::beans::XPropertySet
> *pRangePropSet
= nullptr );
336 virtual void _collectTextEmbeddedAutoStyles(
337 const css::uno::Reference
< css::beans::XPropertySet
> & rPropSet
);
338 virtual void _exportTextEmbedded(
339 const css::uno::Reference
< css::beans::XPropertySet
> & rPropSet
,
340 const css::uno::Reference
< css::beans::XPropertySetInfo
> & rPropSetInfo
);
341 inline void exportTextEmbedded(
342 const css::uno::Reference
< css::text::XTextContent
> & rTextContent
,
344 const css::uno::Reference
< css::beans::XPropertySet
> *pRangePropSet
= nullptr );
346 /// export a footnote and styles
347 void exportTextFootnote(
348 const css::uno::Reference
< css::beans::XPropertySet
> & rPropSet
,
349 const OUString
& sString
,
350 bool bAutoStyles
, bool bProgress
);
352 /// helper for exportTextFootnote
353 void exportTextFootnoteHelper(
354 const css::uno::Reference
< css::text::XFootnote
> & rPropSet
,
355 const css::uno::Reference
< css::text::XText
> & rText
,
356 const OUString
& sString
,
358 bool bIsEndnote
, bool bProgress
);
360 /// export footnote and endnote configuration elements
361 void exportTextFootnoteConfiguration();
363 void exportTextFootnoteConfigurationHelper(
364 const css::uno::Reference
< css::beans::XPropertySet
> & rFootnoteSupplier
,
368 const css::uno::Reference
< css::beans::XPropertySet
> & xPropSet
,
369 const OUString
& rProperty
,
370 const enum ::xmloff::token::XMLTokenEnum pElements
[],
373 void exportSoftPageBreak(
374 const css::uno::Reference
< css::beans::XPropertySet
> & rPropSet
,
377 void exportTextRange(
378 const css::uno::Reference
< css::text::XTextRange
> & rTextRange
,
380 bool& rPrevCharWasSpace
,
381 FieldmarkType
& openFieldmarkType
);
383 void exportListChange( const XMLTextNumRuleInfo
& rPrvInfo
,
384 const XMLTextNumRuleInfo
& rNextInfo
);
386 /// check if current section or current list has changed;
387 /// calls exortListChange as appropriate
388 void exportListAndSectionChange(
389 css::uno::Reference
< css::text::XTextSection
> & rOldSection
,
390 const css::uno::Reference
< css::text::XTextSection
> & rNewSection
,
391 const XMLTextNumRuleInfo
& rOldList
,
392 const XMLTextNumRuleInfo
& rNewList
,
395 /// overload for exportListAndSectionChange;
396 /// takes new content rather than new section.
397 void exportListAndSectionChange(
398 css::uno::Reference
< css::text::XTextSection
> & rOldSection
,
399 const css::uno::Reference
< css::text::XTextContent
> & rNewContent
,
400 const XMLTextNumRuleInfo
& rOldList
,
401 const XMLTextNumRuleInfo
& rNewList
,
403 void exportListAndSectionChange(
404 css::uno::Reference
< css::text::XTextSection
> & rOldSection
,
405 MultiPropertySetHelper
& rPropSetHelper
,
406 sal_Int16 nTextSectionId
,
407 const css::uno::Reference
< css::text::XTextContent
> & rNewContent
,
408 const XMLTextNumRuleInfo
& rOldList
,
409 const XMLTextNumRuleInfo
& rNewList
,
414 const css::uno::Reference
< css::beans::XPropertySet
> & rPortionPropSet
,
417 /// export a text:meta
419 const css::uno::Reference
< css::beans::XPropertySet
> & i_xPortion
,
420 bool i_bAutoStyles
, bool i_isProgress
);
424 XMLTextParagraphExport(
426 SvXMLAutoStylePoolP
& rASP
428 virtual ~XMLTextParagraphExport() override
;
430 /// add autostyle for specified family
433 MultiPropertySetHelper
& rPropSetHelper
,
434 const css::uno::Reference
< css::beans::XPropertySet
> & rPropSet
);
437 const css::uno::Reference
< css::beans::XPropertySet
> & rPropSet
,
438 const XMLPropertyState
** pAddState
= nullptr, bool bDontSeek
= false );
440 /// find style name for specified family and parent
443 const css::uno::Reference
< css::beans::XPropertySet
> & rPropSet
,
444 const OUString
& rParent
,
445 const XMLPropertyState
** pAddState
= nullptr ) const;
447 static SvXMLExportPropertyMapper
*CreateShapeExtPropMapper(
448 SvXMLExport
& rExport
);
449 static SvXMLExportPropertyMapper
*CreateCharExtPropMapper(
450 SvXMLExport
& rExport
);
451 static SvXMLExportPropertyMapper
*CreateParaExtPropMapper(
452 SvXMLExport
& rExport
);
453 static SvXMLExportPropertyMapper
*CreateParaDefaultExtPropMapper(
454 SvXMLExport
& rExport
);
456 // This methods exports all (or all used) styles
457 void exportTextStyles( bool bUsed
, bool bProg
);
459 /// This method exports (text field) declarations etc.
460 void exportTextDeclarations();
462 /// export the (text field) declarations for a particular XText
463 void exportTextDeclarations(
464 const css::uno::Reference
< css::text::XText
> & rText
);
466 /// export all declarations
467 void exportUsedDeclarations();
469 /// Export the list of change information (enclosed by <tracked-changes>)
470 /// (or the necessary automatic styles)
471 void exportTrackedChanges(bool bAutoStyle
);
473 /// Export the list of change information (enclosed by <tracked-changes>)
474 /// (or the necessary automatic styles)
475 void exportTrackedChanges(const css::uno::Reference
< css::text::XText
> & rText
,
478 /// Record tracked changes for this particular XText
479 /// (empty reference stop recording)
480 /// This should be used if tracked changes for e.g. footers are to
481 /// be exported separately via the exportTrackedChanges(bool,
482 /// Reference<XText>) method.
483 void recordTrackedChangesForXText(
484 const css::uno::Reference
< css::text::XText
> & rText
);
487 /// Stop recording tracked changes.
488 /// This is the same as calling recordTrackedChanges(...) with an
490 void recordTrackedChangesNoXText();
493 // This method exports the given OUString
495 const OUString
& rText
,
496 bool& rPrevCharWasSpace
);
498 // This method collects all automatic styles for the given XText
499 void collectTextAutoStyles(
500 const css::uno::Reference
< css::text::XText
> & rText
,
501 bool bIsProgress
= false,
502 bool bExportParagraph
= true )
504 exportText( rText
, true, bIsProgress
, bExportParagraph
);
507 void collectTextAutoStyles(
508 const css::uno::Reference
< css::text::XText
> & rText
,
509 const css::uno::Reference
< css::text::XTextSection
> & rBaseSection
,
512 exportText( rText
, rBaseSection
, true, bIsProgress
, true/*bExportParagraph*/ );
515 // It the model implements the xAutoStylesSupplier interface, the automatic
516 // styles can exported without iterating over the text portions
517 bool collectTextAutoStylesOptimized( bool bIsProgress
);
519 // This method exports all automatic styles that have been collected.
520 void exportTextAutoStyles();
522 void exportEvents( const css::uno::Reference
< css::beans::XPropertySet
> & rPropSet
);
524 // Implement Title/Description Elements UI (#i73249#)
525 void exportTitleAndDescription( const css::uno::Reference
< css::beans::XPropertySet
> & rPropSet
,
526 const css::uno::Reference
< css::beans::XPropertySetInfo
> & rPropSetInfo
);
528 // This method exports the given XText
530 const css::uno::Reference
< css::text::XText
> & rText
,
531 bool bIsProgress
= false,
532 bool bExportParagraph
= true, TextPNS eExtensionNS
= TextPNS::ODF
)
534 exportText( rText
, false, bIsProgress
, bExportParagraph
, eExtensionNS
);
538 const css::uno::Reference
< css::text::XText
> & rText
,
539 const css::uno::Reference
< css::text::XTextSection
> & rBaseSection
,
541 TextPNS eExtensionNS
= TextPNS::ODF
)
543 exportText( rText
, rBaseSection
, false, bIsProgress
, true/*bExportParagraph*/, eExtensionNS
);
546 void exportFramesBoundToPage( bool bIsProgress
)
548 exportPageFrames( bIsProgress
);
550 inline const XMLTextListAutoStylePool
& GetListAutoStylePool() const;
552 void SetBlockMode( bool bSet
) { bBlock
= bSet
; }
553 bool IsBlockMode() const { return bBlock
; }
556 const rtl::Reference
< SvXMLExportPropertyMapper
>& GetParagraphPropertyMapper() const
558 return xParaPropMapper
;
562 /** exclude form controls which are in mute sections.
564 * This method is necessary to prevent the form layer export from exporting
565 * control models whose controls are not represented in the document. To
566 * achieve this, this method iterates over all shapes, checks to see if
567 * they are control shapes, and if so, whether they should be exported or
568 * not. If not, the form layer export will be notified accordingly.
570 * The reason this method is located here is tha it needs to access the
571 * XMLSectionExport, which is only available here.
573 void PreventExportOfControlsInMuteSections(
574 const css::uno::Reference
< css::container::XIndexAccess
> & rShapes
,
575 const rtl::Reference
<xmloff::OFormLayerXMLExport
>& xFormExport
);
577 SinglePropertySetInfoCache
& GetCharStyleNamesPropInfoCache() { return aCharStyleNamesPropInfoCache
; }
579 void PushNewTextListsHelper();
581 void PopTextListsHelper();
584 XMLTextParagraphExport(XMLTextParagraphExport
&) = delete;
587 inline const XMLTextListAutoStylePool
&
588 XMLTextParagraphExport::GetListAutoStylePool() const
590 return *pListAutoPool
;
593 inline void XMLTextParagraphExport::exportTextFrame(
594 const css::uno::Reference
< css::text::XTextContent
> & rTextContent
,
595 bool bAutoStyles
, bool bIsProgress
, bool bExportContent
,
596 const css::uno::Reference
< css::beans::XPropertySet
> *pRangePropSet
)
598 exportAnyTextFrame( rTextContent
, FrameType::Text
, bAutoStyles
, bIsProgress
,
599 bExportContent
, pRangePropSet
);
602 inline void XMLTextParagraphExport::exportTextGraphic(
603 const css::uno::Reference
< css::text::XTextContent
> & rTextContent
,
605 const css::uno::Reference
< css::beans::XPropertySet
> *pRangePropSet
)
607 exportAnyTextFrame( rTextContent
, FrameType::Graphic
, bAutoStyles
, false,
608 true, pRangePropSet
);
611 inline void XMLTextParagraphExport::exportTextEmbedded(
612 const css::uno::Reference
< css::text::XTextContent
> & rTextContent
,
614 const css::uno::Reference
< css::beans::XPropertySet
> *pRangePropSet
)
616 exportAnyTextFrame( rTextContent
, FrameType::Embedded
, bAutoStyles
, false,
617 true, pRangePropSet
);
620 inline void XMLTextParagraphExport::exportShape(
621 const css::uno::Reference
< css::text::XTextContent
> & rTextContent
,
623 const css::uno::Reference
< css::beans::XPropertySet
> *pRangePropSet
)
625 exportAnyTextFrame( rTextContent
, FrameType::Shape
, bAutoStyles
, false,
626 true, pRangePropSet
);
631 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */