1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
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>
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
;
75 class XMLImageMapExport
;
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
; }
87 namespace comphelper
{ class UnoInterfaceToUniqueIdentifierMapper
; }
89 enum class SvXMLExportFlags
{
93 MASTERSTYLES
= 0x0004,
101 SAVEBACKWARDCOMPATIBLE
= 0x0800,
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
);
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
);
231 ::xmloff::token::XMLTokenEnum
const eGroupName
;
232 css::uno::Sequence
< css::beans::PropertyValue
> const aSettings
;
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.
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
;
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
);
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
);
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();
294 virtual void SAL_CALL
setSourceDocument( const css::uno::Reference
< css::lang::XComponent
>& xDoc
) override
;
297 virtual sal_Bool SAL_CALL
filter( const css::uno::Sequence
< css::beans::PropertyValue
>& aDescriptor
) override
;
298 virtual void SAL_CALL
cancel() override
;
301 virtual void SAL_CALL
initialize( const css::uno::Sequence
< css::uno::Any
>& aArguments
) override
;
304 virtual OUString SAL_CALL
getName( ) override
;
305 virtual void SAL_CALL
setName( const OUString
& aName
) override
;
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
;
313 UNO3_GETIMPLEMENTATION_DECL(SvXMLExport
)
315 /** ensures that the given namespace is in scope at the next started
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.
329 void CheckAttrList() { (void) this; /* avoid loplugin:staticmethods */ }
331 void CheckAttrList();
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.
358 Namespace prefix for *:language, *:script and *:country
361 Namespace prefix for *:rfc-language-tag
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
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
; }
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
);
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();
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
; }
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
,
493 void EndElement(const OUString
& rName
,
495 void IgnorableWhitespace();
498 * Record an error condition that occurred during export. The
499 * behavior of SetError can be modified using the error flag
503 /// error ID, may contain an error flag
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
);
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
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();
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();
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;
643 const sal_uInt16 nPrefix
,
644 const OUString
& rName
,
645 const bool bIgnoreWhitespaceOutside
);
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
,
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: */