summaryrefslogtreecommitdiff
path: root/oox/source
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2018-02-02 10:21:50 +0100
committerAndras Timar <andras.timar@collabora.com>2018-03-25 17:38:34 +0200
commit19473fab6061b9d433e413d20390b3cf2ab5200b (patch)
tree3892c0706130b256122c0bc982c3d4eaf7060ad3 /oox/source
parent39e72abedfabf476f7cd342b953feadbfecb6b02 (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 Reviewed-on: https://gerrit.libreoffice.org/49139 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Szymon Kłos <szymon.klos@collabora.com> (cherry picked from commit a8a3e6a7fee5ac23bc2155b9391ead9402211147) Change-Id: I004242afbbf641fe414abc8df248a2844c104502
Diffstat (limited to 'oox/source')
-rw-r--r--oox/source/ppt/slidetransition.cxx22
-rw-r--r--oox/source/ppt/slidetransitioncontext.cxx6
-rw-r--r--oox/source/token/properties.txt1
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 caab75eae4d4..e22e54acaf08 100644
--- a/oox/source/token/properties.txt
+++ b/oox/source/token/properties.txt
@@ -528,6 +528,7 @@ TopMargin
TotalsRow
Transformation
TransitionDirection
+TransitionDuration
TransitionFadeColor
TransitionSubtype
TransitionType