diff options
author | Michael Brauer <mib@openoffice.org> | 2001-01-26 10:22:09 +0000 |
---|---|---|
committer | Michael Brauer <mib@openoffice.org> | 2001-01-26 10:22:09 +0000 |
commit | 2bddc3350950d0713d3cfaa03807557c82928ab0 (patch) | |
tree | e2967db7e5a9c0904479ae738ebdc516e9f083ec /svx/inc | |
parent | 69374b149f5aadcd796c4aa66fa1d3b5936ffa0c (diff) |
ole objects XML helper
Diffstat (limited to 'svx/inc')
-rw-r--r-- | svx/inc/xmleohlp.hxx | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/svx/inc/xmleohlp.hxx b/svx/inc/xmleohlp.hxx new file mode 100644 index 000000000000..d55b9cffee55 --- /dev/null +++ b/svx/inc/xmleohlp.hxx @@ -0,0 +1,173 @@ +/************************************************************************* + * + * $RCSfile: xmleohlp.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: mib $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _XMLEOHLP_HXX +#define _XMLEOHLP_HXX + +#ifndef _CPPUHELPER_COMPBASE1_HXX_ +#include <cppuhelper/compbase1.hxx> +#endif +#ifndef _OSL_MUTEX_HXX_ +#include <osl/mutex.hxx> +#endif +#ifndef _SVSTOR_HXX +#include <so3/svstor.hxx> +#endif +#ifndef __SGI_STL_VECTOR +#include <stl/vector> +#endif + +#ifndef _COM_SUN_STAR_DOCUMENT_XEMBEDDEDOBJECTRESOLVER_HPP_ +#include <com/sun/star/document/XEmbeddedObjectResolver.hpp> +#endif + +// ----------------------------- +// - SvXMLEmbeddedObjectHelper - +// ----------------------------- + +enum SvXMLEmbeddedObjectHelperMode +{ + EMBEDDEDOBJECTHELPER_MODE_READ = 0, + EMBEDDEDOBJECTHELPER_MODE_WRITE = 1 +}; + +// ----------------------------- +// - SvXMLEmbeddedObjectHelper - +// ----------------------------- + +class SvPersist; +class SvGlobalName; + +class SvXMLEmbeddedObjectHelper : public ::cppu::WeakComponentImplHelper1< ::com::sun::star::document::XEmbeddedObjectResolver > +{ +private: + + typedef ::_STL::vector< ::rtl::OUString > URLVector; + + ::osl::Mutex maMutex; + + const ::rtl::OUString maDefaultContainerStorageName; + ::rtl::OUString maCurContainerStorageName; + + URLVector maEmbeddedObjectURLs; + + SvStorage* mpRootStorage; // package + SvPersist* mpDocPersist; + SvStorageRef mxContainerStorage; // container sub package for + // objects + SvGlobalName** mpGlobalNameMap; + + + SvXMLEmbeddedObjectHelperMode meCreateMode; + void* mpDummy1; + void* mpDummy2; + BOOL mbDirect : 1; + + sal_Bool ImplGetStorageNames( + const ::rtl::OUString& rURLStr, + ::rtl::OUString& rContainerStorageName, + ::rtl::OUString& rObjectStorageName, + sal_Bool bInternalToExternal ) const; + sal_uInt16 ImplGetFlags( + const SvGlobalName& rClassId ) const; + SvStorageRef ImplGetContainerStorage( + const ::rtl::OUString& rStorageName ); + SvStorageRef ImplGetObjectStorage( + const ::rtl::OUString& rContainerStorageName, + const ::rtl::OUString& rObjectStorageName, + sal_Bool bUCBStorage ); + String ImplGetUniqueName( SvStorage* pStg, + const sal_Char* p ) const; + sal_Bool ImplReadObject( + const ::rtl::OUString& rContainerStorageName, + const ::rtl::OUString& rObjName, + const SvGlobalName *pClassId ); + sal_Bool ImplWriteObject( + const ::rtl::OUString& rContainerStorageName, + const ::rtl::OUString& rObjName ); + ::rtl::OUString ImplInsertEmbeddedObjectURL( + const ::rtl::OUString& rURLStr ); + +protected: + + SvXMLEmbeddedObjectHelper(); + ~SvXMLEmbeddedObjectHelper(); + void Init( SvStorage& rRootStorage, + SvPersist& rDocPersist, + SvXMLEmbeddedObjectHelperMode eCreateMode, + sal_Bool bDirect ); + +public: + + static SvXMLEmbeddedObjectHelper* Create( + SvStorage& rRootStorage, + SvPersist& rDocPersist, + SvXMLEmbeddedObjectHelperMode eCreateMode, + sal_Bool bDirect = sal_True ); + static void Destroy( SvXMLEmbeddedObjectHelper* pSvXMLEmbeddedObjectHelper ); + + void Flush(); + + // XEmbeddedObjectResolver + virtual ::rtl::OUString SAL_CALL resolveEmbeddedObjectURL( const ::rtl::OUString& aURL ) throw(::com::sun::star::uno::RuntimeException); +}; + +#endif |