[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.3' - include/oox oox/source sd/qa sd/source

Szymon Kłos szymon.klos at collabora.com
Mon Feb 12 19:28:22 UTC 2018


 include/oox/ppt/slidetransitioncontext.hxx |    1 +
 oox/source/ppt/slidetransitioncontext.cxx  |    9 ++++++++-
 sd/qa/unit/data/pptx/tdf115394-zero.pptx   |binary
 sd/qa/unit/export-tests-ooxml2.cxx         |   16 ++++++++++++++++
 sd/source/filter/eppt/pptx-epptooxml.cxx   |   10 +++++-----
 5 files changed, 30 insertions(+), 6 deletions(-)

New commits:
commit d55a5e99a6a6ca8f9cc39f49ee398906e962f213
Author: Szymon Kłos <szymon.klos at collabora.com>
Date:   Thu Feb 8 23:21:38 2018 +0100

    tdf#115394 correct transition in case of 0s
    
    Change-Id: I23d18acef0bd5db4a4ad6fc67d409e7ed5c93949
    Reviewed-on: https://gerrit.libreoffice.org/49462
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/49524
    Reviewed-by: Andras Timar <andras.timar at collabora.com>
    Tested-by: Andras Timar <andras.timar at collabora.com>

diff --git a/include/oox/ppt/slidetransitioncontext.hxx b/include/oox/ppt/slidetransitioncontext.hxx
index 4edaa3fcae9f..54b8d89ffb9b 100644
--- a/include/oox/ppt/slidetransitioncontext.hxx
+++ b/include/oox/ppt/slidetransitioncontext.hxx
@@ -47,6 +47,7 @@ namespace oox { namespace ppt {
     private:
         PropertyMap&                    maSlideProperties;
         bool                            mbHasTransition;
+        bool                            mbHasTransitionDuration;
         SlideTransition                 maTransition;
     };
 
diff --git a/oox/source/ppt/slidetransitioncontext.cxx b/oox/source/ppt/slidetransitioncontext.cxx
index bed6060d4d4a..bc2a56845b54 100644
--- a/oox/source/ppt/slidetransitioncontext.cxx
+++ b/oox/source/ppt/slidetransitioncontext.cxx
@@ -47,6 +47,7 @@ SlideTransitionContext::SlideTransitionContext( FragmentHandler2& rParent, const
 : FragmentHandler2( rParent )
 , maSlideProperties( aProperties )
 , mbHasTransition( false )
+, mbHasTransitionDuration( false )
 {
     // ST_TransitionSpeed
     maTransition.setOoxTransitionSpeed( rAttribs.getToken( XML_spd, XML_fast ) );
@@ -54,7 +55,13 @@ SlideTransitionContext::SlideTransitionContext( FragmentHandler2& rParent, const
     // p14:dur
     sal_Int32 nDurationInMs = rAttribs.getInteger( P14_TOKEN( dur ), -1 );
     if( nDurationInMs > -1 )
+    {
+        // In MSO 0 is visible as 0.01s
+        if( nDurationInMs == 0.0 )
+            nDurationInMs = 10;
         maTransition.setOoxTransitionSpeed( nDurationInMs / 1000.0 );
+        mbHasTransitionDuration = true;
+    }
 
     // TODO
     rAttribs.getBool( XML_advClick, true );
@@ -182,7 +189,7 @@ void SlideTransitionContext::onEndElement()
 {
     if( isCurrentElement(PPT_TOKEN( transition )) )
     {
-        if( mbHasTransition )
+        if( mbHasTransition || mbHasTransitionDuration )
         {
             maTransition.setSlideProperties( maSlideProperties );
             mbHasTransition = false;
diff --git a/sd/qa/unit/data/pptx/tdf115394-zero.pptx b/sd/qa/unit/data/pptx/tdf115394-zero.pptx
new file mode 100644
index 000000000000..e8fb0cfa240c
Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf115394-zero.pptx differ
diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx
index 59d1d0e7f424..80518487b96a 100644
--- a/sd/qa/unit/export-tests-ooxml2.cxx
+++ b/sd/qa/unit/export-tests-ooxml2.cxx
@@ -126,6 +126,7 @@ public:
     void testAccentColor();
     void testTdf114848();
     void testTdf115394();
+    void testTdf115394Zero();
 
     CPPUNIT_TEST_SUITE(SdOOXMLExportTest2);
 
@@ -173,6 +174,7 @@ public:
     CPPUNIT_TEST(testAccentColor);
     CPPUNIT_TEST(testTdf114848);
     CPPUNIT_TEST(testTdf115394);
+    CPPUNIT_TEST(testTdf115394Zero);
 
     CPPUNIT_TEST_SUITE_END();
 
@@ -1166,6 +1168,20 @@ void SdOOXMLExportTest2::testTdf115394()
     xDocShRef->DoClose();
 }
 
+void SdOOXMLExportTest2::testTdf115394Zero()
+{
+    sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/tdf115394-zero.pptx"), PPTX);
+    utl::TempFile tempFile;
+    xDocShRef = saveAndReload(xDocShRef.get(), PPTX, &tempFile);
+    double fTransitionDuration;
+
+    SdPage* pPage = xDocShRef->GetDoc()->GetSdPage(0, PageKind::Standard);
+    fTransitionDuration = pPage->getTransitionDuration();
+    CPPUNIT_ASSERT_EQUAL(0.01, fTransitionDuration);
+
+    xDocShRef->DoClose();
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(SdOOXMLExportTest2);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sd/source/filter/eppt/pptx-epptooxml.cxx b/sd/source/filter/eppt/pptx-epptooxml.cxx
index 07c290895970..9d6f3066b7e9 100644
--- a/sd/source/filter/eppt/pptx-epptooxml.cxx
+++ b/sd/source/filter/eppt/pptx-epptooxml.cxx
@@ -634,10 +634,6 @@ void PowerPointExport::WriteTransition( const FSHelperPtr& pFS )
         }
     }
 
-    // check if we resolved what transition to export
-    if (!nPPTTransitionType && !bOOXmlSpecificTransition)
-        return;
-
     AnimationSpeed animationSpeed = AnimationSpeed_MEDIUM;
     const char* speed = nullptr;
     sal_Int32 advanceTiming = -1;
@@ -695,7 +691,11 @@ void PowerPointExport::WriteTransition( const FSHelperPtr& pFS )
         }
     }
 
-    if( GETA( Change ) )
+    // check if we resolved what transition to export or time is set
+    if (!nPPTTransitionType && !bOOXmlSpecificTransition && !isTransitionDurationSet)
+        return;
+
+    if (GETA(Change))
         mAny >>= changeType;
 
     // 1 means automatic, 2 half automatic - not sure what it means - at least I don't see it in UI


More information about the Libreoffice-commits mailing list