summaryrefslogtreecommitdiff
path: root/sd/source/filter/ppt/ppt97animations.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/filter/ppt/ppt97animations.cxx')
-rw-r--r--sd/source/filter/ppt/ppt97animations.cxx746
1 files changed, 0 insertions, 746 deletions
diff --git a/sd/source/filter/ppt/ppt97animations.cxx b/sd/source/filter/ppt/ppt97animations.cxx
deleted file mode 100644
index 197ee72f5..000000000
--- a/sd/source/filter/ppt/ppt97animations.cxx
+++ /dev/null
@@ -1,746 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sd.hxx"
-
-#include "ppt97animations.hxx"
-
-// header for class SdrObject
-#include <svx/svdobj.hxx>
-// header for class SdPage
-#include "sdpage.hxx"
-// header for define DBG_ERROR
-#include <tools/debug.hxx>
-// header for define GetXShapeForSdrObject
-#include <svx/unoapi.hxx>
-#include "EffectMigration.hxx"
-#include <CustomAnimationPreset.hxx>
-#include <com/sun/star/drawing/XShape.hpp>
-#include <com/sun/star/presentation/TextAnimationType.hpp>
-#include <com/sun/star/presentation/EffectNodeType.hpp>
-#include <com/sun/star/presentation/ShapeAnimationSubType.hpp>
-
-using namespace ::com::sun::star;
-
-//---------------------------------------------------------------------------------------
-
-void Ppt97AnimationInfoAtom::ReadStream( SvStream& rIn )
-{
- rIn >> nDimColor;
- rIn >> nFlags;
- rIn >> nSoundRef;
- rIn >> nDelayTime;
- rIn >> nOrderID;
- rIn >> nSlideCount;
- rIn >> nBuildType;
- rIn >> nFlyMethod;
- rIn >> nFlyDirection;
- rIn >> nAfterEffect;
- rIn >> nSubEffect;
- rIn >> nOLEVerb;
- rIn >> nUnknown1;
- rIn >> nUnknown2;
-}
-
-//---------------------------------------------------------------------------------------
-
-#define MEMBER_CONSTRUCTOR_LIST() \
- m_aAtom() \
- , m_aSoundFileUrl() \
- , m_bDirtyCache(true) \
- , m_aPresetId() \
- , m_aSubType() \
- , m_bHasSpecialDuration(false) \
- , m_fDurationInSeconds(0.001)
-
-Ppt97Animation::Ppt97Animation( SvStream& rInputStream )
- : MEMBER_CONSTRUCTOR_LIST()
-{
- m_aAtom.ReadStream( rInputStream );
-}
-
-Ppt97Animation::Ppt97Animation( const Ppt97Animation& rAnimation )
- : MEMBER_CONSTRUCTOR_LIST()
-{
- *this = rAnimation;
-}
-
-Ppt97Animation& Ppt97Animation::operator= ( const Ppt97Animation& rAnimation )
-{
- m_aAtom = rAnimation.m_aAtom;
- m_aSoundFileUrl = rAnimation.m_aSoundFileUrl;
- m_bDirtyCache = rAnimation.m_bDirtyCache;
- m_aPresetId = rAnimation.m_aPresetId;
- m_aSubType = rAnimation.m_aSubType;
- m_bHasSpecialDuration = rAnimation.m_bHasSpecialDuration;
- m_fDurationInSeconds = rAnimation.m_fDurationInSeconds;
-
- return *this;
-}
-
-Ppt97Animation::~Ppt97Animation()
-{
-}
-
-bool Ppt97Animation::operator < ( const Ppt97Animation& rAnimation ) const
-{
- return m_aAtom.nOrderID < rAnimation.m_aAtom.nOrderID;
-}
-bool Ppt97Animation::operator > ( const Ppt97Animation& rAnimation ) const
-{
- return m_aAtom.nOrderID > rAnimation.m_aAtom.nOrderID;
-}
-bool Ppt97Animation::HasEffect() const
-{
- return m_aAtom.nBuildType != 0;
-}
-bool Ppt97Animation::HasParagraphEffect() const
-{
- return m_aAtom.nBuildType > 1;
-}
-sal_Int32 Ppt97Animation::GetParagraphLevel() const
-{
- sal_Int32 nParagraphLevel = 0;
- if(m_aAtom.nBuildType>1)
- nParagraphLevel = m_aAtom.nBuildType-1;
- return nParagraphLevel;
-}
-bool Ppt97Animation::HasSoundEffect() const
-{
- return m_aAtom.nSoundRef && m_aAtom.nFlags & 0x0010;
-}
-bool Ppt97Animation::HasStopPreviousSound() const
-{
- return m_aAtom.nFlags & 0x0040;
-}
-bool Ppt97Animation::HasReverseOrder() const
-{
- return m_aAtom.nFlags & 0x001;
-}
-bool Ppt97Animation::HasAnimateAssociatedShape() const
-{
- return m_aAtom.nFlags & 0x004000;
-}
-bool Ppt97Animation::HasAfterEffect() const
-{
- return m_aAtom.nAfterEffect != 0;
-}
-bool Ppt97Animation::HasAfterEffect_ChangeColor() const
-{
- return m_aAtom.nAfterEffect == 1;
-}
-bool Ppt97Animation::HasAfterEffect_DimAtNextEffect() const
-{
- return m_aAtom.nAfterEffect == 2;
-}
-#ifdef FUTURE
-bool Ppt97Animation::HasAfterEffect_DimAfterEffect() const
-{
- return m_aAtom.nAfterEffect == 3;
-}
-#endif
-sal_uInt32 Ppt97Animation::GetSoundRef() const
-{
- return m_aAtom.nSoundRef;
-}
-void Ppt97Animation::SetSoundFileUrl( const ::rtl::OUString& rSoundFileUrl )
-{
- m_aSoundFileUrl = rSoundFileUrl;
-}
-
-double Ppt97Animation::GetDelayTimeInSeconds() const
-{
- return m_aAtom.nDelayTime != 0X7FFFFFFF ? m_aAtom.nDelayTime/1000.0 : 0.0;
-}
-
-bool Ppt97Animation::GetSpecialDuration( double& rfDurationInSeconds ) const
-{
- UpdateCacheData();
- if( m_bHasSpecialDuration )
- rfDurationInSeconds = m_fDurationInSeconds;
- return m_bHasSpecialDuration;
-}
-
-bool Ppt97Animation::GetSpecialTextIterationDelay( double& rfTextIterationDelay ) const
-{
- bool bRet = false;
- switch(this->GetTextAnimationType())
- {
- case presentation::TextAnimationType::BY_LETTER:
- rfTextIterationDelay = 0.075;
- bRet = true;
- break;
- case presentation::TextAnimationType::BY_WORD:
- rfTextIterationDelay = 0.3;
- bRet = true;
- break;
- default:
- break;
- }
- return bRet;
-}
-
-sal_Int32 Ppt97Animation::GetDimColor() const
-{
- return static_cast<sal_Int32>(m_aAtom.nDimColor);
-}
-
-void Ppt97Animation::SetDimColor( sal_Int32 nDimColor )
-{
- m_aAtom.nDimColor = nDimColor;
-}
-void Ppt97Animation::SetAnimateAssociatedShape( bool bAnimate )
-{
- if( !bAnimate )
- {
- //the appear effect cannot be animated without text
- if( this->GetPresetId().equals( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-appear")) ) )
- return;
- //the random effect may be the appear effect and than has the same problem
- if( this->GetPresetId().equals( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-random")) ) )
- {
- //this case is not 100% correct -> feel free to complete
- //i consider this case as seldom and not that problematic and a simple correct fix is not in sight
- DBG_WARNING("you tried to deselect the animation of the form for random animation-> this has been refused");
- return;
- }
-
- }
-
- if(bAnimate)
- m_aAtom.nFlags = m_aAtom.nFlags | 0x004000;
- else if( HasAnimateAssociatedShape() )
- {
- m_aAtom.nFlags = m_aAtom.nFlags ^ 0x004000;
- }
-}
-
-sal_Int16 Ppt97Animation::GetEffectNodeType() const //see com::sun::star::presentation::EffectNodeType
-{
- sal_Int16 nRet = presentation::EffectNodeType::ON_CLICK;
- if( m_aAtom.nFlags & 0x04 )
- {
- nRet = presentation::EffectNodeType::AFTER_PREVIOUS;
- }
- return nRet;
-}
-
-sal_Int16 Ppt97Animation::GetTextAnimationType() const
-{
- sal_Int16 nRet = presentation::TextAnimationType::BY_PARAGRAPH;
- switch( m_aAtom.nSubEffect )
- {
- case 0:
- break;
- case 2:
- nRet = presentation::TextAnimationType::BY_LETTER;
- break;
- default:
- nRet = presentation::TextAnimationType::BY_WORD;
- break;
- }
- return nRet;
-}
-::rtl::OUString Ppt97Animation::GetPresetId() const
-{
- UpdateCacheData();
- return m_aPresetId;
-}
-::rtl::OUString Ppt97Animation::GetPresetSubType() const
-{
- UpdateCacheData();
- return m_aSubType;
-}
-
-void Ppt97Animation::ClearCacheData() const
-{
- m_aPresetId = m_aSubType = rtl::OUString();
- m_bHasSpecialDuration = false;
- m_fDurationInSeconds = 0.001;
-}
-void Ppt97Animation::UpdateCacheData() const
-{
- if( !m_bDirtyCache )
- return;
-
- ClearCacheData();
-
- if( !HasEffect() )
- {
- m_bDirtyCache = false;
- return;
- }
-
- switch( m_aAtom.nFlyMethod )
- {
- case 0x0:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-appear")); // --- appear ---
- break;
- case 0x01:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-random")); // --- random ---
- break;
- case 0x02: // --- blinds effect ---
- {
- switch ( m_aAtom.nFlyDirection )
- {
- case 0x0:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-venetian-blinds"));
- m_aSubType = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("horizontal")); // horizontal
- break;
- case 0x1:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-venetian-blinds"));
- m_aSubType = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vertical")); // vertical
- break;
- }
- }
- break;
- case 0x03: // --- (hor/ver) shifted appear ---
- {
- switch ( m_aAtom.nFlyDirection )
- {
- case 0x0:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-checkerboard"));
- m_aSubType = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("across")); // vertical ???
- break;
- case 0x1:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-checkerboard"));
- m_aSubType = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("downward")); // horizontal ???
- break;
- }
- }
- break;
- case 0x05:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-dissolve-in"));
- break;
- case 0x08: // --- (hor/ver) lines ---
- {
- switch ( m_aAtom.nFlyDirection )
- {
- case 0x0:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-random-bars"));
- m_aSubType = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vertical")); // horizontal ???
- break;
- case 0x1:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-random-bars"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("horizontal")); // vertical ???
- break;
- }
- }
- break;
- case 0x09: // --- diagonal ---
- {
- switch ( m_aAtom.nFlyDirection )
- {
- case 0x4:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-diagonal-squares"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("left-to-top")); // to left top
- break;
- case 0x5:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-diagonal-squares"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("right-to-top")); // to right top
- break;
- case 0x6:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-diagonal-squares"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("left-to-bottom")); // to left bottom
- break;
- case 0x7:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-diagonal-squares"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("right-to-bottom")); // to right bottom
- break;
- }
- }
- break;
- case 0x0a: // --- roll/wipe ---
- {
- switch ( m_aAtom.nFlyDirection )
- {
- case 0x0:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-wipe"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-right")); // from right
- break;
- case 0x1:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-wipe"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-bottom")); // from bottom
- break;
- case 0x2:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-wipe"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-left")); // from left
- break;
- case 0x3:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-wipe"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-top")); // from top
- break;
- }
- }
- break;
- case 0x0b: //--- fade in ---
- {
- switch ( m_aAtom.nFlyDirection )
- {
- case 0x0:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-box"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("out")); // from center
- break;
- case 0x1:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-box"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("in")); // to center
- break;
- }
- }
- break;
- case 0x0c: // --- text effects ---
- {
- switch ( m_aAtom.nFlyDirection )
- {
- case 0x0:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-fly-in"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-left"));
-
- break;
- case 0x1:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-fly-in"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-top"));
- break;
- case 0x2:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-fly-in"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-right"));
- break;
- case 0x3:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-fly-in"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-bottom"));
- break;
- case 0x4:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-fly-in"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-top-left"));
- break;
- case 0x5:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-fly-in"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-top-right"));
- break;
- case 0x6:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-fly-in"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-bottom-left"));
- break;
- case 0x7:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-fly-in"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-bottom-right"));
- break;
- case 0x8: // -- short text effects --
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-peek-in"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-left"));
- break;
- case 0x9:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-peek-in"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-bottom"));
- break;
- case 0xa:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-peek-in"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-right"));
- break;
- case 0xb:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-peek-in"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-top"));
- break;
- case 0xc: // -- slow text effects --
- {
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-fly-in-slow"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-left"));
- }
- break;
- case 0xd:
- {
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-fly-in-slow"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-top"));
- }
- break;
- case 0xe:
- {
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-fly-in-slow"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-right"));
- }
- break;
- case 0xf:
- {
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-fly-in-slow"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-bottom"));
- }
- break;
- case 0x10: // --- zoom ---
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-zoom"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("in"));
- break;
- case 0x11:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-zoom"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("in-slightly"));
- break;
- case 0x12:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-zoom"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("out"));
- break;
- case 0x13:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-zoom"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("out-slightly"));
- break;
- case 0x14:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-zoom"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("in-from-screen-center"));
- break;
- case 0x15:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-zoom"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("out-from-screen-center"));
- break;
- case 0x16: // --- stretch ---
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-stretchy"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("across"));
- break;
- case 0x17:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-stretchy"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-left"));
- break;
- case 0x18:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-stretchy"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-top"));
- break;
- case 0x19:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-stretchy"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-right"));
- break;
- case 0x1a:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-stretchy"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("from-bottom"));
- break;
- case 0x1b: // --- rotate ---
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-swivel"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vertical"));
- break;
- case 0x1c: // --- spirale ---
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-spiral-in"));
- break;
- }
- }
- break;
- case 0x0d: // --- open/close ---
- {
- switch ( m_aAtom.nFlyDirection )
- {
- case 0x0:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-split"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("horizontal-out")); //horizontal open
- break;
- case 0x1:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-split"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("horizontal-in")); //horizontal close
- break;
- case 0x2:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-split"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vertical-out")); // vertical open
- break;
- case 0x3:
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-split"));
- m_aSubType = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("vertical-in")); // vertical close
- break;
- }
- }
- break;
- case 0x0e: // --- blink ---
- {
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-flash-once"));
- switch ( m_aAtom.nFlyDirection )
- {
- case 0x0: //fast
- m_fDurationInSeconds = 0.075;
- m_bHasSpecialDuration = true;
- break;
- case 0x1: //medium
- m_fDurationInSeconds = 0.5;
- m_bHasSpecialDuration = true;
- break;
- case 0x2: //slow
- m_fDurationInSeconds = 1.0;
- m_bHasSpecialDuration = true;
- break;
- }
- }
- break;
- default:
- {
- m_aPresetId = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ooo-entrance-appear"));
- OSL_FAIL("no effect mapped");
- }
- break;
- }
- m_bDirtyCache = false;
-}
-
-void Ppt97Animation::createAndSetCustomAnimationEffect( SdrObject* pObj )
-{
-
- if( !this->HasEffect() )
- return;
- if( !pObj || !pObj->GetPage() )
- {
- OSL_FAIL("no valid SdrObject or page found for ppt import");
- return;
- }
-
- uno::Reference< drawing::XShape > xShape = GetXShapeForSdrObject( pObj );
- if( !xShape.is() )
- {
- OSL_FAIL("no XShape interface found for ppt import");
- return;
- }
- ::sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
- if( !pMainSequence.get() )
- {
- OSL_FAIL("no MainSequence found for ppt import");
- return;
- }
-
- const ::sd::CustomAnimationPresets& rPresets( ::sd::CustomAnimationPresets::getCustomAnimationPresets() );
- ::sd::CustomAnimationPresetPtr pPreset( rPresets.getEffectDescriptor( this->GetPresetId() ) );
- if( !pPreset.get() )
- {
- OSL_FAIL("no suiteable preset found for ppt import");
- return;
- }
-
- //--------------start doing something
-
- //1. ------ create an effect from the presets ------
- ::sd::CustomAnimationEffectPtr pEffect( new ::sd::CustomAnimationEffect( pPreset->create( this->GetPresetSubType() ) ) );
- if( !pEffect.get() )
- {
- DBG_ASSERT(pEffect.get(),"no suiteable effect found");
- return;
- }
-
- //2. ------ adapt the created effect ------
-
- // set the shape targeted by this effect
- pEffect->setTarget( makeAny( xShape ) );
-
- pEffect->setBegin( this->GetDelayTimeInSeconds() );
-
- // some effects need a different duration than that of the mapped preset effect
- double fDurationInSeconds = 1.0;//in secunden
- if( this->GetSpecialDuration( fDurationInSeconds ) )
- pEffect->setDuration( fDurationInSeconds );
-
- // set after effect
- if( this->HasAfterEffect() )
- {
- pEffect->setHasAfterEffect( sal_True );
- if( this->HasAfterEffect_ChangeColor() )
- pEffect->setDimColor( uno::makeAny( this->GetDimColor() ) );
- else
- pEffect->setAfterEffectOnNext( this->HasAfterEffect_DimAtNextEffect() );
- }
-
- // set sound effect
- if( this->HasSoundEffect() )
- pEffect->createAudio( uno::makeAny( m_aSoundFileUrl ) );
-
- // text iteration
- pEffect->setIterateType( this->GetTextAnimationType() );
-
- // some effects need a different delay between text iteration than that of the mapped preset effect
- double fTextIterationDelay = 1.0;
- if( this->GetSpecialTextIterationDelay( fTextIterationDelay ) )
- pEffect->setIterateInterval( fTextIterationDelay );
-
- // is the effect started on click or after the last effect (Another possible value is EffectNodeType::WITH_PREVIOUS )
- pEffect->setNodeType( this->GetEffectNodeType() );
-
- //set stop sound effect
- if( this->HasStopPreviousSound() )
- pEffect->setStopAudio();
-
- // append the effect to the main sequence
- if( !this->HasParagraphEffect() )
- {
- if( this->HasAnimateAssociatedShape() )
- pEffect->setTargetSubItem( presentation::ShapeAnimationSubType::AS_WHOLE );
- else
- pEffect->setTargetSubItem( presentation::ShapeAnimationSubType::AS_WHOLE ); //todo: set ONLY_TEXT again if that is fixed
- //pEffect->setTargetSubItem( presentation::ShapeAnimationSubType::ONLY_TEXT );
- }
-
- //3. ------ put the created effect to the model and do some last changes fro paragraph effects ------
- pMainSequence->append( pEffect );
- if( this->HasParagraphEffect() )
- {
- sal_Int32 nParagraphLevel = this->GetParagraphLevel();
- double fDelaySeconds = this->GetDelayTimeInSeconds();
- sal_Bool bAnimateAssociatedShape = this->HasAnimateAssociatedShape();//or only text
- sal_Bool bTextReverse = this->HasReverseOrder();
-
- // now create effects for each paragraph
- ::sd::CustomAnimationTextGroupPtr pGroup = pMainSequence->
- createTextGroup( pEffect, nParagraphLevel, fDelaySeconds, bAnimateAssociatedShape, bTextReverse );
-
- if( pGroup )
- {
- const ::sd::EffectSequence& rEffects = pGroup->getEffects();
- ::sd::EffectSequence::const_iterator aIter = rEffects.begin();
-
- ::sd::CustomAnimationEffectPtr pLastEffect;
- sal_Int32 nIndex = 0;
- for( ; aIter != rEffects.end(); ++aIter )
- {
- ::sd::CustomAnimationEffectPtr pGroupEffect(*aIter);
-
- ////todo? if( nIndex > 1 && pLastEffect && this->HasSoundEffect() )
- //// pLastEffect->setStopAudio();
- if( nIndex < 2 )
- {
- pGroupEffect->setNodeType( this->GetEffectNodeType() );
- }
- else if( nIndex > 0 )
- {
- bool bAtParagraphBegin = false;
- if(!bTextReverse)
- bAtParagraphBegin = pGroupEffect->getParaDepth() < nParagraphLevel;
- else
- bAtParagraphBegin = !pLastEffect || pLastEffect->getParaDepth() < nParagraphLevel;
- if( bAtParagraphBegin )
- pGroupEffect->setNodeType( this->GetEffectNodeType() );
- else if( this->GetTextAnimationType() == presentation::TextAnimationType::BY_PARAGRAPH )
- pGroupEffect->setNodeType( presentation::EffectNodeType::WITH_PREVIOUS );
- else
- pGroupEffect->setNodeType( presentation::EffectNodeType::AFTER_PREVIOUS );
- }
- pLastEffect = pGroupEffect;
- nIndex++;
- }
- }
- }
- pMainSequence->rebuild();
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */