Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / animations / FUiAnim_AnimationManager.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://floralicense.org/license/
10 //
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.
16 //
17
18 /**
19  * @file        FUiAnim_AnimationManager.h
20  * @brief       This is the header file for the _AnimationManager class.
21  *
22  * This header file contains the declarations of the _AnimationManager class.
23  */
24
25 #ifndef _FUI_ANIM_INTERNAL_ANIMATION_MANAGER_H_
26 #define _FUI_ANIM_INTERNAL_ANIMATION_MANAGER_H_
27
28 #include <FOspConfig.h>
29 #include <FBaseErrorDefine.h>
30 #include <FBaseColArrayListT.h>
31
32 #include <FUiAnimVisualElement.h>
33
34
35 namespace Tizen { namespace Ui { namespace Animations
36 {
37
38 class IAnimationTransactionEventListener;
39 class IVisualElementAnimationTimingFunction;
40 class IVisualElementAnimationValueInterpolator;
41 class VisualElementAnimation;
42 class VisualElementAnimationGroup;
43 class _RootVisualElement;
44 class _TransactionNode;
45
46 class _AnimationManager
47 {
48 public:
49         static _AnimationManager* GetInstance(void);
50         static result CreateInstance(void);
51         static void ReleaseInstance(void);
52
53         //for animation
54         result AddAnimation(VisualElement& target, const Tizen::Base::String* pKeyName, VisualElementAnimation& animation);
55         result RemoveAnimation(VisualElement& target, const Tizen::Base::String& keyName);
56         void RemoveAnimationForProperty(VisualElement& target, const Tizen::Base::String& property);
57         void RemoveAllAnimations(VisualElement& target);
58         bool DoesAnimationExist(VisualElement& target, const Tizen::Base::String& keyName) const;
59         bool DoesAnimationExistForProperty(VisualElement& target, const Tizen::Base::String& keyName) const;
60         VisualElementAnimation* GetAnimationN(VisualElement& target, const Tizen::Base::String& keyName) const;
61         VisualElementAnimation* GetAnimationForPropertyN(VisualElement& target, const Tizen::Base::String& property) const;
62
63         //for transaction
64         int BeginTransaction(void);
65         int BeginGroupTransaction(VisualElement& target, const Tizen::Base::String* pKeyName, VisualElementAnimation& animation);
66         result CommitTransaction(void);
67         result DiscardTransaction(void);
68         result StopTransaction(int transactionId);
69         result CancelTransaction(int transactionId);
70         bool IsTransactionRunning(int transactionId) const;
71         bool IsImplicitAnimationEnabled(void) const;    // OnCurrentTransaction
72         _TransactionNode* GetCurrentTransaction(bool withGroup = true) const;
73         void SetTransactionEventListener(const IAnimationTransactionEventListener* pListener);
74
75         void ProcessAnimationTick(void);
76         bool IsAnimating(void) const
77         {
78                 return __isAnimating;
79         }
80
81 private:
82         _AnimationManager(void);
83         ~_AnimationManager(void);
84
85         _AnimationManager(const _AnimationManager&);
86         _AnimationManager& operator =(const _AnimationManager&);
87
88         result Construct(void);
89         result Release(void);
90
91         void SetAnimatorEnabled(bool animating);
92
93 private:
94         static _AnimationManager* __pInstance;
95
96         bool __isAnimating;
97         bool __isInAnimationTick;
98
99         _TransactionNode* __pRootTransaction;
100         _TransactionNode* __pCurrentTransaction;
101         _TransactionNode* __pCurrentTransactionExceptGroup;
102
103         IAnimationTransactionEventListener* __pDefaultTransactionEventListener;
104         const IVisualElementAnimationTimingFunction* __pDefaultTimingFunction;
105         const IVisualElementAnimationValueInterpolator* __pDefaultInterpolator;
106
107         friend class _DisplayManager;
108 };              // _AnimationManager
109
110 }}}             // Tizen::Ui::Animations
111
112 #endif //_FUI_ANIM_INTERNAL_ANIMATION_MANAGER_H_
113