summaryrefslogtreecommitdiff
path: root/embeddedobj/source/msole/olecomponent.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'embeddedobj/source/msole/olecomponent.cxx')
-rw-r--r--embeddedobj/source/msole/olecomponent.cxx37
1 files changed, 17 insertions, 20 deletions
diff --git a/embeddedobj/source/msole/olecomponent.cxx b/embeddedobj/source/msole/olecomponent.cxx
index 4402c94e097f..c5c0368f7bf8 100644
--- a/embeddedobj/source/msole/olecomponent.cxx
+++ b/embeddedobj/source/msole/olecomponent.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: olecomponent.cxx,v $
- * $Revision: 1.42 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -37,10 +34,9 @@
#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/io/XTruncate.hpp>
-
+#include <com/sun/star/awt/XRequestCallback.hpp>
#include <platform.h>
-
#include <cppuhelper/interfacecontainer.h>
#include <comphelper/mimeconfighelper.hxx>
#include <comphelper/storagehelper.hxx>
@@ -194,43 +190,36 @@ struct OleComponentNative_Impl {
ComSmart< IStorage > m_pIStorage;
FormatEtcList m_aFormatsList;
uno::Sequence< datatransfer::DataFlavor > m_aSupportedGraphFormats;
- uno::Sequence< ::rtl::OUString > m_aGraphShortFormats; //short names for formats from previous sequence
OleComponentNative_Impl()
{
// TODO: Extend format list
m_aSupportedGraphFormats.realloc( 5 );
- m_aGraphShortFormats.realloc( 5 );
m_aSupportedGraphFormats[0] = datatransfer::DataFlavor(
::rtl::OUString::createFromAscii( "application/x-openoffice-emf;windows_formatname=\"Image EMF\"" ),
::rtl::OUString::createFromAscii( "Windows Enhanced Metafile" ),
getCppuType( (const uno::Sequence< sal_Int8 >*) 0 ) );
- m_aGraphShortFormats[0] = ::rtl::OUString::createFromAscii( "EMF" );
m_aSupportedGraphFormats[1] = datatransfer::DataFlavor(
::rtl::OUString::createFromAscii( "application/x-openoffice-wmf;windows_formatname=\"Image WMF\"" ),
::rtl::OUString::createFromAscii( "Windows Metafile" ),
getCppuType( (const uno::Sequence< sal_Int8 >*) 0 ) );
- m_aGraphShortFormats[1] = ::rtl::OUString::createFromAscii( "WMF" );
m_aSupportedGraphFormats[2] = datatransfer::DataFlavor(
::rtl::OUString::createFromAscii( "application/x-openoffice-bitmap;windows_formatname=\"Bitmap\"" ),
::rtl::OUString::createFromAscii( "Bitmap" ),
getCppuType( (const uno::Sequence< sal_Int8 >*) 0 ) );
- m_aGraphShortFormats[2] = ::rtl::OUString::createFromAscii( "BMP" );
m_aSupportedGraphFormats[3] = datatransfer::DataFlavor(
::rtl::OUString::createFromAscii( "image/png" ),
::rtl::OUString::createFromAscii( "PNG" ),
getCppuType( (const uno::Sequence< sal_Int8 >*) 0 ) );
- m_aGraphShortFormats[3] = ::rtl::OUString::createFromAscii( "PNG" );
m_aSupportedGraphFormats[0] = datatransfer::DataFlavor(
::rtl::OUString::createFromAscii( "application/x-openoffice-gdimetafile;windows_formatname=\"GDIMetaFile\"" ),
::rtl::OUString::createFromAscii( "GDIMetafile" ),
getCppuType( (const uno::Sequence< sal_Int8 >*) 0 ) );
- m_aGraphShortFormats[0] = ::rtl::OUString::createFromAscii( "SVM" );
}
void AddSupportedFormat( const FORMATETC& aFormatEtc );
@@ -307,9 +296,11 @@ sal_Bool OleComponentNative_Impl::ConvertDataForFlavor( const STGMEDIUM& aMedium
unsigned char* pBuf = NULL;
sal_uInt32 nBufSize = 0;
+ ::rtl::OUString aFormat;
if ( aMedium.tymed == TYMED_MFPICT ) // Win Metafile
{
+ aFormat = ::rtl::OUString::createFromAscii("image/x-wmf");
METAFILEPICT* pMF = ( METAFILEPICT* )GlobalLock( aMedium.hMetaFilePict );
if ( pMF )
{
@@ -340,6 +331,7 @@ sal_Bool OleComponentNative_Impl::ConvertDataForFlavor( const STGMEDIUM& aMedium
}
else if ( aMedium.tymed == TYMED_ENHMF ) // Enh Metafile
{
+ aFormat = ::rtl::OUString::createFromAscii("image/x-emf");
nBufSize = GetEnhMetaFileBits( aMedium.hEnhMetaFile, 0, NULL );
pBuf = new unsigned char[nBufSize];
if ( nBufSize && nBufSize == GetEnhMetaFileBits( aMedium.hEnhMetaFile, nBufSize, pBuf ) )
@@ -353,6 +345,7 @@ sal_Bool OleComponentNative_Impl::ConvertDataForFlavor( const STGMEDIUM& aMedium
}
else if ( aMedium.tymed == TYMED_GDI ) // Bitmap
{
+ aFormat = ::rtl::OUString::createFromAscii("image/x-MS-bmp");
nBufSize = GetBitmapBits( aMedium.hBitmap, 0, NULL );
pBuf = new unsigned char[nBufSize];
if ( nBufSize && nBufSize == sal::static_int_cast< ULONG >( GetBitmapBits( aMedium.hBitmap, nBufSize, pBuf ) ) )
@@ -372,7 +365,7 @@ sal_Bool OleComponentNative_Impl::ConvertDataForFlavor( const STGMEDIUM& aMedium
&& aFlavor.DataType == m_aSupportedGraphFormats[nInd].DataType
&& aFlavor.DataType == getCppuType( (const uno::Sequence< sal_Int8 >*) 0 ) )
{
- bAnyIsReady = ConvertBufferToFormat( ( void* )pBuf, nBufSize, m_aGraphShortFormats[nInd], aResult );
+ bAnyIsReady = ConvertBufferToFormat( ( void* )pBuf, nBufSize, aFormat, aResult );
break;
}
}
@@ -1424,9 +1417,11 @@ void OleComponent::OnViewChange_Impl( sal_uInt32 dwAspect )
if ( xLockObject.is() )
{
- // the request will be deleted immedeatelly after execution by it's implementation
- MainThreadNotificationRequest* pMTNotifRequest = new MainThreadNotificationRequest( xLockObject, OLECOMP_ONVIEWCHANGE, dwAspect );
- MainThreadNotificationRequest::mainThreadWorkerStart( pMTNotifRequest );
+ uno::Reference < awt::XRequestCallback > xRequestCallback(
+ m_xFactory->createInstance(
+ ::rtl::OUString::createFromAscii("com.sun.star.awt.AsyncCallback") ),
+ uno::UNO_QUERY );
+ xRequestCallback->addCallback( new MainThreadNotificationRequest( xLockObject, OLECOMP_ONVIEWCHANGE, dwAspect ), uno::Any() );
}
}
@@ -1443,9 +1438,11 @@ void OleComponent::OnClose_Impl()
if ( xLockObject.is() )
{
- // the request will be deleted immedeatelly after execution by it's implementation
- MainThreadNotificationRequest* pMTNotifRequest = new MainThreadNotificationRequest( xLockObject, OLECOMP_ONCLOSE );
- MainThreadNotificationRequest::mainThreadWorkerStart( pMTNotifRequest );
+ uno::Reference < awt::XRequestCallback > xRequestCallback(
+ m_xFactory->createInstance(
+ ::rtl::OUString::createFromAscii("com.sun.star.awt.AsyncCallback") ),
+ uno::UNO_QUERY );
+ xRequestCallback->addCallback( new MainThreadNotificationRequest( xLockObject, OLECOMP_ONCLOSE ), uno::Any() );
}
}