loplugin:constmethod in xmloff
[LibreOffice.git] / include / xmloff / xmlexp.hxx
blobb413f00b922a8c2e1023ac494f5efd49b84b6928
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
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_XMLEXP_HXX
21 #define INCLUDED_XMLOFF_XMLEXP_HXX
23 #include <sal/config.h>
24 #include <xmloff/dllapi.h>
25 #include <sal/types.h>
27 #include <com/sun/star/lang/XUnoTunnel.hpp>
28 #include <rtl/ustring.hxx>
29 #include <xmloff/attrlist.hxx>
30 #include <xmloff/txtparae.hxx>
31 #include <xmloff/formlayerexport.hxx>
32 #include <xmloff/xmlnumfe.hxx>
33 #include <xmloff/xmlaustp.hxx>
34 #include <xmloff/shapeexport.hxx>
35 #include <xmloff/xmltoken.hxx>
36 #include <xmloff/SchXMLExportHelper.hxx>
37 #include <xmloff/XMLFontAutoStylePool.hxx>
38 #include <xmloff/xmluconv.hxx>
39 #include <com/sun/star/document/XFilter.hpp>
40 #include <com/sun/star/lang/XServiceInfo.hpp>
41 #include <com/sun/star/document/XExporter.hpp>
42 #include <com/sun/star/lang/XInitialization.hpp>
43 #include <com/sun/star/container/XNamed.hpp>
45 #include <unotools/saveopt.hxx>
47 #include <xmloff/XMLPageExport.hxx>
48 #include <comphelper/servicehelper.hxx>
49 #include <cppuhelper/implbase.hxx>
50 #include <tools/fldunit.hxx>
51 #include <vcl/errcode.hxx>
53 #include <vector>
54 #include <memory>
55 #include <o3tl/typed_flags_set.hxx>
57 namespace com { namespace sun { namespace star { namespace beans { class XPropertySet; } } } }
58 namespace com { namespace sun { namespace star { namespace document { class XEmbeddedObjectResolver; } } } }
59 namespace com { namespace sun { namespace star { namespace document { class XGraphicStorageHandler; } } } }
60 namespace com { namespace sun { namespace star { namespace embed { class XStorage; } } } }
61 namespace com { namespace sun { namespace star { namespace graphic { class XGraphic; } } } }
62 namespace com { namespace sun { namespace star { namespace lang { class XEventListener; } } } }
63 namespace com { namespace sun { namespace star { namespace task { class XStatusIndicator; } } } }
64 namespace com { namespace sun { namespace star { namespace uno { class XComponentContext; } } } }
65 namespace com { namespace sun { namespace star { namespace util { class XNumberFormatsSupplier; } } } }
66 namespace com { namespace sun { namespace star { namespace xml { namespace sax { class XAttributeList; } } } } }
67 namespace com { namespace sun { namespace star { namespace xml { namespace sax { class XDocumentHandler; } } } } }
68 namespace com { namespace sun { namespace star { namespace xml { namespace sax { class XExtendedDocumentHandler; } } } } }
69 namespace com { namespace sun { namespace star { namespace xml { namespace sax { class XLocator; } } } } }
71 class SvXMLNamespaceMap;
72 class SvXMLExport_Impl;
73 class ProgressBarHelper;
74 class XMLEventExport;
75 class XMLImageMapExport;
76 class XMLErrors;
77 class LanguageTag;
78 enum class SvXMLErrorFlags;
80 // Shapes in Writer cannot be named via context menu (#i51726#)
81 #include <unotools/moduleoptions.hxx>
83 namespace com { namespace sun { namespace star {
84 namespace frame { class XModel; }
85 namespace lang { struct Locale; }
86 } } }
87 namespace comphelper { class UnoInterfaceToUniqueIdentifierMapper; }
89 enum class SvXMLExportFlags {
90 NONE = 0,
91 META = 0x0001,
92 STYLES = 0x0002,
93 MASTERSTYLES = 0x0004,
94 AUTOSTYLES = 0x0008,
95 CONTENT = 0x0010,
96 SCRIPTS = 0x0020,
97 SETTINGS = 0x0040,
98 FONTDECLS = 0x0080,
99 EMBEDDED = 0x0100,
100 PRETTY = 0x0400,
101 SAVEBACKWARDCOMPATIBLE = 0x0800,
102 OASIS = 0x8000,
103 ALL = 0x0dff
105 namespace o3tl
107 template<> struct typed_flags<SvXMLExportFlags> : is_typed_flags<SvXMLExportFlags, 0x8dff> {};
110 class XMLOFF_DLLPUBLIC SvXMLExport : public cppu::WeakImplHelper<
111 css::document::XFilter,
112 css::lang::XServiceInfo,
113 css::document::XExporter,
114 css::lang::XInitialization,
115 css::container::XNamed,
116 css::lang::XUnoTunnel>
118 std::unique_ptr<SvXMLExport_Impl> mpImpl; // dummy
120 css::uno::Reference< css::uno::XComponentContext > m_xContext;
121 OUString const m_implementationName;
123 css::uno::Reference< css::frame::XModel > mxModel;
124 css::uno::Reference< css::xml::sax::XDocumentHandler > mxHandler; // the handlers
125 css::uno::Reference< css::xml::sax::XExtendedDocumentHandler > mxExtHandler;
126 css::uno::Reference< css::util::XNumberFormatsSupplier > mxNumberFormatsSupplier;
127 css::uno::Reference< css::document::XGraphicStorageHandler > mxGraphicStorageHandler;
128 css::uno::Reference< css::document::XEmbeddedObjectResolver > mxEmbeddedResolver;
129 css::uno::Reference< css::task::XStatusIndicator > mxStatusIndicator;
130 css::uno::Reference< css::beans::XPropertySet > mxExportInfo;
131 css::uno::Reference< css::lang::XEventListener > mxEventListener;
133 rtl::Reference<SvXMLAttributeList> mxAttrList; // a common attribute list
135 OUString msOrigFileName; // the original URL
136 OUString msFilterName;
137 OUString msImgFilterName;
138 std::unique_ptr<SvXMLNamespaceMap> mpNamespaceMap; // the namepspace map
139 SvXMLUnitConverter maUnitConv; // the unit converter
140 std::unique_ptr<SvXMLNumFmtExport> mpNumExport;
141 std::unique_ptr<ProgressBarHelper> mpProgressBarHelper;
143 rtl::Reference< XMLTextParagraphExport > mxTextParagraphExport;
144 rtl::Reference< XMLShapeExport > mxShapeExport;
145 rtl::Reference< SvXMLAutoStylePoolP > mxAutoStylePool;
146 rtl::Reference< SchXMLExportHelper > mxChartExport;
147 rtl::Reference< XMLPageExport > mxPageExport;
148 rtl::Reference< XMLFontAutoStylePool > mxFontAutoStylePool;
149 rtl::Reference< xmloff::OFormLayerXMLExport > mxFormExport;
150 std::unique_ptr<XMLEventExport> mpEventExport;
151 std::unique_ptr<XMLImageMapExport> mpImageMapExport;
152 std::unique_ptr<XMLErrors> mpXMLErrors;
154 const enum ::xmloff::token::XMLTokenEnum meClass;
155 SAL_DLLPRIVATE void InitCtor_();
157 SvXMLExportFlags mnExportFlags;
158 SvXMLErrorFlags mnErrorFlags;
160 const OUString msWS; // " "
162 // Shapes in Writer cannot be named via context menu (#i51726#)
163 SvtModuleOptions::EFactory meModelType;
164 SAL_DLLPRIVATE void DetermineModelType_();
166 SAL_DLLPRIVATE void ImplExportMeta(); // <office:meta>
167 SAL_DLLPRIVATE void ImplExportSettings(); // <office:settings>
168 SAL_DLLPRIVATE void ImplExportStyles(); // <office:styles>
169 SAL_DLLPRIVATE void ImplExportAutoStyles();
170 // <office:automatic-styles>
171 SAL_DLLPRIVATE void ImplExportMasterStyles();
172 // <office:master-styles>
173 SAL_DLLPRIVATE void ImplExportContent(); // <office:body>
174 virtual void SetBodyAttributes();
175 void GetViewSettingsAndViews(css::uno::Sequence<css::beans::PropertyValue>& rProps);
177 protected:
178 void setExportFlags( SvXMLExportFlags nExportFlags ) { mnExportFlags = nExportFlags; }
180 // Get (modifiable) namespace map
181 SvXMLNamespaceMap& GetNamespaceMap_() { return *mpNamespaceMap; }
183 // get a new namespave map (used in starmath to have a default namespace)
184 void ResetNamespaceMap();
186 /// Override this method to export the content of <office:meta>.
187 /// There is a default implementation.
188 virtual void ExportMeta_();
190 /// Override this method to export the content of <office:scripts>.
191 /// There is a default implementation.
192 virtual void ExportScripts_();
194 /// Override this method to export the font declarations
195 /// The default implementation will export the contents of the
196 /// XMLFontAutoStylePool if it has been created.
197 virtual void ExportFontDecls_();
199 /// Override this method to export the content of <style:styles>.
200 /// If bUsed is set, used styles should be exported only.
201 /// Overriding Methods must call this method !
202 virtual void ExportStyles_( bool bUsed );
204 /// Override this method to export the contents of <style:auto-styles>.
205 virtual void ExportAutoStyles_() = 0;
207 /// Override this method to export the contents of <style:master-styles>.
208 virtual void ExportMasterStyles_() = 0;
210 /// Override this method to export the content of <office:body>.
211 virtual void ExportContent_() = 0;
213 OUString const & GetSourceShellID() const;
214 OUString const & GetDestinationShellID() const;
216 // save linked sections? (may be false in global documents)
217 bool mbSaveLinkedSections;
219 virtual XMLTextParagraphExport* CreateTextParagraphExport();
220 virtual XMLShapeExport* CreateShapeExport();
221 virtual SvXMLAutoStylePoolP* CreateAutoStylePool();
222 SchXMLExportHelper* CreateChartExport();
223 virtual XMLPageExport* CreatePageExport();
224 virtual XMLFontAutoStylePool* CreateFontAutoStylePool();
225 xmloff::OFormLayerXMLExport* CreateFormExport();
226 virtual void GetViewSettings(css::uno::Sequence<css::beans::PropertyValue>& aProps);
227 virtual void GetConfigurationSettings(css::uno::Sequence<css::beans::PropertyValue>& aProps);
229 struct SettingsGroup
231 ::xmloff::token::XMLTokenEnum const eGroupName;
232 css::uno::Sequence< css::beans::PropertyValue > const aSettings;
234 SettingsGroup(
235 const ::xmloff::token::XMLTokenEnum _eGroupName,
236 const css::uno::Sequence< css::beans::PropertyValue >& _rSettings )
237 :eGroupName( _eGroupName )
238 ,aSettings( _rSettings )
242 /** returns the current document settings
244 The default implementation will obtain the view settings by calling GetViewSettingsAndViews, and the
245 configuration settings by calling GetConfigurationSettings, and return them together with the proper XML token.
247 @return
248 the accumulated count of all settings in all groups
250 virtual sal_Int32 GetDocumentSpecificSettings( ::std::vector< SettingsGroup >& _out_rSettings );
252 const css::uno::Reference< css::document::XEmbeddedObjectResolver >& GetEmbeddedResolver() const { return mxEmbeddedResolver; }
253 inline void SetEmbeddedResolver( css::uno::Reference< css::document::XEmbeddedObjectResolver > const & _xEmbeddedResolver );
255 const css::uno::Reference<css::document::XGraphicStorageHandler> & GetGraphicStorageHandler() const
257 return mxGraphicStorageHandler;
259 void SetGraphicStorageHandler(css::uno::Reference<css::document::XGraphicStorageHandler> const & rxGraphicStorageHandler);
261 void SetDocHandler( const css::uno::Reference< css::xml::sax::XDocumentHandler > &rHandler );
263 bool mbAutoStylesCollected;
264 public:
266 SvXMLExport(
267 sal_Int16 const eDefaultMeasureUnit /*css::util::MeasureUnit*/,
268 const css::uno::Reference< css::uno::XComponentContext >& xContext,
269 OUString const & implementationName,
270 const enum ::xmloff::token::XMLTokenEnum eClass,
271 SvXMLExportFlags nExportFlag );
273 SvXMLExport(
274 const css::uno::Reference< css::uno::XComponentContext >& xContext,
275 OUString const & implementationName,
276 const OUString& rFileName,
277 sal_Int16 const eDefaultMeasureUnit /*css::util::MeasureUnit*/,
278 const css::uno::Reference< css::xml::sax::XDocumentHandler > & rHandler);
280 SvXMLExport(
281 const css::uno::Reference< css::uno::XComponentContext >& xContext,
282 OUString const & implementationName,
283 const OUString& rFileName,
284 const css::uno::Reference< css::xml::sax::XDocumentHandler > & rHandler,
285 const css::uno::Reference< css::frame::XModel > &,
286 FieldUnit const eDefaultFieldUnit,
287 SvXMLExportFlags nExportFlag );
289 virtual ~SvXMLExport() override;
291 virtual void collectAutoStyles();
293 // XExporter
294 virtual void SAL_CALL setSourceDocument( const css::uno::Reference< css::lang::XComponent >& xDoc ) override;
296 // XFilter
297 virtual sal_Bool SAL_CALL filter( const css::uno::Sequence< css::beans::PropertyValue >& aDescriptor ) override;
298 virtual void SAL_CALL cancel() override;
300 // XInitialization
301 virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) override;
303 // XNamed
304 virtual OUString SAL_CALL getName( ) override;
305 virtual void SAL_CALL setName( const OUString& aName ) override;
307 // XServiceInfo
308 virtual OUString SAL_CALL getImplementationName( ) final override;
309 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) final override;
310 virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) final override;
312 // XUnoTunnel
313 UNO3_GETIMPLEMENTATION_DECL(SvXMLExport)
315 /** ensures that the given namespace is in scope at the next started
316 element.
318 <p>If the namespace is not yet declared, the necessary attribute will
319 be added, as well.</p>
321 @param i_rNamespace the namespace to be declared
323 @returns the actual prefix that the namespace is associated with
325 OUString EnsureNamespace(OUString const & i_rNamespace );
327 // Check if common attribute list is empty.
328 #ifndef DBG_UTIL
329 void CheckAttrList() { (void) this; /* avoid loplugin:staticmethods */ }
330 #else
331 void CheckAttrList();
332 #endif
334 // Clear common attribute list.
335 void ClearAttrList();
337 // Add an attribute to the common attribute list.
338 void AddAttributeASCII( sal_uInt16 nPrefix, const sal_Char *pName,
339 const sal_Char *pValue );
340 void AddAttribute( sal_uInt16 nPrefix, const sal_Char *pName,
341 const OUString& rValue );
342 void AddAttribute( sal_uInt16 nPrefix, const OUString& rName,
343 const OUString& rValue );
344 void AddAttribute( sal_uInt16 nPrefix,
345 enum ::xmloff::token::XMLTokenEnum eName,
346 const OUString& rValue );
347 void AddAttribute( sal_uInt16 nPrefix,
348 enum ::xmloff::token::XMLTokenEnum eName,
349 enum ::xmloff::token::XMLTokenEnum eValue );
350 void AddAttribute( const OUString& rQName,
351 const OUString& rValue );
352 void AddAttribute( const OUString& rQName,
353 enum ::xmloff::token::XMLTokenEnum eValue );
355 /** Add language tag attributes, deciding which are necessary.
357 @param nPrefix
358 Namespace prefix for *:language, *:script and *:country
360 @param nPrefixRfc
361 Namespace prefix for *:rfc-language-tag
363 @param bWriteEmpty
364 Whether to write empty *:language and *:country attribute
365 values in case of an empty locale (denoting system).
367 void AddLanguageTagAttributes( sal_uInt16 nPrefix, sal_uInt16 nPrefixRfc,
368 const css::lang::Locale& rLocale, bool bWriteEmpty);
370 /** Same as AddLanguageTagAttributes() but with LanguageTag parameter
371 instead of Locale.
373 void AddLanguageTagAttributes( sal_uInt16 nPrefix, sal_uInt16 nPrefixRfc,
374 const LanguageTag& rLanguageTag, bool bWriteEmpty );
376 // add several attributes to the common attribute list
377 void AddAttributeList( const css::uno::Reference<
378 css::xml::sax::XAttributeList >& xAttrList );
380 // Get common attribute list as implementation or interface.
381 SvXMLAttributeList &GetAttrList() { return *mxAttrList; }
382 css::uno::Reference< css::xml::sax::XAttributeList > GetXAttrList() { return mxAttrList.get(); }
384 // Get document handler. This methods are not const, because the
385 // reference allows modifications through the handler.
386 const css::uno::Reference< css::xml::sax::XDocumentHandler > & GetDocHandler() const { return mxHandler; }
388 // Get original URL.
389 const OUString& GetOrigFileName() const { return msOrigFileName; }
391 // Get (const) namespace map.
392 const SvXMLNamespaceMap& GetNamespaceMap() const { return *mpNamespaceMap; }
394 // Get unit converter
395 const SvXMLUnitConverter& GetMM100UnitConverter() const { return maUnitConv; }
397 SvXMLUnitConverter& GetMM100UnitConverter() { return maUnitConv; }
399 void addChaffWhenEncryptedStorage();
401 // Export the document.
402 virtual ErrCode exportDoc( enum ::xmloff::token::XMLTokenEnum eClass = ::xmloff::token::XML_TOKEN_INVALID );
404 virtual void addDataStyle(const sal_Int32 nNumberFormat, bool bTimeFormat = false );
405 virtual void exportDataStyles();
406 virtual void exportAutoDataStyles();
407 virtual OUString getDataStyleName(const sal_Int32 nNumberFormat, bool bTimeFormat = false ) const;
408 sal_Int32 dataStyleForceSystemLanguage(sal_Int32 nFormat) const;
410 virtual void exportAnnotationMeta( const css::uno::Reference < css::drawing::XShape >& xShape);
412 // Get XModel
413 const css::uno::Reference< css::frame::XModel > &
414 GetModel() const { return mxModel; }
415 // Get XNumberFormatsSupplier
416 css::uno::Reference< css::util::XNumberFormatsSupplier > & GetNumberFormatsSupplier() { return mxNumberFormatsSupplier; }
417 void SetNumberFormatsSupplier(const css::uno::Reference< css::util::XNumberFormatsSupplier >& _xNumberFormatSupplier)
419 mxNumberFormatsSupplier = _xNumberFormatSupplier;
420 if ( mxNumberFormatsSupplier.is() && mxHandler.is() )
421 mpNumExport.reset( new SvXMLNumFmtExport(*this, mxNumberFormatsSupplier) );
424 // get export helper for text
425 inline rtl::Reference< XMLTextParagraphExport > const & GetTextParagraphExport();
427 // get export helper for shapes
428 inline rtl::Reference< XMLShapeExport > const & GetShapeExport();
430 // get auto style pool
431 inline rtl::Reference< SvXMLAutoStylePoolP > const & GetAutoStylePool();
433 // get Page Export
434 inline rtl::Reference< XMLPageExport > const & GetPageExport();
436 // get chart export helper
437 inline rtl::Reference< SchXMLExportHelper > const & GetChartExport();
439 // get font auto style pool
440 inline rtl::Reference< XMLFontAutoStylePool > const & GetFontAutoStylePool();
442 ProgressBarHelper* GetProgressBarHelper();
444 // get Formlayer Export
445 inline rtl::Reference< xmloff::OFormLayerXMLExport > const & GetFormExport();
446 inline bool HasFormExport() const;
448 // get XPropertySet with export information
449 const css::uno::Reference< css::beans::XPropertySet >& getExportInfo() const { return mxExportInfo; }
451 const css::uno::Reference< css::task::XStatusIndicator >& GetStatusIndicator() const { return mxStatusIndicator; }
453 /// get Event export, with handlers for script types "None" and
454 /// "StarBasic" already registered; other handlers may be registered, too.
455 XMLEventExport& GetEventExport();
457 /// get the export for image maps
458 XMLImageMapExport& GetImageMapExport();
460 OUString AddEmbeddedXGraphic(css::uno::Reference<css::graphic::XGraphic> const & rxGraphic, OUString & rOutMimeType, OUString const & rRequestedName = OUString());
461 bool AddEmbeddedXGraphicAsBase64(css::uno::Reference<css::graphic::XGraphic> const & rxGraphic);
462 bool GetGraphicMimeTypeFromStream(css::uno::Reference<css::graphic::XGraphic> const & rxGraphic, OUString & rOutMimeType);
464 OUString AddEmbeddedObject(
465 const OUString& rEmbeddedObjectURL );
466 bool AddEmbeddedObjectAsBase64(
467 const OUString& rEmbeddedObjectURL );
469 OUString EncodeStyleName( const OUString& rName,
470 bool *pEncoded=nullptr ) const;
472 // save linked sections?
473 bool IsSaveLinkedSections() const { return mbSaveLinkedSections; }
475 // get export flags
476 SvXMLExportFlags getExportFlags() const { return mnExportFlags; }
478 void ExportEmbeddedOwnObject(
479 css::uno::Reference<css::lang::XComponent > const & rComp );
481 OUString GetRelativeReference(const OUString& rValue);
483 // methods for accessing the document handler and handling SAX errors
484 void StartElement(sal_uInt16 nPrefix,
485 enum ::xmloff::token::XMLTokenEnum eName,
486 bool bIgnWSOutside );
487 void StartElement(const OUString& rName,
488 bool bIgnWSOutside );
489 void Characters(const OUString& rChars);
490 void EndElement(sal_uInt16 nPrefix,
491 enum ::xmloff::token::XMLTokenEnum eName,
492 bool bIgnWSInside );
493 void EndElement(const OUString& rName,
494 bool bIgnWSInside );
495 void IgnorableWhitespace();
498 * Record an error condition that occurred during export. The
499 * behavior of SetError can be modified using the error flag
500 * constants.
502 void SetError(
503 /// error ID, may contain an error flag
504 sal_Int32 nId,
505 /// string parameters for the error message
506 const css::uno::Sequence< OUString> & rMsgParams,
507 /// original exception message (if applicable)
508 const OUString& rExceptionMessage,
509 /// error location (if applicable)
510 const css::uno::Reference<css::xml::sax::XLocator> & rLocator );
512 void SetError(
513 sal_Int32 nId,
514 const css::uno::Sequence< OUString> & rMsgParams);
516 virtual void DisposingModel();
518 ::comphelper::UnoInterfaceToUniqueIdentifierMapper& getInterfaceToIdentifierMapper();
520 const css::uno::Reference< css::uno::XComponentContext >& getComponentContext() const { return m_xContext;}
522 // Shapes in Writer cannot be named via context menu (#i51726#)
523 SvtModuleOptions::EFactory GetModelType() const
525 return meModelType;
528 // Written OpenDocument file format doesn't fit to the created text document (#i69627#)
529 bool writeOutlineStyleAsNormalListStyle() const;
531 css::uno::Reference< css::embed::XStorage > const & GetTargetStorage() const;
533 /// returns the currently configured default version for odf export
534 SvtSaveOptions::ODFDefaultVersion getDefaultVersion() const;
536 /// returns the deterministic version for odf export
537 SvtSaveOptions::ODFSaneDefaultVersion getSaneDefaultVersion() const;
539 // FIXME: this is only for legacy stuff that has not yet been adapted
540 // to implement XMetadatable; this can write duplicate IDs!
541 /// add xml:id and legacy namespace id
542 void SAL_DLLPRIVATE AddAttributeIdLegacy(
543 sal_uInt16 const nLegacyPrefix, OUString const& rValue);
545 /// add xml:id attribute (for RDF metadata)
546 void AddAttributeXmlId(css::uno::Reference<css::uno::XInterface> const & i_xIfc);
548 /// add RDFa attributes for a metadatable text content
549 void AddAttributesRDFa( css::uno::Reference<css::text::XTextContent> const & i_xTextContent);
551 bool exportTextNumberElement() const;
553 /// set null date from model to unit converter, if not already done
554 bool SetNullDateOnUnitConverter();
556 /// Get clamped mimetype for image export (empty if none)
557 OUString const & GetImageFilterName() const;
560 inline rtl::Reference< XMLTextParagraphExport > const & SvXMLExport::GetTextParagraphExport()
562 if( !mxTextParagraphExport.is() )
563 mxTextParagraphExport = CreateTextParagraphExport();
565 return mxTextParagraphExport;
568 inline rtl::Reference< XMLShapeExport > const & SvXMLExport::GetShapeExport()
570 if( !mxShapeExport.is() )
571 mxShapeExport = CreateShapeExport();
573 return mxShapeExport;
576 inline rtl::Reference< SvXMLAutoStylePoolP > const & SvXMLExport::GetAutoStylePool()
578 if( !mxAutoStylePool.is() )
579 mxAutoStylePool = CreateAutoStylePool();
581 return mxAutoStylePool;
584 inline rtl::Reference< SchXMLExportHelper > const & SvXMLExport::GetChartExport()
586 if( !mxChartExport.is() )
587 mxChartExport = CreateChartExport();
589 return mxChartExport;
592 inline rtl::Reference< XMLPageExport > const & SvXMLExport::GetPageExport()
594 if( !mxPageExport.is() )
595 mxPageExport = CreatePageExport();
597 return mxPageExport;
600 inline rtl::Reference< XMLFontAutoStylePool > const & SvXMLExport::GetFontAutoStylePool()
602 if( !mxFontAutoStylePool.is() )
603 mxFontAutoStylePool = CreateFontAutoStylePool();
605 return mxFontAutoStylePool;
608 inline rtl::Reference< xmloff::OFormLayerXMLExport > const & SvXMLExport::GetFormExport()
610 if( !mxFormExport.is() )
611 mxFormExport = CreateFormExport();
613 return mxFormExport;
616 inline bool SvXMLExport::HasFormExport() const
618 return mxFormExport.is();
621 inline void SvXMLExport::SetEmbeddedResolver(
622 css::uno::Reference< css::document::XEmbeddedObjectResolver > const & _xEmbeddedResolver )
624 mxEmbeddedResolver = _xEmbeddedResolver;
627 inline void SvXMLExport::SetGraphicStorageHandler(
628 css::uno::Reference<css::document::XGraphicStorageHandler> const & rxGraphicStorageHandler)
630 mxGraphicStorageHandler = rxGraphicStorageHandler;
633 // Helper class to export an element.
634 class XMLOFF_DLLPUBLIC SvXMLElementExport
636 SvXMLExport& mrExport;
637 OUString maElementName;
638 const bool mbIgnoreWhitespaceInside :1;
639 const bool mbDoSomething :1;
641 SAL_DLLPRIVATE
642 void StartElement(
643 const sal_uInt16 nPrefix,
644 const OUString& rName,
645 const bool bIgnoreWhitespaceOutside );
647 public:
649 // The constructor prints a start tag that has the common attributes
650 // of the XMLExport instance attached.
651 SvXMLElementExport( SvXMLExport& rExp, sal_uInt16 nPrefix,
652 const sal_Char *pName,
653 bool bIgnWSOutside, bool bIgnWSInside );
654 SvXMLElementExport( SvXMLExport& rExp, sal_uInt16 nPrefix,
655 const OUString& rName,
656 bool bIgnWSOutside, bool bIgnWSInside );
657 SvXMLElementExport( SvXMLExport& rExp, sal_uInt16 nPrefix,
658 enum ::xmloff::token::XMLTokenEnum eName,
659 bool bIgnWSOutside, bool bIgnWSInside );
660 SvXMLElementExport( SvXMLExport& rExp, const OUString& rQName,
661 bool bIgnWSOutside, bool bIgnWSInside );
663 // These constructors do nothing if bDoSomething is not set
664 SvXMLElementExport( SvXMLExport& rExp, bool bDoSomething,
665 sal_uInt16 nPrefix,
666 enum ::xmloff::token::XMLTokenEnum eName,
667 bool bIgnWSOutside, bool bIgnWSInside );
669 // The destructor prints an end tag.
670 ~SvXMLElementExport();
673 #endif // _XMLOFF_SVXMLEXP_HXX
675 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */