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 FUiAnimAnimationTransaction.cpp
20 * @brief This file contains implementation of AnimationTransaction class
22 * This file contains implementation of AnimationTransaction class.
25 #include <FBaseSysLog.h>
26 #include <FBaseColStackT.h>
28 #include <FUiAnimAnimationTransaction.h>
30 #include "FUiAnim_TransactionNode.h"
31 #include "FUiAnim_AnimationManager.h"
34 using namespace Tizen::Base;
35 using namespace Tizen::Base::Collection;
36 using namespace Tizen::Base::Runtime;
37 using namespace Tizen::Ui;
38 using namespace Tizen::Ui::Animations;
41 namespace Tizen { namespace Ui { namespace Animations
44 AnimationTransaction::~AnimationTransaction(void)
50 AnimationTransaction::Begin(void)
52 int transactionId = _AnimationManager::GetInstance()->BeginTransaction();
53 SysTryReturnResult(NID_UI_ANIM, (transactionId != -1), E_OUT_OF_MEMORY, "Propagating.");
59 AnimationTransaction::Begin(int& transactionId)
61 transactionId = _AnimationManager::GetInstance()->BeginTransaction();
62 SysTryReturnResult(NID_UI_ANIM, (transactionId != -1), E_OUT_OF_MEMORY, "Propagating.");
68 AnimationTransaction::Commit(void)
70 result r = _AnimationManager::GetInstance()->CommitTransaction();
71 SysTryReturnResult(NID_UI_ANIM, (r == E_SUCCESS), r, "Propagating.");
77 AnimationTransaction::Stop(int transactionId)
79 SysTryReturnResult(NID_UI_ANIM, (transactionId > 0), E_INVALID_ARG, "Invalid argument(s) is used. transactionId = %d", transactionId);
81 result r = _AnimationManager::GetInstance()->StopTransaction(transactionId);
82 SysTryReturnResult(NID_UI_ANIM, (r == E_SUCCESS), r, "Propagating.");
88 AnimationTransaction::Discard(void)
90 result r = _AnimationManager::GetInstance()->DiscardTransaction();
91 SysTryReturnResult(NID_UI_ANIM, (r == E_SUCCESS), r, "Propagating.");
96 AnimationTransactionStatus
97 AnimationTransaction::GetStatus(int transactionId)
99 SysTryReturn(NID_UI_ANIM, (transactionId > 0), ANIMATION_TRANSACTION_STATUS_STOPPED, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(s) is used. transactionId = %d.", transactionId);
101 if (_AnimationManager::GetInstance()->IsTransactionRunning(transactionId))
103 return ANIMATION_TRANSACTION_STATUS_PLAYING;
106 return ANIMATION_TRANSACTION_STATUS_STOPPED;
110 AnimationTransaction::SetTransactionEventListener(IAnimationTransactionEventListener* pListener)
112 _AnimationManager::GetInstance()->SetTransactionEventListener(pListener);
118 AnimationTransaction::SetCurrentTransactionEventListener(IAnimationTransactionEventListener* pListener)
120 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
121 SysTryReturnResult(NID_UI_ANIM, (pNode != null), E_INVALID_OPERATION, "Transaction isn't opened.");
123 result r = pNode->SetEventListener(pListener);
124 SysTryReturnResult(NID_UI_ANIM, (r == E_SUCCESS), r, "Propagating.");
130 AnimationTransaction::SetVisualElementImplicitAnimationEnabled(bool enable)
132 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
133 SysTryReturnResult(NID_UI_ANIM, (pNode != null), E_INVALID_OPERATION, "Transaction isn't opened.");
135 result r = pNode->SetImplicitAnimationEnabled(enable);
136 SysTryReturnResult(NID_UI_ANIM, (r == E_SUCCESS), r, "Propagating.");
142 AnimationTransaction::SetVisualElementAnimationStatusEventListener(IVisualElementAnimationStatusEventListener* pListener)
144 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
145 SysTryReturnResult(NID_UI_ANIM, (pNode != null), E_INVALID_OPERATION, "Transaction isn't opened.");
147 pNode->SetStatusEventListener(pListener);
153 AnimationTransaction::SetVisualElementAnimationTimingFunction(const IVisualElementAnimationTimingFunction* pTimingFunction)
155 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
156 SysTryReturnResult(NID_UI_ANIM, (pNode != null), E_INVALID_OPERATION, "Transaction isn't opened.");
158 pNode->SetTimingFunction(pTimingFunction);
164 AnimationTransaction::SetVisualElementAnimationValueInterpolator(const IVisualElementAnimationValueInterpolator* pValueInterpolator)
166 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
167 SysTryReturnResult(NID_UI_ANIM, (pNode != null), E_INVALID_OPERATION, "Transaction isn't opened.");
169 pNode->SetValueInterpolator(pValueInterpolator);
175 AnimationTransaction::SetVisualElementAnimationDuration(long milliseconds)
177 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
178 SysTryReturnResult(NID_UI_ANIM, (pNode != null), E_INVALID_OPERATION, "Transaction isn't opened.");
179 SysTryReturnResult(NID_UI_ANIM, (milliseconds >= 0 && milliseconds >= pNode->GetOffset()),
180 E_INVALID_ARG, "Invalid argument(s) is used. milliseconds = %ld", milliseconds);
182 pNode->SetDuration(milliseconds);
188 AnimationTransaction::GetVisualElementAnimationDuration(void)
190 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
191 SysTryReturn(NID_UI_ANIM, (pNode != null), -1, E_INVALID_OPERATION, "[E_INVALID_OPERATION] Transaction isn't opened.");
193 return pNode->GetDuration();
197 AnimationTransaction::SetVisualElementAnimationOffset(long milliseconds)
199 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
200 SysTryReturnResult(NID_UI_ANIM, (pNode != null), E_INVALID_OPERATION, "Transaction isn't opened.");
201 SysTryReturnResult(NID_UI_ANIM, (milliseconds >= 0 && milliseconds <= pNode->GetDuration()),
202 E_INVALID_ARG, "Invalid argument(s) is used. milliseconds = %ld", milliseconds);
204 pNode->SetOffset(milliseconds);
210 AnimationTransaction::GetVisualElementAnimationOffset(void)
212 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
213 SysTryReturn(NID_UI_ANIM, (pNode != null), -1, E_INVALID_OPERATION, "[E_INVALID_OPERATION] Transaction isn't opened.");
215 return pNode->GetOffset();
219 AnimationTransaction::SetVisualElementAnimationDelay(long milliseconds)
221 SysTryReturnResult(NID_UI_ANIM, (milliseconds >= 0), E_INVALID_ARG, "Invalid argument(s) is used. milliseconds = %ld", milliseconds);
223 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
224 SysTryReturnResult(NID_UI_ANIM, (pNode != null), E_INVALID_OPERATION, "Transaction isn't opened.");
226 pNode->SetDelay(milliseconds);
232 AnimationTransaction::GetVisualElementAnimationDelay(void)
234 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
235 SysTryReturn(NID_UI_ANIM, (pNode != null), -1, E_INVALID_OPERATION, "[E_INVALID_OPERATION] Transaction isn't opened.");
237 return pNode->GetDelay();
241 AnimationTransaction::SetVisualElementAnimationRepeatCount(long count)
243 SysTryReturnResult(NID_UI_ANIM, (count >= 0), E_INVALID_ARG, "Invalid argument(s) is used. count = %ld", count);
245 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
246 SysTryReturnResult(NID_UI_ANIM, (pNode != null), E_INVALID_OPERATION, "Transaction isn't opened.");
248 pNode->SetRepeatCount(count);
254 AnimationTransaction::GetVisualElementAnimationRepeatCount(void)
256 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
257 SysTryReturn(NID_UI_ANIM, (pNode != null), -1, E_INVALID_OPERATION, "[E_INVALID_OPERATION] Transaction isn't opened.");
259 return pNode->GetRepeatCount();
263 AnimationTransaction::SetVisualElementAnimationAutoReverseEnabled(bool autoReverse)
265 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
266 SysTryReturnResult(NID_UI_ANIM, (pNode != null), E_INVALID_OPERATION, "Transaction isn't opened.");
268 pNode->SetAutoReverseEnabled(autoReverse);
274 AnimationTransaction::IsVisualElementAnimationAutoReverseEnabled(void)
276 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
277 SysTryReturn(NID_UI_ANIM, (pNode != null), false, E_INVALID_OPERATION, "[E_INVALID_OPERATION] Transaction isn't opened.");
279 bool autoReverse = pNode->IsAutoReverseEnabled();
281 result r = GetLastResult();
282 SysTryReturnResult(NID_UI_ANIM, (r == E_SUCCESS), r, "Propagating.");
288 AnimationTransaction::SetVisualElementAnimationScaleRatio(float scaleRatio)
290 SysTryReturnResult(NID_UI_ANIM, (scaleRatio > 0.f), E_INVALID_ARG, "Invalid argument(s) is used. scaleRatio = %f", scaleRatio);
292 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
293 SysTryReturnResult(NID_UI_ANIM, (pNode != null), E_INVALID_OPERATION, "Transaction isn't opened.");
295 pNode->SetScaleRatio(scaleRatio);
301 AnimationTransaction::GetVisualElementAnimationScaleRatio(void)
303 _TransactionNode* pNode = _AnimationManager::GetInstance()->GetCurrentTransaction();
304 SysTryReturn(NID_UI_ANIM, (pNode != null), 0.0f, E_INVALID_OPERATION, "[E_INVALID_OPERATION] Transaction isn't opened.");
306 return pNode->GetScaleRatio();
309 } } } // Tizen::Ui::Animations