summaryrefslogtreecommitdiff
path: root/svx/inc
diff options
context:
space:
mode:
authorMichael Brauer <mib@openoffice.org>2001-01-26 10:22:09 +0000
committerMichael Brauer <mib@openoffice.org>2001-01-26 10:22:09 +0000
commit2bddc3350950d0713d3cfaa03807557c82928ab0 (patch)
treee2967db7e5a9c0904479ae738ebdc516e9f083ec /svx/inc
parent69374b149f5aadcd796c4aa66fa1d3b5936ffa0c (diff)
ole objects XML helper
Diffstat (limited to 'svx/inc')
-rw-r--r--svx/inc/xmleohlp.hxx173
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