Kaydet (Commit) df835773 authored tarafından Szymon Kłos's avatar Szymon Kłos

tdf#115394 correct transition in case of 0s

Change-Id: I23d18acef0bd5db4a4ad6fc67d409e7ed5c93949
Reviewed-on: https://gerrit.libreoffice.org/49462Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarSzymon Kłos <szymon.klos@collabora.com>
üst 2a705725
...@@ -47,6 +47,7 @@ namespace oox { namespace ppt { ...@@ -47,6 +47,7 @@ namespace oox { namespace ppt {
private: private:
PropertyMap& maSlideProperties; PropertyMap& maSlideProperties;
bool mbHasTransition; bool mbHasTransition;
bool mbHasTransitionDuration;
SlideTransition maTransition; SlideTransition maTransition;
}; };
......
...@@ -47,6 +47,7 @@ SlideTransitionContext::SlideTransitionContext( FragmentHandler2 const & rParent ...@@ -47,6 +47,7 @@ SlideTransitionContext::SlideTransitionContext( FragmentHandler2 const & rParent
: FragmentHandler2( rParent ) : FragmentHandler2( rParent )
, maSlideProperties( aProperties ) , maSlideProperties( aProperties )
, mbHasTransition( false ) , mbHasTransition( false )
, mbHasTransitionDuration( false )
{ {
// ST_TransitionSpeed // ST_TransitionSpeed
maTransition.setOoxTransitionSpeed( rAttribs.getToken( XML_spd, XML_fast ) ); maTransition.setOoxTransitionSpeed( rAttribs.getToken( XML_spd, XML_fast ) );
...@@ -54,7 +55,13 @@ SlideTransitionContext::SlideTransitionContext( FragmentHandler2 const & rParent ...@@ -54,7 +55,13 @@ SlideTransitionContext::SlideTransitionContext( FragmentHandler2 const & rParent
// p14:dur // p14:dur
sal_Int32 nDurationInMs = rAttribs.getInteger( P14_TOKEN( dur ), -1 ); sal_Int32 nDurationInMs = rAttribs.getInteger( P14_TOKEN( dur ), -1 );
if( nDurationInMs > -1 ) if( nDurationInMs > -1 )
{
// In MSO 0 is visible as 0.01s
if( nDurationInMs == 0.0 )
nDurationInMs = 10;
maTransition.setOoxTransitionSpeed( nDurationInMs / 1000.0 ); maTransition.setOoxTransitionSpeed( nDurationInMs / 1000.0 );
mbHasTransitionDuration = true;
}
// TODO // TODO
rAttribs.getBool( XML_advClick, true ); rAttribs.getBool( XML_advClick, true );
...@@ -182,7 +189,7 @@ void SlideTransitionContext::onEndElement() ...@@ -182,7 +189,7 @@ void SlideTransitionContext::onEndElement()
{ {
if( isCurrentElement(PPT_TOKEN( transition )) ) if( isCurrentElement(PPT_TOKEN( transition )) )
{ {
if( mbHasTransition ) if( mbHasTransition || mbHasTransitionDuration )
{ {
maTransition.setSlideProperties( maSlideProperties ); maTransition.setSlideProperties( maSlideProperties );
mbHasTransition = false; mbHasTransition = false;
......
...@@ -129,6 +129,7 @@ public: ...@@ -129,6 +129,7 @@ public:
void testTdf107608(); void testTdf107608();
void testTdf111786(); void testTdf111786();
void testTdf115394(); void testTdf115394();
void testTdf115394Zero();
CPPUNIT_TEST_SUITE(SdOOXMLExportTest2); CPPUNIT_TEST_SUITE(SdOOXMLExportTest2);
...@@ -183,6 +184,7 @@ public: ...@@ -183,6 +184,7 @@ public:
CPPUNIT_TEST(testTdf107608); CPPUNIT_TEST(testTdf107608);
CPPUNIT_TEST(testTdf111786); CPPUNIT_TEST(testTdf111786);
CPPUNIT_TEST(testTdf115394); CPPUNIT_TEST(testTdf115394);
CPPUNIT_TEST(testTdf115394Zero);
CPPUNIT_TEST_SUITE_END(); CPPUNIT_TEST_SUITE_END();
...@@ -1438,6 +1440,20 @@ void SdOOXMLExportTest2::testTdf115394() ...@@ -1438,6 +1440,20 @@ void SdOOXMLExportTest2::testTdf115394()
xDocShRef->DoClose(); 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_TEST_SUITE_REGISTRATION(SdOOXMLExportTest2);
CPPUNIT_PLUGIN_IMPLEMENT(); CPPUNIT_PLUGIN_IMPLEMENT();
......
...@@ -641,10 +641,6 @@ void PowerPointExport::WriteTransition(const FSHelperPtr& pFS) ...@@ -641,10 +641,6 @@ void PowerPointExport::WriteTransition(const FSHelperPtr& pFS)
} }
} }
// check if we resolved what transition to export
if (!nPPTTransitionType && !bOOXmlSpecificTransition)
return;
AnimationSpeed animationSpeed = AnimationSpeed_MEDIUM; AnimationSpeed animationSpeed = AnimationSpeed_MEDIUM;
const char* speed = nullptr; const char* speed = nullptr;
sal_Int32 advanceTiming = -1; sal_Int32 advanceTiming = -1;
...@@ -703,6 +699,10 @@ void PowerPointExport::WriteTransition(const FSHelperPtr& pFS) ...@@ -703,6 +699,10 @@ void PowerPointExport::WriteTransition(const FSHelperPtr& pFS)
} }
} }
// check if we resolved what transition to export or time is set
if (!nPPTTransitionType && !bOOXmlSpecificTransition && !isTransitionDurationSet)
return;
if (GETA(Change)) if (GETA(Change))
mAny >>= changeType; mAny >>= changeType;
bool isAdvanceTimingSet = advanceTiming != -1; bool isAdvanceTimingSet = advanceTiming != -1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment