You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by su...@apache.org on 2012/09/10 04:56:29 UTC
svn commit: r1382625 - in /incubator/ooo/trunk/main:
filter/inc/filter/msfilter/escherex.hxx filter/source/msfilter/escherex.cxx
sd/source/filter/eppt/epptso.cxx sd/source/filter/ppt/pptin.cxx
Author: sunying
Date: Mon Sep 10 02:56:28 2012
New Revision: 1382625
URL: http://svn.apache.org/viewvc?rev=1382625&view=rev
Log:
#119753# fix audio video object lost when save .ppt file
Reported by: Li Feng Wang
Patch by: Ying Sun
Review by: Jian Yuan Li
Modified:
incubator/ooo/trunk/main/filter/inc/filter/msfilter/escherex.hxx
incubator/ooo/trunk/main/filter/source/msfilter/escherex.cxx
incubator/ooo/trunk/main/sd/source/filter/eppt/epptso.cxx
incubator/ooo/trunk/main/sd/source/filter/ppt/pptin.cxx
Modified: incubator/ooo/trunk/main/filter/inc/filter/msfilter/escherex.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/filter/inc/filter/msfilter/escherex.hxx?rev=1382625&r1=1382624&r2=1382625&view=diff
==============================================================================
--- incubator/ooo/trunk/main/filter/inc/filter/msfilter/escherex.hxx (original)
+++ incubator/ooo/trunk/main/filter/inc/filter/msfilter/escherex.hxx Mon Sep 10 02:56:28 2012
@@ -1202,6 +1202,9 @@ class MSFILTER_DLLPUBLIC EscherPropertyC
sal_Bool CreateShapeProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape );
sal_Bool CreateOLEGraphicProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXOleObject );
+ sal_Bool CreateGraphicProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape,
+ const GraphicObject& rGraphicObj );
+ sal_Bool CreateMediaGraphicProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXMediaObject );
/** Creates a complex ESCHER_Prop_fillBlip containing the BLIP directly (for Excel charts). */
sal_Bool CreateEmbeddedBitmapProperties( const ::rtl::OUString& rBitmapUrl,
::com::sun::star::drawing::BitmapMode eBitmapMode );
Modified: incubator/ooo/trunk/main/filter/source/msfilter/escherex.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/filter/source/msfilter/escherex.cxx?rev=1382625&r1=1382624&r2=1382625&view=diff
==============================================================================
--- incubator/ooo/trunk/main/filter/source/msfilter/escherex.cxx (original)
+++ incubator/ooo/trunk/main/filter/source/msfilter/escherex.cxx Mon Sep 10 02:56:28 2012
@@ -24,6 +24,7 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_filter.hxx"
#include "eschesdo.hxx"
+#include <svx/svdomedia.hxx>
#include <svx/xflftrit.hxx>
#include <filter/msfilter/escherex.hxx>
#include <svx/unoapi.hxx>
@@ -1324,38 +1325,61 @@ sal_Bool EscherPropertyContainer::Create
if ( pGraphic )
{
GraphicObject aGraphicObject( *pGraphic );
- ByteString aUniqueId( aGraphicObject.GetUniqueID() );
- if ( aUniqueId.Len() )
- {
- AddOpt( ESCHER_Prop_fillType, ESCHER_FillPicture );
- uno::Reference< beans::XPropertySet > aXPropSet( rXShape, uno::UNO_QUERY );
+ bRetValue = CreateGraphicProperties( rXShape,aGraphicObject );
+ // End
+ }
+ }
+ }
+ return bRetValue;
+}
- if ( pGraphicProvider && pPicOutStrm && pShapeBoundRect && aXPropSet.is() )
- {
- ::com::sun::star::uno::Any aAny;
- ::com::sun::star::awt::Rectangle* pVisArea = NULL;
- if ( EscherPropertyValueHelper::GetPropertyValue( aAny, aXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "VisibleArea" ) ) ) )
- {
- pVisArea = new ::com::sun::star::awt::Rectangle;
- aAny >>= (*pVisArea);
- }
- Rectangle aRect( Point( 0, 0 ), pShapeBoundRect->GetSize() );
- sal_uInt32 nBlibId = pGraphicProvider->GetBlibID( *pPicOutStrm, aUniqueId, aRect, pVisArea, NULL );
- if ( nBlibId )
- {
- AddOpt( ESCHER_Prop_pib, nBlibId, sal_True );
- ImplCreateGraphicAttributes( aXPropSet, nBlibId, sal_False );
- bRetValue = sal_True;
- }
- delete pVisArea;
- }
- }
+sal_Bool EscherPropertyContainer::CreateGraphicProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape ,const GraphicObject& rGraphicObj )
+{
+ sal_Bool bRetValue = sal_False;
+ ByteString aUniqueId( rGraphicObj.GetUniqueID() );
+ if ( aUniqueId.Len() )
+ {
+ AddOpt( ESCHER_Prop_fillType, ESCHER_FillPicture );
+ uno::Reference< beans::XPropertySet > aXPropSet( rXShape, uno::UNO_QUERY );
+
+ if ( pGraphicProvider && pPicOutStrm && pShapeBoundRect && aXPropSet.is() )
+ {
+ ::com::sun::star::uno::Any aAny;
+ ::com::sun::star::awt::Rectangle* pVisArea = NULL;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, aXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "VisibleArea" ) ) ) )
+ {
+ pVisArea = new ::com::sun::star::awt::Rectangle;
+ aAny >>= (*pVisArea);
}
+ Rectangle aRect( Point( 0, 0 ), pShapeBoundRect->GetSize() );
+ sal_uInt32 nBlibId = pGraphicProvider->GetBlibID( *pPicOutStrm, aUniqueId, aRect, pVisArea, NULL );
+ if ( nBlibId )
+ {
+ AddOpt( ESCHER_Prop_pib, nBlibId, sal_True );
+ ImplCreateGraphicAttributes( aXPropSet, nBlibId, sal_False );
+ bRetValue = sal_True;
+ }
+ delete pVisArea;
}
}
return bRetValue;
}
+sal_Bool EscherPropertyContainer::CreateMediaGraphicProperties(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape )
+{
+ sal_Bool bRetValue = sal_False;
+ if ( rXShape.is() )
+ {
+ SdrObject* pSdrMedia( GetSdrObjectFromXShape( rXShape ) ); // SJ: leaving unoapi, because currently there is
+ if ( pSdrMedia && pSdrMedia->ISA( SdrMediaObj ) ) // no access to the native graphic object
+ {
+ GraphicObject aGraphicObject( ((SdrMediaObj*)pSdrMedia)->getGraphic() );
+ bRetValue = CreateGraphicProperties( rXShape, aGraphicObject );
+ }
+ }
+ return bRetValue;
+}
sal_Bool EscherPropertyContainer::ImplCreateEmbeddedBmp( const ByteString& rUniqueId )
{
Modified: incubator/ooo/trunk/main/sd/source/filter/eppt/epptso.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/sd/source/filter/eppt/epptso.cxx?rev=1382625&r1=1382624&r2=1382625&view=diff
==============================================================================
--- incubator/ooo/trunk/main/sd/source/filter/eppt/epptso.cxx (original)
+++ incubator/ooo/trunk/main/sd/source/filter/eppt/epptso.cxx Mon Sep 10 02:56:28 2012
@@ -5251,7 +5251,8 @@ void PPTWriter::ImplWritePage( const PHL
mnAngle = 0;
mpPptEscherEx->OpenContainer( ESCHER_SpContainer );
ImplCreateShape( ESCHER_ShpInst_PictureFrame, 0xa00, aSolverContainer );
-
+ if ( aPropOpt.CreateMediaGraphicProperties( mXShape ) )
+ aPropOpt.AddOpt( ESCHER_Prop_LockAgainstGrouping, 0x800080 );
::com::sun::star::uno::Any aAny;
if ( PropValue::GetPropertyValue( aAny, mXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "MediaURL" ) ), sal_True ) )
{
@@ -5302,6 +5303,18 @@ void PPTWriter::ImplWritePage( const PHL
<< (sal_uInt16)EPP_ExObjRefAtom
<< (sal_uInt32)4
<< nRefId;
+ // write EPP_InteractiveInfo container for no_action
+ *pClientData << (sal_uInt32)( ( EPP_InteractiveInfo << 16 ) | 0xf ) << (sal_uInt32)24;
+ *pClientData << (sal_uInt16)0
+ << (sal_uInt16)EPP_InteractiveInfoAtom
+ << (sal_uInt32)16
+ << (sal_uInt32) 0
+ << (sal_uInt32) 0
+ << (sal_uInt8) 6
+ << (sal_uInt8) 0
+ << (sal_uInt8) 0
+ << (sal_uInt8) 0
+ << (sal_uInt32) 0;
}
}
}
Modified: incubator/ooo/trunk/main/sd/source/filter/ppt/pptin.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/sd/source/filter/ppt/pptin.cxx?rev=1382625&r1=1382624&r2=1382625&view=diff
==============================================================================
--- incubator/ooo/trunk/main/sd/source/filter/ppt/pptin.cxx (original)
+++ incubator/ooo/trunk/main/sd/source/filter/ppt/pptin.cxx Mon Sep 10 02:56:28 2012
@@ -2051,6 +2051,8 @@ String ImplSdPPTImport::ReadMedia( sal_u
if( ::utl::LocalFileHelper::ConvertPhysicalNameToURL( aStr, aRetVal ) )
{
aRetVal = INetURLObject( aRetVal ).GetMainURL( INetURLObject::DECODE_UNAMBIGUOUS );
+ }else{
+ aRetVal = aStr;
}
}
}