2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://floralicense.org/license/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FUiAnim_ControlAnimatorImpl.h
20 * @brief Header file of _ControlAnimatorImpl class
22 * This file contains declarations _ControlAnimatorImpl class.
25 #ifndef _FUI_ANIM_INTERNAL_CONTROL_ANIMATOR_IMPL_H_
26 #define _FUI_ANIM_INTERNAL_CONTROL_ANIMATOR_IMPL_H_
28 #include <FUiAnimControlAnimator.h>
29 #include <FUiAnimVisualElementAnimation.h>
30 #include <FUiAnimVisualElementAnimationGroup.h>
31 #include <FUiAnimIVisualElementAnimationStatusEventListener.h>
32 #include <FUiAnimIVisualElementAnimationTickEventListener.h>
34 #include "FUi_ControlImpl.h"
37 namespace Tizen { namespace Ui { namespace Animations
40 class BezierTimingFunction;
43 * @enum AnimationFormPosition
44 * Defines the Form's position, either current or Next Form
47 enum AnimationFormPosition
49 ANIMATION_FORM_POSITION_CURRENT_FORM = 0, /**< Current Form*/
50 ANIMATION_FORM_POSITION_NEXT_FORM /**< Next Form */
53 enum StoredPropertyAnimationGroupType
55 PROPERTY_ANIMATION_GROUP_TYPE_NONE,
56 PROPERTY_ANIMATION_GROUP_TYPE_PARALLEL,
57 PROPERTY_ANIMATION_GROUP_TYPE_SEQUENTIAL
60 #define INTERPOLATOR_LINEAR L"Linear"
61 #define INTERPOLATOR_EASEIN L"EaseIn"
62 #define INTERPOLATOR_EASEOUT L"EaseOut"
63 #define INTERPOLATOR_EASEINOUT L"EaseInOut"
64 #define INTERPOLATOR_DISCRETE L"Discrete"
65 #define INTERPOLATOR_BEZIER L"Bezier"
69 * @class _ControlAnimatorImpl
70 * @brief This class defines the animation API for Control
73 * The %_ControlAnimatorImpl class is used to control the animations operated on Tizen::UiControls
76 class _ControlAnimatorImpl
77 : public Tizen::Base::Object
78 , public Tizen::Ui::Animations::IVisualElementAnimationStatusEventListener
79 , virtual public Tizen::Base::Runtime::IEventListener
80 , public Tizen::Ui::Animations::IVisualElementAnimationTickEventListener
84 * Destructor for %_ControlAnimatorImpl class.
88 ~_ControlAnimatorImpl(void);
91 * Default constructor for %_ControlAnimatorImpl class.
95 _ControlAnimatorImpl(ControlAnimator* pAnimator);
98 * Initializes this %_ControlAnimatorImpl class.
101 * @return An error code
102 * @exception E_SUCCESS The method was successful.
103 * @exception E_INVALID_STATE This instance has already been constructed.
104 * @exception E_OUT_OF_MEMORY Insufficient memory.
105 * @exception E_SYSTEM System error occurred.
107 result Construct(const Control& control);
110 * Adds the %Animation to the ActiveAnimation List.
113 * @return An error code
114 * @param[in] animTarget %AnimationTarget
115 * @param[in] animBase An object of %AnimationBase
116 * @param[in] animNative An object of _Animation
117 * @param[in] triggerType Trigger type
118 * @param[in] animName Animation name (unique Id)
119 * @param[in] pBezierTiming Bezier timing function.
120 * @exception E_SUCCESS The method was successful.
121 * @exception E_SYSTEM A system error occurred.
122 * @exception E_INVALID_ARG A specified input parameter is invalid.
124 result AddActiveAnimation(AnimationTargetType animTarget, AnimationBase& animBase, Tizen::Ui::Animations::VisualElementAnimation& animNative, ControlAnimatorTriggerType triggerType, const Tizen::Base::String& animName, BezierTimingFunction* pBezierTiming);
127 * This is the copy constructor for this class.
130 * @param[in] animator Object to be copied
132 _ControlAnimatorImpl(const _ControlAnimatorImpl& rhs);
135 * Gets the %Animation Name from the ActiveAnimation List attached against specified %AnimationTarget.
138 * @return Animation name
139 * @param[in] index Value at the index to be retrieved
141 Tizen::Base::String GetActiveAnimationAt(int index) const;
144 * Gets the %Animation from the ActiveAnimation List attached against specified %AnimationTarget.
147 * @return Animation Name
148 * @param[in] index Value at the index to be retrieved
149 * @param[in] animTrigger %ControlAnimatorTriggerType
151 Tizen::Base::String GetActiveAnimationAt(int index, ControlAnimatorTriggerType animTrigger) const;
154 * Destroys the %Animation Name from the ActiveAnimation List after the specified %index
157 * @return An error code
158 * @param[in] preActiveAnimationCount ActiveAnimationCount
159 * @exception E_SUCCESS The method was successful.
160 * @exception E_SYSTEM A system error occurred.
161 * @exception E_INVALID_ARG A specified input parameter is invalid.
163 result DestroyAnimation(int preActiveAnimationCount);
166 * Destroys the %Animation from the ActiveAnimation List after the specified %index
169 * @return An error code
170 * @param[in] animTarget AnimationTargetType
171 * @param[in] pAnimBase An object of %AnimationBase
172 * @exception E_SUCCESS The method was successful.
173 * @exception E_SYSTEM A system error occurred.
174 * @exception E_INVALID_ARG A specified input parameter is invalid.
176 result DestroyAnimation(AnimationBase& animBase, AnimationTargetType animTarget);
179 * Gets the ActiveAnimation Count of type the ANimationTarget
182 * @return Total number of ActiveAnimations added to the list
184 int GetActiveAnimationListCount(AnimationTargetType animTarget) const;
187 * Gets the ActiveAnimation Count value
190 * @return Total number of ActiveAnimations added to the list
192 int GetActiveAnimationListCount(void) const;
195 * Removes the %Animation from the ActiveAnimation List at specified index.
198 * @return An error code
199 * @param[in] index Values at the index to be retrieved
200 * @exception E_SUCCESS The method was successful.
201 * @exception E_SYSTEM A system error occurred.
202 * @exception E_INVALID_ARG A specified input parameter is invalid.
204 result RemoveAnimationAt(int index);
207 * Removes all the %Animation from the ActiveAnimation List.
210 * @return An error code
211 * @exception E_SUCCESS The method was successful.
212 * @exception E_SYSTEM A system error occurred.
213 * @exception E_INVALID_ARG A specified input parameter is invalid.
215 result RemoveAllAnimations(void);
218 * Sets an %Animation to a internal Layer.
221 * @return An error code
222 * @param[in] animTarget Property to be animated.
223 * @param[in] animationBase An object of type %AnimationBase.
224 * @param[in] animType ControlAnimatorTriggerType
225 * @param[in] pAnimGroup Animation Group object for sequence and parallel group animation
226 * @exception E_SUCCESS The method was successful.
227 * @exception E_INVALID_ARG The specified parameter is invalid.
228 * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation.
229 * @exception E_SYSTEM A system error occurred.
232 result SetAnimation(AnimationTargetType animTarget, AnimationBase& animationBase, ControlAnimatorTriggerType animType = ANIMATION_TRIGGER_USER, VisualElementAnimationGroup* pAnimGroup = null);
235 * Returns a copy of %AnimationBase object.
238 * @return An error code
239 * @param[in] animTarget Property to be animated.
240 * @param[in] animationBase An object of type %AnimationBase whose copy is to be created
241 * @exception null If the passed argument is invalid.
243 AnimationBase* CloneAnimation(AnimationTargetType animTarget, AnimationBase& animationBase);
246 * Sets the property of the object with specified input
249 * @return An error code
250 * @param[in] animTarget Enumeration of animation target type
251 * @param[in] animationBase An instance of %AnimationBase object
253 result SetControlProperty(AnimationTargetType animTarget, AnimationBase& animationBase);
256 * Checks for the property change is valid on a control
259 * @return An error code
260 * @param[in] animTarget Enumeration of animation target type
261 * @param[in] rect Bounds of a %Control
262 * @param[in] pAnimationBase Animation base object
263 * @param[in] animTrigger Animation trigger type
264 * @remarks %This function returns whether property is changeable or not. @n
265 * If @c true, property can be changed. @n
266 * If @c false, property cannot be changed.
268 bool IsAnimatable(AnimationTargetType animTarget, Tizen::Graphics::Rectangle& rect, AnimationBase* pAnimationBase = null
269 , ControlAnimatorTriggerType animTrigger = ANIMATION_TRIGGER_USER) const;
272 * Starts the custom implicit %animation
275 * @return An error code
276 * @param[in] animTrigger %AnimationTriggerType
277 * @param[in] x x position of control
278 * @param[in] y y position of control
279 * @param[in] width width of control
280 * @param[in] height height of control
281 * @param[in] showState showState of Control
283 * @exception E_SUCCESS The method was successful.
284 * @exception E_INVALID_ARG The specified parameter is invalid.
285 * @exception E_SYSTEM A system error occurred.
287 result StartCustomImplicitAnimation(ControlAnimatorTriggerType triggerType, int x, int y, int width, int height, bool showState);
290 * Sets the Custom Implicit Animation parameters
293 * @return An error code
294 * @param[in] triggerType %AnimationTriggerType
295 * @param[in] animationBase %AnimationBase object
296 * @param[in] bounds %Bounds of the %Control overwritten with corresponding new custom animation values
297 * @param[in] showState %showState of the %Control overwritten with corresponding new custom animation values
298 * @param[in] lastTargetOccurence variable to find whether the Animation attached against the equivalent AnimationTarget is the last one in the list or not
300 * @exception E_SUCCESS The method was successful.
301 * @exception E_INVALID_ARG The specified parameter is invalid.
302 * @exception E_SYSTEM A system error occurred.
304 result SetCustomImplicitAnimationParams(ControlAnimatorTriggerType triggerType, AnimationBase& animationBase, Tizen::Graphics::Rectangle& bounds, bool showState, bool lastTargetOccurence = false);
306 * returns whether animation supported by underlying platform or not
309 * @return An error code
310 * @remarks %This function returns whether animation is supported or not. @n
311 * If @c true, animation supported. @n
312 * If @c false, animation not supported.
314 bool IsAnimationSupported(void) const;
317 * Sets the property of the Control with specified input
320 * @return An error code
321 * @param[in] animTarget Enumeration of animation target type
322 * @param[in] animationBase An instance of %AnimationBase object
324 result SetControlLogicalBounds(AnimationTargetType animTarget, AnimationBase& animationBase);
327 * Sets the property of the Control with specified input
330 * @return An error code
331 * @param[in] animTarget Enumeration of animation target type
332 * @param[in] animationBase An instance of %AnimationBase object
334 result SetControlShowState(AnimationTargetType animTarget, AnimationBase& animationBase);
337 * This function will be called to Stop All Animations
340 * @exception E_SUCCESS The method was successful.
341 * @exception E_INVALID_ARG The specified parameter is invalid.
342 * @exception E_SYSTEM A system error occurred.
344 result StopAllAnimations(void);
347 * This function will be called to Stop an animation based on trigger type
350 * @exception E_SUCCESS The method was successful.
351 * @exception E_INVALID_ARG The specified parameter is invalid.
352 * @exception E_SYSTEM A system error occurred.
354 result StopAnimation(ControlAnimatorTriggerType animTrigger);
357 * Delete & frees the memory used by the object
360 * @return An error code
361 * @exception E_SUCCESS The method was successful.
362 * @exception E_SYSTEM Failed to free the resource possessed by this instance.
364 result Dispose(void);
367 * Adds the Control animator event listener to the listeners list.
370 * @return An error code
371 * @param[in] listener Control animator event listener
372 * @exception E_SUCCESS The method was successful.
373 * @exception E_SYSTEM A system error occurred.
374 * @exception E_INVALID_ARG A specified input parameter is invalid.
376 result AddControlAnimatorEventListener(const IControlAnimatorEventListener& listener);
380 * Removes the Control animator event listener from the listeners list.
383 * @return An error code
384 * @param[in] listener Control animator event listener
385 * @exception E_SUCCESS The method was successful.
386 * @exception E_SYSTEM A system error occurred.
387 * @exception E_INVALID_ARG A specified input parameter is invalid.
389 result RemoveControlAnimatorEventListener(const IControlAnimatorEventListener& listener);
392 * Adds the Control detailed animator event listener to the listeners list.
395 * @return An error code
396 * @param[in] listener Control animator event listener
397 * @exception E_SUCCESS The method was successful.
398 * @exception E_SYSTEM A system error occurred.
399 * @exception E_INVALID_ARG A specified input parameter is invalid.
401 result AddControlAnimatorDetailedEventListener(const IControlAnimatorDetailedEventListener& listener);
404 * Removes the Detailed Control animator event listener from the listeners list.
407 * @return An error code
408 * @param[in] listener Control animator event listener
409 * @exception E_SUCCESS The method was successful.
410 * @exception E_SYSTEM A system error occurred.
411 * @exception E_INVALID_ARG A specified input parameter is invalid.
413 result RemoveControlAnimatorDetailedEventListener(const IControlAnimatorDetailedEventListener& listener);
415 * Returns animation Index based on animation name.
418 * @return Animation index in the active animation list
419 * @param[in] animName unique name of animation
421 int GetActiveAnimationIndex(const Tizen::Base::String& animName) const;
424 * Sets the Bounds property of the object with specified input
426 * @return An error code
427 * @param[in] animTarget Enumeration of animation target type
428 * @param[in] animationBase An instance of %AnimationBase object
430 result SetPrevAnimationBoundsProperty(AnimationTargetType animTarget, AnimationBase& animationBase);
432 * Sets animation target status
435 * @return An error code
436 * @param[in] triggerType Control animator trigger type
437 * @exception E_SUCCESS The method was successful.
438 * @exception E_SYSTEM A system error occurred.
439 * @exception E_INVALID_ARG A specified input parameter is invalid.
441 result SetAnimationTargetStatus(ControlAnimatorTriggerType triggerType);
444 * Sets animation target status
447 * @return An error code
448 * @param[in] animTarget Control animator Target type
449 * @param[in] pAnimationBase Animation Base object
450 * @param[in] pTimingFunction Timing function ex: Linear
451 * @exception E_SUCCESS The method was successful.
452 * @exception E_SYSTEM A system error occurred.
453 * @exception E_INVALID_ARG A specified input parameter is invalid.
455 result SetKeyFrameAnimation(AnimationTargetType animTarget, AnimationBase* pAnimationBase, const IVisualElementAnimationTimingFunction* pTimingFunction, VisualElementAnimation* pAnimation);
458 * Sets animation target status
461 * @return An error code
462 * @param[in] animGroup Animation Group object.
463 * @exception E_SUCCESS The method was successful.
464 * @exception E_SYSTEM A system error occurred.
465 * @exception E_INVALID_ARG A specified input parameter is invalid.
467 result SetGroupAnimation(AnimationGroup* pAnimGrp);
470 * Disables / Enables Propagation of properties from model layer to presentation layer
473 * @return An error code
474 * @param[in] state true or false
475 * @exception E_SUCCESS The method was successful.
476 * @exception E_SYSTEM A system error occurred.
477 * @exception E_INVALID_ARG A specified input parameter is invalid.
479 result DisableImplicitAnimation(bool& state);
482 * Disables / Enables Implicit animation at Visual element
485 * @return An error code
486 * @param[in] state true or false
487 * @exception E_SUCCESS The method was successful.
488 * @exception E_SYSTEM A system error occurred.
489 * @exception E_INVALID_ARG A specified input parameter is invalid.
491 result DisableVisualElementPropagation(bool& state);
494 * Returns the stored logical bounds.
497 * @return Logical bounds
499 Tizen::Graphics::Rectangle
500 GetLogicalBounds(void) const
502 return __logicalBoundsHolder;
506 * Sets logical bounds.
510 * @param[in] rectangle Logical bounds
513 SetLogicalBounds(Tizen::Graphics::Rectangle rect)
515 __logicalBoundsHolder = rect;
519 * Returns the Animation type for a given trigger type
522 * @param[in] triggerType trigger for animation
523 * Allowed values ANIMATION_TRIGGER_POSITION_CHANGE-1 to ANIMATION_TRIGGER_SHOW_STATE_CHANGE-1
524 * ANIMATION_TRIGGER_POSITION_CHANGE = 1, //Stored at index 0 [NONE (or) PARALLEL (or) SEQUENTIAL]
525 * ANIMATION_TRIGGER_SIZE_CHANGE = 2, //Stored at index 1 [NONE (or) PARALLEL (or) SEQUENTIAL]
526 * ANIMATION_TRIGGER_SHOW_STATE_CHANGE = 3, //Stored at index 2 [NONE (or) PARALLEL (or) SEQUENTIAL]
528 * @return Animation type [NONE (or) PARALLEL (or) SEQUENTIAL]
530 StoredPropertyAnimationGroupType
531 GetStoredPropertyAnimationGroupType(int triggerType) const
533 return __propertyAnimationGroupType[triggerType];
537 * Sets logical bounds.
541 * @param[in] triggerType
542 * Allowed values ANIMATION_TRIGGER_POSITION_CHANGE-1 to ANIMATION_TRIGGER_SHOW_STATE_CHANGE-1
543 * ANIMATION_TRIGGER_POSITION_CHANGE = 1, //Stored at index 0
544 * ANIMATION_TRIGGER_SIZE_CHANGE = 2, //Stored at index 1
545 * ANIMATION_TRIGGER_SHOW_STATE_CHANGE = 3, //Stored at index 2
546 * @param[in] animationType Type of animation [NONE (or) PARALLEL (or) SEQUENTIAL]
549 SetStoredPropertyAnimationGroupType(int triggerType, StoredPropertyAnimationGroupType groupType)
551 __propertyAnimationGroupType[triggerType] = groupType;
555 * Returns group of animations for a particular trigger type
558 * @param[in] triggerType
559 * Allowed values ANIMATION_TRIGGER_POSITION_CHANGE-1 to ANIMATION_TRIGGER_SHOW_STATE_CHANGE-1
560 * ANIMATION_TRIGGER_POSITION_CHANGE = 1, //Stored at index 0
561 * ANIMATION_TRIGGER_SIZE_CHANGE = 2, //Stored at index 1
562 * ANIMATION_TRIGGER_SHOW_STATE_CHANGE = 3, //Stored at index 2
563 * @return Returns group of animations for a particular trigger type
566 GetPropertyGroupList(int triggerType) const
568 return __pPropertyAnimationGroupList[triggerType];
572 * Sets animation group to a trigger type
575 * @param[in] triggerType
577 * Allowed values ANIMATION_TRIGGER_POSITION_CHANGE-1 to ANIMATION_TRIGGER_SHOW_STATE_CHANGE-1
578 * ANIMATION_TRIGGER_POSITION_CHANGE = 1, //Stored at index 0
579 * ANIMATION_TRIGGER_SIZE_CHANGE = 2, //Stored at index 1
580 * ANIMATION_TRIGGER_SHOW_STATE_CHANGE = 3, //Stored at index 2
584 SetPropertyGroupList(int triggerType, AnimationGroup* animGroup)
586 __pPropertyAnimationGroupList[triggerType] = animGroup;
590 * Returns the show state of control
593 * @return Returns the show state of control
595 bool GetShowState(void) const
597 return __showStateHolder;
605 * @param[in] showState Show state
608 SetShowState(bool showState)
610 __showStateHolder = showState;
614 * Returns the state of control animator (playing/stopped)
617 * @return State of control animator (playing/stopped)
620 GetAnimatorStatus(void) const
622 return __animatorStatus;
626 * Stores whether a target is animating or not
630 * @param[in] animatorStatus State of control animator (playing/stopped)
633 SetAnimatorStatus(AnimatorStatus animatorStatus)
635 __animatorStatus = animatorStatus;
639 * Stores whether a target is animating or not
643 * @param[in] target Target type
644 * @param[in] animating or not animating
647 SetAnimationTargetAnimating(int target, bool animating)
649 __isAnimationTargetAnimating[target] = animating;
653 * Returns the whether the animation target is animating
656 * @return Animation target is currently animating or not
659 IsAnimationTargetAnimating(int target) const
661 return __isAnimationTargetAnimating[target];
665 * Returns reference to control
668 * @return Reference to control
671 GetControl(void) const
677 * Stores control pointer
681 * @param[in] control Reference to the control
684 SetControl(Control& control)
686 __pControl = &control;
690 * This function will be called when the animation is started.
693 * @param[in] target UIObject that animation is applied to.
694 * @param[in] animation Animation that is started.
696 void OnVisualElementAnimationStarted(const VisualElementAnimation& animation, const Tizen::Base::String& keyName, VisualElement& target);
699 * This function will be called when the animation is repeated.
702 * @param[in] target UIObject that animation is applied to.
703 * @param[in] animation Animation that is repeated.
704 * @param[in] currentRepeatCount repeat count
706 void OnVisualElementAnimationRepeated(const VisualElementAnimation& animation, const Tizen::Base::String& keyName, VisualElement& target, long currentRepeatCount);
709 * This function will be called when the animation is stopped.
712 * @param[in] target UIObject that animation is applied to.
713 * @param[in] animation Animation that is stopped.
714 * @param[in] completed Whether animation is completed normally or canceled in the middle of running.
716 void OnVisualElementAnimationFinished(const VisualElementAnimation& animation, const Tizen::Base::String& keyName, VisualElement& target, bool completedNormally);
719 * This function will be called when the animation is stopped.
722 * @param[in] animation Visual Element animation.
723 * @param[in] keyName Animation name.
724 * @param[in] currentValue Current value of animation.
726 void OnTickOccurred(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, const Tizen::Ui::Variant& currentValue);
729 * This is the assignment operator implementation for this class. @n
733 _ControlAnimatorImpl& operator =(const _ControlAnimatorImpl& rhs);
737 * Structure used for storing Active Animations
743 struct ActiveAnimation
745 ControlAnimatorTriggerType animType;
746 AnimationTargetType animTarget;
747 AnimationBase* pAnimationBase;
748 VisualElementAnimation* pAnimation;
749 Tizen::Base::String animName;
750 Tizen::Ui::Animations::BezierTimingFunction* pBezierTimingFunction;
752 ActiveAnimation(void)
754 animTarget = ANIMATION_TARGET_NONE;
755 animType = ANIMATION_TRIGGER_USER;
756 pAnimationBase = null;
758 animName = Tizen::Base::String("");
759 pBezierTimingFunction = null;
761 ~ActiveAnimation(void)
765 bool operator ==(const ActiveAnimation& rhs) const;
766 bool operator !=(const ActiveAnimation& rhs) const;
769 * The List maintaining the Active Animations
773 Tizen::Base::Collection::ArrayListT< ActiveAnimation >* __pActiveAnimationList;
776 * This is the object of control.
780 //TODO: @remark: This object need not be deleted in ControlAnimator scope
781 Tizen::Ui::Control* __pControl;
784 * This is the object _ControlImpl.
788 //TODO: @remark: This object need not be deleted in ControlAnimator scope
789 Tizen::Ui::_ControlImpl* __pControlImpl;
791 * The animation status (play / stopped)
795 AnimatorStatus __animatorStatus;
798 * PROPERTY_GROUP_TYPE_NONE if the __pPropertyAnimationGroupList is not populated with user defined custom defined implicit animations
801 * ANIMATION_TRIGGER_POSITION_CHANGE = 1, //Stored at index 0 [NONE (or) PARALLEL (or) SEQUENTIAL]
802 * ANIMATION_TRIGGER_SIZE_CHANGE = 2, //Stored at index 1 [NONE (or) PARALLEL (or) SEQUENTIAL]
803 * ANIMATION_TRIGGER_SHOW_STATE_CHANGE = 3, //Stored at index 2 [NONE (or) PARALLEL (or) SEQUENTIAL]
805 StoredPropertyAnimationGroupType __propertyAnimationGroupType[ANIMATION_TRIGGER_SHOW_STATE_CHANGE];
808 * This is the object of AnimationGroup.
811 * ANIMATION_TRIGGER_POSITION_CHANGE = 1, //Stored at index 0 [NONE (or) PARALLEL (or) SEQUENTIAL]
812 * ANIMATION_TRIGGER_SIZE_CHANGE = 2, //Stored at index 1 [NONE (or) PARALLEL (or) SEQUENTIAL]
813 * ANIMATION_TRIGGER_SHOW_STATE_CHANGE = 3, //Stored at index 2 [NONE (or) PARALLEL (or) SEQUENTIAL]
815 * @remarks The array size should be changed if anything is added to ControlAnimationTriggerType.
817 Tizen::Ui::Animations::AnimationGroup* __pPropertyAnimationGroupList[ANIMATION_TRIGGER_SHOW_STATE_CHANGE];
819 * Array of bool to keep track whether an %AnimationTarget is being animated or not.
822 * ANIMATION_TARGET_SIZE at index - 0
823 * ANIMATION_TARGET_POSITION at index - 1
824 * ANIMATION_TARGET_ALPHA at index - 2
825 * ANIMATION_TARGET_ORIENTATION at index - 3
827 bool __isAnimationTargetAnimating[ANIMATION_TARGET_MAX];
830 * LogicalBounds Holder
834 Tizen::Graphics::Rectangle __logicalBoundsHolder;
841 bool __showStateHolder;
844 * Holder for number of animations of same TargetType in AnimationGroupSequential
851 * LogicalBounds Holder
855 Tizen::Graphics::Rectangle __prevAnimationBoundsHolder;
858 * sequentialGroupAnimation or parallel Animation group
862 bool __sequentialGroupAnimation;
865 * sequentialGroupAnimation delay
873 * This is object of ControlAnimator class
877 Tizen::Ui::Animations::ControlAnimator* __pControlAnimator;
880 * This is object of ControlAnimator class
884 Tizen::Ui::Animations::VisualElement* __pVisualElement;
887 * This is the list controlanimator event listeners
891 Tizen::Base::Collection::LinkedListT< IControlAnimatorEventListener* >* __pAnimStatusEventListener;
894 * This is the list controlanimator event listeners
898 Tizen::Base::Collection::LinkedListT< IControlAnimatorDetailedEventListener* >* __pAnimDetailedEventListener;
901 * This is Id or each animation
907 * This is name for group animation
911 Tizen::Base::String __groupName;
913 * This is to hold presentation bounds
917 Tizen::Graphics::FloatRectangle __presentationBounds;
919 friend class Tizen::Ui::Control;
920 }; // _ControlAnimatorImpl
922 }}} // Tizen::Ui::Animations
924 #endif //_FUI_ANIM_INTERNAL_CONTROL_ANIMATOR_IMPL_H_