summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Trojahn <paul.trojahn@gmail.com>2017-07-06 13:36:58 +0200
committerMichael Stahl <mstahl@redhat.com>2017-07-17 22:10:09 +0200
commit30907c0bb7eb8f1f69f5527ed67fab0bba02ceeb (patch)
treeb81a44a113236d9f9ee4b238d81f4575439605ca
parent21394b08475d1d869aa62c1dbb46c3dcc93ae3f0 (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.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 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
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();