diff options
author | Szymon Kłos <szymon.klos@collabora.com> | 2018-02-02 10:21:50 +0100 |
---|---|---|
committer | Szymon Kłos <szymon.klos@collabora.com> | 2018-02-07 10:28:12 +0100 |
commit | a8a3e6a7fee5ac23bc2155b9391ead9402211147 (patch) | |
tree | c381a276f8e3b4e69e335a203fffeb6083ad4165 /oox | |
parent | e89964ebb3ba3bd7d694695c004c5f976d8d9616 (diff) |
tdf#115394 import custom slide transition time in PPTX
* custom values are imported correctly
* standard (fast, slow, medium) values are changed
to match values in the MSO
Change-Id: I004242afbbf641fe414abc8df248a2844c104502
Reviewed-on: https://gerrit.libreoffice.org/49139
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Diffstat (limited to 'oox')
-rw-r--r-- | oox/source/ppt/slidetransition.cxx | 22 | ||||
-rw-r--r-- | oox/source/ppt/slidetransitioncontext.cxx | 6 | ||||
-rw-r--r-- | oox/source/token/properties.txt | 1 |
3 files changed, 25 insertions, 4 deletions
diff --git a/oox/source/ppt/slidetransition.cxx b/oox/source/ppt/slidetransition.cxx index e609e6709c2f..7c1555b7dc80 100644 --- a/oox/source/ppt/slidetransition.cxx +++ b/oox/source/ppt/slidetransition.cxx @@ -45,6 +45,7 @@ namespace oox { namespace ppt { , mnTransitionSubType( 0 ) , mbTransitionDirectionNormal( true ) , mnAnimationSpeed( AnimationSpeed_FAST ) + , mfTransitionDurationInSeconds( -1.0 ) , mbMode( true ) , mnAdvanceTime( -1 ) { @@ -56,6 +57,7 @@ namespace oox { namespace ppt { , mnTransitionSubType( 0 ) , mbTransitionDirectionNormal( true ) , mnAnimationSpeed( AnimationSpeed_FAST ) + , mfTransitionDurationInSeconds( -1.0 ) , mbMode( true ) , mnAdvanceTime( -1 ) { @@ -76,6 +78,8 @@ namespace oox { namespace ppt { aProps.setProperty( PROP_TransitionSubtype, mnTransitionSubType); aProps.setProperty( PROP_TransitionDirection, mbTransitionDirectionNormal); aProps.setProperty( PROP_Speed, mnAnimationSpeed); + if( mfTransitionDurationInSeconds >= 0.0 ) + aProps.setProperty( PROP_TransitionDuration, mfTransitionDurationInSeconds); aProps.setProperty( PROP_TransitionFadeColor, sal_Int32(0)); if( mnAdvanceTime != -1 ) { aProps.setProperty( PROP_Duration, mnAdvanceTime/1000); @@ -110,19 +114,21 @@ namespace oox { namespace ppt { { switch( nToken ) { - /* In case you want to use time values in second, - * the speed values are located in the PPT97 importer - * sd/source/filter/ppt/ppt97animations.cxx:664 - * (void Ppt97Animation::UpdateCacheData() const) + /* the speed values are located in the PPT97 importer + * sd/source/filter/ppt/pptin.cxx:1783 + * (void ImplSdPPTImport::ImportPageEffect) */ case XML_fast: mnAnimationSpeed = AnimationSpeed_FAST; + mfTransitionDurationInSeconds = 0.5; break; case XML_med: mnAnimationSpeed = AnimationSpeed_MEDIUM; + mfTransitionDurationInSeconds = 0.75; break; case XML_slow: mnAnimationSpeed = AnimationSpeed_SLOW; + mfTransitionDurationInSeconds = 1.0; break; default: // should not happen. just ignore @@ -130,6 +136,14 @@ namespace oox { namespace ppt { } } + void SlideTransition::setOoxTransitionSpeed( double fDurationInSeconds ) + { + // for compatibility + mnAnimationSpeed = ( fDurationInSeconds <= 0.5 ) ? AnimationSpeed_FAST + : ( fDurationInSeconds >= 1.0 ) ? AnimationSpeed_SLOW : AnimationSpeed_MEDIUM; + mfTransitionDurationInSeconds = fDurationInSeconds; + } + sal_Int16 SlideTransition::ooxToOdpEightDirections( ::sal_Int32 nOoxType ) { sal_Int16 nOdpDirection; diff --git a/oox/source/ppt/slidetransitioncontext.cxx b/oox/source/ppt/slidetransitioncontext.cxx index 64d6d5942ba3..7639df7c023b 100644 --- a/oox/source/ppt/slidetransitioncontext.cxx +++ b/oox/source/ppt/slidetransitioncontext.cxx @@ -32,6 +32,7 @@ #include <oox/helper/attributelist.hxx> #include <oox/token/namespaces.hxx> #include <oox/token/tokens.hxx> +#include <oox/token/properties.hxx> using namespace ::com::sun::star; using namespace ::oox::core; @@ -50,6 +51,11 @@ SlideTransitionContext::SlideTransitionContext( FragmentHandler2 const & rParent // ST_TransitionSpeed maTransition.setOoxTransitionSpeed( rAttribs.getToken( XML_spd, XML_fast ) ); + // p14:dur + sal_Int32 nDurationInMs = rAttribs.getInteger( P14_TOKEN( dur ), -1 ); + if( nDurationInMs > -1 ) + maTransition.setOoxTransitionSpeed( nDurationInMs / 1000.0 ); + // TODO rAttribs.getBool( XML_advClick, true ); diff --git a/oox/source/token/properties.txt b/oox/source/token/properties.txt index fabb7383a891..e90bd9c58912 100644 --- a/oox/source/token/properties.txt +++ b/oox/source/token/properties.txt @@ -530,6 +530,7 @@ TopMargin TotalsRow Transformation TransitionDirection +TransitionDuration TransitionFadeColor TransitionSubtype TransitionType |