diff options
Diffstat (limited to 'sd/source/filter/ppt/ppt97animations.cxx')
-rw-r--r-- | sd/source/filter/ppt/ppt97animations.cxx | 746 |
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: */ |