diff options
author | Paul Trojahn <paul.trojahn@gmail.com> | 2017-07-06 13:36:58 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-07-14 08:51:06 +0200 |
commit | 1b08f129677c1109aae1fadc72ae68ebb7df7cb0 (patch) | |
tree | cc850b5ab558363ee0a208dbbbb0f78d0b5e035b | |
parent | 1bb0b3815a1e0ba677d6aac577fbb4c7fffee3bf (diff) |
tdf#109067 Fix default value of rotWithShape
According to the OOXML standard the default value is true, so for
the export of gradients and blips it has to be set explicitly to
false.
Change-Id: I3c9f67787cb11d6d9b58f07377b03167df669ed8
Reviewed-on: https://gerrit.libreoffice.org/39725
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r-- | oox/source/drawingml/fillproperties.cxx | 4 | ||||
-rw-r--r-- | oox/source/export/drawingml.cxx | 6 | ||||
-rw-r--r-- | sd/qa/unit/data/pptx/tdf109067.pptx | bin | 0 -> 20183 bytes | |||
-rw-r--r-- | sd/qa/unit/import-tests.cxx | 13 |
4 files changed, 18 insertions, 5 deletions
diff --git a/oox/source/drawingml/fillproperties.cxx b/oox/source/drawingml/fillproperties.cxx index 314ff5822695..41ab6ae222bc 100644 --- a/oox/source/drawingml/fillproperties.cxx +++ b/oox/source/drawingml/fillproperties.cxx @@ -362,8 +362,8 @@ void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap, if ( bFlipV ) nShapeRotation = -nShapeRotation; - // "rotate with shape" not set, or set to false -> do not rotate - if ( !maGradientProps.moRotateWithShape.get( false ) ) + // "rotate with shape" set to false -> do not rotate + if ( !maGradientProps.moRotateWithShape.get( true ) ) nShapeRotation = 0; if( maGradientProps.moGradientPath.has() ) diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index ddb91babb7c5..ee151225f122 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -386,14 +386,14 @@ void DrawingML::WriteGradientFill( const Reference< XPropertySet >& rXPropSet ) // If we have no gradient stops that means original gradient were defined by a theme. if( aGradientStops.hasElements() ) { - mpFS->startElementNS( XML_a, XML_gradFill, FSEND ); + mpFS->startElementNS( XML_a, XML_gradFill, XML_rotWithShape, "0", FSEND ); WriteGrabBagGradientFill(aGradientStops, aGradient); mpFS->endElementNS( XML_a, XML_gradFill ); } } else { - mpFS->startElementNS( XML_a, XML_gradFill, FSEND ); + mpFS->startElementNS( XML_a, XML_gradFill, XML_rotWithShape, "0", FSEND ); WriteGradientFill(aGradient); mpFS->endElementNS( XML_a, XML_gradFill ); } @@ -1053,7 +1053,7 @@ void DrawingML::WriteBlipFill( const Reference< XPropertySet >& rXPropSet, const { SAL_INFO("oox.shape", "URL: " << sBitmapURL); - mpFS->startElementNS( nXmlNamespace , XML_blipFill, FSEND ); + mpFS->startElementNS( nXmlNamespace , XML_blipFill, XML_rotWithShape, "0", FSEND ); WriteBlip( rXPropSet, sBitmapURL, bRelPathToMedia ); diff --git a/sd/qa/unit/data/pptx/tdf109067.pptx b/sd/qa/unit/data/pptx/tdf109067.pptx Binary files differnew file mode 100644 index 000000000000..ef213774cbd8 --- /dev/null +++ b/sd/qa/unit/data/pptx/tdf109067.pptx diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index a4d8253399a6..b71b4aec4e8e 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -161,6 +161,7 @@ public: void testTdf100926(); void testTdf89064(); void testTdf108925(); + void testTdf109067(); bool checkPattern(sd::DrawDocShellRef& rDocRef, int nShapeNumber, std::vector<sal_uInt8>& rExpected); void testPatternImport(); @@ -230,6 +231,7 @@ public: CPPUNIT_TEST(testPatternImport); CPPUNIT_TEST(testTdf89064); CPPUNIT_TEST(testTdf108925); + CPPUNIT_TEST(testTdf109067); CPPUNIT_TEST_SUITE_END(); }; @@ -2206,6 +2208,17 @@ void SdImportTest::testTdf108925() xDocShRef->DoClose(); } +void SdImportTest::testTdf109067() +{ + sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/tdf109067.pptx"), PPTX); + uno::Reference< beans::XPropertySet > xShape(getShapeFromPage(0, 0, xDocShRef), uno::UNO_QUERY_THROW); + awt::Gradient gradient; + CPPUNIT_ASSERT(xShape->getPropertyValue("FillGradient") >>= gradient); + CPPUNIT_ASSERT_EQUAL(sal_Int16(450), gradient.Angle); + + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest); CPPUNIT_PLUGIN_IMPLEMENT(); |