diff options
Diffstat (limited to 'xmloff/source/draw/sdxmlexp_impl.hxx')
-rw-r--r-- | xmloff/source/draw/sdxmlexp_impl.hxx | 228 |
1 files changed, 228 insertions, 0 deletions
diff --git a/xmloff/source/draw/sdxmlexp_impl.hxx b/xmloff/source/draw/sdxmlexp_impl.hxx new file mode 100644 index 000000000000..aa792d43faf6 --- /dev/null +++ b/xmloff/source/draw/sdxmlexp_impl.hxx @@ -0,0 +1,228 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SDXMLEXP_IMPL_HXX +#define _SDXMLEXP_IMPL_HXX + +#include <xmloff/xmlexp.hxx> + + +#include <com/sun/star/frame/XModel.hpp> +#include <com/sun/star/task/XStatusIndicator.hpp> +#include <com/sun/star/container/XNameAccess.hpp> +#include <com/sun/star/drawing/XDrawPage.hpp> +#include <comphelper/stl_types.hxx> + +////////////////////////////////////////////////////////////////////////////// + +class SvXMLUnitConverter; +class SvXMLExportItemMapper; +class SfxPoolItem; +class SfxItemSet; +class OUStrings_Impl; +class OUStringsSort_Impl; +class Rectangle; + +class ImpPresPageDrawStylePropMapper; +class ImpXMLEXPPageMasterList; +class ImpXMLEXPPageMasterInfo; +class ImpXMLDrawPageInfoList; +class ImpXMLAutoLayoutInfoList; +class SvXMLAutoStylePoolP; +class XMLSdPropHdlFactory; +class ImpXMLShapeStyleInfo; +class XMLShapeExportPropertyMapper; +class XMLPageExportPropertyMapper; + +////////////////////////////////////////////////////////////////////////////// + +enum XmlPlaceholder +{ + XmlPlaceholderTitle, + XmlPlaceholderOutline, + XmlPlaceholderSubtitle, + XmlPlaceholderText, + XmlPlaceholderGraphic, + XmlPlaceholderObject, + XmlPlaceholderChart, + XmlPlaceholderOrgchart, + XmlPlaceholderTable, + XmlPlaceholderPage, + XmlPlaceholderNotes, + XmlPlaceholderHandout, + XmlPlaceholderVerticalTitle, + XmlPlaceholderVerticalOutline +}; + +DECLARE_STL_STDKEY_SET( sal_Int32, SdXMLFormatMap ); + +////////////////////////////////////////////////////////////////////////////// + +struct HeaderFooterPageSettingsImpl +{ + rtl::OUString maStrHeaderDeclName; + rtl::OUString maStrFooterDeclName; + rtl::OUString maStrDateTimeDeclName; +}; + +struct DateTimeDeclImpl +{ + rtl::OUString maStrText; + sal_Bool mbFixed; + sal_Int32 mnFormat; +}; + + +////////////////////////////////////////////////////////////////////////////// + +class SdXMLExport : public SvXMLExport +{ + com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > mxDocStyleFamilies; + com::sun::star::uno::Reference< com::sun::star::container::XIndexAccess > mxDocMasterPages; + com::sun::star::uno::Reference< com::sun::star::container::XIndexAccess > mxDocDrawPages; + sal_Int32 mnDocMasterPageCount; + sal_Int32 mnDocDrawPageCount; + sal_uInt32 mnShapeStyleInfoIndex; + sal_uInt32 mnObjectCount; + + // temporary infos + ImpXMLEXPPageMasterList* mpPageMasterInfoList; + ImpXMLEXPPageMasterList* mpPageMasterUsageList; + ImpXMLEXPPageMasterList* mpNotesPageMasterUsageList; + ImpXMLEXPPageMasterInfo* mpHandoutPageMaster; + ImpXMLAutoLayoutInfoList* mpAutoLayoutInfoList; + + com::sun::star::uno::Sequence< ::rtl::OUString > maDrawPagesAutoLayoutNames; + + ::std::vector< ::rtl::OUString > maDrawPagesStyleNames; + ::std::vector< ::rtl::OUString > maDrawNotesPagesStyleNames; + ::std::vector< ::rtl::OUString > maMasterPagesStyleNames; + ::rtl::OUString maHandoutMasterStyleName; + ::std::vector< HeaderFooterPageSettingsImpl > maDrawPagesHeaderFooterSettings; + ::std::vector< HeaderFooterPageSettingsImpl > maDrawNotesPagesHeaderFooterSettings; + + ::std::vector< ::rtl::OUString > maHeaderDeclsVector; + ::std::vector< ::rtl::OUString > maFooterDeclsVector; + ::std::vector< DateTimeDeclImpl > maDateTimeDeclsVector; + + HeaderFooterPageSettingsImpl maHandoutPageHeaderFooterSettings; + + XMLSdPropHdlFactory* mpSdPropHdlFactory; + XMLShapeExportPropertyMapper* mpPropertySetMapper; + XMLPageExportPropertyMapper* mpPresPagePropsMapper; + + SdXMLFormatMap maUsedDateStyles; // this is a vector with the used formatings for date fields + SdXMLFormatMap maUsedTimeStyles; // this is a vector with the used formatings for time fields + + sal_Bool mbIsDraw; + sal_Bool mbFamilyGraphicUsed; + sal_Bool mbFamilyPresentationUsed; + + const rtl::OUString msZIndex; + const rtl::OUString msEmptyPres; + const rtl::OUString msModel; + const rtl::OUString msStartShape; + const rtl::OUString msEndShape; + const rtl::OUString msPageLayoutNames; + + virtual void _ExportStyles(BOOL bUsed); + virtual void _ExportAutoStyles(); + virtual void _ExportMasterStyles(); + virtual void _ExportContent(); + // #82003# + virtual void _ExportMeta(); + + ImpXMLEXPPageMasterInfo* ImpGetOrCreatePageMasterInfo( com::sun::star::uno::Reference< com::sun::star::drawing::XDrawPage > xMasterPage ); + void ImpPrepPageMasterInfos(); + void ImpPrepDrawMasterInfos(); + void ImpWritePageMasterInfos(); + void ImpPrepAutoLayoutInfos(); + HeaderFooterPageSettingsImpl ImpPrepDrawPageHeaderFooterDecls( const com::sun::star::uno::Reference< com::sun::star::drawing::XDrawPage >& xDrawPage ); + ImpXMLEXPPageMasterInfo* ImpGetPageMasterInfoByName(const rtl::OUString& rName); + + void ImpPrepDrawPageInfos(); + void ImpPrepMasterPageInfos(); + void ImpWritePresentationStyles(); + ::rtl::OUString ImpCreatePresPageStyleName( com::sun::star::uno::Reference<com::sun::star::drawing::XDrawPage> xDrawPage, bool bExportBackground = true ); + + BOOL ImpPrepAutoLayoutInfo(const com::sun::star::uno::Reference< com::sun::star::drawing::XDrawPage >& xPage, rtl::OUString& rName); + void ImpWriteAutoLayoutInfos(); + void ImpWriteAutoLayoutPlaceholder(XmlPlaceholder ePl, const Rectangle& rRect); + void ImpWriteHeaderFooterDecls(); + void ImplExportHeaderFooterDeclAttributes( const HeaderFooterPageSettingsImpl& aSettings ); + + void exportFormsElement( com::sun::star::uno::Reference< com::sun::star::drawing::XDrawPage > xDrawPage ); + void exportPresentationSettings(); + + // #82003# helper function for recursive object count + sal_uInt32 ImpRecursiveObjectCount( com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > xShapes); + + rtl::OUString getNavigationOrder( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& xDrawPage ); + + void collectAnnotationAutoStyles( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& xDrawPage ); + void exportAnnotations( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& xDrawPage ); + +protected: + virtual void GetViewSettings(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aProps); + virtual void GetConfigurationSettings(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aProps); + +public: + // #110680# + SdXMLExport( + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory, + sal_Bool bIsDraw, sal_uInt16 nExportFlags = EXPORT_ALL ); + virtual ~SdXMLExport(); + + void SetProgress(sal_Int32 nProg); + + // XExporter + virtual void SAL_CALL setSourceDocument( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& xDoc ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); + + // get factories and mappers + XMLSdPropHdlFactory* GetSdPropHdlFactory() const { return mpSdPropHdlFactory; } + XMLShapeExportPropertyMapper* GetPropertySetMapper() const { return mpPropertySetMapper; } + XMLPageExportPropertyMapper* GetPresPagePropsMapper() const { return mpPresPagePropsMapper; } + + BOOL IsDraw() const { return mbIsDraw; } + BOOL IsImpress() const { return !mbIsDraw; } + + BOOL IsFamilyGraphicUsed() const { return mbFamilyGraphicUsed; } + void SetFamilyGraphicUsed() { mbFamilyGraphicUsed = TRUE; } + BOOL IsFamilyPresentationUsed() const { return mbFamilyPresentationUsed; } + void SetFamilyPresentationUsed() { mbFamilyPresentationUsed = TRUE; } + + virtual void addDataStyle(const sal_Int32 nNumberFormat, sal_Bool bTimeFormat = sal_False ); + virtual void exportDataStyles(); + virtual void exportAutoDataStyles(); + virtual rtl::OUString getDataStyleName(const sal_Int32 nNumberFormat, sal_Bool bTimeFormat = sal_False ) const; + + // XServiceInfo ( : SvXMLExport ) + virtual ::rtl::OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException ); +}; + +#endif // _SDXMLEXP_HXX + |