diff options
author | Paul Trojahn <paul.trojahn@gmail.com> | 2017-07-06 13:36:58 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2017-07-17 22:10:09 +0200 |
commit | 30907c0bb7eb8f1f69f5527ed67fab0bba02ceeb (patch) | |
tree | b81a44a113236d9f9ee4b238d81f4575439605ca | |
parent | 21394b08475d1d869aa62c1dbb46c3dcc93ae3f0 (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: I06f6f2a00fca88ec79e2eb956c3c780f037a9d1e
Reviewed-on: https://gerrit.libreoffice.org/39973
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
-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 7d986709603b..81ab8c66396a 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 b3c4f68a2607..7c50403f85b6 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 ); } @@ -1063,7 +1063,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(); |