summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Trojahn <paul.trojahn@gmail.com>2017-07-06 13:36:58 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2017-07-14 08:51:06 +0200
commit1b08f129677c1109aae1fadc72ae68ebb7df7cb0 (patch)
treecc850b5ab558363ee0a208dbbbb0f78d0b5e035b
parent1bb0b3815a1e0ba677d6aac577fbb4c7fffee3bf (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.cxx4
-rw-r--r--oox/source/export/drawingml.cxx6
-rw-r--r--sd/qa/unit/data/pptx/tdf109067.pptxbin0 -> 20183 bytes
-rw-r--r--sd/qa/unit/import-tests.cxx13
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
new file mode 100644
index 000000000000..ef213774cbd8
--- /dev/null
+++ b/sd/qa/unit/data/pptx/tdf109067.pptx
Binary files differ
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();