X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Fanimation%2Fanimation-impl.h;h=fa281011aa848b473af3f44bd832ec1c21ff40fb;hb=462cbee2270984cdca45488f3733d664dcf49187;hp=43baa8fcbcb381fc27682503b65377db7f0dfc83;hpb=5bfcdb0ce73c06082873659d5bc3335f10d10d96;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/event/animation/animation-impl.h b/dali/internal/event/animation/animation-impl.h index 43baa8f..fa28101 100644 --- a/dali/internal/event/animation/animation-impl.h +++ b/dali/internal/event/animation/animation-impl.h @@ -2,7 +2,7 @@ #define __DALI_INTERNAL_ANIMATION_H__ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 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. @@ -42,8 +42,7 @@ class UpdateManager; class Actor; class Animation; class AnimationPlaylist; -class ProxyObject; -class ShaderEffect; +class Object; typedef IntrusivePtr AnimationPtr; typedef std::vector AnimationContainer; @@ -85,7 +84,22 @@ public: /** * @copydoc Dali::Animation::SetLooping() */ - void SetLooping(bool looping); + void SetLooping(bool on); + + /** + * @copydoc Dali::Animation::SetLoopCount() + */ + void SetLoopCount(int count); + + /** + * @copydoc Dali::Animation::GetLoopCount() + */ + int GetLoopCount(); + + /** + * @copydoc Dali::Animation::GetCurrentLoop() + */ + int GetCurrentLoop(); /** * @copydoc Dali::Animation::IsLooping() @@ -144,6 +158,11 @@ public: void Pause(); /** + * @copydoc Dali::Animation::GetState() + */ + Dali::Animation::State GetState() const; + + /** * @copydoc Dali::Animation::Stop() */ void Stop(); @@ -163,7 +182,7 @@ public: /** * @copydoc Dali::Animation::FinishedSignal() */ - Dali::Animation::AnimationSignalV2& FinishedSignal(); + Dali::Animation::AnimationSignalType& FinishedSignal(); /** * Emit the Finished signal @@ -188,7 +207,7 @@ public: * @param[in] attributes The attributes with which to perfrom this action. * @return true if action was done */ - static bool DoAction(BaseObject* object, const std::string& actionName, const std::vector& attributes); + static bool DoAction(BaseObject* object, const std::string& actionName, const Property::Map& attributes); /** * This callback is intended for internal use only, to avoid the overhead of using a signal. @@ -246,7 +265,7 @@ public: * @param [in] alpha The alpha function to apply. * @param [in] period The effect will occur during this time period. */ - void AnimateTo(ProxyObject& targetObject, Property::Index targetPropertyIndex, int componentIndex, Property::Value& destinationValue, AlphaFunction alpha, TimePeriod 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) @@ -311,111 +330,6 @@ public: void Animate( Actor& actor, const Path& path, const Vector3& forward, AlphaFunction alpha, TimePeriod period); /** - * @copydoc Dali::Animation::MoveBy(Actor actor, float x, float y, float z) - */ - void MoveBy(Actor& actor, float x, float y, float z); - - /** - * @copydoc Dali::Animation::MoveBy(Actor actor, Vector3 displacement, AlphaFunction alpha) - */ - void MoveBy(Actor& actor, const Vector3& translation, AlphaFunction alpha); - - /** - * @copydoc Dali::Animation::MoveBy(Actor actor, Vector3 displacement, AlphaFunction alpha, float delaySeconds, float durationSeconds) - */ - void MoveBy(Actor& actor, const Vector3& translation, AlphaFunction alpha, float delaySeconds, float durationSeconds); - - /** - * @copydoc Dali::Animation::MoveTo(Actor actor, float x, float y, float z) - */ - void MoveTo(Actor& actor, float x, float y, float z); - - /** - * @copydoc Dali::Animation::MoveTo(Actor actor, Vector3 position, AlphaFunction alpha) - */ - void MoveTo(Actor& actor, const Vector3& translation, AlphaFunction alpha); - - /** - * @copydoc Dali::Animation::MoveTo(Actor actor, Vector3 position, AlphaFunction alpha, float delaySeconds, float durationSeconds) - */ - void MoveTo(Actor& actor, const Vector3& translation, AlphaFunction alpha, float delaySeconds, float durationSeconds); - - /** - * @copydoc Dali::Animation::RotateBy(Actor actor, Radian angle, Vector3 axis) - */ - void RotateBy(Actor& actor, Radian angle, const Vector3& axis); - - /** - * @copydoc Dali::Animation::RotateBy(Actor actor, Radian angle, Vector3 axis, AlphaFunction alpha)() - */ - void RotateBy(Actor& actor, Radian angle, const Vector3& axis, AlphaFunction alpha); - - /** - * @copydoc Dali::Animation::RotateBy(Actor actor, Radian angle, Vector3 axis, AlphaFunction alpha, float delaySeconds, float durationSeconds) - */ - void RotateBy(Actor& actor, Radian angle, const Vector3& axis, AlphaFunction alpha, float delaySeconds, float durationSeconds); - - /** - * @copydoc Dali::Animation::RotateTo(Actor actor, Radian angle, Vector3 axis) - */ - void RotateTo(Actor& actor, Radian angle, const Vector3& axis); - - /** - * @copydoc Dali::Animation::RotateTo(Actor actor, Quaternion orientation) - */ - void RotateTo(Actor& actor, const Quaternion& orientation); - - /** - * @copydoc Dali::Animation::RotateTo(Actor actor, Radian angle, Vector3 axis, AlphaFunction alpha) - */ - void RotateTo(Actor& actor, Radian angle, const Vector3& axis, AlphaFunction alpha); - - /** - * @copydoc Dali::Animation::RotateTo(Actor actor, Quaternion orientation, AlphaFunction alpha) - */ - void RotateTo(Actor& actor, const Quaternion& orientation, AlphaFunction alpha); - - /** - * @copydoc Dali::Animation::RotateTo(Actor actor, Quaternion orientation, AlphaFunction alpha, float delaySeconds, float durationSeconds) - */ - void RotateTo(Actor& actor, const Quaternion& orientation, AlphaFunction alpha, float delaySeconds, float durationSeconds); - - /** - * @copydoc Dali::Animation::RotateTo(Actor actor, Radian angle, Vector3 axis, AlphaFunction alpha, float delaySeconds, float durationSeconds)() - */ - void RotateTo(Actor& actor, Radian angle, const Vector3& axis, AlphaFunction alpha, float delaySeconds, float durationSeconds); - - /** - * @copydoc Dali::Animation::ScaleBy(Actor actor, float x, float y, float z)() - */ - void ScaleBy(Actor& actor, float x, float y, float z); - - /** - * @copydoc Dali::Animation::ScaleBy(Actor actor, Vector3 scale, AlphaFunction alpha) - */ - void ScaleBy(Actor& actor, const Vector3& scale, AlphaFunction alpha); - - /** - * @copydoc Dali::Animation::ScaleBy(Actor actor, Vector3 scale, AlphaFunction alpha, float delaySeconds, float durationSeconds) - */ - void ScaleBy(Actor& actor, const Vector3& scale, AlphaFunction alpha, float delaySeconds, float durationSeconds); - - /** - * @copydoc Dali::Animation::ScaleTo(Actor actor, float x, float y, float z) - */ - void ScaleTo(Actor& actor, float x, float y, float z); - - /** - * @copydoc Dali::Animation::ScaleTo(Actor actor, Vector3 scale, AlphaFunction alpha) - */ - void ScaleTo(Actor& actor, const Vector3& scale, AlphaFunction alpha); - - /** - * @copydoc Dali::Animation::ScaleTo(Actor actor, Vector3 scale, AlphaFunction alpha, float delaySeconds, float durationSeconds) - */ - void ScaleTo(Actor& actor, const Vector3& scale, AlphaFunction alpha, float delaySeconds, float durationSeconds); - - /** * @copydoc Dali::Animation::Show() */ void Show(Actor& actor, float delaySeconds); @@ -425,96 +339,6 @@ public: */ void Hide(Actor& actor, float delaySeconds); - /** - * @copydoc Dali::Animation::OpacityBy(Actor actor, float opacity) - */ - void OpacityBy(Actor& actor, float opacity); - - /** - * @copydoc Dali::Animation::OpacityBy(Actor actor, float opacity, AlphaFunction alpha) - */ - void OpacityBy(Actor& actor, float opacity, AlphaFunction alpha); - - /** - * @copydoc Dali::Animation::OpacityBy(Actor actor, float opacity, AlphaFunction alpha, float delaySeconds, float durationSeconds)() - */ - void OpacityBy(Actor& actor, float opacity, AlphaFunction alpha, float delaySeconds, float durationSeconds); - - /** - * @copydoc Dali::Animation::OpacityTo(Actor actor, float opacity) - */ - void OpacityTo(Actor& actor, float opacity); - - /** - * @copydoc Dali::Animation::OpacityTo(Actor actor, float opacity, AlphaFunction alpha) - */ - void OpacityTo(Actor& actor, float opacity, AlphaFunction alpha); - - /** - * @copydoc Dali::Animation::OpacityTo(Actor actor, float opacity, AlphaFunction alpha, float delaySeconds, float durationSeconds) - */ - void OpacityTo(Actor& actor, float opacity, AlphaFunction alpha, float delaySeconds, float durationSeconds); - - /** - * @copydoc Dali::Animation::ColorBy(Actor actor, Vector4 color) - */ - void ColorBy(Actor& actor, const Vector4& color); - - /** - * @copydoc Dali::Animation::ColorBy(Actor actor, Vector4 color, AlphaFunction alpha) - */ - void ColorBy(Actor& actor, const Vector4& color, AlphaFunction alpha); - - /** - * @copydoc Dali::Animation::ColorBy(Actor actor, Vector4 color, AlphaFunction alpha, float delaySeconds, float durationSeconds) - */ - void ColorBy(Actor& actor, const Vector4& color, AlphaFunction alpha, float delaySeconds, float durationSeconds); - - /** - * @copydoc Dali::Animation::ColorTo(Actor actor, Vector4 color) - */ - void ColorTo(Actor& actor, const Vector4& color); - - /** - * @copydoc Dali::Animation::ColorTo(Actor actor, Vector4 color, AlphaFunction alpha) - */ - void ColorTo(Actor& actor, const Vector4& color, AlphaFunction alpha); - - /** - * @copydoc Dali::Animation::ColorTo(Actor actor, Vector4 color, AlphaFunction alpha, float delaySeconds, float durationSeconds) - */ - void ColorTo(Actor& actor, const Vector4& color, AlphaFunction alpha, float delaySeconds, float durationSeconds); - - /** - * @copydoc Dali::Animation::Resize(Actor actor, float width, float height) - */ - void Resize(Actor& actor, float width, float height); - - /** - * @copydoc Dali::Animation::Resize(Actor actor, float width, float height, AlphaFunction alpha) - */ - void Resize(Actor& actor, float width, float height, AlphaFunction alpha); - - /** - * @copydoc Dali::Animation::Resize(Actor actor, float width, float height, AlphaFunction alpha, float delaySeconds, float durationSeconds) - */ - void Resize(Actor& actor, float width, float height, AlphaFunction alpha, float delaySeconds, float durationSeconds); - - /** - * @copydoc Dali::Animation::Resize(Actor actor, Vector3 size) - */ - void Resize(Actor& actor, const Vector3& size); - - /** - * @copydoc Dali::Animation::Resize(Actor actor, Vector3 size, AlphaFunction alpha) - */ - void Resize(Actor& actor, const Vector3& size, AlphaFunction alpha); - - /** - * @copydoc Dali::Animation::Resize(Actor actor, Vector3 size, AlphaFunction alpha, float delaySeconds, float durationSeconds) - */ - void Resize(Actor& actor, const Vector3& size, AlphaFunction alpha, float delaySeconds, float durationSeconds); - /* * @copydoc Dali::Animation::SetCurrentProgress() */ @@ -563,26 +387,26 @@ public: // For connecting animators to animations } /** - * Retrieve the UpdateManager associated with this animation. - * @return The UpdateManager. + * Retrieve the event thread services object + * @return The interface for sending messages to the scene graph */ - SceneGraph::UpdateManager& GetUpdateManager() + EventThreadServices& GetEventThreadServices() { - return mUpdateManager; + return mEventThreadServices; } protected: /** * Construct a new Animation. - * @param[in] updateManager The UpdateManager associated with this animation. + * @param[in] eventThreadServices The interface for sending messages to the scene graph * @param[in] playlist The list of currently playing animations. * @param[in] durationSeconds The duration of the animation in seconds. * @param[in] endAction The action to perform when the animation ends. * @param[in] disconnectAction The action to perform when the property owner of an animator is disconnected. * @param[in] defaultAlpha The default alpha function to apply to animators. */ - Animation( SceneGraph::UpdateManager& updateManager, + Animation( EventThreadServices& eventThreadServices, AnimationPlaylist& playlist, float durationSeconds, EndAction endAction, @@ -625,28 +449,38 @@ private: private: - SceneGraph::UpdateManager& mUpdateManager; + struct ConnectorTargetValues + { + unsigned int connectorIndex; + Property::Value targetValue; + }; + + EventThreadServices& mEventThreadServices; AnimationPlaylist& mPlaylist; const SceneGraph::Animation* mAnimation; int mNotificationCount; ///< Keep track of how many Finished signals have been emitted. - Dali::Animation::AnimationSignalV2 mFinishedSignal; + Dali::Animation::AnimationSignalType mFinishedSignal; FinishedCallback mFinishedCallback; Object* mFinishedCallbackObject; AnimatorConnectorContainer mConnectors; ///< Owned by the Animation + std::vector< ConnectorTargetValues > mConnectorTargetValues; //< Used to store animating property target value information + // Cached for public getters float mDurationSeconds; float mSpeedFactor; - bool mIsLooping; + int mLoopCount; + int mCurrentLoop; Vector2 mPlayRange; EndAction mEndAction; EndAction mDisconnectAction; AlphaFunction mDefaultAlpha; + Dali::Animation::State mState; };