sd/qa/unit/data/pptx/tdf104786.pptx |binary sd/qa/unit/export-tests-ooxml2.cxx | 15 +++++++++++++++ sd/source/filter/eppt/epptooxml.hxx | 2 +- sd/source/filter/eppt/pptx-epptooxml.cxx | 25 +++++++++++++++++-------- 4 files changed, 33 insertions(+), 9 deletions(-)
New commits: commit 16d316c912ef0ebbab30c66f2df898a407ca5c86 Author: Szymon Kłos <szymon.k...@collabora.com> Date: Thu Mar 15 17:17:21 2018 +0100 tdf#104786 Don't export empty 'to' Change-Id: I16b573fd6455813c6be5c2f5a0f0a820360a239f Reviewed-on: https://gerrit.libreoffice.org/51359 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/51456 Reviewed-by: Andras Timar <andras.ti...@collabora.com> Tested-by: Andras Timar <andras.ti...@collabora.com> diff --git a/sd/qa/unit/data/pptx/tdf104786.pptx b/sd/qa/unit/data/pptx/tdf104786.pptx new file mode 100644 index 000000000000..165b5676e400 Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf104786.pptx differ diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx index ed1076fe1f0e..16c0e55c43be 100644 --- a/sd/qa/unit/export-tests-ooxml2.cxx +++ b/sd/qa/unit/export-tests-ooxml2.cxx @@ -131,6 +131,7 @@ public: /// SmartArt animated elements void testTdf104792(); void testTdf90627(); + void testTdf104786(); CPPUNIT_TEST_SUITE(SdOOXMLExportTest2); @@ -182,6 +183,7 @@ public: CPPUNIT_TEST(testTdf115394Zero); CPPUNIT_TEST(testTdf104792); CPPUNIT_TEST(testTdf90627); + CPPUNIT_TEST(testTdf104786); CPPUNIT_TEST_SUITE_END(); @@ -1230,6 +1232,19 @@ void SdOOXMLExportTest2::testTdf90627() xDocShRef->DoClose(); } +void SdOOXMLExportTest2::testTdf104786() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/tdf104786.pptx"), PPTX); + utl::TempFile tempFile; + xDocShRef = saveAndReload(xDocShRef.get(), PPTX, &tempFile); + + xmlDocPtr pXmlDocContent = parseExport(tempFile, "ppt/slides/slide2.xml"); + // Don't export empty 'to' + assertXPath(pXmlDocContent, "/p:sld/p:timing/p:tnLst/p:par/p:cTn/p:childTnLst[1]/p:seq/p:cTn/p:childTnLst[1]/p:par[2]/p:cTn/p:childTnLst[1]/p:par/p:cTn/p:childTnLst[1]/p:par/p:cTn/p:childTnLst/p:set[2]/p:to", 0); + + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdOOXMLExportTest2); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sd/source/filter/eppt/epptooxml.hxx b/sd/source/filter/eppt/epptooxml.hxx index fb8617491936..8987fddbdb8f 100644 --- a/sd/source/filter/eppt/epptooxml.hxx +++ b/sd/source/filter/eppt/epptooxml.hxx @@ -114,7 +114,7 @@ protected: void WriteAnimationNodeEffect( const ::sax_fastparser::FSHelperPtr& pFS, const css::uno::Reference< css::animations::XAnimationNode >& rXNode, sal_Int32 nXmlNodeType, bool bMainSeqChild ); void WriteAnimationNodeCommand(const ::sax_fastparser::FSHelperPtr& pFS, const css::uno::Reference< css::animations::XAnimationNode >& rXNode, sal_Int32 nXmlNodeType, bool bMainSeqChild ); void WriteAnimationNodeCommonPropsStart( const ::sax_fastparser::FSHelperPtr& pFS, const css::uno::Reference< css::animations::XAnimationNode >& rXNode, bool bSingle, bool bMainSeqChild ); - static void WriteAnimationProperty( const ::sax_fastparser::FSHelperPtr& pFS, const css::uno::Any& rAny ); + static void WriteAnimationProperty( const ::sax_fastparser::FSHelperPtr& pFS, const css::uno::Any& rAny, sal_Int32 nToken = 0 ); void WriteAnimationTarget( const ::sax_fastparser::FSHelperPtr& pFS, const css::uno::Any& rTarget ); bool WriteComments( sal_uInt32 nPageNum ); void ImplWriteBackground( const ::sax_fastparser::FSHelperPtr& pFS, const css::uno::Reference< css::beans::XPropertySet >& aXBackgroundPropSet ); diff --git a/sd/source/filter/eppt/pptx-epptooxml.cxx b/sd/source/filter/eppt/pptx-epptooxml.cxx index ca50427f4bab..f44121b1c967 100644 --- a/sd/source/filter/eppt/pptx-epptooxml.cxx +++ b/sd/source/filter/eppt/pptx-epptooxml.cxx @@ -885,7 +885,7 @@ void PowerPointExport::WriteTransition( const FSHelperPtr& pFS ) } } -void PowerPointExport::WriteAnimationProperty( const FSHelperPtr& pFS, const Any& rAny ) +void PowerPointExport::WriteAnimationProperty(const FSHelperPtr& pFS, const Any& rAny, sal_Int32 nToken) { if( !rAny.hasValue() ) return; @@ -893,7 +893,17 @@ void PowerPointExport::WriteAnimationProperty( const FSHelperPtr& pFS, const Any sal_uInt32 nRgb; double fDouble; - switch( rAny.getValueType().getTypeClass() ) { + uno::TypeClass aClass = rAny.getValueType().getTypeClass(); + bool bWriteToken = nToken && + ( aClass == TypeClass_LONG + || aClass == TypeClass_DOUBLE + || aClass == TypeClass_STRING ); + + if (bWriteToken) + pFS->startElementNS(XML_p, XML_to, FSEND); + + switch (rAny.getValueType().getTypeClass()) + { case TypeClass_LONG: rAny >>= nRgb; pFS->singleElementNS(XML_a, XML_srgbClr, @@ -914,6 +924,9 @@ void PowerPointExport::WriteAnimationProperty( const FSHelperPtr& pFS, const Any default: break; } + + if (bWriteToken) + pFS->endElementNS(XML_p, nToken); } void PowerPointExport::WriteAnimateValues( const FSHelperPtr& pFS, const Reference< XAnimate >& rXAnimate ) @@ -959,18 +972,14 @@ void PowerPointExport::WriteAnimateTo( const FSHelperPtr& pFS, const Any& rValue SAL_INFO("sd.eppt", "to attribute name: " << USS(rAttributeName)); - pFS->startElementNS( XML_p, XML_to, FSEND ); - sal_uInt32 nColor; if (rValue >>= nColor) { // RGB color - WriteAnimationProperty(pFS, rValue); + WriteAnimationProperty(pFS, rValue, XML_to); } else - WriteAnimationProperty(pFS, AnimationExporter::convertAnimateValue(rValue, rAttributeName)); - - pFS->endElementNS( XML_p, XML_to ); + WriteAnimationProperty(pFS, AnimationExporter::convertAnimateValue(rValue, rAttributeName), XML_to); } void PowerPointExport::WriteAnimationAttributeName( const FSHelperPtr& pFS, const OUString& rAttributeName ) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits