Line data Source code
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 : #ifndef INCLUDED_XMLOFF_TXTPARAE_HXX
21 : #define INCLUDED_XMLOFF_TXTPARAE_HXX
22 :
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/uno/Sequence.h>
28 : #include <com/sun/star/beans/PropertyValue.hpp>
29 : #include <xmloff/xmlexppr.hxx>
30 : #include <xmloff/styleexp.hxx>
31 : #include <xmloff/xmltoken.hxx>
32 : #include <xmloff/SinglePropertySetInfoCache.hxx>
33 : #include <memory>
34 : #include <vector>
35 :
36 : class XMLTextListsHelper;
37 : class SvXMLExport;
38 : class SvXMLAutoStylePoolP;
39 : class XMLTextFieldExport;
40 : class XMLTextNumRuleInfo;
41 : class XMLTextListAutoStylePool;
42 : class XMLSectionExport;
43 : class XMLIndexMarkExport;
44 : class XMLRedlineExport;
45 : struct XMLPropertyState;
46 : class MultiPropertySetHelper;
47 : enum class XMLShapeExportFlags;
48 :
49 : namespace com { namespace sun { namespace star
50 : {
51 : namespace beans { class XPropertySet; class XPropertyState;
52 : class XPropertySetInfo; }
53 : namespace container { class XEnumerationAccess; class XEnumeration; class XIndexAccess; }
54 : namespace text { class XTextContent; class XTextRange; class XText;
55 : class XFootnote; class XTextFrame; class XTextSection;
56 : class XTextField;
57 : class XDocumentIndex; class XTextShapesSupplier; }
58 : } } }
59 :
60 : namespace xmloff
61 : {
62 : class OFormLayerXMLExport;
63 : class BoundFrameSets;
64 :
65 : }
66 :
67 : enum class TextPNS
68 : {
69 : ODF,
70 : EXTENSION
71 : };
72 :
73 : class XMLOFF_DLLPUBLIC XMLTextParagraphExport : public XMLStyleExport
74 : {
75 : struct Impl;
76 : std::unique_ptr<Impl> m_xImpl;
77 :
78 : // SvXMLExport& rExport;
79 : SvXMLAutoStylePoolP& rAutoStylePool;
80 : rtl::Reference < SvXMLExportPropertyMapper > xParaPropMapper;
81 : rtl::Reference < SvXMLExportPropertyMapper > xTextPropMapper;
82 : rtl::Reference < SvXMLExportPropertyMapper > xFramePropMapper;
83 : rtl::Reference < SvXMLExportPropertyMapper > xAutoFramePropMapper;
84 : rtl::Reference < SvXMLExportPropertyMapper > xSectionPropMapper;
85 : rtl::Reference < SvXMLExportPropertyMapper > xRubyPropMapper;
86 :
87 : const ::std::unique_ptr< ::xmloff::BoundFrameSets > pBoundFrameSets;
88 : XMLTextFieldExport *pFieldExport;
89 : std::vector<OUString> *pListElements;
90 : XMLTextListAutoStylePool *pListAutoPool;
91 : XMLSectionExport *pSectionExport;
92 : XMLIndexMarkExport *pIndexMarkExport;
93 :
94 : /// may be NULL (if no redlines should be exported; e.g. in block mode)
95 : XMLRedlineExport *pRedlineExport;
96 : std::vector<OUString> *pHeadingStyles;
97 :
98 : bool bProgress;
99 :
100 : bool bBlock;
101 :
102 : // keep track of open rubies
103 : OUString sOpenRubyText;
104 : OUString sOpenRubyCharStyle;
105 : bool bOpenRuby;
106 :
107 : XMLTextListsHelper* mpTextListsHelper;
108 : ::std::vector< XMLTextListsHelper* > maTextListsHelperStack;
109 :
110 : enum FrameType { FT_TEXT, FT_GRAPHIC, FT_EMBEDDED, FT_SHAPE };
111 : public:
112 :
113 : enum FieldmarkType { NONE, TEXT, CHECK }; // Used for simulating fieldmarks in OpenDocument 1.n Strict (for n <= 2). CHECK currently ignored.
114 :
115 :
116 : void exportTextRangeSpan(
117 : const ::com::sun::star::uno::Reference< com::sun::star::text::XTextRange > & rTextRange,
118 : ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & xPropSet,
119 : ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySetInfo > & xPropSetInfo,
120 : const bool bIsUICharStyle,
121 : const bool bHasAutoStyle,
122 : const OUString& sStyle,
123 : bool& rPrevCharIsSpace,
124 : FieldmarkType& openFieldMark);
125 :
126 : protected:
127 :
128 : const OUString sActualSize;
129 : // Implement Title/Description Elements UI (#i73249#)
130 : const OUString sTitle;
131 : const OUString sDescription;
132 : const OUString sAnchorCharStyleName;
133 : const OUString sAnchorPageNo;
134 : const OUString sAnchorType;
135 : const OUString sBeginNotice;
136 : const OUString sBookmark;
137 : const OUString sCategory;
138 : const OUString sChainNextName;
139 : const OUString sCharStyleName;
140 : const OUString sCharStyleNames;
141 : const OUString sContourPolyPolygon;
142 : const OUString sDocumentIndex;
143 : const OUString sDocumentIndexMark;
144 : const OUString sEndNotice;
145 : const OUString sFootnote;
146 : const OUString sFootnoteCounting;
147 : const OUString sFrame;
148 : const OUString sFrameHeightAbsolute;
149 : const OUString sFrameHeightPercent;
150 : const OUString sFrameStyleName;
151 : const OUString sFrameWidthAbsolute;
152 : const OUString sFrameWidthPercent;
153 : const OUString sGraphicFilter;
154 : const OUString sGraphicRotation;
155 : const OUString sGraphicURL;
156 : const OUString sReplacementGraphicURL;
157 : const OUString sHeight;
158 : const OUString sHoriOrient;
159 : const OUString sHoriOrientPosition;
160 : const OUString sHyperLinkName;
161 : const OUString sHyperLinkTarget;
162 : const OUString sHyperLinkURL;
163 : const OUString sIsAutomaticContour;
164 : const OUString sIsCollapsed;
165 : const OUString sIsPixelContour;
166 : const OUString sIsStart;
167 : const OUString sIsSyncHeightToWidth;
168 : const OUString sIsSyncWidthToHeight;
169 : const OUString sNumberingRules;
170 : const OUString sNumberingType;
171 : const OUString sPageDescName;
172 : const OUString sPageStyleName;
173 : const OUString sParaChapterNumberingLevel;
174 : const OUString sParaConditionalStyleName;
175 : const OUString sParagraphService;
176 : const OUString sParaStyleName;
177 : const OUString sPositionEndOfDoc;
178 : const OUString sPrefix;
179 : const OUString sRedline;
180 : const OUString sReferenceId;
181 : const OUString sReferenceMark;
182 : const OUString sRelativeHeight;
183 : const OUString sRelativeWidth;
184 : const OUString sRuby;
185 : const OUString sRubyAdjust;
186 : const OUString sRubyCharStyleName;
187 : const OUString sRubyText;
188 : const OUString sServerMap;
189 : const OUString sShapeService;
190 : const OUString sSizeType;
191 : const OUString sSoftPageBreak;
192 : const OUString sStartAt;
193 : const OUString sSuffix;
194 : const OUString sTableService;
195 : const OUString sText;
196 : const OUString sTextContentService;
197 : const OUString sTextEmbeddedService;
198 : const OUString sTextEndnoteService;
199 : const OUString sTextField;
200 : const OUString sTextFieldService;
201 : const OUString sTextFrameService;
202 : const OUString sTextGraphicService;
203 : const OUString sTextPortionType;
204 : const OUString sTextSection;
205 : const OUString sUnvisitedCharStyleName;
206 : const OUString sVertOrient;
207 : const OUString sVertOrientPosition;
208 : const OUString sVisitedCharStyleName;
209 : const OUString sWidth;
210 : const OUString sWidthType;
211 : const OUString sTextFieldStart;
212 : const OUString sTextFieldEnd;
213 : const OUString sTextFieldStartEnd;
214 :
215 : SinglePropertySetInfoCache aCharStyleNamesPropInfoCache;
216 :
217 3029 : SvXMLAutoStylePoolP& GetAutoStylePool() { return rAutoStylePool; }
218 1119 : const SvXMLAutoStylePoolP& GetAutoStylePool() const { return rAutoStylePool; }
219 :
220 : public:
221 1782 : rtl::Reference < SvXMLExportPropertyMapper > GetParaPropMapper() const
222 : {
223 1782 : return xParaPropMapper;
224 : }
225 :
226 5616 : rtl::Reference < SvXMLExportPropertyMapper > GetTextPropMapper() const
227 : {
228 5616 : return xTextPropMapper;
229 : }
230 :
231 73 : rtl::Reference < SvXMLExportPropertyMapper > GetFramePropMapper() const
232 : {
233 73 : return xFramePropMapper;
234 : }
235 178 : rtl::Reference < SvXMLExportPropertyMapper > GetAutoFramePropMapper() const
236 : {
237 178 : return xAutoFramePropMapper;
238 : }
239 76 : rtl::Reference < SvXMLExportPropertyMapper > GetSectionPropMapper() const
240 : {
241 76 : return xSectionPropMapper;
242 : }
243 7 : rtl::Reference < SvXMLExportPropertyMapper > GetRubyPropMapper() const
244 : {
245 7 : return xRubyPropMapper;
246 : }
247 :
248 : OUString FindTextStyleAndHyperlink(
249 : const ::com::sun::star::uno::Reference <
250 : ::com::sun::star::beans::XPropertySet > & rPropSet,
251 : bool& rbHyperlink,
252 : bool& rbHasCharStyle,
253 : bool& rbHasAutoStyle,
254 : const XMLPropertyState** pAddState = NULL) const;
255 : bool addHyperlinkAttributes(
256 : const ::com::sun::star::uno::Reference <
257 : ::com::sun::star::beans::XPropertySet > & rPropSet,
258 : const ::com::sun::star::uno::Reference <
259 : ::com::sun::star::beans::XPropertyState > & rPropState,
260 : const ::com::sun::star::uno::Reference <
261 : ::com::sun::star::beans::XPropertySetInfo > & rPropSetInfo );
262 :
263 : void exportTextRangeEnumeration(
264 : const ::com::sun::star::uno::Reference <
265 : ::com::sun::star::container::XEnumeration > & rRangeEnum,
266 : bool bAutoStyles, bool bProgress,
267 : bool bPrvChrIsSpc = true );
268 :
269 : protected:
270 :
271 : XMLShapeExportFlags addTextFrameAttributes(
272 : const ::com::sun::star::uno::Reference <
273 : ::com::sun::star::beans::XPropertySet >& rPropSet,
274 : bool bShape,
275 : OUString *pMinHeightValue = 0,
276 : OUString *pMinWidthValue = 0 );
277 :
278 : virtual void exportStyleAttributes(
279 : const ::com::sun::star::uno::Reference<
280 : ::com::sun::star::style::XStyle > & rStyle ) SAL_OVERRIDE;
281 :
282 : void exportPageFrames( bool bAutoStyles, bool bProgress );
283 : void exportFrameFrames( bool bAutoStyles, bool bProgress,
284 : const ::com::sun::star::uno::Reference <
285 : ::com::sun::star::text::XTextFrame > *pParentTxtFrame = 0 );
286 :
287 : void exportNumStyles( bool bUsed );
288 :
289 : void exportText(
290 : const ::com::sun::star::uno::Reference <
291 : ::com::sun::star::text::XText > & rText,
292 : bool bAutoStyles, bool bProgress, bool bExportParagraph, TextPNS eExtensionNS = TextPNS::ODF );
293 :
294 : void exportText(
295 : const ::com::sun::star::uno::Reference <
296 : ::com::sun::star::text::XText > & rText,
297 : const ::com::sun::star::uno::Reference <
298 : ::com::sun::star::text::XTextSection > & rBaseSection,
299 : bool bAutoStyles, bool bProgress, bool bExportParagraph, TextPNS eExtensionNS = TextPNS::ODF );
300 :
301 : bool exportTextContentEnumeration(
302 : const ::com::sun::star::uno::Reference <
303 : ::com::sun::star::container::XEnumeration > & rContentEnum,
304 : bool bAutoStyles,
305 : const ::com::sun::star::uno::Reference <
306 : ::com::sun::star::text::XTextSection > & rBaseSection,
307 : bool bProgress,
308 : bool bExportParagraph = true,
309 : const ::com::sun::star::uno::Reference <
310 : ::com::sun::star::beans::XPropertySet > *pRangePropSet = 0,
311 : bool bExportLevels = true,
312 : TextPNS eExtensionNS = TextPNS::ODF);
313 : void exportParagraph(
314 : const ::com::sun::star::uno::Reference <
315 : ::com::sun::star::text::XTextContent > & rTextContent,
316 : bool bAutoStyles, bool bProgress,
317 : bool bExportParagraph,
318 : MultiPropertySetHelper& rPropSetHelper,
319 : TextPNS eExtensionNS = TextPNS::ODF);
320 :
321 : virtual void exportTable(
322 : const ::com::sun::star::uno::Reference <
323 : ::com::sun::star::text::XTextContent > & rTextContent,
324 : bool bAutoStyles, bool bProgress );
325 :
326 : void exportTextField(
327 : const ::com::sun::star::uno::Reference <
328 : ::com::sun::star::text::XTextRange > & rTextRange,
329 : bool bAutoStyles, bool bProgress );
330 :
331 : void exportTextField(
332 : const ::com::sun::star::uno::Reference <
333 : ::com::sun::star::text::XTextField> & xTextField,
334 : const bool bAutoStyles, const bool bProgress,
335 : const bool bRecursive );
336 :
337 : void exportAnyTextFrame(
338 : const ::com::sun::star::uno::Reference <
339 : ::com::sun::star::text::XTextContent > & rTextContent,
340 : FrameType eTxpe,
341 : bool bAutoStyles, bool bProgress, bool bExportContent,
342 : const ::com::sun::star::uno::Reference <
343 : ::com::sun::star::beans::XPropertySet > *pRangePropSet = 0 );
344 : void _exportTextFrame(
345 : const ::com::sun::star::uno::Reference <
346 : ::com::sun::star::beans::XPropertySet > & rPropSet,
347 : const ::com::sun::star::uno::Reference <
348 : ::com::sun::star::beans::XPropertySetInfo > & rPropSetInfo,
349 : bool bProgress );
350 : inline void exportTextFrame(
351 : const ::com::sun::star::uno::Reference <
352 : ::com::sun::star::text::XTextContent > & rTextContent,
353 : bool bAutoStyles, bool bProgress, bool bExportContent,
354 : const ::com::sun::star::uno::Reference <
355 : ::com::sun::star::beans::XPropertySet > *pRangePropSet = 0 );
356 : inline void exportShape(
357 : const ::com::sun::star::uno::Reference <
358 : ::com::sun::star::text::XTextContent > & rTextContent,
359 : bool bAutoStyles,
360 : const ::com::sun::star::uno::Reference <
361 : ::com::sun::star::beans::XPropertySet > *pRangePropSet = 0 );
362 :
363 : void exportContour(
364 : const ::com::sun::star::uno::Reference <
365 : ::com::sun::star::beans::XPropertySet > & rPropSet,
366 : const ::com::sun::star::uno::Reference <
367 : ::com::sun::star::beans::XPropertySetInfo > & rPropSetInfo );
368 : void _exportTextGraphic(
369 : const ::com::sun::star::uno::Reference <
370 : ::com::sun::star::beans::XPropertySet > & rPropSet,
371 : const ::com::sun::star::uno::Reference <
372 : ::com::sun::star::beans::XPropertySetInfo > & rPropSetInfo );
373 : inline void exportTextGraphic(
374 : const ::com::sun::star::uno::Reference <
375 : ::com::sun::star::text::XTextContent > & rTextContent,
376 : bool bAutoStyles,
377 : const ::com::sun::star::uno::Reference <
378 : ::com::sun::star::beans::XPropertySet > *pRangePropSet = 0 );
379 :
380 : virtual void _collectTextEmbeddedAutoStyles(
381 : const ::com::sun::star::uno::Reference <
382 : ::com::sun::star::beans::XPropertySet > & rPropSet );
383 : virtual void _exportTextEmbedded(
384 : const ::com::sun::star::uno::Reference <
385 : ::com::sun::star::beans::XPropertySet > & rPropSet,
386 : const ::com::sun::star::uno::Reference <
387 : ::com::sun::star::beans::XPropertySetInfo > & rPropSetInfo );
388 : inline void exportTextEmbedded(
389 : const ::com::sun::star::uno::Reference <
390 : ::com::sun::star::text::XTextContent > & rTextContent,
391 : bool bAutoStyles,
392 : const ::com::sun::star::uno::Reference <
393 : ::com::sun::star::beans::XPropertySet > *pRangePropSet = 0 );
394 :
395 : /// export a footnote and styles
396 : void exportTextFootnote(
397 : const ::com::sun::star::uno::Reference<
398 : ::com::sun::star::beans::XPropertySet > & rPropSet,
399 : const OUString& sString,
400 : bool bAutoStyles, bool bProgress );
401 :
402 : /// helper for exportTextFootnote
403 : void exportTextFootnoteHelper(
404 : const ::com::sun::star::uno::Reference<
405 : ::com::sun::star::text::XFootnote > & rPropSet,
406 : const ::com::sun::star::uno::Reference<
407 : ::com::sun::star::text::XText> & rText,
408 : const OUString& sString,
409 : bool bAutoStyles,
410 : bool bIsEndnote, bool bProgress );
411 :
412 : /// export footnote and endnote configuration elements
413 : void exportTextFootnoteConfiguration();
414 :
415 : void exportTextFootnoteConfigurationHelper(
416 : const ::com::sun::star::uno::Reference<
417 : ::com::sun::star::beans::XPropertySet> & rFootnoteSupplier,
418 : bool bIsEndnote);
419 :
420 : void exportTextMark(
421 : const ::com::sun::star::uno::Reference<
422 : ::com::sun::star::beans::XPropertySet> & xPropSet,
423 : const OUString& rProperty,
424 : const enum ::xmloff::token::XMLTokenEnum pElements[],
425 : bool bAutoStyles);
426 :
427 : void exportIndexMark(
428 : const ::com::sun::star::uno::Reference<
429 : ::com::sun::star::beans::XPropertySet> & rPropSet,
430 : bool bAutoStyles);
431 :
432 : void exportSoftPageBreak(
433 : const ::com::sun::star::uno::Reference<
434 : ::com::sun::star::beans::XPropertySet> & rPropSet,
435 : bool bAutoStyles);
436 :
437 : void exportTextRange(
438 : const ::com::sun::star::uno::Reference <
439 : ::com::sun::star::text::XTextRange > & rTextRange,
440 : bool bAutoStyles,
441 : bool& rPrevCharWasSpace,
442 : FieldmarkType& openFieldmarkType );
443 :
444 : void exportListChange( const XMLTextNumRuleInfo& rPrvInfo,
445 : const XMLTextNumRuleInfo& rNextInfo );
446 :
447 : /// check if current section or current list has changed;
448 : /// calls exortListChange as appropriate
449 : void exportListAndSectionChange(
450 : ::com::sun::star::uno::Reference <
451 : ::com::sun::star::text::XTextSection > & rOldSection,
452 : const ::com::sun::star::uno::Reference <
453 : ::com::sun::star::text::XTextSection > & rNewSection,
454 : const XMLTextNumRuleInfo& rOldList,
455 : const XMLTextNumRuleInfo& rNewList,
456 : bool bAutoStyles );
457 :
458 : /// overload for exportListAndSectionChange;
459 : /// takes new content rather than new section.
460 : void exportListAndSectionChange(
461 : ::com::sun::star::uno::Reference <
462 : ::com::sun::star::text::XTextSection > & rOldSection,
463 : const ::com::sun::star::uno::Reference <
464 : ::com::sun::star::text::XTextContent > & rNewContent,
465 : const XMLTextNumRuleInfo& rOldList,
466 : const XMLTextNumRuleInfo& rNewList,
467 : bool bAutoStyles );
468 : void exportListAndSectionChange(
469 : ::com::sun::star::uno::Reference <
470 : ::com::sun::star::text::XTextSection > & rOldSection,
471 : MultiPropertySetHelper& rPropSetHelper,
472 : sal_Int16 nTextSectionId,
473 : const ::com::sun::star::uno::Reference <
474 : ::com::sun::star::text::XTextContent > & rNewContent,
475 : const XMLTextNumRuleInfo& rOldList,
476 : const XMLTextNumRuleInfo& rNewList,
477 : bool bAutoStyles );
478 :
479 : /// export a redline text portion
480 : void exportChange(
481 : const ::com::sun::star::uno::Reference <
482 : ::com::sun::star::beans::XPropertySet > & rPropSet,
483 : bool bAutoStyle);
484 :
485 : /// export a ruby
486 : void exportRuby(
487 : const ::com::sun::star::uno::Reference<
488 : ::com::sun::star::beans::XPropertySet> & rPortionPropSet,
489 : bool bAutoStyles );
490 :
491 : /// export a text:meta
492 : void exportMeta(
493 : const ::com::sun::star::uno::Reference<
494 : ::com::sun::star::beans::XPropertySet> & i_xPortion,
495 : bool i_bAutoStyles, bool i_isProgress );
496 :
497 : public:
498 :
499 : XMLTextParagraphExport(
500 : SvXMLExport& rExp,
501 : SvXMLAutoStylePoolP & rASP
502 : );
503 : virtual ~XMLTextParagraphExport();
504 :
505 : /// add autostyle for specified family
506 : void Add(
507 : sal_uInt16 nFamily,
508 : MultiPropertySetHelper& rPropSetHelper,
509 : const ::com::sun::star::uno::Reference <
510 : ::com::sun::star::beans::XPropertySet > & rPropSet,
511 : const XMLPropertyState** pAddState = NULL );
512 : void Add(
513 : sal_uInt16 nFamily,
514 : const ::com::sun::star::uno::Reference <
515 : ::com::sun::star::beans::XPropertySet > & rPropSet,
516 : const XMLPropertyState** pAddState = NULL, bool bDontSeek = false );
517 :
518 : /// find style name for specified family and parent
519 : OUString Find(
520 : sal_uInt16 nFamily,
521 : const ::com::sun::star::uno::Reference <
522 : ::com::sun::star::beans::XPropertySet > & rPropSet,
523 : const OUString& rParent,
524 : const XMLPropertyState** pAddState = NULL ) const;
525 :
526 : static SvXMLExportPropertyMapper *CreateShapeExtPropMapper(
527 : SvXMLExport& rExport );
528 : static SvXMLExportPropertyMapper *CreateCharExtPropMapper(
529 : SvXMLExport& rExport);
530 : static SvXMLExportPropertyMapper *CreateParaExtPropMapper(
531 : SvXMLExport& rExport);
532 : static SvXMLExportPropertyMapper *CreateParaDefaultExtPropMapper(
533 : SvXMLExport& rExport);
534 :
535 : // This methods exports all (or all used) styles
536 : void exportTextStyles( bool bUsed
537 : , bool bProg = false
538 : );
539 :
540 : /// This method exports (text field) declarations etc.
541 : void exportTextDeclarations();
542 :
543 : /// export the (text field) declarations for a particular XText
544 : void exportTextDeclarations(
545 : const ::com::sun::star::uno::Reference <
546 : ::com::sun::star::text::XText > & rText );
547 :
548 : /// true: export only those declarations that are used;
549 : /// false: export all declarations
550 : void exportUsedDeclarations( bool bOnlyUsed );
551 :
552 : /// Export the list of change information (enclosed by <tracked-changes>)
553 : /// (or the necessary automatic styles)
554 : void exportTrackedChanges(bool bAutoStyle);
555 :
556 : /// Export the list of change information (enclosed by <tracked-changes>)
557 : /// (or the necessary automatic styles)
558 : void exportTrackedChanges(const ::com::sun::star::uno::Reference <
559 : ::com::sun::star::text::XText > & rText,
560 : bool bAutoStyle );
561 :
562 : /// Record tracked changes for this particular XText
563 : /// (empty reference stop recording)
564 : /// This should be used if tracked changes for e.g. footers are to
565 : /// be exported separately via the exportTrackedChanges(bool,
566 : /// Reference<XText>) method.
567 : void recordTrackedChangesForXText(
568 : const ::com::sun::star::uno::Reference <
569 : ::com::sun::star::text::XText > & rText );
570 :
571 :
572 : /// Stop recording tracked changes.
573 : /// This is the same as calling recordTrackedChanges(...) with an
574 : /// empty reference.
575 : void recordTrackedChangesNoXText();
576 :
577 :
578 : // This method exports the given OUString
579 : void exportText(
580 : const OUString& rText,
581 : bool& rPrevCharWasSpace,
582 : TextPNS eExtensionNS = TextPNS::ODF);
583 :
584 : // This method collects all automatic styles for the given XText
585 860 : void collectTextAutoStyles(
586 : const ::com::sun::star::uno::Reference <
587 : ::com::sun::star::text::XText > & rText,
588 : bool bIsProgress = false,
589 : bool bExportParagraph = true )
590 : {
591 860 : exportText( rText, true, bIsProgress, bExportParagraph );
592 860 : }
593 :
594 0 : void collectTextAutoStyles(
595 : const ::com::sun::star::uno::Reference <
596 : ::com::sun::star::text::XText > & rText,
597 : const ::com::sun::star::uno::Reference <
598 : ::com::sun::star::text::XTextSection > & rBaseSection,
599 : bool bIsProgress = false,
600 : bool bExportParagraph = true )
601 : {
602 0 : exportText( rText, rBaseSection, true, bIsProgress, bExportParagraph );
603 0 : }
604 :
605 : // It the model implements the xAutoStylesSupplier interface, the automatic
606 : // styles can exported without iterating over the text portions
607 : bool collectTextAutoStylesOptimized(
608 : bool bIsProgress = false );
609 :
610 : // This method exports all automatic styles that have been collected.
611 : void exportTextAutoStyles();
612 :
613 : void exportEvents( const ::com::sun::star::uno::Reference < com::sun::star::beans::XPropertySet > & rPropSet );
614 :
615 : // Implement Title/Description Elements UI (#i73249#)
616 : void exportTitleAndDescription( const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet > & rPropSet,
617 : const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySetInfo > & rPropSetInfo );
618 :
619 : // This method exports the given XText
620 374 : void exportText(
621 : const ::com::sun::star::uno::Reference <
622 : ::com::sun::star::text::XText > & rText,
623 : bool bIsProgress = false,
624 : bool bExportParagraph = true, TextPNS eExtensionNS = TextPNS::ODF)
625 : {
626 374 : exportText( rText, false, bIsProgress, bExportParagraph, eExtensionNS );
627 374 : }
628 :
629 168 : void exportText(
630 : const ::com::sun::star::uno::Reference <
631 : ::com::sun::star::text::XText > & rText,
632 : const ::com::sun::star::uno::Reference <
633 : ::com::sun::star::text::XTextSection > & rBaseSection,
634 : bool bIsProgress = false,
635 : bool bExportParagraph = true,
636 : TextPNS eExtensionNS = TextPNS::ODF)
637 : {
638 168 : exportText( rText, rBaseSection, false, bIsProgress, bExportParagraph, eExtensionNS );
639 168 : }
640 :
641 73 : void exportFramesBoundToPage( bool bIsProgress = false )
642 : {
643 73 : exportPageFrames( false, bIsProgress );
644 73 : }
645 59 : void exportFramesBoundToFrame(
646 : const ::com::sun::star::uno::Reference <
647 : ::com::sun::star::text::XTextFrame >& rParentTxtFrame,
648 : bool bIsProgress = false )
649 : {
650 59 : exportFrameFrames( false, bIsProgress, &rParentTxtFrame );
651 59 : }
652 : inline const XMLTextListAutoStylePool& GetListAutoStylePool() const;
653 :
654 144 : void SetBlockMode( bool bSet ) { bBlock = bSet; }
655 1205 : bool IsBlockMode() const { return bBlock; }
656 :
657 :
658 242 : rtl::Reference < SvXMLExportPropertyMapper > GetParagraphPropertyMapper() const
659 : {
660 242 : return xParaPropMapper;
661 : }
662 :
663 :
664 : /** exclude form controls which are in mute sections.
665 : *
666 : * This method is necessary to prevent the form layer export from exporting
667 : * control models whose controls are not represented in the document. To
668 : * achieve this, this method iterates over all shapes, checks to see if
669 : * they are control shapes, and if so, whether they should be exported or
670 : * not. If not, the form layer export will be notified accordingly.
671 : *
672 : * The reason this method is located here is tha it needs to access the
673 : * XMLSectionExport, which is only available here.
674 : */
675 : void PreventExportOfControlsInMuteSections(
676 : const ::com::sun::star::uno::Reference<
677 : ::com::sun::star::container::XIndexAccess> & rShapes,
678 : rtl::Reference<xmloff::OFormLayerXMLExport> xFormExport );
679 :
680 0 : SinglePropertySetInfoCache& GetCharStyleNamesPropInfoCache() { return aCharStyleNamesPropInfoCache; }
681 :
682 : void PushNewTextListsHelper();
683 :
684 : void PopTextListsHelper();
685 :
686 : private:
687 : XMLTextParagraphExport(XMLTextParagraphExport &) SAL_DELETED_FUNCTION;
688 : };
689 :
690 : inline const XMLTextListAutoStylePool&
691 1346 : XMLTextParagraphExport::GetListAutoStylePool() const
692 : {
693 1346 : return *pListAutoPool;
694 : }
695 :
696 118 : inline void XMLTextParagraphExport::exportTextFrame(
697 : const ::com::sun::star::uno::Reference <
698 : ::com::sun::star::text::XTextContent > & rTextContent,
699 : bool bAutoStyles, bool bIsProgress, bool bExportContent,
700 : const ::com::sun::star::uno::Reference <
701 : ::com::sun::star::beans::XPropertySet > *pRangePropSet)
702 : {
703 : exportAnyTextFrame( rTextContent, FT_TEXT, bAutoStyles, bIsProgress,
704 118 : bExportContent, pRangePropSet );
705 118 : }
706 :
707 12 : inline void XMLTextParagraphExport::exportTextGraphic(
708 : const ::com::sun::star::uno::Reference <
709 : ::com::sun::star::text::XTextContent > & rTextContent,
710 : bool bAutoStyles,
711 : const ::com::sun::star::uno::Reference <
712 : ::com::sun::star::beans::XPropertySet > *pRangePropSet )
713 : {
714 : exportAnyTextFrame( rTextContent, FT_GRAPHIC, bAutoStyles, false,
715 12 : true, pRangePropSet );
716 12 : }
717 :
718 18 : inline void XMLTextParagraphExport::exportTextEmbedded(
719 : const ::com::sun::star::uno::Reference <
720 : ::com::sun::star::text::XTextContent > & rTextContent,
721 : bool bAutoStyles,
722 : const ::com::sun::star::uno::Reference <
723 : ::com::sun::star::beans::XPropertySet > *pRangePropSet )
724 : {
725 : exportAnyTextFrame( rTextContent, FT_EMBEDDED, bAutoStyles, false,
726 18 : true, pRangePropSet );
727 18 : }
728 :
729 48 : inline void XMLTextParagraphExport::exportShape(
730 : const ::com::sun::star::uno::Reference <
731 : ::com::sun::star::text::XTextContent > & rTextContent,
732 : bool bAutoStyles,
733 : const ::com::sun::star::uno::Reference <
734 : ::com::sun::star::beans::XPropertySet > *pRangePropSet )
735 : {
736 : exportAnyTextFrame( rTextContent, FT_SHAPE, bAutoStyles, false,
737 48 : true, pRangePropSet );
738 48 : }
739 :
740 : #endif
741 :
742 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|