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