summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--comphelper/source/container/embeddedobjectcontainer.cxx40
-rw-r--r--include/comphelper/embeddedobjectcontainer.hxx4
2 files changed, 44 insertions, 0 deletions
diff --git a/comphelper/source/container/embeddedobjectcontainer.cxx b/comphelper/source/container/embeddedobjectcontainer.cxx
index a3cdfa4ed2c4..d296c9fa10c2 100644
--- a/comphelper/source/container/embeddedobjectcontainer.cxx
+++ b/comphelper/source/container/embeddedobjectcontainer.cxx
@@ -1206,6 +1206,46 @@ uno::Reference < io::XInputStream > EmbeddedObjectContainer::GetGraphicStream( c
return GetGraphicStream( GetEmbeddedObjectName( xObj ), pMediaType );
}
+uno::Reference < io::XInputStream > EmbeddedObjectContainer::GetObjectStream( const OUString& aName, OUString* pMediaType )
+{
+ SAL_INFO( "comphelper.container", "comphelper::EmbeddedObjectContainer::GetObjectStream( Name )" );
+
+ uno::Reference < io::XInputStream > xInputStream;
+
+ SAL_WARN_IF( aName.isEmpty(), "comphelper.container", "Retrieving stream for unknown object!" );
+ if ( !aName.isEmpty() )
+ {
+ try
+ {
+ uno::Reference < io::XStream > xStream = pImpl->mxStorage->cloneStreamElement( aName ); //get a readonly clone
+ xInputStream = xStream->getInputStream();
+ if ( pMediaType )
+ {
+ uno::Reference < beans::XPropertySet > xSet( xInputStream, uno::UNO_QUERY );
+ if ( xSet.is() )
+ {
+ uno::Any aAny = xSet->getPropertyValue("MediaType");
+ aAny >>= *pMediaType;
+ }
+ }
+ }
+ catch (const uno::Exception&)
+ {
+ }
+ }
+
+ return xInputStream;
+}
+
+uno::Reference < io::XInputStream > EmbeddedObjectContainer::GetObjectStream( const uno::Reference < embed::XEmbeddedObject >& xObj, OUString* pMediaType )
+{
+
+ SAL_INFO( "comphelper.container", "comphelper (mv76033) comphelper::EmbeddedObjectContainer::GetGraphicStream( Object )" );
+
+ // try to load it from the container storage
+ return GetObjectStream( GetEmbeddedObjectName( xObj ), pMediaType );
+}
+
bool EmbeddedObjectContainer::InsertGraphicStream( const com::sun::star::uno::Reference < com::sun::star::io::XInputStream >& rStream, const OUString& rObjectName, const OUString& rMediaType )
{
SAL_INFO( "comphelper.container", "comphelper (mv76033) comphelper::EmbeddedObjectContainer::InsertGraphicStream" );
diff --git a/include/comphelper/embeddedobjectcontainer.hxx b/include/comphelper/embeddedobjectcontainer.hxx
index 742ae4a2d56f..28be66768510 100644
--- a/include/comphelper/embeddedobjectcontainer.hxx
+++ b/include/comphelper/embeddedobjectcontainer.hxx
@@ -135,6 +135,10 @@ public:
// move an embedded object to another container (keep the persistent name)
bool MoveEmbeddedObject( const OUString& rName, EmbeddedObjectContainer& );
+ // get the stored representation for the object
+ com::sun::star::uno::Reference < com::sun::star::io::XInputStream > GetObjectStream( const ::com::sun::star::uno::Reference < ::com::sun::star::embed::XEmbeddedObject >&, OUString* pMediaType=0 );
+ com::sun::star::uno::Reference < com::sun::star::io::XInputStream > GetObjectStream( const OUString& aName, OUString* pMediaType );
+
// get the stored graphical representation for the object
com::sun::star::uno::Reference < com::sun::star::io::XInputStream > GetGraphicStream( const ::com::sun::star::uno::Reference < ::com::sun::star::embed::XEmbeddedObject >&, OUString* pMediaType=0 );