diff options
author | Oliver Bolte <obo@openoffice.org> | 2005-10-11 07:45:15 +0000 |
---|---|---|
committer | Oliver Bolte <obo@openoffice.org> | 2005-10-11 07:45:15 +0000 |
commit | c6b0c7feac2d36a651703202cc187439d1f57007 (patch) | |
tree | 15cbf0d946af8d4895063134ed3700d3dc83c471 | |
parent | 07598784a296b0cb9139e99a8cb4ad6085c678fe (diff) |
INTEGRATION: CWS presfixes08 (1.4.10); FILE MERGED
2005/08/08 11:14:37 dbo 1.4.10.1: #i45197# end()
Issue number:
Submitted by:
Reviewed by:
-rw-r--r-- | slideshow/source/engine/animationnodes/setactivity.hxx | 236 |
1 files changed, 124 insertions, 112 deletions
diff --git a/slideshow/source/engine/animationnodes/setactivity.hxx b/slideshow/source/engine/animationnodes/setactivity.hxx index 58c70c04b565..4bc71fcd60e7 100644 --- a/slideshow/source/engine/animationnodes/setactivity.hxx +++ b/slideshow/source/engine/animationnodes/setactivity.hxx @@ -4,9 +4,9 @@ * * $RCSfile: setactivity.hxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: rt $ $Date: 2005-09-07 20:47:13 $ + * last change: $Author: obo $ $Date: 2005-10-11 08:45:15 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -32,123 +32,135 @@ * MA 02111-1307 USA * ************************************************************************/ - -#ifndef _SLIDESHOW_SETACTIVITY_HXX -#define _SLIDESHOW_SETACTIVITY_HXX +#ifndef INCLUDED_SLIDESHOW_SETACTIVITY_HXX +#define INCLUDED_SLIDESHOW_SETACTIVITY_HXX // must be first -#include <canvas/debug.hxx> -#include <canvas/verbosetrace.hxx> +#include "canvas/debug.hxx" +#include "canvas/verbosetrace.hxx" +#include "animationactivity.hxx" +#include "animation.hxx" +#include "animatableshape.hxx" +#include "shapeattributelayer.hxx" +#include "activitiesfactory.hxx" + +namespace presentation { +namespace internal { + +/** Templated setter for animation values + + This template class implements the AnimationActivity + interface, but only the perform() and + setAttributeLayer() methods are functional. To be used for set animations. + + @see AnimationSetNode. +*/ +template <class AnimationT> +class SetActivity : public AnimationActivity +{ +public: + typedef ::boost::shared_ptr< AnimationT > AnimationSharedPtrT; + typedef typename AnimationT::ValueType ValueT; + + SetActivity( const ActivitiesFactory::CommonParameters& rParms, + const AnimationSharedPtrT& rAnimation, + const ValueT& rToValue ) + : mpAnimation( rAnimation ), + mpShape(), + mpAttributeLayer(), + mpEndEvent( rParms.mpEndEvent ), + mrEventQueue( rParms.mrEventQueue ), + maToValue( rToValue ), + mbIsActive(true) + { + ENSURE_AND_THROW( mpAnimation.get(), "Invalid animation" ); + } -#include <animationactivity.hxx> -#include <animation.hxx> -#include <animatableshape.hxx> -#include <shapeattributelayer.hxx> -#include <activitiesfactory.hxx> + virtual void dispose() + { + mbIsActive = false; + mpAnimation.reset(); + mpShape.reset(); + mpAttributeLayer.reset(); + // discharge end event: + if (mpEndEvent && mpEndEvent->isCharged()) + mpEndEvent->dispose(); + mpEndEvent.reset(); + } + virtual double calcTimeLag() const + { + return 0.0; + } -namespace presentation -{ - namespace internal + virtual bool perform() { - /** Templated setter for animation values - - This template class implements the AnimationActivity - interface, but only the perform() and - setAttributeLayer() methods are functional. To be used - for set animations, see AnimationSetNode. - */ - template< class AnimationT > class SetActivity : public AnimationActivity - { - public: - typedef ::boost::shared_ptr< AnimationT > AnimationSharedPtrT; - typedef typename AnimationT::ValueType ValueT; - - SetActivity( const ActivitiesFactory::CommonParameters& rParms, - const AnimationSharedPtrT& rAnimation, - const ValueT& rToValue ) : - mpAnimation( rAnimation ), - mpShape(), - mpAttributeLayer(), - mpEndEvent( rParms.mpEndEvent ), - mrEventQueue( rParms.mrEventQueue ), - maToValue( rToValue ) - { - ENSURE_AND_THROW( mpAnimation.get(), - "SetActivity::SetActivity(): Invalid animation"); - } - - virtual void dispose() - { - mpAnimation.reset(); - mpShape.reset(); - mpAttributeLayer.reset(); - } - - virtual double calcTimeLag() const - { - return 0.0; - } - - virtual bool perform() - { - if( !mpAnimation.get() || !mpAttributeLayer.get() || !mpShape.get() ) - return false; - - mpAnimation->start( mpShape, - mpAttributeLayer ); - (*mpAnimation)(maToValue); - mpAnimation->end(); - - // fire end event, if any - if( mpEndEvent.get() ) - mrEventQueue.addEvent( mpEndEvent ); - - return false; // we're going inactive immediately - } - - virtual bool isActive() const - { - return false; - } - - virtual bool needsScreenUpdate() const - { - return true; - } - - virtual void dequeued() - { - } - - virtual void setTargets( const AnimatableShapeSharedPtr& rShape, - const ShapeAttributeLayerSharedPtr& rAttrLayer ) - { - ENSURE_AND_THROW( rShape.get(), - "SetActivity::setTargets(): Invalid shape" ); - ENSURE_AND_THROW( rAttrLayer.get(), - "SetActivity::setTargets(): Invalid attribute layer" ); - - mpShape = rShape; - mpAttributeLayer = rAttrLayer; - } - - private: - AnimationSharedPtrT mpAnimation; - AnimatableShapeSharedPtr mpShape; - ShapeAttributeLayerSharedPtr mpAttributeLayer; - EventSharedPtr mpEndEvent; - EventQueue& mrEventQueue; - ValueT maToValue; - }; - - template< class AnimationT > AnimationActivitySharedPtr makeSetActivity( const ActivitiesFactory::CommonParameters& rParms, - const ::boost::shared_ptr< AnimationT >& rAnimation, - const typename AnimationT::ValueType& rToValue ) - { - return AnimationActivitySharedPtr( new SetActivity< AnimationT >(rParms,rAnimation,rToValue) ); + if (! isActive()) + return false; + // we're going inactive immediately: + mbIsActive = false; + + if (mpAnimation && mpAttributeLayer && mpShape) { + mpAnimation->start( mpShape, mpAttributeLayer ); + (*mpAnimation)(maToValue); + mpAnimation->end(); } + // fire end event, if any + if (mpEndEvent) + mrEventQueue.addEvent( mpEndEvent ); + + return false; // don't reinsert } + + virtual bool isActive() const + { + return mbIsActive; + } + + virtual bool needsScreenUpdate() const + { + return true; + } + + virtual void dequeued() + { + } + + virtual void end() + { + perform(); + } + + virtual void setTargets( const AnimatableShapeSharedPtr& rShape, + const ShapeAttributeLayerSharedPtr& rAttrLayer ) + { + ENSURE_AND_THROW( rShape.get(), "Invalid shape" ); + ENSURE_AND_THROW( rAttrLayer.get(), "Invalid attribute layer" ); + + mpShape = rShape; + mpAttributeLayer = rAttrLayer; + } + +private: + AnimationSharedPtrT mpAnimation; + AnimatableShapeSharedPtr mpShape; + ShapeAttributeLayerSharedPtr mpAttributeLayer; + EventSharedPtr mpEndEvent; + EventQueue& mrEventQueue; + ValueT maToValue; + bool mbIsActive; +}; + +template <class AnimationT> AnimationActivitySharedPtr makeSetActivity( + const ActivitiesFactory::CommonParameters& rParms, + const ::boost::shared_ptr< AnimationT >& rAnimation, + const typename AnimationT::ValueType& rToValue ) +{ + return AnimationActivitySharedPtr( + new SetActivity<AnimationT>(rParms,rAnimation,rToValue) ); } -#endif /* _SLIDESHOW_SETACTIVITY_HXX */ +} // namespace internal +} // namespace presentation + +#endif /* INCLUDED_SLIDESHOW_SETACTIVITY_HXX */ |