Index: source/model/main/ChartModel.cxx =================================================================== RCS file: /cvs/graphics/chart2/source/model/main/ChartModel.cxx,v retrieving revision 1.6.4.75 diff -c -r1.6.4.75 ChartModel.cxx *** source/model/main/ChartModel.cxx 23 Feb 2007 15:56:00 -0000 1.6.4.75 --- source/model/main/ChartModel.cxx 16 Mar 2007 09:54:01 -0000 *************** *** 115,120 **** --- 115,122 ---- { const OUString lcl_aGDIMetaFileMIMEType( RTL_CONSTASCII_USTRINGPARAM("application/x-openoffice-gdimetafile;windows_formatname=\"GDIMetaFile\"")); + const OUString lcl_aGDIMetaFileMIMETypeHighContrast( + RTL_CONSTASCII_USTRINGPARAM("application/x-openoffice-highcontrast-gdimetafile;windows_formatname=\"GDIMetaFile\"")); Reference< chart2::data::XDataProvider > lcl_getDataProviderFromParent( const Reference< frame::XModel > & xParent ) *************** *** 1097,1103 **** uno::Any aData( xTransferable->getTransferData( aDataFlavor ) ); aData >>= aMetafile; } ! aResult.Flavor.MimeType = lcl_aGDIMetaFileMIMEType; aResult.Flavor.DataType = getCppuType( &aMetafile ); --- 1099,1105 ---- uno::Any aData( xTransferable->getTransferData( aDataFlavor ) ); aData >>= aMetafile; } ! aResult.Flavor.MimeType = lcl_aGDIMetaFileMIMEType; aResult.Flavor.DataType = getCppuType( &aMetafile ); *************** *** 1119,1124 **** --- 1121,1186 ---- "No aspects other than content are supported" ); return embed::EmbedMapUnits::ONE_100TH_MM; } + + // ____ datatransfer::XTransferable ____ + uno::Any SAL_CALL ChartModel::getTransferData( const datatransfer::DataFlavor& aFlavor ) + throw (datatransfer::UnsupportedFlavorException, + io::IOException, + uno::RuntimeException) + { + uno::Any aResult; + if( this->isDataFlavorSupported( aFlavor )) + { + try + { + //get view from old api wrapper + Reference< datatransfer::XTransferable > xTransferable( + this->createInstance( CHART_VIEW_SERVICE_NAME ), uno::UNO_QUERY ); + if( xTransferable.is() && + xTransferable->isDataFlavorSupported( aFlavor )) + { + aResult = xTransferable->getTransferData( aFlavor ); + } + } + catch( uno::Exception & ex ) + { + ASSERT_EXCEPTION( ex ); + } + } + else + { + throw datatransfer::UnsupportedFlavorException( + aFlavor.MimeType, static_cast< ::cppu::OWeakObject* >( this )); + } + + return aResult; + } + + Sequence< datatransfer::DataFlavor > SAL_CALL ChartModel::getTransferDataFlavors() + throw (uno::RuntimeException) + { + uno::Sequence< datatransfer::DataFlavor > aRet(1); + + // aRet[0] = datatransfer::DataFlavor( lcl_aGDIMetaFileMIMEType, + // C2U( "GDIMetaFile" ), + // ::getCppuType( (const uno::Sequence< sal_Int8 >*) NULL ) ); + aRet[0] = datatransfer::DataFlavor( lcl_aGDIMetaFileMIMETypeHighContrast, + C2U( "GDIMetaFile" ), + ::getCppuType( (const uno::Sequence< sal_Int8 >*) NULL ) ); + + return aRet; + } + + ::sal_Bool SAL_CALL ChartModel::isDataFlavorSupported( const datatransfer::DataFlavor& aFlavor ) + throw (uno::RuntimeException) + { + // return ( aFlavor.MimeType.equals(lcl_aGDIMetaFileMIMEType) || + // aFlavor.MimeType.equals(lcl_aGDIMetaFileMIMETypeHighContrast) ); + return aFlavor.MimeType.equals(lcl_aGDIMetaFileMIMETypeHighContrast); + } + + + namespace { enum eServiceType Index: source/model/main/ChartModel.hxx =================================================================== RCS file: /cvs/graphics/chart2/source/model/main/ChartModel.hxx,v retrieving revision 1.4.4.30 diff -c -r1.4.4.30 ChartModel.hxx *** source/model/main/ChartModel.hxx 22 Feb 2007 17:02:32 -0000 1.4.4.30 --- source/model/main/ChartModel.hxx 16 Mar 2007 09:54:01 -0000 *************** *** 120,129 **** #ifndef _COM_SUN_STAR_EMBED_XSTORAGE_HPP_ #include #endif ! #if ! defined(INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_16) ! #define INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_16 ! #define COMPHELPER_IMPLBASE_INTERFACE_NUMBER 16 #include "comphelper/implbase_var.hxx" #endif --- 120,132 ---- #ifndef _COM_SUN_STAR_EMBED_XSTORAGE_HPP_ #include #endif + #ifndef _COM_SUN_STAR_DATATRANSFER_XTRANSFERABLE_HPP_ + #include + #endif ! #if ! defined(INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_17) ! #define INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_17 ! #define COMPHELPER_IMPLBASE_INTERFACE_NUMBER 17 #include "comphelper/implbase_var.hxx" #endif *************** *** 154,160 **** class ImplChartModel; // Note: needed for queryInterface (if it calls the base-class implementation) ! typedef ::comphelper::WeakImplHelper16< // ::com::sun::star::frame::XModel //comprehends XComponent (required interface), base of XChartDocument ::com::sun::star::util::XCloseable //comprehends XCloseBroadcaster ,::com::sun::star::frame::XStorable2 //(extension of XStorable) --- 157,163 ---- class ImplChartModel; // Note: needed for queryInterface (if it calls the base-class implementation) ! typedef ::comphelper::WeakImplHelper17< // ::com::sun::star::frame::XModel //comprehends XComponent (required interface), base of XChartDocument ::com::sun::star::util::XCloseable //comprehends XCloseBroadcaster ,::com::sun::star::frame::XStorable2 //(extension of XStorable) *************** *** 183,188 **** --- 186,192 ---- ,::com::sun::star::util::XNumberFormatsSupplier ,::com::sun::star::container::XChild ,::com::sun::star::util::XModifyListener + ,::com::sun::star::datatransfer::XTransferable > ChartModel_Base; } *************** *** 437,442 **** --- 441,458 ---- // ____ XEventListener (base of XModifyListener) ____ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) + throw (::com::sun::star::uno::RuntimeException); + + // ____ datatransferable::XTransferable ____ + virtual ::com::sun::star::uno::Any SAL_CALL getTransferData( + const ::com::sun::star::datatransfer::DataFlavor& aFlavor ) + throw (::com::sun::star::datatransfer::UnsupportedFlavorException, + ::com::sun::star::io::IOException, + ::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::com::sun::star::datatransfer::DataFlavor > SAL_CALL getTransferDataFlavors() + throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL isDataFlavorSupported( + const ::com::sun::star::datatransfer::DataFlavor& aFlavor ) throw (::com::sun::star::uno::RuntimeException); //----------------------------------------------------------------- Index: source/view/main/ChartView.cxx =================================================================== RCS file: /cvs/graphics/chart2/source/view/main/ChartView.cxx,v retrieving revision 1.32.4.90 diff -c -r1.32.4.90 ChartView.cxx *** source/view/main/ChartView.cxx 26 Feb 2007 14:35:17 -0000 1.32.4.90 --- source/view/main/ChartView.cxx 16 Mar 2007 09:54:02 -0000 *************** *** 271,279 **** { const rtl::OUString lcl_aGDIMetaFileMIMEType( RTL_CONSTASCII_USTRINGPARAM("application/x-openoffice-gdimetafile;windows_formatname=\"GDIMetaFile\"")); } // anonymous namespace ! void ChartView::getMetaFile( const uno::Reference< io::XOutputStream >& xOutStream ) { if( !m_xDrawPage.is() ) return; --- 271,282 ---- { const rtl::OUString lcl_aGDIMetaFileMIMEType( RTL_CONSTASCII_USTRINGPARAM("application/x-openoffice-gdimetafile;windows_formatname=\"GDIMetaFile\"")); + const rtl::OUString lcl_aGDIMetaFileMIMETypeHighContrast( + RTL_CONSTASCII_USTRINGPARAM("application/x-openoffice-highcontrast-gdimetafile;windows_formatname=\"GDIMetaFile\"")); } // anonymous namespace ! void ChartView::getMetaFile( const uno::Reference< io::XOutputStream >& xOutStream ! , bool bUseHighContrast ) { if( !m_xDrawPage.is() ) return; *************** *** 297,312 **** aProps[1].Name = C2U("OutputStream"); aProps[1].Value <<= xOutStream; ! uno::Sequence< beans::PropertyValue > aFilterData(3); aFilterData[0].Name = C2U("ExportOnlyBackground"); aFilterData[0].Value <<= sal_False; ! aFilterData[1].Name = C2U("Version"); const sal_Int32 nVersion = SOFFICE_FILEFORMAT_50; ! aFilterData[1].Value <<= nVersion; ! aFilterData[2].Name = C2U("CurrentPage"); ! aFilterData[2].Value <<= uno::Reference< uno::XInterface >( m_xDrawPage, uno::UNO_QUERY ); aProps[2].Name = C2U("FilterData"); aProps[2].Value <<= aFilterData; --- 300,317 ---- aProps[1].Name = C2U("OutputStream"); aProps[1].Value <<= xOutStream; ! uno::Sequence< beans::PropertyValue > aFilterData(4); aFilterData[0].Name = C2U("ExportOnlyBackground"); aFilterData[0].Value <<= sal_False; + aFilterData[1].Name = C2U("HighContrast"); + aFilterData[1].Value <<= bUseHighContrast; ! aFilterData[2].Name = C2U("Version"); const sal_Int32 nVersion = SOFFICE_FILEFORMAT_50; ! aFilterData[2].Value <<= nVersion; ! aFilterData[3].Name = C2U("CurrentPage"); ! aFilterData[3].Value <<= uno::Reference< uno::XInterface >( m_xDrawPage, uno::UNO_QUERY ); aProps[2].Name = C2U("FilterData"); aProps[2].Value <<= aFilterData; *************** *** 325,332 **** uno::Any SAL_CALL ChartView::getTransferData( const datatransfer::DataFlavor& aFlavor ) throw (datatransfer::UnsupportedFlavorException, io::IOException, uno::RuntimeException) { uno::Any aRet; ! if( !aFlavor.MimeType.equals(lcl_aGDIMetaFileMIMEType) ) return aRet; impl_updateView(); --- 330,338 ---- uno::Any SAL_CALL ChartView::getTransferData( const datatransfer::DataFlavor& aFlavor ) throw (datatransfer::UnsupportedFlavorException, io::IOException, uno::RuntimeException) { + bool bHighContrastMetaFile( aFlavor.MimeType.equals(lcl_aGDIMetaFileMIMETypeHighContrast)); uno::Any aRet; ! if( ! (bHighContrastMetaFile || aFlavor.MimeType.equals(lcl_aGDIMetaFileMIMEType)) ) return aRet; impl_updateView(); *************** *** 340,346 **** if( xOutStream.is() ) { ! this->getMetaFile( xOutStream ); if( xInStream.is() && xSeekable.is() ) { --- 346,352 ---- if( xOutStream.is() ) { ! this->getMetaFile( xOutStream, bHighContrastMetaFile ); if( xInStream.is() && xSeekable.is() ) { *************** *** 358,377 **** uno::Sequence< datatransfer::DataFlavor > SAL_CALL ChartView::getTransferDataFlavors() throw (uno::RuntimeException) { ! uno::Sequence< datatransfer::DataFlavor > aRet(1); aRet[0] = datatransfer::DataFlavor( lcl_aGDIMetaFileMIMEType, C2U( "GDIMetaFile" ), ::getCppuType( (const uno::Sequence< sal_Int8 >*) NULL ) ); return aRet; } ::sal_Bool SAL_CALL ChartView::isDataFlavorSupported( const datatransfer::DataFlavor& aFlavor ) throw (uno::RuntimeException) { ! if( aFlavor.MimeType.equals(lcl_aGDIMetaFileMIMEType) ) ! return sal_True; ! return sal_False; } //----------------------------------------------------------------- --- 364,385 ---- uno::Sequence< datatransfer::DataFlavor > SAL_CALL ChartView::getTransferDataFlavors() throw (uno::RuntimeException) { ! uno::Sequence< datatransfer::DataFlavor > aRet(2); aRet[0] = datatransfer::DataFlavor( lcl_aGDIMetaFileMIMEType, C2U( "GDIMetaFile" ), ::getCppuType( (const uno::Sequence< sal_Int8 >*) NULL ) ); + aRet[1] = datatransfer::DataFlavor( lcl_aGDIMetaFileMIMETypeHighContrast, + C2U( "GDIMetaFile" ), + ::getCppuType( (const uno::Sequence< sal_Int8 >*) NULL ) ); return aRet; } ::sal_Bool SAL_CALL ChartView::isDataFlavorSupported( const datatransfer::DataFlavor& aFlavor ) throw (uno::RuntimeException) { ! return ( aFlavor.MimeType.equals(lcl_aGDIMetaFileMIMEType) || ! aFlavor.MimeType.equals(lcl_aGDIMetaFileMIMETypeHighContrast) ); } //----------------------------------------------------------------- Index: source/view/main/ChartView.hxx =================================================================== RCS file: /cvs/graphics/chart2/source/view/main/Attic/ChartView.hxx,v retrieving revision 1.1.2.8 diff -c -r1.1.2.8 ChartView.hxx *** source/view/main/ChartView.hxx 9 Nov 2006 15:23:46 -0000 1.1.2.8 --- source/view/main/ChartView.hxx 16 Mar 2007 09:54:02 -0000 *************** *** 204,210 **** ChartView(); void createShapes(); ! void getMetaFile( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >& xOutStream ); SdrPage* getSdrPage(); void impl_setChartModel( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& xChartModel ); --- 204,211 ---- ChartView(); void createShapes(); ! void getMetaFile( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >& xOutStream ! , bool bUseHighContrast ); SdrPage* getSdrPage(); void impl_setChartModel( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& xChartModel );