-#ifndef __DALI_INTERNAL_ANIMATION_H__
-#define __DALI_INTERNAL_ANIMATION_H__
+#ifndef DALI_INTERNAL_ANIMATION_H
+#define DALI_INTERNAL_ANIMATION_H
/*
- * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <dali/public-api/object/ref-object.h>
#include <dali/public-api/animation/animation.h>
#include <dali/public-api/object/base-object.h>
+#include <dali/devel-api/animation/animation-devel.h>
#include <dali/devel-api/common/owner-container.h>
#include <dali/internal/event/animation/key-frames-impl.h>
#include <dali/internal/event/common/event-thread-services.h>
class Object;
class Path;
-typedef IntrusivePtr<Animation> AnimationPtr;
-typedef std::vector<AnimationPtr> AnimationContainer;
+using AnimationPtr = IntrusivePtr<Animation>;
+using AnimationContainer = std::vector<AnimationPtr>;
-typedef AnimationContainer::iterator AnimationIter;
-typedef AnimationContainer::const_iterator AnimationConstIter;
+using AnimationIter = AnimationContainer::iterator;
+using AnimationConstIter = AnimationContainer::const_iterator;
/**
* Animation is a proxy for a SceneGraph::Animation object.
BETWEEN ///< Animating BETWEEN key-frames
};
- typedef Dali::Animation::EndAction EndAction;
- typedef Dali::Animation::Interpolation Interpolation;
+ using EndAction = Dali::Animation::EndAction;
+ using Interpolation = Dali::Animation::Interpolation;
/**
* Create a new Animation object.
/**
* @copydoc Dali::Animation::SetLoopCount()
*/
- void SetLoopCount(int count);
+ void SetLoopCount(int32_t count);
/**
* @copydoc Dali::Animation::GetLoopCount()
*/
- int GetLoopCount();
+ int32_t GetLoopCount();
/**
* @copydoc Dali::Animation::GetCurrentLoop()
*/
- int GetCurrentLoop();
+ int32_t GetCurrentLoop();
/**
* @copydoc Dali::Animation::IsLooping()
void PlayFrom( float progress );
/**
+ * @copydoc Dali::Animation::PlayAfter()
+ */
+ void PlayAfter( float delaySeconds );
+
+ /**
* @copydoc Dali::Animation::Pause()
*/
void Pause();
void AnimateTo(Property& target, Property::Value& destinationValue, AlphaFunction alpha, TimePeriod period);
/**
- * Animate a property to a destination value.
- * @param [in] targetObject The target object to animate.
- * @param [in] targetPropertyIndex The index of the target property.
- * @param [in] componentIndex Index to a sub component of a property, for use with Vector2, Vector3 and Vector4
- * @param [in] destinationValue The destination value.
- * @param [in] alpha The alpha function to apply.
- * @param [in] period The effect will occur during this time period.
- */
- void AnimateTo(Object& targetObject, Property::Index targetPropertyIndex, int componentIndex, Property::Value& destinationValue, AlphaFunction alpha, TimePeriod period);
-
- /**
* @copydoc Dali::Animation::AnimateBetween(Property target, KeyFrames& keyFrames)
*/
void AnimateBetween(Property target, const KeyFrames& keyFrames);
*/
void Hide(Actor& actor, float delaySeconds);
- /*
+ /**
* @copydoc Dali::Animation::SetCurrentProgress()
*/
void SetCurrentProgress(float progress);
- /*
+ /**
* @copydoc Dali::Animation::GetCurrentProgress()
*/
float GetCurrentProgress();
- /*
+ /**
* @copydoc Dali::Animation::SetSpeedFactor()
*/
void SetSpeedFactor( float factor );
- /*
+ /**
* @copydoc Dali::Animation::GetSpeedFactor()
*/
float GetSpeedFactor() const;
- /*
+ /**
* @copydoc Dali::Animation::SetPlayRange()
*/
void SetPlayRange( const Vector2& range );
- /*
- * @copydoc Dali::Animation::GetPlayRange
+ /**
+ * @copydoc Dali::Animation::GetPlayRange()
*/
Vector2 GetPlayRange() const;
+ /**
+ * @copydoc Dali::Animation::SetLoopingMode()
+ */
+ void SetLoopingMode( Dali::Animation::LoopingMode loopingMode );
+
+ /**
+ * @copydoc Dali::Animation::GetLoopingMode()
+ */
+ Dali::Animation::LoopingMode GetLoopingMode() const;
+
public: // For connecting animators to animations
/**
Property::Value targetValue;
TimePeriod timePeriod;
- unsigned int connectorIndex;
+ std::size_t connectorIndex;
Animation::Type animatorType;
};
+ enum class Notify
+ {
+ USE_CURRENT_VALUE, ///< Set the current value for the property
+ USE_TARGET_VALUE, ///< Set the animator's target value for the property
+ FORCE_CURRENT_VALUE, ///< Set the current value for the property even if the end action is to discard
+ };
+
private:
/**
/**
* Notifies all the objects whose properties are being animated.
+ * @param[in] notifyValueType Whether we should set the current or target value
*/
- void NotifyObjects();
+ void NotifyObjects( Notify notifyValueType );
/**
* Sends message to SceneGraph with final progress value
Dali::Animation::AnimationSignalType mProgressReachedSignal;
- typedef OwnerContainer< AnimatorConnectorBase* > AnimatorConnectorContainer;
+ using AnimatorConnectorContainer = OwnerContainer<AnimatorConnectorBase*>;
AnimatorConnectorContainer mConnectors; ///< Owned by the Animation
- typedef std::vector< ConnectorTargetValues > ConnectorTargetValuesContainer;
+ using ConnectorTargetValuesContainer = std::vector<ConnectorTargetValues>;
ConnectorTargetValuesContainer mConnectorTargetValues; //< Used to store animating property target value information
Vector2 mPlayRange;
float mDurationSeconds;
float mSpeedFactor;
- int mNotificationCount; ///< Keep track of how many Finished signals have been emitted.
- int mLoopCount;
- int mCurrentLoop;
+ int32_t mNotificationCount; ///< Keep track of how many Finished signals have been emitted.
+ int32_t mLoopCount;
+ int32_t mCurrentLoop;
EndAction mEndAction;
EndAction mDisconnectAction;
AlphaFunction mDefaultAlpha;
Dali::Animation::State mState;
float mProgressReachedMarker;
+ float mDelaySeconds;
+ bool mAutoReverseEnabled; ///< Flag to identify that the looping mode is auto reverse.
};
} // namespace Internal
} // namespace Dali
-#endif // __DALI_INTERNAL_ANIMATION_H__
+#endif // DALI_INTERNAL_ANIMATION_H