diff options
Diffstat (limited to 'oox/inc/oox/core')
-rw-r--r-- | oox/inc/oox/core/binarycodec.hxx | 1 | ||||
-rw-r--r-- | oox/inc/oox/core/binaryfilterbase.hxx | 4 | ||||
-rw-r--r-- | oox/inc/oox/core/contexthandler.hxx | 13 | ||||
-rw-r--r-- | oox/inc/oox/core/contexthandler2.hxx | 145 | ||||
-rwxr-xr-x | oox/inc/oox/core/fastparser.hxx | 93 | ||||
-rw-r--r-- | oox/inc/oox/core/fasttokenhandler.hxx | 14 | ||||
-rw-r--r-- | oox/inc/oox/core/filterbase.hxx | 46 | ||||
-rw-r--r-- | oox/inc/oox/core/filterdetect.hxx | 11 | ||||
-rw-r--r-- | oox/inc/oox/core/fragmenthandler.hxx | 1 | ||||
-rw-r--r-- | oox/inc/oox/core/fragmenthandler2.hxx | 14 | ||||
-rw-r--r-- | oox/inc/oox/core/recordparser.hxx | 2 | ||||
-rwxr-xr-x[-rw-r--r--] | oox/inc/oox/core/relations.hxx | 14 | ||||
-rw-r--r-- | oox/inc/oox/core/relationshandler.hxx | 1 | ||||
-rw-r--r-- | oox/inc/oox/core/xmlfilterbase.hxx | 24 |
14 files changed, 264 insertions, 119 deletions
diff --git a/oox/inc/oox/core/binarycodec.hxx b/oox/inc/oox/core/binarycodec.hxx index ce57e190f088..ced63250f3e1 100644 --- a/oox/inc/oox/core/binarycodec.hxx +++ b/oox/inc/oox/core/binarycodec.hxx @@ -319,4 +319,3 @@ private: } // namespace oox #endif - diff --git a/oox/inc/oox/core/binaryfilterbase.hxx b/oox/inc/oox/core/binaryfilterbase.hxx index bf249cdfab9b..4cd9cd1db62f 100644 --- a/oox/inc/oox/core/binaryfilterbase.hxx +++ b/oox/inc/oox/core/binaryfilterbase.hxx @@ -40,7 +40,8 @@ class BinaryFilterBase : public FilterBase { public: explicit BinaryFilterBase( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rxGlobalFactory ); + const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext ) + throw( ::com::sun::star::uno::RuntimeException ); virtual ~BinaryFilterBase(); @@ -59,4 +60,3 @@ typedef ::rtl::Reference< BinaryFilterBase > BinaryFilterRef; } // namespace oox #endif - diff --git a/oox/inc/oox/core/contexthandler.hxx b/oox/inc/oox/core/contexthandler.hxx index dd9ac686ff46..b1f24d051c70 100644 --- a/oox/inc/oox/core/contexthandler.hxx +++ b/oox/inc/oox/core/contexthandler.hxx @@ -28,16 +28,18 @@ #ifndef OOX_CORE_CONTEXTHANDLER_HXX #define OOX_CORE_CONTEXTHANDLER_HXX +#include <com/sun/star/xml/sax/XFastContextHandler.hpp> #include <boost/shared_ptr.hpp> -#include <rtl/ref.hxx> #include <cppuhelper/implbase1.hxx> -#include <com/sun/star/xml/sax/XFastContextHandler.hpp> +#include <rtl/ref.hxx> +#include "oox/token/namespaces.hxx" +#include "oox/token/tokens.hxx" namespace com { namespace sun { namespace star { namespace xml { namespace sax { class XLocator; } } } } } -namespace oox { class RecordInputStream; } +namespace oox { class SequenceInputStream; } namespace oox { namespace core { @@ -91,8 +93,8 @@ public: // record context interface ----------------------------------------------- - virtual ContextHandlerRef createRecordContext( sal_Int32 nRecId, RecordInputStream& rStrm ); - virtual void startRecord( sal_Int32 nRecId, RecordInputStream& rStrm ); + virtual ContextHandlerRef createRecordContext( sal_Int32 nRecId, SequenceInputStream& rStrm ); + virtual void startRecord( sal_Int32 nRecId, SequenceInputStream& rStrm ); virtual void endRecord( sal_Int32 nRecId ); protected: @@ -114,4 +116,3 @@ private: } // namespace oox #endif - diff --git a/oox/inc/oox/core/contexthandler2.hxx b/oox/inc/oox/core/contexthandler2.hxx index 48f11c962e38..0c9ac794e94b 100644 --- a/oox/inc/oox/core/contexthandler2.hxx +++ b/oox/inc/oox/core/contexthandler2.hxx @@ -30,39 +30,43 @@ #include <vector> #include <boost/shared_ptr.hpp> -#include "tokens.hxx" #include "oox/helper/attributelist.hxx" -#include "oox/helper/recordinputstream.hxx" +#include "oox/helper/binaryinputstream.hxx" #include "oox/core/contexthandler.hxx" -#include "oox/core/namespaces.hxx" namespace oox { namespace core { // ============================================================================ -struct ContextInfo; +const sal_Int32 XML_ROOT_CONTEXT = SAL_MAX_INT32; -/** Helper class that provides a context identifier stack. +// ============================================================================ + +struct ElementInfo; + +/** Helper class that provides a context stack. Fragment handlers and context handlers derived from this helper class will - track the identifiers of the current context in a stack. The idea is to use - the same instance of a fragment handler or context handler to process + track the identifiers of the visited elements in a stack. The idea is to + use the same instance of a fragment handler or context handler to process several nested elements in an XML stream. For that, the abstract function - onCreateContext() has to return 'true' for the passed element. + onCreateContext() has to return 'this' for the passed element. Derived classes have to implement the createFastChildContext(), startFastElement(), characters(), and endFastElement() functions from the com.sun.star.xml.sax.XFastContextHandler interface by simply forwarding - them to the respective implCreateChildContext(), implStartCurrentContext(), - implCharacters(), and implEndCurrentContext() functions of this helper. The - new abstract functions have to be implemented according to the elements to - be processed. + them to the respective implCreateChildContext(), implStartElement(), + implCharacters(), and implEndElement() functions of this helper. This is + implemented already in the classes ContextHandler2 and FragmentHandler2. + The new abstract functions have to be implemented according to the elements + to be processed. Similarly, for binary import, derived classes have to forward the createRecordContext(), startRecord(), and endRecord() functions from the ContextHandler class to the implCreateRecordContext(), implStartRecord(), - and implEndRecord() functions of this helper. + and implEndRecord() functions of this helper. Again, this is implemented + already in the classes ContextHandler2 and FragmentHandler2. */ class ContextHandler2Helper { @@ -71,78 +75,97 @@ public: explicit ContextHandler2Helper( const ContextHandler2Helper& rParent ); virtual ~ContextHandler2Helper(); + // allow instances to be stored in ::rtl::Reference virtual void SAL_CALL acquire() throw() = 0; virtual void SAL_CALL release() throw() = 0; - virtual ContextHandler& queryContextHandler() = 0; - // interface -------------------------------------------------------------- - /** Will be called if a new context can be created for the passed element. + /** Will be called to create a context handler for the passed element. - Usually 'true' should be returned to improve performance by reusing the + Usually 'this' can be returned to improve performance by reusing the same instance to process several elements. Used by OOXML import only. */ virtual ContextHandlerRef onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) = 0; - /** Will be called if a new context element has been started. + /** Will be called when a new element has been started. + + This function is called at the context handler returned from + onCreateContext(), or, for root elements of an XML stream, at the + fragment handler itself. - The current element identifier can be accessed by using - getCurrentContext() or isCurrentContext(). Used by OOXML import only. + The current element identifier can be accessed with getCurrentElement() + or isCurrentElement(). Used by OOXML import only. */ virtual void onStartElement( const AttributeList& rAttribs ) = 0; - /** Will be called if the current context element is about to be left. + /** Will be called before a new child element starts, or if the current + element is about to be left. - The current element identifier can be accessed by using - getCurrentContext() or isCurrentContext(). Used by OOXML import only. + This helper function collects all text fragments received by the + characters() function (such as encoded characters which are passed in + separate calls to the characters() function), and passes the + concatenated and trimmed string. - @param rChars The characters collected in this element. + The current element identifier can be accessed with getCurrentElement() + or isCurrentElement(). Used by OOXML import only. */ - virtual void onEndElement( const ::rtl::OUString& rChars ) = 0; + virtual void onCharacters( const ::rtl::OUString& rChars ) = 0; - /** Will be called if a new context can be created for the passed element. + /** Will be called when the current element is about to be left. - Usually 'true' should be returned to improve performance by reusing the - same instance to process several elements. Used by OOBIN import only. + The current element identifier can be accessed with getCurrentElement() + or isCurrentElement(). Used by OOXML import only. */ - virtual ContextHandlerRef onCreateRecordContext( sal_Int32 nRecId, RecordInputStream& rStrm ) = 0; + virtual void onEndElement() = 0; - /** Will be called if a new record in a binary stream has been started. + /** Will be called to create a context handler for the passed record. - The current record identifier can be accessed by using - getCurrentContext() or isCurrentContext(). Used by OOBIN import only. + Usually 'this' can be returned to improve performance by reusing the + same instance to process several records. Used by BIFF import only. */ - virtual void onStartRecord( RecordInputStream& rStrm ) = 0; + virtual ContextHandlerRef onCreateRecordContext( sal_Int32 nRecId, SequenceInputStream& rStrm ) = 0; - /** Will be called if the current context record is about to be left. + /** Will be called when a new record block in a binary stream has been + started. - The current record identifier can be accessed by using - getCurrentContext() or isCurrentContext(). Used by OOBIN import only. + The current record identifier can be accessed with getCurrentElement() + or isCurrentElement(). Used by BIFF import only. + */ + virtual void onStartRecord( SequenceInputStream& rStrm ) = 0; + + /** Will be called when the current record block is about to be left. + + The current record identifier can be accessed with getCurrentElement() + or isCurrentElement(). Used by BIFF import only. */ virtual void onEndRecord() = 0; // helpers ---------------------------------------------------------------- - /** Returns the element identifier of the current topmost context. */ + /** Returns the identifier of the currently processed element. */ sal_Int32 getCurrentElement() const; - /** Returns true, if nElement contains the current topmost context. */ + /** Returns true, if nElement contains the identifier of the currently + processed element. */ inline bool isCurrentElement( sal_Int32 nElement ) const { return getCurrentElement() == nElement; } - /** Returns true, if either nElement1 or nElement2 contain the current topmost context. */ + /** Returns true, if either nElement1 or nElement2 contain the identifier + of the currently processed element. */ inline bool isCurrentElement( sal_Int32 nElement1, sal_Int32 nElement2 ) const { return isCurrentElement( nElement1 ) || isCurrentElement( nElement2 ); } - /** Returns the element identifier of the specified parent context. */ - sal_Int32 getPreviousElement( sal_Int32 nCountBack = 1 ) const; + /** Returns the identifier of the specified parent element. */ + sal_Int32 getParentElement( sal_Int32 nCountBack = 1 ) const; - /** Returns the element identifier of the specified parent context. */ - inline sal_Int32 isPreviousElement( sal_Int32 nElement, sal_Int32 nCountBack = 1 ) const - { return getPreviousElement( nCountBack ) == nElement; } + /** Returns true, if nElement contains the identifier of the specified + parent element. */ + inline sal_Int32 isParentElement( sal_Int32 nElement, sal_Int32 nCountBack = 1 ) const + { return getParentElement( nCountBack ) == nElement; } - /** Returns true, if the current element is the root element. */ + /** Returns true, if the element currently processed is the root element of + the context or fragment handler. */ bool isRootElement() const; // implementation --------------------------------------------------------- @@ -155,7 +178,7 @@ protected: const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& rxAttribs ); /** Must be called from startFastElement() in derived classes. */ - void implStartCurrentContext( + void implStartElement( sal_Int32 nElement, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& rxAttribs ); @@ -163,13 +186,13 @@ protected: void implCharacters( const ::rtl::OUString& rChars ); /** Must be called from endFastElement() in derived classes. */ - void implEndCurrentContext( sal_Int32 nElement ); + void implEndElement( sal_Int32 nElement ); /** Must be called from createRecordContext() in derived classes. */ - ContextHandlerRef implCreateRecordContext( sal_Int32 nRecId, RecordInputStream& rStrm ); + ContextHandlerRef implCreateRecordContext( sal_Int32 nRecId, SequenceInputStream& rStrm ); /** Must be called from startRecord() in derived classes. */ - void implStartRecord( sal_Int32 nRecId, RecordInputStream& rStrm ); + void implStartRecord( sal_Int32 nRecId, SequenceInputStream& rStrm ); /** Must be called from endRecord() in derived classes. */ void implEndRecord( sal_Int32 nRecId ); @@ -177,15 +200,15 @@ protected: private: ContextHandler2Helper& operator=( const ContextHandler2Helper& ); - ContextInfo& pushContextInfo( sal_Int32 nElement ); - void popContextInfo(); - void appendCollectedChars(); + ElementInfo& pushElementInfo( sal_Int32 nElement ); + void popElementInfo(); + void processCollectedChars(); private: - typedef ::std::vector< ContextInfo > ContextStack; + typedef ::std::vector< ElementInfo > ContextStack; typedef ::boost::shared_ptr< ContextStack > ContextStackRef; - ContextStackRef mxContextStack; /// Stack of processed contexts. + ContextStackRef mxContextStack; /// Stack of all processed elements. size_t mnRootStackSize; /// Stack size on construction time. bool mbEnableTrimSpace; /// True = trim whitespace in characters(). }; @@ -202,8 +225,6 @@ public: virtual void SAL_CALL acquire() throw() { ContextHandler::acquire(); } virtual void SAL_CALL release() throw() { ContextHandler::release(); } - virtual ContextHandler& queryContextHandler(); - // com.sun.star.xml.sax.XFastContextHandler interface --------------------- virtual ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastContextHandler > SAL_CALL @@ -229,18 +250,19 @@ public: // oox.core.ContextHandler interface -------------------------------------- - virtual ContextHandlerRef createRecordContext( sal_Int32 nRecId, RecordInputStream& rStrm ); - virtual void startRecord( sal_Int32 nRecId, RecordInputStream& rStrm ); + virtual ContextHandlerRef createRecordContext( sal_Int32 nRecId, SequenceInputStream& rStrm ); + virtual void startRecord( sal_Int32 nRecId, SequenceInputStream& rStrm ); virtual void endRecord( sal_Int32 nRecId ); // oox.core.ContextHandler2Helper interface ------------------------------- virtual ContextHandlerRef onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ); virtual void onStartElement( const AttributeList& rAttribs ); - virtual void onEndElement( const ::rtl::OUString& rChars ); + virtual void onCharacters( const ::rtl::OUString& rChars ); + virtual void onEndElement(); - virtual ContextHandlerRef onCreateRecordContext( sal_Int32 nRecId, RecordInputStream& rStrm ); - virtual void onStartRecord( RecordInputStream& rStrm ); + virtual ContextHandlerRef onCreateRecordContext( sal_Int32 nRecId, SequenceInputStream& rStrm ); + virtual void onStartRecord( SequenceInputStream& rStrm ); virtual void onEndRecord(); }; @@ -250,4 +272,3 @@ public: } // namespace oox #endif - diff --git a/oox/inc/oox/core/fastparser.hxx b/oox/inc/oox/core/fastparser.hxx new file mode 100755 index 000000000000..967c42474dcc --- /dev/null +++ b/oox/inc/oox/core/fastparser.hxx @@ -0,0 +1,93 @@ +/************************************************************************* + * + * 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 OOX_CORE_FASTPARSER_HXX +#define OOX_CORE_FASTPARSER_HXX + +#include <com/sun/star/uno/XComponentContext.hpp> +#include <com/sun/star/xml/sax/XFastParser.hpp> + +namespace oox { + struct NamespaceMap; + class StorageBase; +} + +namespace oox { +namespace core { + +// ============================================================================ + +/** Wrapper for a fast SAX parser that works on automatically generated OOXML + token and namespace identifiers. + */ +class FastParser +{ +public: + explicit FastParser( + const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext ) + throw( ::com::sun::star::uno::RuntimeException ); + + virtual ~FastParser(); + + /** Registers an OOXML namespace at the parser. */ + void registerNamespace( sal_Int32 nNamespaceId ) + throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException ); + + /** Sets the passed document handler that will receive the SAX parser events. */ + void setDocumentHandler( + const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastDocumentHandler >& rxDocHandler ) + throw( ::com::sun::star::uno::RuntimeException ); + + /** Parses the passed SAX input source. + @param bCloseStream True = closes the stream in the input source after parsing. */ + void parseStream( const ::com::sun::star::xml::sax::InputSource& rInputSource, bool bCloseStream = false ) + throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException ); + + /** Parses the passed input stream. + @param bCloseStream True = closes the passed stream after parsing. */ + void parseStream( + const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& rxInStream, + const ::rtl::OUString& rStreamName, bool bCloseStream = false ) + throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException ); + + /** Parses a stream from the passed storage with the specified name. + @param bCloseStream True = closes the stream after parsing. */ + void parseStream( StorageBase& rStorage, const ::rtl::OUString& rStreamName, bool bCloseStream = false ) + throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException ); + +private: + ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastParser > + mxParser; + const NamespaceMap& mrNamespaceMap; +}; + +// ============================================================================ + +} // namespace core +} // namespace oox + +#endif diff --git a/oox/inc/oox/core/fasttokenhandler.hxx b/oox/inc/oox/core/fasttokenhandler.hxx index 84baccabdc67..a6c73de9842b 100644 --- a/oox/inc/oox/core/fasttokenhandler.hxx +++ b/oox/inc/oox/core/fasttokenhandler.hxx @@ -28,8 +28,9 @@ #ifndef OOX_CORE_FASTTOKENHANDLER_HXX #define OOX_CORE_FASTTOKENHANDLER_HXX +#include <com/sun/star/lang/XServiceInfo.hpp> #include <com/sun/star/xml/sax/XFastTokenHandler.hpp> -#include <cppuhelper/implbase1.hxx> +#include <cppuhelper/implbase2.hxx> namespace oox { class TokenMap; } @@ -38,15 +39,23 @@ namespace core { // ============================================================================ +typedef ::cppu::WeakImplHelper2< ::com::sun::star::lang::XServiceInfo, ::com::sun::star::xml::sax::XFastTokenHandler > FastTokenHandlerBase; + /** Wrapper implementing the com.sun.star.xml.sax.XFastTokenHandler API interface that provides access to the tokens generated from the internal token name list. */ -class FastTokenHandler : public ::cppu::WeakImplHelper1< ::com::sun::star::xml::sax::XFastTokenHandler > +class FastTokenHandler : public FastTokenHandlerBase { public: explicit FastTokenHandler(); virtual ~FastTokenHandler(); + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& rServiceName ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException); + + // XFastTokenHandler virtual sal_Int32 SAL_CALL getToken( const ::rtl::OUString& rIdentifier ) throw (::com::sun::star::uno::RuntimeException); virtual ::rtl::OUString SAL_CALL getIdentifier( sal_Int32 nToken ) throw (::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getUTF8Identifier( sal_Int32 nToken ) throw (::com::sun::star::uno::RuntimeException); @@ -62,4 +71,3 @@ private: } // namespace oox #endif - diff --git a/oox/inc/oox/core/filterbase.hxx b/oox/inc/oox/core/filterbase.hxx index 9d9b8dcca515..80dc233491d4 100644 --- a/oox/inc/oox/core/filterbase.hxx +++ b/oox/inc/oox/core/filterbase.hxx @@ -29,15 +29,15 @@ #define OOX_CORE_FILTERBASE_HXX #include <memory> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/lang/XInitialization.hpp> #include <com/sun/star/beans/NamedValue.hpp> -#include <com/sun/star/document/XImporter.hpp> #include <com/sun/star/document/XExporter.hpp> #include <com/sun/star/document/XFilter.hpp> +#include <com/sun/star/document/XImporter.hpp> #include <com/sun/star/io/XInputStream.hpp> #include <com/sun/star/io/XOutputStream.hpp> #include <com/sun/star/io/XStream.hpp> +#include <com/sun/star/lang/XInitialization.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> #include <cppuhelper/basemutex.hxx> #include <cppuhelper/implbase5.hxx> #include "oox/helper/binarystreambase.hxx" @@ -45,16 +45,18 @@ #include "oox/dllapi.h" namespace com { namespace sun { namespace star { - namespace lang { class XMultiServiceFactory; } namespace awt { struct DeviceInfo; } - namespace frame { class XModel; } - namespace task { class XStatusIndicator; } - namespace task { class XInteractionHandler; } namespace frame { class XFrame; } + namespace frame { class XModel; } + namespace graphic { class XGraphic; } namespace io { class XInputStream; } namespace io { class XOutputStream; } namespace io { class XStream; } - namespace graphic { class XGraphic; } + namespace lang { class XMultiComponentFactory; } + namespace lang { class XMultiServiceFactory; } + namespace task { class XInteractionHandler; } + namespace task { class XStatusIndicator; } + namespace uno { class XComponentContext; } } } } namespace comphelper { @@ -69,6 +71,7 @@ namespace oox { namespace oox { namespace ole { class OleObjectHelper; + class VbaProject; } } namespace oox { @@ -90,7 +93,8 @@ class OOX_DLLPUBLIC FilterBase : public FilterBaseBase, public ::cppu::BaseMutex { public: explicit FilterBase( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rxGlobalFactory ); + const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext ) + throw( ::com::sun::star::uno::RuntimeException ); virtual ~FilterBase(); @@ -110,9 +114,17 @@ public: /** Returns the specified argument passed through the XInitialization interface. */ ::com::sun::star::uno::Any getArgument( const ::rtl::OUString& rArgName ) const; - /** Returns the global service factory passed in the filter constructor (always existing). */ + /** Returns the component context passed in the filter constructor (always existing). */ + const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& + getComponentContext() const; + + /** Returns the component service factory (always existing). */ + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiComponentFactory >& + getComponentFactory() const; + + /** Returns the multi service factory of the component (always existing). */ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& - getGlobalFactory() const; + getServiceFactory() const; /** Returns the document model (always existing). */ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& @@ -122,7 +134,7 @@ public: const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& getModelFactory() const; - /** Returns the frame that will contain the document model. */ + /** Returns the frame that will contain the document model (may be null). */ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& getTargetFrame() const; @@ -195,9 +207,13 @@ public: /** Returns a helper for the handling of OLE obejcts. */ ::oox::ole::OleObjectHelper& getOleObjectHelper() const; + /** Returns the VBA project manager. */ + ::oox::ole::VbaProject& getVbaProject() const; + /** Requests the encryption data from the media descriptor or from the user. On success, the encryption data will be inserted into the media descriptor. */ - ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue > requestEncryptionData( ::comphelper::IDocPasswordVerifier& rVerifier ) const; + ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue > + requestEncryptionData( ::comphelper::IDocPasswordVerifier& rVerifier ) const; /** Imports the raw binary data from the specified stream. @return True, if the data could be imported from the stream. */ @@ -272,6 +288,9 @@ private: resolving palette colors. */ virtual GraphicHelper* implCreateGraphicHelper() const; + /** Derived classes create a VBA project manager object. */ + virtual ::oox::ole::VbaProject* implCreateVbaProject() const = 0; + virtual ::rtl::OUString implGetImplementationName() const = 0; virtual StorageRef implCreateStorage( @@ -289,4 +308,3 @@ private: } // namespace oox #endif - diff --git a/oox/inc/oox/core/filterdetect.hxx b/oox/inc/oox/core/filterdetect.hxx index 76e46050c24a..7eb283f5056b 100644 --- a/oox/inc/oox/core/filterdetect.hxx +++ b/oox/inc/oox/core/filterdetect.hxx @@ -38,6 +38,7 @@ namespace com { namespace sun { namespace star { namespace io { class XInputStream; } + namespace uno { class XComponentContext; } } } } namespace comphelper { class MediaDescriptor; } @@ -96,7 +97,8 @@ private: class OOX_DLLPUBLIC FilterDetect : public ::cppu::WeakImplHelper2< ::com::sun::star::document::XExtendedFilterDetection, ::com::sun::star::lang::XServiceInfo > { public: - explicit FilterDetect( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rxFactory ); + explicit FilterDetect( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext ) + throw( ::com::sun::star::uno::RuntimeException ); virtual ~FilterDetect(); /** Tries to extract an unencrypted ZIP package from the passed media @@ -149,12 +151,12 @@ public: interface of the temporary file will be stored in the 'ComponentData' property of the passed media descriptor. */ - virtual ::rtl::OUString SAL_CALL detect( - ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rMediaDescSeq ) + virtual ::rtl::OUString SAL_CALL + detect( ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rMediaDescSeq ) throw( ::com::sun::star::uno::RuntimeException ); private: - ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxFactory; + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > mxContext; }; // ============================================================================ @@ -163,4 +165,3 @@ private: } // namespace oox #endif - diff --git a/oox/inc/oox/core/fragmenthandler.hxx b/oox/inc/oox/core/fragmenthandler.hxx index 26d2ac540a7a..ba3164a74da8 100644 --- a/oox/inc/oox/core/fragmenthandler.hxx +++ b/oox/inc/oox/core/fragmenthandler.hxx @@ -134,4 +134,3 @@ typedef ::rtl::Reference< FragmentHandler > FragmentHandlerRef; } // namespace oox #endif - diff --git a/oox/inc/oox/core/fragmenthandler2.hxx b/oox/inc/oox/core/fragmenthandler2.hxx index 9b864260b853..51408005ecdd 100644 --- a/oox/inc/oox/core/fragmenthandler2.hxx +++ b/oox/inc/oox/core/fragmenthandler2.hxx @@ -49,8 +49,6 @@ public: virtual void SAL_CALL acquire() throw() { FragmentHandler::acquire(); } virtual void SAL_CALL release() throw() { FragmentHandler::release(); } - virtual ContextHandler& queryContextHandler(); - // com.sun.star.xml.sax.XFastContextHandler interface --------------------- virtual ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastContextHandler > SAL_CALL @@ -86,18 +84,19 @@ public: // oox.core.ContextHandler interface -------------------------------------- - virtual ContextHandlerRef createRecordContext( sal_Int32 nRecId, RecordInputStream& rStrm ); - virtual void startRecord( sal_Int32 nRecId, RecordInputStream& rStrm ); + virtual ContextHandlerRef createRecordContext( sal_Int32 nRecId, SequenceInputStream& rStrm ); + virtual void startRecord( sal_Int32 nRecId, SequenceInputStream& rStrm ); virtual void endRecord( sal_Int32 nRecId ); // oox.core.ContextHandler2Helper interface ------------------------------- virtual ContextHandlerRef onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ); virtual void onStartElement( const AttributeList& rAttribs ); - virtual void onEndElement( const ::rtl::OUString& rChars ); + virtual void onCharacters( const ::rtl::OUString& rChars ); + virtual void onEndElement(); - virtual ContextHandlerRef onCreateRecordContext( sal_Int32 nRecId, RecordInputStream& rStrm ); - virtual void onStartRecord( RecordInputStream& rStrm ); + virtual ContextHandlerRef onCreateRecordContext( sal_Int32 nRecId, SequenceInputStream& rStrm ); + virtual void onStartRecord( SequenceInputStream& rStrm ); virtual void onEndRecord(); // oox.core.FragmentHandler2 interface ------------------------------------ @@ -112,4 +111,3 @@ public: } // namespace oox #endif - diff --git a/oox/inc/oox/core/recordparser.hxx b/oox/inc/oox/core/recordparser.hxx index e499195c52f8..4600be3ff832 100644 --- a/oox/inc/oox/core/recordparser.hxx +++ b/oox/inc/oox/core/recordparser.hxx @@ -29,7 +29,6 @@ #define OOX_CORE_RECORDPARSER_HXX #include <map> -#include <com/sun/star/uno/Reference.hxx> #include <com/sun/star/io/IOException.hpp> #include <com/sun/star/xml/sax/SAXException.hpp> #include <rtl/ref.hxx> @@ -95,4 +94,3 @@ private: } // namespace oox #endif - diff --git a/oox/inc/oox/core/relations.hxx b/oox/inc/oox/core/relations.hxx index 4ca8ca3899e7..285c4ed947e4 100644..100755 --- a/oox/inc/oox/core/relations.hxx +++ b/oox/inc/oox/core/relations.hxx @@ -35,14 +35,21 @@ namespace oox { namespace core { -/** Expands to an OUString containing an officeDocument relation type created +// ============================================================================ + +/** Expands to an OUString containing an 'officeDocument' relation type created from the passed literal(!) ASCII(!) character array. */ -#define CREATE_OFFICEDOC_RELATIONSTYPE( ascii ) \ +#define CREATE_OFFICEDOC_RELATION_TYPE( ascii ) \ CREATE_OUSTRING( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/" ascii ) +/** Expands to an OUString containing a 'package' relation type created from + the passed literal(!) ASCII(!) character array. */ +#define CREATE_PACKAGE_RELATION_TYPE( ascii ) \ + CREATE_OUSTRING( "http://schemas.openxmlformats.org/package/2006/relationships/" ascii ) + /** Expands to an OUString containing an MS Office specific relation type created from the passed literal(!) ASCII(!) character array. */ -#define CREATE_MSOFFICE_RELATIONSTYPE( ascii ) \ +#define CREATE_MSOFFICE_RELATION_TYPE( ascii ) \ CREATE_OUSTRING( "http://schemas.microsoft.com/office/2006/relationships/" ascii ) // ============================================================================ @@ -99,4 +106,3 @@ private: } // namespace oox #endif // OOX_CORE_RELATIONS - diff --git a/oox/inc/oox/core/relationshandler.hxx b/oox/inc/oox/core/relationshandler.hxx index 3211888ecc9f..b2da8d59c39f 100644 --- a/oox/inc/oox/core/relationshandler.hxx +++ b/oox/inc/oox/core/relationshandler.hxx @@ -58,4 +58,3 @@ private: } // namespace oox #endif // OOX_CORE_RELATIONSHANDLER - diff --git a/oox/inc/oox/core/xmlfilterbase.hxx b/oox/inc/oox/core/xmlfilterbase.hxx index 30efeb0e9440..11d2d488c8b6 100644 --- a/oox/inc/oox/core/xmlfilterbase.hxx +++ b/oox/inc/oox/core/xmlfilterbase.hxx @@ -28,16 +28,16 @@ #ifndef OOX_CORE_XMLFILTERBASE_HXX #define OOX_CORE_XMLFILTERBASE_HXX +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XTextCursor.hpp> +#include <com/sun/star/text/XTextField.hpp> #include <rtl/ref.hxx> #include <rtl/string.hxx> #include <rtl/ustring.hxx> -#include "oox/drawingml/table/tablestylelist.hxx" #include "oox/core/filterbase.hxx" #include "oox/core/relations.hxx" -#include <oox/dllapi.h> -#include <com/sun/star/text/XTextField.hpp> -#include <com/sun/star/text/XTextCursor.hpp> -#include <com/sun/star/text/XText.hpp> +#include "oox/drawingml/table/tablestylelist.hxx" +#include "oox/dllapi.h" namespace com { namespace sun { namespace star { namespace container { class XNameContainer; } @@ -46,9 +46,11 @@ namespace com { namespace sun { namespace star { namespace xml { namespace sax { class XFastDocumentHandler; } } } } } -namespace oox { namespace drawingml { class Theme; } } -namespace oox { namespace drawingml { namespace chart { class ChartConverter; } } } -namespace oox { namespace vml { class Drawing; } } +namespace oox { + namespace drawingml { class Theme; } + namespace drawingml { namespace chart { class ChartConverter; } } + namespace vml { class Drawing; } +} namespace sax_fastparser { class FastSerializerHelper; @@ -61,6 +63,8 @@ namespace core { class FragmentHandler; +// ============================================================================ + struct TextField { com::sun::star::uno::Reference< com::sun::star::text::XText > xText; com::sun::star::uno::Reference< com::sun::star::text::XTextCursor > xTextCursor; @@ -76,7 +80,8 @@ class OOX_DLLPUBLIC XmlFilterBase : public FilterBase { public: explicit XmlFilterBase( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rxGlobalFactory ); + const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext ) + throw( ::com::sun::star::uno::RuntimeException ); virtual ~XmlFilterBase(); @@ -222,4 +227,3 @@ typedef ::rtl::Reference< XmlFilterBase > XmlFilterRef; } // namespace oox #endif - |