Breeze: Add Save All & Save a Copy icons
[LibreOffice.git] / include / xmloff / xmlexp.hxx
blobd1925585431d2c5ab59099e70ccf7d82ca73b9f1
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::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 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::sun::star {
84 namespace frame { class XModel; }
85 namespace lang { struct Locale; }
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 OASIS = 0x8000,
102 ALL = 0x05ff
104 namespace o3tl
106 template<> struct typed_flags<SvXMLExportFlags> : is_typed_flags<SvXMLExportFlags, 0x85ff> {};
109 class XMLOFF_DLLPUBLIC SvXMLExport : public cppu::WeakImplHelper<
110 css::document::XFilter,
111 css::lang::XServiceInfo,
112 css::document::XExporter,
113 css::lang::XInitialization,
114 css::container::XNamed,
115 css::lang::XUnoTunnel>
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<SvXMLAttributeList> 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 SvXMLUnitConverter maUnitConv; // the unit converter
139 std::unique_ptr<SvXMLNumFmtExport> mpNumExport;
140 std::unique_ptr<ProgressBarHelper> mpProgressBarHelper;
142 rtl::Reference< XMLTextParagraphExport > mxTextParagraphExport;
143 rtl::Reference< XMLShapeExport > mxShapeExport;
144 rtl::Reference< SvXMLAutoStylePoolP > mxAutoStylePool;
145 rtl::Reference< SchXMLExportHelper > mxChartExport;
146 rtl::Reference< XMLPageExport > mxPageExport;
147 rtl::Reference< XMLFontAutoStylePool > mxFontAutoStylePool;
148 rtl::Reference< xmloff::OFormLayerXMLExport > mxFormExport;
149 std::unique_ptr<XMLEventExport> mpEventExport;
150 std::unique_ptr<XMLImageMapExport> mpImageMapExport;
151 std::unique_ptr<XMLErrors> mpXMLErrors;
153 const enum ::xmloff::token::XMLTokenEnum meClass;
154 SAL_DLLPRIVATE void InitCtor_();
156 SvXMLExportFlags mnExportFlags;
157 SvXMLErrorFlags mnErrorFlags;
159 const OUString msWS; // " "
161 // Shapes in Writer cannot be named via context menu (#i51726#)
162 SvtModuleOptions::EFactory meModelType;
163 SAL_DLLPRIVATE void DetermineModelType_();
165 SAL_DLLPRIVATE void ImplExportMeta(); // <office:meta>
166 SAL_DLLPRIVATE void ImplExportSettings(); // <office:settings>
167 SAL_DLLPRIVATE void ImplExportStyles(); // <office:styles>
168 SAL_DLLPRIVATE void ImplExportAutoStyles();
169 // <office:automatic-styles>
170 SAL_DLLPRIVATE void ImplExportMasterStyles();
171 // <office:master-styles>
172 SAL_DLLPRIVATE void ImplExportContent(); // <office:body>
173 virtual void SetBodyAttributes();
174 void GetViewSettingsAndViews(css::uno::Sequence<css::beans::PropertyValue>& rProps);
176 protected:
177 void setExportFlags( SvXMLExportFlags nExportFlags ) { mnExportFlags = nExportFlags; }
179 // Get (modifiable) namespace map
180 SvXMLNamespaceMap& GetNamespaceMap_() { return *mpNamespaceMap; }
182 // get a new namespace map (used in starmath to have a default namespace)
183 void ResetNamespaceMap();
185 /// Override this method to export the content of <office:meta>.
186 /// There is a default implementation.
187 virtual void ExportMeta_();
189 /// Override this method to export the content of <office:scripts>.
190 /// There is a default implementation.
191 virtual void ExportScripts_();
193 /// Override this method to export the font declarations
194 /// The default implementation will export the contents of the
195 /// XMLFontAutoStylePool if it has been created.
196 virtual void ExportFontDecls_();
198 /// Override this method to export the content of <style:styles>.
199 /// If bUsed is set, used styles should be exported only.
200 /// Overriding Methods must call this method !
201 virtual void ExportStyles_( bool bUsed );
203 /// Override this method to export the contents of <style:auto-styles>.
204 virtual void ExportAutoStyles_() = 0;
206 /// Override this method to export the contents of <style:master-styles>.
207 virtual void ExportMasterStyles_() = 0;
209 /// Override this method to export the content of <office:body>.
210 virtual void ExportContent_() = 0;
212 OUString const & GetSourceShellID() const;
213 OUString const & GetDestinationShellID() const;
215 // save linked sections? (may be false in global documents)
216 bool mbSaveLinkedSections;
218 virtual XMLTextParagraphExport* CreateTextParagraphExport();
219 virtual XMLShapeExport* CreateShapeExport();
220 virtual SvXMLAutoStylePoolP* CreateAutoStylePool();
221 SchXMLExportHelper* CreateChartExport();
222 virtual XMLPageExport* CreatePageExport();
223 virtual XMLFontAutoStylePool* CreateFontAutoStylePool();
224 xmloff::OFormLayerXMLExport* CreateFormExport();
225 virtual void GetViewSettings(css::uno::Sequence<css::beans::PropertyValue>& aProps);
226 virtual void GetConfigurationSettings(css::uno::Sequence<css::beans::PropertyValue>& aProps);
228 struct SettingsGroup
230 ::xmloff::token::XMLTokenEnum eGroupName;
231 css::uno::Sequence< css::beans::PropertyValue > aSettings;
233 SettingsGroup(
234 const ::xmloff::token::XMLTokenEnum _eGroupName,
235 const css::uno::Sequence< css::beans::PropertyValue >& _rSettings )
236 :eGroupName( _eGroupName )
237 ,aSettings( _rSettings )
241 /** returns the current document settings
243 The default implementation will obtain the view settings by calling GetViewSettingsAndViews, and the
244 configuration settings by calling GetConfigurationSettings, and return them together with the proper XML token.
246 @return
247 the accumulated count of all settings in all groups
249 virtual sal_Int32 GetDocumentSpecificSettings( ::std::vector< SettingsGroup >& _out_rSettings );
251 const css::uno::Reference< css::document::XEmbeddedObjectResolver >& GetEmbeddedResolver() const { return mxEmbeddedResolver; }
252 inline void SetEmbeddedResolver( css::uno::Reference< css::document::XEmbeddedObjectResolver > const & _xEmbeddedResolver );
254 const css::uno::Reference<css::document::XGraphicStorageHandler> & GetGraphicStorageHandler() const
256 return mxGraphicStorageHandler;
258 void SetGraphicStorageHandler(css::uno::Reference<css::document::XGraphicStorageHandler> const & rxGraphicStorageHandler);
260 void SetDocHandler( const css::uno::Reference< css::xml::sax::XDocumentHandler > &rHandler );
262 bool mbAutoStylesCollected;
263 public:
265 SvXMLExport(
266 const css::uno::Reference< css::uno::XComponentContext >& xContext,
267 OUString const & implementationName,
268 sal_Int16 const eDefaultMeasureUnit /*css::util::MeasureUnit*/,
269 const enum ::xmloff::token::XMLTokenEnum eClass,
270 SvXMLExportFlags nExportFlag );
272 SvXMLExport(
273 const css::uno::Reference< css::uno::XComponentContext >& xContext,
274 OUString const & implementationName,
275 const OUString& rFileName,
276 sal_Int16 const eDefaultMeasureUnit /*css::util::MeasureUnit*/,
277 const css::uno::Reference< css::xml::sax::XDocumentHandler > & rHandler);
279 SvXMLExport(
280 const css::uno::Reference< css::uno::XComponentContext >& xContext,
281 OUString const & implementationName,
282 const OUString& rFileName,
283 const css::uno::Reference< css::xml::sax::XDocumentHandler > & rHandler,
284 const css::uno::Reference< css::frame::XModel > &,
285 FieldUnit const eDefaultFieldUnit,
286 SvXMLExportFlags nExportFlag );
288 virtual ~SvXMLExport() override;
290 virtual void collectAutoStyles();
292 // XExporter
293 virtual void SAL_CALL setSourceDocument( const css::uno::Reference< css::lang::XComponent >& xDoc ) override;
295 // XFilter
296 virtual sal_Bool SAL_CALL filter( const css::uno::Sequence< css::beans::PropertyValue >& aDescriptor ) override;
297 virtual void SAL_CALL cancel() override;
299 // XInitialization
300 virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) override;
302 // XNamed
303 virtual OUString SAL_CALL getName( ) override;
304 virtual void SAL_CALL setName( const OUString& aName ) override;
306 // XServiceInfo
307 virtual OUString SAL_CALL getImplementationName( ) final override;
308 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) final override;
309 virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) final override;
311 // XUnoTunnel
312 UNO3_GETIMPLEMENTATION_DECL(SvXMLExport)
314 /** ensures that the given namespace is in scope at the next started
315 element.
317 <p>If the namespace is not yet declared, the necessary attribute will
318 be added, as well.</p>
320 @param i_rNamespace the namespace to be declared
322 @returns the actual prefix that the namespace is associated with
324 OUString EnsureNamespace(OUString const & i_rNamespace );
326 // Check if common attribute list is empty.
327 #ifndef DBG_UTIL
328 void CheckAttrList() { (void) this; /* avoid loplugin:staticmethods */ }
329 #else
330 void CheckAttrList();
331 #endif
333 // Clear common attribute list.
334 void ClearAttrList();
336 // Add an attribute to the common attribute list.
337 void AddAttributeASCII( sal_uInt16 nPrefix, const char *pName,
338 const char *pValue );
339 void AddAttribute( sal_uInt16 nPrefix, const char *pName,
340 const OUString& rValue );
341 void AddAttribute( sal_uInt16 nPrefix, const OUString& rName,
342 const OUString& rValue );
343 void AddAttribute( sal_uInt16 nPrefix,
344 enum ::xmloff::token::XMLTokenEnum eName,
345 const OUString& rValue );
346 void AddAttribute( sal_uInt16 nPrefix,
347 enum ::xmloff::token::XMLTokenEnum eName,
348 enum ::xmloff::token::XMLTokenEnum eValue );
349 void AddAttribute( const OUString& rQName,
350 const OUString& rValue );
351 void AddAttribute( const OUString& rQName,
352 enum ::xmloff::token::XMLTokenEnum eValue );
354 /** Add language tag attributes, deciding which are necessary.
356 @param nPrefix
357 Namespace prefix for *:language, *:script and *:country
359 @param nPrefixRfc
360 Namespace prefix for *:rfc-language-tag
362 @param bWriteEmpty
363 Whether to write empty *:language and *:country attribute
364 values in case of an empty locale (denoting system).
366 void AddLanguageTagAttributes( sal_uInt16 nPrefix, sal_uInt16 nPrefixRfc,
367 const css::lang::Locale& rLocale, bool bWriteEmpty);
369 /** Same as AddLanguageTagAttributes() but with LanguageTag parameter
370 instead of Locale.
372 void AddLanguageTagAttributes( sal_uInt16 nPrefix, sal_uInt16 nPrefixRfc,
373 const LanguageTag& rLanguageTag, bool bWriteEmpty );
375 // add several attributes to the common attribute list
376 void AddAttributeList( const css::uno::Reference<
377 css::xml::sax::XAttributeList >& xAttrList );
379 // Get common attribute list as implementation or interface.
380 SvXMLAttributeList &GetAttrList() { return *mxAttrList; }
381 css::uno::Reference< css::xml::sax::XAttributeList > GetXAttrList() { return mxAttrList; }
383 // Get document handler. This methods are not const, because the
384 // reference allows modifications through the handler.
385 const css::uno::Reference< css::xml::sax::XDocumentHandler > & GetDocHandler() const { return mxHandler; }
387 // Get original URL.
388 const OUString& GetOrigFileName() const { return msOrigFileName; }
390 // Get (const) namespace map.
391 const SvXMLNamespaceMap& GetNamespaceMap() const { return *mpNamespaceMap; }
393 // Get unit converter
394 const SvXMLUnitConverter& GetMM100UnitConverter() const { return maUnitConv; }
396 SvXMLUnitConverter& GetMM100UnitConverter() { return maUnitConv; }
398 void addChaffWhenEncryptedStorage();
400 // Export the document.
401 virtual ErrCode exportDoc( enum ::xmloff::token::XMLTokenEnum eClass = ::xmloff::token::XML_TOKEN_INVALID );
403 void collectDataStyles(bool bFromUsedStyles);
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 value of ODF version attribute
534 char const* GetODFVersionAttributeValue() 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 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: */