android: Update app-specific/MIME type icons
[LibreOffice.git] / include / xmloff / xmlexp.hxx
blob8fd763438e8197d1b7da4d84dce87ccec3f3754e
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 <rtl/ustring.hxx>
28 #include <xmloff/txtparae.hxx>
29 #include <xmloff/formlayerexport.hxx>
30 #include <xmloff/xmlnumfe.hxx>
31 #include <xmloff/xmlaustp.hxx>
32 #include <xmloff/shapeexport.hxx>
33 #include <xmloff/xmltoken.hxx>
34 #include <xmloff/SchXMLExportHelper.hxx>
35 #include <xmloff/XMLFontAutoStylePool.hxx>
36 #include <xmloff/xmluconv.hxx>
37 #include <com/sun/star/document/XFilter.hpp>
38 #include <com/sun/star/lang/XServiceInfo.hpp>
39 #include <com/sun/star/document/XExporter.hpp>
40 #include <com/sun/star/lang/XInitialization.hpp>
41 #include <com/sun/star/container/XNamed.hpp>
43 #include <unotools/saveopt.hxx>
44 #include <unotools/securityoptions.hxx>
46 #include <xmloff/XMLPageExport.hxx>
47 #include <comphelper/attributelist.hxx>
48 #include <comphelper/servicehelper.hxx>
49 #include <cppuhelper/implbase.hxx>
50 #include <tools/fldunit.hxx>
51 #include <comphelper/errcode.hxx>
53 #include <vector>
54 #include <memory>
55 #include <o3tl/typed_flags_set.hxx>
57 namespace com::sun::star::beans { class XPropertySet; }
58 namespace com::sun::star::document { class XEmbeddedObjectResolver; }
59 namespace com::sun::star::document { class XGraphicStorageHandler; }
60 namespace com::sun::star::embed { class XStorage; }
61 namespace com::sun::star::graphic { class XGraphic; }
62 namespace com::sun::star::lang { class XEventListener; }
63 namespace com::sun::star::task { class XStatusIndicator; }
64 namespace com::sun::star::uno { class XComponentContext; }
65 namespace com::sun::star::util { class XNumberFormatsSupplier; }
66 namespace com::sun::star::xml::sax { class XAttributeList; }
67 namespace com::sun::star::xml::sax { class XDocumentHandler; }
68 namespace com::sun::star::xml::sax { class XExtendedDocumentHandler; }
69 namespace com::sun::star::xml::sax { class XLocator; }
71 class SvXMLNamespaceMap;
72 class SvtSecurityMapPersonalInfo;
73 class SvXMLExport_Impl;
74 class ProgressBarHelper;
75 class XMLEventExport;
76 class XMLImageMapExport;
77 class XMLErrors;
78 class LanguageTag;
79 enum class SvXMLErrorFlags;
81 // Shapes in Writer cannot be named via context menu (#i51726#)
82 #include <unotools/moduleoptions.hxx>
84 namespace com::sun::star {
85 namespace frame { class XModel; }
86 namespace lang { struct Locale; }
88 namespace comphelper { class UnoInterfaceToUniqueIdentifierMapper; }
90 enum class SvXMLExportFlags {
91 NONE = 0,
92 META = 0x0001,
93 STYLES = 0x0002,
94 MASTERSTYLES = 0x0004,
95 AUTOSTYLES = 0x0008,
96 CONTENT = 0x0010,
97 SCRIPTS = 0x0020,
98 SETTINGS = 0x0040,
99 FONTDECLS = 0x0080,
100 EMBEDDED = 0x0100,
101 PRETTY = 0x0400,
102 OASIS = 0x8000,
103 ALL = 0x05ff
105 namespace o3tl
107 template<> struct typed_flags<SvXMLExportFlags> : is_typed_flags<SvXMLExportFlags, 0x85ff> {};
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>
117 std::unique_ptr<SvXMLExport_Impl> mpImpl; // dummy
119 css::uno::Reference< css::uno::XComponentContext > m_xContext;
120 OUString m_implementationName;
122 css::uno::Reference< css::frame::XModel > mxModel;
123 css::uno::Reference< css::xml::sax::XDocumentHandler > mxHandler; // the handlers
124 css::uno::Reference< css::xml::sax::XExtendedDocumentHandler > mxExtHandler;
125 css::uno::Reference< css::util::XNumberFormatsSupplier > mxNumberFormatsSupplier;
126 css::uno::Reference< css::document::XGraphicStorageHandler > mxGraphicStorageHandler;
127 css::uno::Reference< css::document::XEmbeddedObjectResolver > mxEmbeddedResolver;
128 css::uno::Reference< css::task::XStatusIndicator > mxStatusIndicator;
129 css::uno::Reference< css::beans::XPropertySet > mxExportInfo;
130 css::uno::Reference< css::lang::XEventListener > mxEventListener;
132 rtl::Reference<comphelper::AttributeList> mxAttrList; // a common attribute list
134 OUString msOrigFileName; // the original URL
135 OUString msFilterName;
136 OUString msImgFilterName;
137 std::unique_ptr<SvXMLNamespaceMap> mpNamespaceMap; // the namespace map
138 std::unique_ptr<SvtSecurityMapPersonalInfo> mpAuthorIDs; // map authors to remove personal info
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 namespace 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 eGroupName;
232 css::uno::Sequence< css::beans::PropertyValue > 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 const css::uno::Reference< css::uno::XComponentContext >& xContext,
268 OUString implementationName,
269 sal_Int16 const eDefaultMeasureUnit /*css::util::MeasureUnit*/,
270 const enum ::xmloff::token::XMLTokenEnum eClass,
271 SvXMLExportFlags nExportFlag );
273 SvXMLExport(
274 const css::uno::Reference< css::uno::XComponentContext >& xContext,
275 OUString implementationName,
276 OUString fileName,
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 implementationName,
283 OUString fileName,
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 /** ensures that the given namespace is in scope at the next started
313 element.
315 <p>If the namespace is not yet declared, the necessary attribute will
316 be added, as well.</p>
318 @param i_rNamespace the namespace to be declared
320 @returns the actual prefix that the namespace is associated with
322 OUString EnsureNamespace(OUString const & i_rNamespace );
324 // Check if common attribute list is empty.
325 #ifndef DBG_UTIL
326 void CheckAttrList() { (void) this; /* avoid loplugin:staticmethods */ }
327 #else
328 void CheckAttrList();
329 #endif
331 // Clear common attribute list.
332 void ClearAttrList();
334 // Add an attribute to the common attribute list.
335 void AddAttribute( sal_uInt16 nPrefix, const OUString& rName,
336 const OUString& rValue );
337 void AddAttribute( sal_uInt16 nPrefix,
338 enum ::xmloff::token::XMLTokenEnum eName,
339 const OUString& rValue );
340 void AddAttribute( sal_uInt16 nPrefix,
341 enum ::xmloff::token::XMLTokenEnum eName,
342 enum ::xmloff::token::XMLTokenEnum eValue );
343 void AddAttribute( const OUString& rQName,
344 const OUString& rValue );
345 void AddAttribute( const OUString& rQName,
346 enum ::xmloff::token::XMLTokenEnum eValue );
348 /** Add language tag attributes, deciding which are necessary.
350 @param nPrefix
351 Namespace prefix for *:language, *:script and *:country
353 @param nPrefixRfc
354 Namespace prefix for *:rfc-language-tag
356 @param bWriteEmpty
357 Whether to write empty *:language and *:country attribute
358 values in case of an empty locale (denoting system).
360 void AddLanguageTagAttributes( sal_uInt16 nPrefix, sal_uInt16 nPrefixRfc,
361 const css::lang::Locale& rLocale, bool bWriteEmpty);
363 /** Same as AddLanguageTagAttributes() but with LanguageTag parameter
364 instead of Locale.
366 void AddLanguageTagAttributes( sal_uInt16 nPrefix, sal_uInt16 nPrefixRfc,
367 const LanguageTag& rLanguageTag, bool bWriteEmpty );
369 // add several attributes to the common attribute list
370 void AddAttributeList( const css::uno::Reference<
371 css::xml::sax::XAttributeList >& xAttrList );
373 // Get common attribute list as implementation or interface.
374 comphelper::AttributeList &GetAttrList() { return *mxAttrList; }
375 css::uno::Reference< css::xml::sax::XAttributeList > GetXAttrList() const { return mxAttrList; }
377 // Get document handler. This methods are not const, because the
378 // reference allows modifications through the handler.
379 const css::uno::Reference< css::xml::sax::XDocumentHandler > & GetDocHandler() const { return mxHandler; }
381 // Get original URL.
382 const OUString& GetOrigFileName() const { return msOrigFileName; }
384 // Get (const) namespace map.
385 const SvXMLNamespaceMap& GetNamespaceMap() const { return *mpNamespaceMap; }
387 // Get author id to remove personal info
388 size_t GetInfoID( const OUString sPersonalInfo ) const { return mpAuthorIDs->GetInfoID(sPersonalInfo); }
390 // Get unit converter
391 const SvXMLUnitConverter& GetMM100UnitConverter() const { return maUnitConv; }
393 SvXMLUnitConverter& GetMM100UnitConverter() { return maUnitConv; }
395 void addChaffWhenEncryptedStorage();
397 // Export the document.
398 virtual ErrCode exportDoc( enum ::xmloff::token::XMLTokenEnum eClass = ::xmloff::token::XML_TOKEN_INVALID );
400 void collectDataStyles(bool bFromUsedStyles);
401 virtual void addDataStyle(const sal_Int32 nNumberFormat, bool bTimeFormat = false );
402 virtual void exportDataStyles();
403 virtual void exportAutoDataStyles();
404 virtual OUString getDataStyleName(const sal_Int32 nNumberFormat, bool bTimeFormat = false ) const;
405 sal_Int32 dataStyleForceSystemLanguage(sal_Int32 nFormat) const;
407 virtual void exportAnnotationMeta( const css::uno::Reference < css::drawing::XShape >& xShape);
409 // Get XModel
410 const css::uno::Reference< css::frame::XModel > &
411 GetModel() const { return mxModel; }
412 // Get XNumberFormatsSupplier
413 css::uno::Reference< css::util::XNumberFormatsSupplier > & GetNumberFormatsSupplier() { return mxNumberFormatsSupplier; }
414 void SetNumberFormatsSupplier(const css::uno::Reference< css::util::XNumberFormatsSupplier >& _xNumberFormatSupplier)
416 mxNumberFormatsSupplier = _xNumberFormatSupplier;
417 if ( mxNumberFormatsSupplier.is() && mxHandler.is() )
418 mpNumExport.reset( new SvXMLNumFmtExport(*this, mxNumberFormatsSupplier) );
421 // get export helper for text
422 inline rtl::Reference< XMLTextParagraphExport > const & GetTextParagraphExport();
424 // get export helper for shapes
425 inline rtl::Reference< XMLShapeExport > const & GetShapeExport();
427 // get auto style pool
428 inline rtl::Reference< SvXMLAutoStylePoolP > const & GetAutoStylePool();
430 // get Page Export
431 inline rtl::Reference< XMLPageExport > const & GetPageExport();
433 // get chart export helper
434 inline rtl::Reference< SchXMLExportHelper > const & GetChartExport();
436 // get font auto style pool
437 inline rtl::Reference< XMLFontAutoStylePool > const & GetFontAutoStylePool();
439 ProgressBarHelper* GetProgressBarHelper();
441 // get Formlayer Export
442 inline rtl::Reference< xmloff::OFormLayerXMLExport > const & GetFormExport();
443 inline bool HasFormExport() const;
445 // get XPropertySet with export information
446 const css::uno::Reference< css::beans::XPropertySet >& getExportInfo() const { return mxExportInfo; }
448 const css::uno::Reference< css::task::XStatusIndicator >& GetStatusIndicator() const { return mxStatusIndicator; }
450 /// get Event export, with handlers for script types "None" and
451 /// "StarBasic" already registered; other handlers may be registered, too.
452 XMLEventExport& GetEventExport();
454 /// get the export for image maps
455 XMLImageMapExport& GetImageMapExport();
457 OUString AddEmbeddedXGraphic(css::uno::Reference<css::graphic::XGraphic> const & rxGraphic, OUString & rOutMimeType, OUString const & rRequestedName = OUString());
458 bool AddEmbeddedXGraphicAsBase64(css::uno::Reference<css::graphic::XGraphic> const & rxGraphic);
459 bool GetGraphicMimeTypeFromStream(css::uno::Reference<css::graphic::XGraphic> const & rxGraphic, OUString & rOutMimeType);
461 OUString AddEmbeddedObject(
462 const OUString& rEmbeddedObjectURL );
463 bool AddEmbeddedObjectAsBase64(
464 const OUString& rEmbeddedObjectURL );
466 OUString EncodeStyleName( const OUString& rName,
467 bool *pEncoded=nullptr ) const;
469 // save linked sections?
470 bool IsSaveLinkedSections() const { return mbSaveLinkedSections; }
472 // get export flags
473 SvXMLExportFlags getExportFlags() const { return mnExportFlags; }
475 void ExportEmbeddedOwnObject(
476 css::uno::Reference<css::lang::XComponent > const & rComp );
478 OUString GetRelativeReference(const OUString& rValue);
480 // methods for accessing the document handler and handling SAX errors
481 void StartElement(sal_uInt16 nPrefix,
482 enum ::xmloff::token::XMLTokenEnum eName,
483 bool bIgnWSOutside );
484 void StartElement(const OUString& rName,
485 bool bIgnWSOutside );
486 void Characters(const OUString& rChars);
487 void EndElement(sal_uInt16 nPrefix,
488 enum ::xmloff::token::XMLTokenEnum eName,
489 bool bIgnWSInside );
490 void EndElement(const OUString& rName,
491 bool bIgnWSInside );
492 void IgnorableWhitespace();
495 * Record an error condition that occurred during export. The
496 * behavior of SetError can be modified using the error flag
497 * constants.
499 void SetError(
500 /// error ID, may contain an error flag
501 sal_Int32 nId,
502 /// string parameters for the error message
503 const css::uno::Sequence< OUString> & rMsgParams,
504 /// original exception message (if applicable)
505 const OUString& rExceptionMessage,
506 /// error location (if applicable)
507 const css::uno::Reference<css::xml::sax::XLocator> & rLocator );
509 void SetError(
510 sal_Int32 nId,
511 const css::uno::Sequence< OUString> & rMsgParams);
513 virtual void DisposingModel();
515 ::comphelper::UnoInterfaceToUniqueIdentifierMapper& getInterfaceToIdentifierMapper();
517 const css::uno::Reference< css::uno::XComponentContext >& getComponentContext() const { return m_xContext;}
519 // Shapes in Writer cannot be named via context menu (#i51726#)
520 SvtModuleOptions::EFactory GetModelType() const
522 return meModelType;
525 // Written OpenDocument file format doesn't fit to the created text document (#i69627#)
526 bool writeOutlineStyleAsNormalListStyle() const;
528 css::uno::Reference< css::embed::XStorage > const & GetTargetStorage() const;
530 /// returns value of ODF version attribute
531 char const* GetODFVersionAttributeValue() const;
533 /// returns the deterministic version for odf export
534 SvtSaveOptions::ODFSaneDefaultVersion getSaneDefaultVersion() const;
536 // FIXME: this is only for legacy stuff that has not yet been adapted
537 // to implement XMetadatable; this can write duplicate IDs!
538 /// add xml:id and legacy namespace id
539 void SAL_DLLPRIVATE AddAttributeIdLegacy(
540 sal_uInt16 const nLegacyPrefix, OUString const& rValue);
542 /// add xml:id attribute (for RDF metadata)
543 void AddAttributeXmlId(css::uno::Reference<css::uno::XInterface> const & i_xIfc);
545 /// add RDFa attributes for a metadatable text content
546 void AddAttributesRDFa( css::uno::Reference<css::text::XTextContent> const & i_xTextContent);
548 bool exportTextNumberElement() const;
550 /// set null date from model to unit converter, if not already done
551 bool SetNullDateOnUnitConverter();
553 /// Get clamped mimetype for image export (empty if none)
554 OUString const & GetImageFilterName() const;
557 inline rtl::Reference< XMLTextParagraphExport > const & SvXMLExport::GetTextParagraphExport()
559 if( !mxTextParagraphExport.is() )
560 mxTextParagraphExport = CreateTextParagraphExport();
562 return mxTextParagraphExport;
565 inline rtl::Reference< XMLShapeExport > const & SvXMLExport::GetShapeExport()
567 if( !mxShapeExport.is() )
568 mxShapeExport = CreateShapeExport();
570 return mxShapeExport;
573 inline rtl::Reference< SvXMLAutoStylePoolP > const & SvXMLExport::GetAutoStylePool()
575 if( !mxAutoStylePool.is() )
576 mxAutoStylePool = CreateAutoStylePool();
578 return mxAutoStylePool;
581 inline rtl::Reference< SchXMLExportHelper > const & SvXMLExport::GetChartExport()
583 if( !mxChartExport.is() )
584 mxChartExport = CreateChartExport();
586 return mxChartExport;
589 inline rtl::Reference< XMLPageExport > const & SvXMLExport::GetPageExport()
591 if( !mxPageExport.is() )
592 mxPageExport = CreatePageExport();
594 return mxPageExport;
597 inline rtl::Reference< XMLFontAutoStylePool > const & SvXMLExport::GetFontAutoStylePool()
599 if( !mxFontAutoStylePool.is() )
600 mxFontAutoStylePool = CreateFontAutoStylePool();
602 return mxFontAutoStylePool;
605 inline rtl::Reference< xmloff::OFormLayerXMLExport > const & SvXMLExport::GetFormExport()
607 if( !mxFormExport.is() )
608 mxFormExport = CreateFormExport();
610 return mxFormExport;
613 inline bool SvXMLExport::HasFormExport() const
615 return mxFormExport.is();
618 inline void SvXMLExport::SetEmbeddedResolver(
619 css::uno::Reference< css::document::XEmbeddedObjectResolver > const & _xEmbeddedResolver )
621 mxEmbeddedResolver = _xEmbeddedResolver;
624 inline void SvXMLExport::SetGraphicStorageHandler(
625 css::uno::Reference<css::document::XGraphicStorageHandler> const & rxGraphicStorageHandler)
627 mxGraphicStorageHandler = rxGraphicStorageHandler;
630 // Helper class to export an element.
631 class XMLOFF_DLLPUBLIC SvXMLElementExport
633 SvXMLExport& mrExport;
634 OUString maElementName;
635 const bool mbIgnoreWhitespaceInside :1;
636 const bool mbDoSomething :1;
638 SAL_DLLPRIVATE
639 void StartElement(
640 const sal_uInt16 nPrefix,
641 const OUString& rName,
642 const bool bIgnoreWhitespaceOutside );
644 public:
646 // The constructor prints a start tag that has the common attributes
647 // of the XMLExport instance attached.
648 SvXMLElementExport( SvXMLExport& rExp, sal_uInt16 nPrefix,
649 const char *pName,
650 bool bIgnWSOutside, bool bIgnWSInside );
651 SvXMLElementExport( SvXMLExport& rExp, sal_uInt16 nPrefix,
652 const OUString& rName,
653 bool bIgnWSOutside, bool bIgnWSInside );
654 SvXMLElementExport( SvXMLExport& rExp, sal_uInt16 nPrefix,
655 enum ::xmloff::token::XMLTokenEnum eName,
656 bool bIgnWSOutside, bool bIgnWSInside );
657 SvXMLElementExport( SvXMLExport& rExp, const OUString& rQName,
658 bool bIgnWSOutside, bool bIgnWSInside );
660 // These constructors do nothing if bDoSomething is not set
661 SvXMLElementExport( SvXMLExport& rExp, bool bDoSomething,
662 sal_uInt16 nPrefix,
663 enum ::xmloff::token::XMLTokenEnum eName,
664 bool bIgnWSOutside, bool bIgnWSInside );
666 // The destructor prints an end tag.
667 ~SvXMLElementExport();
670 #endif // _XMLOFF_SVXMLEXP_HXX
672 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */