summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2018-03-15 17:17:21 +0100
committerAndras Timar <andras.timar@collabora.com>2018-03-27 13:56:59 +0200
commit16d316c912ef0ebbab30c66f2df898a407ca5c86 (patch)
tree3488a99457aa0ab1802d1886744adc0812280605 /sd
parenta21204ec1cf0b5f311f581ecce437785005d0456 (diff)
tdf#104786 Don't export empty 'to'
Change-Id: I16b573fd6455813c6be5c2f5a0f0a820360a239f Reviewed-on: https://gerrit.libreoffice.org/51359 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Szymon Kłos <szymon.klos@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/51456 Reviewed-by: Andras Timar <andras.timar@collabora.com> Tested-by: Andras Timar <andras.timar@collabora.com>
Diffstat (limited to 'sd')
-rw-r--r--sd/qa/unit/data/pptx/tdf104786.pptxbin0 -> 35818 bytes
-rw-r--r--sd/qa/unit/export-tests-ooxml2.cxx15
-rw-r--r--sd/source/filter/eppt/epptooxml.hxx2
-rw-r--r--sd/source/filter/eppt/pptx-epptooxml.cxx25
4 files changed, 33 insertions, 9 deletions
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
--- /dev/null
+++ b/sd/qa/unit/data/pptx/tdf104786.pptx
Binary files 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 )