summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorMark Hung <marklh9@gmail.com>2018-07-15 21:04:43 +0800
committerMark Hung <marklh9@gmail.com>2018-07-19 15:10:20 +0200
commit71f7ecae6e0ef45730db4e288108cc4a3994612a (patch)
tree24bb4bc9bdabd5ca4dd1cda742e7678910c97e3a /sd
parenta6b456076f4e4f689e77cffbb661f2cae62a1502 (diff)
tdf#118783 sd:fix spin animation in saved pptx file.
The attribute name of the AnimateTransform is "Transform" but we expect "r" for "Rotate". We need to fix it so that PowerPoint recognize it. Change-Id: I47590d80d28af0a0ac92ef0892b40643f1de3643 Reviewed-on: https://gerrit.libreoffice.org/57579 Tested-by: Jenkins Reviewed-by: Mark Hung <marklh9@gmail.com>
Diffstat (limited to 'sd')
-rwxr-xr-xsd/qa/unit/data/odp/tdf118783.odpbin0 -> 11644 bytes
-rw-r--r--sd/qa/unit/export-tests-ooxml2.cxx16
-rw-r--r--sd/source/filter/eppt/pptx-epptooxml.cxx11
3 files changed, 26 insertions, 1 deletions
diff --git a/sd/qa/unit/data/odp/tdf118783.odp b/sd/qa/unit/data/odp/tdf118783.odp
new file mode 100755
index 000000000000..719db63d1d42
--- /dev/null
+++ b/sd/qa/unit/data/odp/tdf118783.odp
Binary files differ
diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx
index 49f43fe0b8ed..74129e88aecf 100644
--- a/sd/qa/unit/export-tests-ooxml2.cxx
+++ b/sd/qa/unit/export-tests-ooxml2.cxx
@@ -145,6 +145,7 @@ public:
void testTdf104792();
void testTdf90627();
void testTdf104786();
+ void testTdf118783();
void testTdf104789();
void testOpenDocumentAsReadOnly();
void testTdf118768();
@@ -214,6 +215,7 @@ public:
CPPUNIT_TEST(testTdf104792);
CPPUNIT_TEST(testTdf90627);
CPPUNIT_TEST(testTdf104786);
+ CPPUNIT_TEST(testTdf118783);
CPPUNIT_TEST(testTdf104789);
CPPUNIT_TEST(testOpenDocumentAsReadOnly);
CPPUNIT_TEST(testTdf118768);
@@ -1687,6 +1689,20 @@ void SdOOXMLExportTest2::testTdf104786()
xDocShRef->DoClose();
}
+void SdOOXMLExportTest2::testTdf118783()
+{
+ sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/odp/tdf118783.odp"), ODP);
+ utl::TempFile tempFile;
+ xDocShRef = saveAndReload(xDocShRef.get(), PPTX, &tempFile);
+ xDocShRef->DoClose();
+
+ // check that transition attribute didn't change from 'out' to 'in'
+ xmlDocPtr pXmlDocContent = parseExport(tempFile, "ppt/slides/slide1.xml");
+ OUString sAttributeName = getXPathContent(pXmlDocContent, "//p:animRot/p:cBhvr/p:attrNameLst/p:attrName");
+ CPPUNIT_ASSERT_EQUAL(OUString("r"), sAttributeName);
+ xDocShRef->DoClose();
+}
+
void SdOOXMLExportTest2::testTdf104789()
{
::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/tdf104789.pptx"), PPTX);
diff --git a/sd/source/filter/eppt/pptx-epptooxml.cxx b/sd/source/filter/eppt/pptx-epptooxml.cxx
index a1348e3e29c0..17d7c4f6835d 100644
--- a/sd/source/filter/eppt/pptx-epptooxml.cxx
+++ b/sd/source/filter/eppt/pptx-epptooxml.cxx
@@ -1298,7 +1298,16 @@ void PowerPointExport::WriteAnimationNodeAnimateInside(const FSHelperPtr& pFS, c
FSEND);
WriteAnimationNodeCommonPropsStart(pFS, rXNode, true, bMainSeqChild);
WriteAnimationTarget(pFS, rXAnimate->getTarget());
- WriteAnimationAttributeName(pFS, rXAnimate->getAttributeName());
+
+ Reference<XAnimateTransform> xTransform(rXNode, UNO_QUERY);
+
+ // The attribute name of AnimateTransform is "Transform", we have to fix it.
+ OUString sNewAttr;
+ if (xTransform.is() && xTransform->getTransformType() == AnimationTransformType::ROTATE)
+ sNewAttr = "Rotate";
+
+ WriteAnimationAttributeName(pFS, xTransform.is() ? sNewAttr : rXAnimate->getAttributeName());
+
pFS->endElementNS(XML_p, XML_cBhvr);
WriteAnimateValues(pFS, rXAnimate);
if (bWriteTo)