include/oox/drawingml/shapepropertymap.hxx | 3 +++ oox/source/drawingml/fillproperties.cxx | 4 +++- oox/source/drawingml/shapepropertymap.cxx | 14 ++++++++++++++ sd/qa/unit/data/pptx/n821567.pptx |binary sd/qa/unit/import-tests.cxx | 29 +++++++++++++++++++++++++++++ svx/source/xoutdev/xattrbmp.cxx | 4 +++- 6 files changed, 52 insertions(+), 2 deletions(-)
New commits: commit e8c00c409123e1d99f71c8e6cf8d672e96fb0c91 Author: Muthu Subramanian <[email protected]> Date: Thu Mar 6 15:57:43 2014 +0530 n#821567: Add unit test case. diff --git a/sd/qa/unit/data/pptx/n821567.pptx b/sd/qa/unit/data/pptx/n821567.pptx new file mode 100644 index 0000000..9f365ad Binary files /dev/null and b/sd/qa/unit/data/pptx/n821567.pptx differ diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index 486f7f3..0f5732c 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -57,6 +57,7 @@ public: void testN828390_3(); void testN828390_4(); void testN828390_5(); + void testN821567(); void testFdo68594(); void testFdo72998(); @@ -72,6 +73,7 @@ public: CPPUNIT_TEST(testN828390_3); CPPUNIT_TEST(testN828390_4); CPPUNIT_TEST(testN828390_5); + CPPUNIT_TEST(testN821567); CPPUNIT_TEST(testFdo68594); CPPUNIT_TEST(testFdo72998); @@ -204,6 +206,33 @@ void SdFiltersTest::testN759180() } } +void SdFiltersTest::testN821567() +{ + OUString bgImage; + ::sd::DrawDocShellRef xDocShRef = loadURL( getURLFromSrc("/sd/qa/unit/data/pptx/n821567.pptx") ); + CPPUNIT_ASSERT_MESSAGE( "failed to load", xDocShRef.Is() ); + + xDocShRef = saveAndReload( xDocShRef, ODP ); + CPPUNIT_ASSERT_MESSAGE( "failed to load", xDocShRef.Is() ); + CPPUNIT_ASSERT_MESSAGE( "in destruction", !xDocShRef->IsInDestruction() ); + uno::Reference< drawing::XDrawPagesSupplier > xDoc( + xDocShRef->GetDoc()->getUnoModel(), uno::UNO_QUERY_THROW ); + CPPUNIT_ASSERT_MESSAGE( "not exactly one page", xDoc->getDrawPages()->getCount() == 1 ); + uno::Reference< drawing::XDrawPage > xPage( + xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW ); + + uno::Reference< beans::XPropertySet > xPropSet( xPage, uno::UNO_QUERY ); + uno::Any aAny = xPropSet->getPropertyValue( OUString("Background") ); + if(aAny.hasValue()) + { + uno::Reference< beans::XPropertySet > aXBackgroundPropSet; + aAny >>= aXBackgroundPropSet; + aAny = aXBackgroundPropSet->getPropertyValue( OUString("FillBitmapName")); + aAny >>= bgImage; + } + CPPUNIT_ASSERT_MESSAGE("Slide Background is not exported properly", !bgImage.isEmpty()); +} + void SdFiltersTest::testN828390() { bool bPassed = false; commit bf2ff0468e06770f9320c652a2332f7ec137d061 Author: Muthu Subramanian <[email protected]> Date: Thu Mar 6 15:53:07 2014 +0530 n#821567: Use BitmapURL only if its valid. diff --git a/svx/source/xoutdev/xattrbmp.cxx b/svx/source/xoutdev/xattrbmp.cxx index 797e089..674f8f6 100644 --- a/svx/source/xoutdev/xattrbmp.cxx +++ b/svx/source/xoutdev/xattrbmp.cxx @@ -513,7 +513,9 @@ bool XFillBitmapItem::PutValue( const ::com::sun::star::uno::Any& rVal, sal_uInt } if( bSetURL ) { - maGraphicObject = GraphicObject::CreateGraphicObjectFromURL(aURL); + GraphicObject aGraphicObject = GraphicObject::CreateGraphicObjectFromURL(aURL); + if( aGraphicObject.GetType() != GRAPHIC_NONE ) + maGraphicObject = aGraphicObject; // #121194# Prefer GraphicObject over bitmap object if both are provided if(bSetBitmap && GRAPHIC_NONE != maGraphicObject.GetType()) commit 2ec4d410de5bd98527336a9dc49abb76656373df Author: Muthu Subramanian <[email protected]> Date: Thu Mar 6 15:52:24 2014 +0530 n#821567: Import PPTX background images with table-name. Seems like using the URL directly causes ODP export to ignore the background image. Probaby ODP Export requires updation as well? diff --git a/include/oox/drawingml/shapepropertymap.hxx b/include/oox/drawingml/shapepropertymap.hxx index 29b0ba2..f451cc0 100644 --- a/include/oox/drawingml/shapepropertymap.hxx +++ b/include/oox/drawingml/shapepropertymap.hxx @@ -65,6 +65,7 @@ enum ShapePropertyId SHAPEPROP_FillBitmapRectanglePoint, SHAPEPROP_FillHatch, SHAPEPROP_ShadowXDistance, + SHAPEPROP_FillBitmapNameFromUrl, SHAPEPROP_END }; @@ -129,6 +130,8 @@ private: bool setGradientTrans( sal_Int32 nPropId, const ::com::sun::star::uno::Any& rValue ); /** Sets an explicit fill bitmap URL, or creates a named fill bitmap URL. */ bool setFillBitmapUrl( sal_Int32 nPropId, const ::com::sun::star::uno::Any& rValue ); + /** Sets an explicit fill bitmap URL and pushes the name to FillBitmapName */ + bool setFillBitmapNameFromUrl( sal_Int32 nPropId, const ::com::sun::star::uno::Any& rValue ); // not implemented, to prevent implicit conversion from enum to int ::com::sun::star::uno::Any& operator[]( ShapePropertyId ePropId ); diff --git a/oox/source/drawingml/fillproperties.cxx b/oox/source/drawingml/fillproperties.cxx index c9ec724..4eedd35 100644 --- a/oox/source/drawingml/fillproperties.cxx +++ b/oox/source/drawingml/fillproperties.cxx @@ -421,7 +421,9 @@ void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap, OUString aGraphicUrl = rGraphicHelper.createGraphicObject( xGraphic ); // push bitmap or named bitmap to property map - if( !aGraphicUrl.isEmpty() && rPropMap.setProperty( SHAPEPROP_FillBitmapUrl, aGraphicUrl ) ) + if( !aGraphicUrl.isEmpty() && rPropMap.supportsProperty( SHAPEPROP_FillBitmapNameFromUrl ) && rPropMap.setProperty( SHAPEPROP_FillBitmapNameFromUrl, aGraphicUrl ) ) + eFillStyle = FillStyle_BITMAP; + else if( !aGraphicUrl.isEmpty() && rPropMap.setProperty( SHAPEPROP_FillBitmapUrl, aGraphicUrl ) ) eFillStyle = FillStyle_BITMAP; // set other bitmap properties, if bitmap has been inserted into the map diff --git a/oox/source/drawingml/shapepropertymap.cxx b/oox/source/drawingml/shapepropertymap.cxx index f14b653..5a90875 100644 --- a/oox/source/drawingml/shapepropertymap.cxx +++ b/oox/source/drawingml/shapepropertymap.cxx @@ -48,6 +48,7 @@ static const sal_Int32 spnDefaultShapeIds[ SHAPEPROP_END + 1 ] = // one for the PROP_FillBitmapPositionOffsetX, PROP_FillBitmapPositionOffsetY, PROP_FillBitmapRectanglePoint, PROP_FillHatch, PROP_ShadowXDistance, + PROP_FillBitmapName, PROP_END_LIST }; @@ -115,6 +116,9 @@ bool ShapePropertyMap::setAnyProperty( ShapePropertyId ePropId, const Any& rValu case SHAPEPROP_FillBitmapUrl: return setFillBitmapUrl( nPropId, rValue ); + case SHAPEPROP_FillBitmapNameFromUrl: + return setFillBitmapNameFromUrl( nPropId, rValue ); + default:; // suppress compiler warnings } @@ -202,6 +206,16 @@ bool ShapePropertyMap::setFillBitmapUrl( sal_Int32 nPropId, const Any& rValue ) return false; } +bool ShapePropertyMap::setFillBitmapNameFromUrl( sal_Int32 /*nPropId*/, const Any& rValue ) +{ + if( rValue.has< OUString >() ) + { + OUString aBitmapUrlName = mrModelObjHelper.insertFillBitmapUrl( rValue.get< OUString >() ); + return !aBitmapUrlName.isEmpty() && setProperty( PROP_FillBitmapName, aBitmapUrlName ); + } + return false; +} + } // namespace drawingml _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
