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_TransactionNode.h
20 * @brief This is the header file for the _TransactionNode class.
22 * This header file contains the declarations of the _TransactionNode class.
25 #ifndef _FUI_ANIM_INTERNAL_TRANSACTION_NODE_H_
26 #define _FUI_ANIM_INTERNAL_TRANSACTION_NODE_H_
28 #include <FBaseErrorDefine.h>
29 #include <FBaseColArrayList.h>
30 #include <FBaseColHashMapT.h>
32 #include "FUiAnim_VisualElementAnimationImpl.h"
33 #include "FUiAnim_Debug.h"
35 #include "FUiAnim_VariantEx.h"
38 namespace Tizen { namespace Ui { namespace Animations
41 class IAnimationTransactionEventListener;
46 static unsigned int GetTime(bool loopTime = false);
50 : public Tizen::Base::Object
67 _PENDING_MODE_REMOVING,
71 _AnimationData(VisualElement& target, const Tizen::Base::String* pName, VisualElementAnimation& animation);
72 virtual ~_AnimationData(void);
75 VisualElementAnimation& GetAnimation(void) const;
76 Tizen::Base::String GetName(void) const;
77 VisualElement& GetTarget(void) const;
79 result SetBaseTime(unsigned int baseTime);
81 void SetStatus(_AnimationStatus status) { __status = status; }
82 _AnimationStatus GetStatus(void) const { return __status; }
84 void SetPendingMode(_PendingMode mode) { __pendingMode = mode; }
85 _PendingMode GetPendingMode(void) const { return __pendingMode; }
87 bool IsRemoved(void) const;
89 void FillValueForProperty(void);
91 Variant CalculateValueByTime(unsigned int currentTime);
93 void NotifyAnimationStatus(bool completed);
94 void NotifyAnimationFinished(bool completed);
96 void OnTickOccurred(VisualElement& target, const Tizen::Ui::Variant& currentValue);
100 _AnimationData(const _AnimationData&);
101 _AnimationData& operator =(const _AnimationData&);
103 Variant CalculateValue(void);
106 VisualElement& __target;
107 Tizen::Base::String __name;
108 VisualElementAnimation& __animation;
110 _VariantEx __startValue;
111 _VariantEx __endValue;
113 unsigned int __totalDuration;
114 unsigned int __baseTime;
115 long __currentRepeatCount;
121 _AnimationStatus __status;
123 _PendingMode __pendingMode;
125 #ifdef VE_DEBUG_MODULE
130 class _TransactionNode
131 : public _VisualElementAnimationImpl
134 enum _TransactionStatus
144 _TransactionNode(void);
145 _TransactionNode(const _TransactionNode& node);
146 virtual ~_TransactionNode(void);
148 virtual bool Equals(const Object& obj) const;
150 int GetId(void) const;
152 _TransactionNode* GetParent(void) const;
153 result SetParent(_TransactionNode& parent);
155 result SetDefaultEventListener(const IAnimationTransactionEventListener* pListener);
157 IAnimationTransactionEventListener* GetEventListener(void) const;
158 result SetEventListener(const IAnimationTransactionEventListener* pListener);
160 bool IsImplicitAnimationEnabled(void) const;
161 result SetImplicitAnimationEnabled(bool enable);
163 int GetChildrenCount(void) const;
164 _TransactionNode* GetChild(int transactionId) const;
165 _TransactionNode* GetLastChild(void) const;
167 result AddChild(_TransactionNode& child);
168 void RemoveChild(int transactionId);
169 void RemoveChild(_TransactionNode& child);
171 int GetAnimationCount(void) const;
172 result AddAnimation(VisualElement& target, const Tizen::Base::String* pKeyName, VisualElementAnimation& animation);
173 result RemoveChildrenAnimation(VisualElement& target, const Tizen::Base::String& keyName);
174 void RemoveChildrenAnimationByProperty(VisualElement& target, const Tizen::Base::String& property);
175 void RemoveChildrenAllAnimations(VisualElement& target);
177 const VisualElementAnimation* GetChildrenAnimation(VisualElement& target, const Tizen::Base::String& keyName) const;
178 const VisualElementAnimation* GetChildrenAnimationByProperty(VisualElement& target, const Tizen::Base::String& property) const;
180 void SetChildrenBaseTime(unsigned int baseTime, bool self = true);
182 virtual void Commit(void);
183 bool IsCommitted(bool ancestors = false) const;
185 bool IsEmpty(void) const;
187 bool IsRunning(void) const;
188 virtual bool IsRemovable(void) const;
190 virtual void NotifyTransactionStatus(bool completed);
192 void ProcessAnimationTick(unsigned int tick);
195 _TransactionNode& operator =(const _TransactionNode& rhs);
197 void RemoveAll(void);
199 result AddAnimationData(_AnimationData& animationData);
200 void RemoveAnimationData(_AnimationData& animationData);
201 result SetAnimationDataAsPending(_AnimationData& animationData, bool remove, bool completed = false);
203 _AnimationData* GetAnimationDataInPending(VisualElement& target, const Tizen::Base::String& keyName) const;
204 _AnimationData* GetAnimationDataInPendingByProperty(VisualElement& target, const Tizen::Base::String& property) const;
206 result RemoveAnimation(VisualElement& target, const Tizen::Base::String& keyName);
207 void RemoveAnimationByProperty(VisualElement& target, const Tizen::Base::String& property);
208 void RemoveAllAnimations(void);
209 void RemoveAllAnimations(VisualElement& target);
211 const VisualElementAnimation* GetAnimation(VisualElement& target, const Tizen::Base::String& property) const;
212 const VisualElementAnimation* GetAnimationByProperty(VisualElement& target, const Tizen::Base::String& property) const;
214 void SetBaseTime(unsigned int baseTime);
216 void ReservedRemove(bool remove = true);
217 bool IsReservedRemove(void) const;
219 virtual void CalculateProgress(unsigned int currentTime);
221 bool RemoveAnimationByDuplicatedProperty(_AnimationData& animationData);
223 bool IsInAnimationTick(void);
224 void ProcessPendingAnimations(void);
225 void OnAnimationTick(unsigned int tick);
230 _TransactionNode* __pParent;
231 _TransactionNode* __pRoot;
233 IAnimationTransactionEventListener* __pDefaultListener;
234 IAnimationTransactionEventListener* __pListener;
236 bool __isImplicitAnimationEnabled;
239 bool __isReservedRemove;
240 bool __isInAnimationTick;
242 _TransactionStatus __status;
244 unsigned int __baseTime;
245 unsigned int __adjustedBaseTime;
246 long __currentRepeatCount;
248 Tizen::Base::Collection::ArrayList __children;
249 Tizen::Base::Collection::ArrayList __pendingAnimations;
250 Tizen::Base::Collection::HashMapT<VisualElement*, Tizen::Base::Collection::ArrayList*> __animations;
251 }; // _TransactionNode
253 class _AnimationGroupNode
254 : public _TransactionNode
257 _AnimationGroupNode(VisualElement& target, const Tizen::Base::String* pName, VisualElementAnimation& animation);
258 virtual ~_AnimationGroupNode(void);
260 VisualElementAnimation& GetAnimation(void) const;
261 bool IsEqual(VisualElement& target, const Tizen::Base::String& keyName) const;
263 virtual void Commit(void);
265 virtual bool IsRemovable(void) const;
267 virtual void NotifyTransactionStatus(bool completed);
270 _AnimationGroupNode(void);
271 _AnimationGroupNode(const _AnimationGroupNode& rhs);
272 _AnimationGroupNode& operator =(const _AnimationGroupNode& rhs);
274 virtual void CalculateProgress(unsigned int currentTime);
276 VisualElement& __target;
277 Tizen::Base::String __name;
278 VisualElementAnimation& __animation;
279 bool __deleteAnimation;
281 unsigned int __totalDuration;
284 #ifdef VE_DEBUG_MODULE
287 }; // _AnimationGroupNode
289 }}} // Tizen::Ui::Animations
291 #endif // _FUI_ANIM_INTERNAL_TRANSACTION_NODE_H_