Bump version to 6.4-15
[LibreOffice.git] / include / xmloff / xmlexp.hxx
blob2af1f4994f06ee9a1d2120afa4a89abb87f961cb
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 void collectDataStyles(bool bFromUsedStyles);
405 virtual void addDataStyle(const sal_Int32 nNumberFormat, bool bTimeFormat = false );
406 virtual void exportDataStyles();
407 virtual void exportAutoDataStyles();
408 virtual OUString getDataStyleName(const sal_Int32 nNumberFormat, bool bTimeFormat = false ) const;
409 sal_Int32 dataStyleForceSystemLanguage(sal_Int32 nFormat) const;
411 virtual void exportAnnotationMeta( const css::uno::Reference < css::drawing::XShape >& xShape);
413 // Get XModel
414 const css::uno::Reference< css::frame::XModel > &
415 GetModel() const { return mxModel; }
416 // Get XNumberFormatsSupplier
417 css::uno::Reference< css::util::XNumberFormatsSupplier > & GetNumberFormatsSupplier() { return mxNumberFormatsSupplier; }
418 void SetNumberFormatsSupplier(const css::uno::Reference< css::util::XNumberFormatsSupplier >& _xNumberFormatSupplier)
420 mxNumberFormatsSupplier = _xNumberFormatSupplier;
421 if ( mxNumberFormatsSupplier.is() && mxHandler.is() )
422 mpNumExport.reset( new SvXMLNumFmtExport(*this, mxNumberFormatsSupplier) );
425 // get export helper for text
426 inline rtl::Reference< XMLTextParagraphExport > const & GetTextParagraphExport();
428 // get export helper for shapes
429 inline rtl::Reference< XMLShapeExport > const & GetShapeExport();
431 // get auto style pool
432 inline rtl::Reference< SvXMLAutoStylePoolP > const & GetAutoStylePool();
434 // get Page Export
435 inline rtl::Reference< XMLPageExport > const & GetPageExport();
437 // get chart export helper
438 inline rtl::Reference< SchXMLExportHelper > const & GetChartExport();
440 // get font auto style pool
441 inline rtl::Reference< XMLFontAutoStylePool > const & GetFontAutoStylePool();
443 ProgressBarHelper* GetProgressBarHelper();
445 // get Formlayer Export
446 inline rtl::Reference< xmloff::OFormLayerXMLExport > const & GetFormExport();
447 inline bool HasFormExport() const;
449 // get XPropertySet with export information
450 const css::uno::Reference< css::beans::XPropertySet >& getExportInfo() const { return mxExportInfo; }
452 const css::uno::Reference< css::task::XStatusIndicator >& GetStatusIndicator() const { return mxStatusIndicator; }
454 /// get Event export, with handlers for script types "None" and
455 /// "StarBasic" already registered; other handlers may be registered, too.
456 XMLEventExport& GetEventExport();
458 /// get the export for image maps
459 XMLImageMapExport& GetImageMapExport();
461 OUString AddEmbeddedXGraphic(css::uno::Reference<css::graphic::XGraphic> const & rxGraphic, OUString & rOutMimeType, OUString const & rRequestedName = OUString());
462 bool AddEmbeddedXGraphicAsBase64(css::uno::Reference<css::graphic::XGraphic> const & rxGraphic);
463 bool GetGraphicMimeTypeFromStream(css::uno::Reference<css::graphic::XGraphic> const & rxGraphic, OUString & rOutMimeType);
465 OUString AddEmbeddedObject(
466 const OUString& rEmbeddedObjectURL );
467 bool AddEmbeddedObjectAsBase64(
468 const OUString& rEmbeddedObjectURL );
470 OUString EncodeStyleName( const OUString& rName,
471 bool *pEncoded=nullptr ) const;
473 // save linked sections?
474 bool IsSaveLinkedSections() const { return mbSaveLinkedSections; }
476 // get export flags
477 SvXMLExportFlags getExportFlags() const { return mnExportFlags; }
479 void ExportEmbeddedOwnObject(
480 css::uno::Reference<css::lang::XComponent > const & rComp );
482 OUString GetRelativeReference(const OUString& rValue);
484 // methods for accessing the document handler and handling SAX errors
485 void StartElement(sal_uInt16 nPrefix,
486 enum ::xmloff::token::XMLTokenEnum eName,
487 bool bIgnWSOutside );
488 void StartElement(const OUString& rName,
489 bool bIgnWSOutside );
490 void Characters(const OUString& rChars);
491 void EndElement(sal_uInt16 nPrefix,
492 enum ::xmloff::token::XMLTokenEnum eName,
493 bool bIgnWSInside );
494 void EndElement(const OUString& rName,
495 bool bIgnWSInside );
496 void IgnorableWhitespace();
499 * Record an error condition that occurred during export. The
500 * behavior of SetError can be modified using the error flag
501 * constants.
503 void SetError(
504 /// error ID, may contain an error flag
505 sal_Int32 nId,
506 /// string parameters for the error message
507 const css::uno::Sequence< OUString> & rMsgParams,
508 /// original exception message (if applicable)
509 const OUString& rExceptionMessage,
510 /// error location (if applicable)
511 const css::uno::Reference<css::xml::sax::XLocator> & rLocator );
513 void SetError(
514 sal_Int32 nId,
515 const css::uno::Sequence< OUString> & rMsgParams);
517 virtual void DisposingModel();
519 ::comphelper::UnoInterfaceToUniqueIdentifierMapper& getInterfaceToIdentifierMapper();
521 const css::uno::Reference< css::uno::XComponentContext >& getComponentContext() const { return m_xContext;}
523 // Shapes in Writer cannot be named via context menu (#i51726#)
524 SvtModuleOptions::EFactory GetModelType() const
526 return meModelType;
529 // Written OpenDocument file format doesn't fit to the created text document (#i69627#)
530 bool writeOutlineStyleAsNormalListStyle() const;
532 css::uno::Reference< css::embed::XStorage > const & GetTargetStorage() const;
534 /// returns the currently configured default version for odf export
535 SvtSaveOptions::ODFDefaultVersion getDefaultVersion() const;
537 /// returns the deterministic version for odf export
538 SvtSaveOptions::ODFSaneDefaultVersion getSaneDefaultVersion() const;
540 // FIXME: this is only for legacy stuff that has not yet been adapted
541 // to implement XMetadatable; this can write duplicate IDs!
542 /// add xml:id and legacy namespace id
543 void SAL_DLLPRIVATE AddAttributeIdLegacy(
544 sal_uInt16 const nLegacyPrefix, OUString const& rValue);
546 /// add xml:id attribute (for RDF metadata)
547 void AddAttributeXmlId(css::uno::Reference<css::uno::XInterface> const & i_xIfc);
549 /// add RDFa attributes for a metadatable text content
550 void AddAttributesRDFa( css::uno::Reference<css::text::XTextContent> const & i_xTextContent);
552 bool exportTextNumberElement() const;
554 /// set null date from model to unit converter, if not already done
555 bool SetNullDateOnUnitConverter();
557 /// Get clamped mimetype for image export (empty if none)
558 OUString const & GetImageFilterName() const;
561 inline rtl::Reference< XMLTextParagraphExport > const & SvXMLExport::GetTextParagraphExport()
563 if( !mxTextParagraphExport.is() )
564 mxTextParagraphExport = CreateTextParagraphExport();
566 return mxTextParagraphExport;
569 inline rtl::Reference< XMLShapeExport > const & SvXMLExport::GetShapeExport()
571 if( !mxShapeExport.is() )
572 mxShapeExport = CreateShapeExport();
574 return mxShapeExport;
577 inline rtl::Reference< SvXMLAutoStylePoolP > const & SvXMLExport::GetAutoStylePool()
579 if( !mxAutoStylePool.is() )
580 mxAutoStylePool = CreateAutoStylePool();
582 return mxAutoStylePool;
585 inline rtl::Reference< SchXMLExportHelper > const & SvXMLExport::GetChartExport()
587 if( !mxChartExport.is() )
588 mxChartExport = CreateChartExport();
590 return mxChartExport;
593 inline rtl::Reference< XMLPageExport > const & SvXMLExport::GetPageExport()
595 if( !mxPageExport.is() )
596 mxPageExport = CreatePageExport();
598 return mxPageExport;
601 inline rtl::Reference< XMLFontAutoStylePool > const & SvXMLExport::GetFontAutoStylePool()
603 if( !mxFontAutoStylePool.is() )
604 mxFontAutoStylePool = CreateFontAutoStylePool();
606 return mxFontAutoStylePool;
609 inline rtl::Reference< xmloff::OFormLayerXMLExport > const & SvXMLExport::GetFormExport()
611 if( !mxFormExport.is() )
612 mxFormExport = CreateFormExport();
614 return mxFormExport;
617 inline bool SvXMLExport::HasFormExport() const
619 return mxFormExport.is();
622 inline void SvXMLExport::SetEmbeddedResolver(
623 css::uno::Reference< css::document::XEmbeddedObjectResolver > const & _xEmbeddedResolver )
625 mxEmbeddedResolver = _xEmbeddedResolver;
628 inline void SvXMLExport::SetGraphicStorageHandler(
629 css::uno::Reference<css::document::XGraphicStorageHandler> const & rxGraphicStorageHandler)
631 mxGraphicStorageHandler = rxGraphicStorageHandler;
634 // Helper class to export an element.
635 class XMLOFF_DLLPUBLIC SvXMLElementExport
637 SvXMLExport& mrExport;
638 OUString maElementName;
639 const bool mbIgnoreWhitespaceInside :1;
640 const bool mbDoSomething :1;
642 SAL_DLLPRIVATE
643 void StartElement(
644 const sal_uInt16 nPrefix,
645 const OUString& rName,
646 const bool bIgnoreWhitespaceOutside );
648 public:
650 // The constructor prints a start tag that has the common attributes
651 // of the XMLExport instance attached.
652 SvXMLElementExport( SvXMLExport& rExp, sal_uInt16 nPrefix,
653 const sal_Char *pName,
654 bool bIgnWSOutside, bool bIgnWSInside );
655 SvXMLElementExport( SvXMLExport& rExp, sal_uInt16 nPrefix,
656 const OUString& rName,
657 bool bIgnWSOutside, bool bIgnWSInside );
658 SvXMLElementExport( SvXMLExport& rExp, sal_uInt16 nPrefix,
659 enum ::xmloff::token::XMLTokenEnum eName,
660 bool bIgnWSOutside, bool bIgnWSInside );
661 SvXMLElementExport( SvXMLExport& rExp, const OUString& rQName,
662 bool bIgnWSOutside, bool bIgnWSInside );
664 // These constructors do nothing if bDoSomething is not set
665 SvXMLElementExport( SvXMLExport& rExp, bool bDoSomething,
666 sal_uInt16 nPrefix,
667 enum ::xmloff::token::XMLTokenEnum eName,
668 bool bIgnWSOutside, bool bIgnWSInside );
670 // The destructor prints an end tag.
671 ~SvXMLElementExport();
674 #endif // _XMLOFF_SVXMLEXP_HXX
676 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */