diff options
Diffstat (limited to 'xmloff/source/draw/sdxmlimp_impl.hxx')
-rw-r--r-- | xmloff/source/draw/sdxmlimp_impl.hxx | 339 |
1 files changed, 339 insertions, 0 deletions
diff --git a/xmloff/source/draw/sdxmlimp_impl.hxx b/xmloff/source/draw/sdxmlimp_impl.hxx new file mode 100644 index 000000000000..d1cd0df80563 --- /dev/null +++ b/xmloff/source/draw/sdxmlimp_impl.hxx @@ -0,0 +1,339 @@ +/************************************************************************* + * + * 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 _SDXMLIMP_IMPL_HXX +#define _SDXMLIMP_IMPL_HXX + +#include <com/sun/star/drawing/XDrawPage.hpp> +#include <com/sun/star/frame/XModel.hpp> +#include <com/sun/star/task/XStatusIndicator.hpp> +#include <xmloff/xmltkmap.hxx> +#include <com/sun/star/container/XNameAccess.hpp> + +#ifndef __SGI_STL_VECTOR +#include <vector> +#endif +#include <xmloff/xmlimp.hxx> + +////////////////////////////////////////////////////////////////////////////// + +enum SdXMLDocElemTokenMap +{ + XML_TOK_DOC_FONTDECLS, + XML_TOK_DOC_STYLES, + XML_TOK_DOC_AUTOSTYLES, + XML_TOK_DOC_MASTERSTYLES, + XML_TOK_DOC_META, + XML_TOK_DOC_BODY, + XML_TOK_DOC_SCRIPT, + XML_TOK_DOC_SETTINGS, + XML_TOK_OFFICE_END = XML_TOK_UNKNOWN +}; + +enum SdXMLBodyElemTokenMap +{ + XML_TOK_BODY_PAGE, + XML_TOK_BODY_SETTINGS, + XML_TOK_BODY_HEADER_DECL, + XML_TOK_BODY_FOOTER_DECL, + XML_TOK_BODY_DATE_TIME_DECL +}; + +enum SdXMLStylesElemTokenMap +{ + XML_TOK_STYLES_MASTER_PAGE, + XML_TOK_STYLES_STYLE, + XML_TOK_STYLES_PAGE_MASTER, + XML_TOK_STYLES_PRESENTATION_PAGE_LAYOUT +}; + +enum SdXMLAutoStylesElemTokenMap +{ + XML_TOK_AUTOSTYLES_STYLE +}; + +enum SdXMLMasterPageElemTokenMap +{ + XML_TOK_MASTERPAGE_STYLE, + XML_TOK_MASTERPAGE_NOTES +}; + +enum SdXMLMasterPageAttrTokenMap +{ + XML_TOK_MASTERPAGE_NAME, + XML_TOK_MASTERPAGE_DISPLAY_NAME, + XML_TOK_MASTERPAGE_PAGE_MASTER_NAME, + XML_TOK_MASTERPAGE_STYLE_NAME, + XML_TOK_MASTERPAGE_PAGE_LAYOUT_NAME, + XML_TOK_MASTERPAGE_USE_HEADER_NAME, + XML_TOK_MASTERPAGE_USE_FOOTER_NAME, + XML_TOK_MASTERPAGE_USE_DATE_TIME_NAME +}; + +enum SdXMLPageMasterAttrTokenMap +{ + XML_TOK_PAGEMASTER_NAME +}; + +enum SdXMLPageMasterStyleAttrTokenMap +{ + XML_TOK_PAGEMASTERSTYLE_MARGIN_TOP, + XML_TOK_PAGEMASTERSTYLE_MARGIN_BOTTOM, + XML_TOK_PAGEMASTERSTYLE_MARGIN_LEFT, + XML_TOK_PAGEMASTERSTYLE_MARGIN_RIGHT, + XML_TOK_PAGEMASTERSTYLE_PAGE_WIDTH, + XML_TOK_PAGEMASTERSTYLE_PAGE_HEIGHT, + XML_TOK_PAGEMASTERSTYLE_PAGE_ORIENTATION +}; + +enum SdXMLDocStyleAttrTokenMap +{ + XML_TOK_DOCSTYLE_NAME, + XML_TOK_DOCSTYLE_FAMILY, + XML_TOK_DOCSTYLE_PARENT_STYLE_NAME, + XML_TOK_DOCSTYLE_AUTOMATIC +}; + +enum SdXMLDocStyleElemTokenMap +{ + XML_TOK_DOCSTYLE_PROPERTIES, + XML_TOK_DOCSTYLE_PRESENTATION_PLACEHOLDER +}; + +enum SdXMLDrawPageAttrTokenMap +{ + XML_TOK_DRAWPAGE_NAME, + XML_TOK_DRAWPAGE_STYLE_NAME, + XML_TOK_DRAWPAGE_MASTER_PAGE_NAME, + XML_TOK_DRAWPAGE_PAGE_LAYOUT_NAME, + XML_TOK_DRAWPAGE_DRAWID, + XML_TOK_DRAWPAGE_XMLID, + XML_TOK_DRAWPAGE_HREF, + XML_TOK_DRAWPAGE_USE_HEADER_NAME, + XML_TOK_DRAWPAGE_USE_FOOTER_NAME, + XML_TOK_DRAWPAGE_USE_DATE_TIME_NAME +}; + +enum SdXMLDrawPageElemTokenMap +{ + XML_TOK_DRAWPAGE_NOTES, + XML_TOK_DRAWPAGE_PAR, + XML_TOK_DRAWPAGE_SEQ +}; + +enum SdXMLPresentationPlaceholderAttrTokenMap +{ + XML_TOK_PRESENTATIONPLACEHOLDER_OBJECTNAME, + XML_TOK_PRESENTATIONPLACEHOLDER_X, + XML_TOK_PRESENTATIONPLACEHOLDER_Y, + XML_TOK_PRESENTATIONPLACEHOLDER_WIDTH, + XML_TOK_PRESENTATIONPLACEHOLDER_HEIGHT +}; + +////////////////////////////////////////////////////////////////////////////// + +struct SdXMLltXDrawPageId +{ + bool operator()(sal_Int32 nId1, sal_Int32 nId2 ) const + { + return nId1 < nId2; + } +}; + +typedef std::map< sal_Int32, com::sun::star::uno::Reference< com::sun::star::drawing::XDrawPage >, SdXMLltXDrawPageId > DrawPageIdMap; + +////////////////////////////////////////////////////////////////////////////// + +class SvXMLUnitConverter; +class SvXMLTokenMap; +class XMLSdPropHdlFactory; +class XMLPropertySetMapper; +class XMLPropStyleContext; +class SdXMLStylesContext; +class SdXMLMasterStylesContext; + +////////////////////////////////////////////////////////////////////////////// + +struct DateTimeDeclContextImpl +{ + rtl::OUString maStrText; + sal_Bool mbFixed; + rtl::OUString maStrDateTimeFormat; + + DateTimeDeclContextImpl() : mbFixed(sal_True) {} +}; + +DECLARE_STL_USTRINGACCESS_MAP( ::rtl::OUString, HeaderFooterDeclMap ); +DECLARE_STL_USTRINGACCESS_MAP( DateTimeDeclContextImpl, DateTimeDeclMap ); + +////////////////////////////////////////////////////////////////////////////// + +class SdXMLImport: public SvXMLImport +{ + 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; + com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > mxPageLayouts; + + // contexts for Style and AutoStyle import + SdXMLMasterStylesContext* mpMasterStylesContext; + + // token map lists + SvXMLTokenMap* mpDocElemTokenMap; + SvXMLTokenMap* mpBodyElemTokenMap; + SvXMLTokenMap* mpStylesElemTokenMap; + SvXMLTokenMap* mpAutoStylesElemTokenMap; + SvXMLTokenMap* mpMasterPageElemTokenMap; + SvXMLTokenMap* mpMasterPageAttrTokenMap; + SvXMLTokenMap* mpPageMasterAttrTokenMap; + SvXMLTokenMap* mpPageMasterStyleAttrTokenMap; + SvXMLTokenMap* mpDocStyleAttrTokenMap; + SvXMLTokenMap* mpDocStyleElemTokenMap; + SvXMLTokenMap* mpDrawPageAttrTokenMap; + SvXMLTokenMap* mpDrawPageElemTokenMap; + SvXMLTokenMap* mpPresentationPlaceholderAttrTokenMap; + + sal_uInt16 mnStyleFamilyMask; + + sal_Int32 mnNewPageCount; + sal_Int32 mnNewMasterPageCount; + + sal_Bool mbIsDraw; + sal_Bool mbLoadDoc; + sal_Bool mbPreview; + + DrawPageIdMap maDrawPageIds; + + ::rtl::OUString msPageLayouts; + ::rtl::OUString msPreview; + + HeaderFooterDeclMap maHeaderDeclsMap; + HeaderFooterDeclMap maFooterDeclsMap; + DateTimeDeclMap maDateTimeDeclsMap; + +protected: + // This method is called after the namespace map has been updated, but + // before a context for the current element has been pushed. + virtual SvXMLImportContext *CreateContext(sal_uInt16 nPrefix, + const rtl::OUString& rLocalName, + const com::sun::star::uno::Reference< + com::sun::star::xml::sax::XAttributeList>& xAttrList); + +public: + // #110680# + SdXMLImport( + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory, + sal_Bool bIsDraw, sal_uInt16 nImportFlags = IMPORT_ALL ); + ~SdXMLImport() throw (); + + // XImporter + virtual void SAL_CALL setTargetDocument( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& xDoc ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); + + // XInitialization + virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); + + void SetProgress(sal_Int32 nProg); + + virtual void SetViewSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aViewProps); + virtual void SetConfigurationSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aConfigProps); + + // namespace office + // NB: in contrast to other CreateFooContexts, this particular one handles + // the root element (i.e. office:document-meta) + SvXMLImportContext* CreateMetaContext(const rtl::OUString& rLocalName, + const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList >& xAttrList); + SvXMLImportContext* CreateScriptContext( const ::rtl::OUString& rLocalName ); + SvXMLImportContext* CreateBodyContext(const rtl::OUString& rLocalName, + const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList >& xAttrList); + SvXMLStylesContext* CreateStylesContext(const rtl::OUString& rLocalName, + const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList >& xAttrList); + SvXMLStylesContext* CreateAutoStylesContext(const rtl::OUString& rLocalName, + const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList >& xAttrList); + SvXMLImportContext* CreateMasterStylesContext(const rtl::OUString& rLocalName, + const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList >& xAttrList); + SvXMLImportContext *CreateFontDeclsContext(const ::rtl::OUString& rLocalName, + const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttrList ); + + // Styles and AutoStyles contexts + const SdXMLMasterStylesContext* GetMasterStylesContext() const { return mpMasterStylesContext; } + + sal_uInt16 GetStyleFamilyMask() const { return mnStyleFamilyMask; } + sal_Bool IsStylesOnlyMode() const { return !mbLoadDoc; } + + const SvXMLTokenMap& GetDocElemTokenMap(); + const SvXMLTokenMap& GetBodyElemTokenMap(); + const SvXMLTokenMap& GetStylesElemTokenMap(); + const SvXMLTokenMap& GetMasterPageElemTokenMap(); + const SvXMLTokenMap& GetMasterPageAttrTokenMap(); + const SvXMLTokenMap& GetPageMasterAttrTokenMap(); + const SvXMLTokenMap& GetPageMasterStyleAttrTokenMap(); + const SvXMLTokenMap& GetDrawPageAttrTokenMap(); + const SvXMLTokenMap& GetDrawPageElemTokenMap(); + const SvXMLTokenMap& GetPresentationPlaceholderAttrTokenMap(); + + // export local parameters concerning page access and similar + const com::sun::star::uno::Reference< + com::sun::star::container::XNameAccess >& GetLocalDocStyleFamilies() const { return mxDocStyleFamilies; } + const com::sun::star::uno::Reference< + com::sun::star::container::XIndexAccess >& GetLocalMasterPages() const { return mxDocMasterPages; } + const com::sun::star::uno::Reference< + com::sun::star::container::XIndexAccess >& GetLocalDrawPages() const { return mxDocDrawPages; } + + sal_Int32 GetNewPageCount() const { return mnNewPageCount; } + void IncrementNewPageCount() { mnNewPageCount++; } + sal_Int32 GetNewMasterPageCount() const { return mnNewMasterPageCount; } + void IncrementNewMasterPageCount() { mnNewMasterPageCount++; } + + com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > getPageLayouts() const { return mxPageLayouts; } + + sal_Bool IsDraw() const { return mbIsDraw; } + sal_Bool IsImpress() const { return !mbIsDraw; } + + // import pool defaults. Parameter contains pool defaults read + // from input data. These data needs to be set at the model. + void ImportPoolDefaults(const XMLPropStyleContext* pPool); + + // #80365# + virtual void SetStatistics( + const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue> & i_rStats); + + sal_Bool IsPreview() const { return mbPreview; } + + // XServiceInfo ( : SvXMLExport ) + virtual ::rtl::OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException ); + + void AddHeaderDecl( const ::rtl::OUString& rName, const ::rtl::OUString& rText ); + void AddFooterDecl( const ::rtl::OUString& rName, const ::rtl::OUString& rText ); + void AddDateTimeDecl( const ::rtl::OUString& rName, const ::rtl::OUString& rText, sal_Bool bFixed, const ::rtl::OUString& rDateTimeFormat ); + + ::rtl::OUString GetHeaderDecl( const ::rtl::OUString& rName ) const; + ::rtl::OUString GetFooterDecl( const ::rtl::OUString& rName ) const; + ::rtl::OUString GetDateTimeDecl( const ::rtl::OUString& rName, sal_Bool& rbFixed, ::rtl::OUString& rDateTimeFormat ); + +}; + +#endif // _SDXMLIMP_HXX |