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_VisualElementAnimationGroupImpl.cpp
20 * @brief This file contains implementation of _VisualElementAnimationGroupImpl class
22 * This file contains implementation _VisualElementAnimationGroupImpl class.
25 #include <FBaseSysLog.h>
27 #include <FUiAnimVisualElementAnimationGroup.h>
28 #include <FUiAnimIVisualElementAnimationTimingFunction.h>
30 #include "FUiAnim_VisualElementAnimationGroupImpl.h"
32 namespace Tizen { namespace Ui { namespace Animations
36 _VisualElementAnimationGroupImpl::_VisualElementAnimationGroupImpl(void)
38 result r = __animationList.Construct();
40 SysTryReturnVoidResult(NID_UI_ANIM, r == E_SUCCESS, r, "[%s] Failed to construct the animation list.", GetErrorMessage(r));
43 _VisualElementAnimationGroupImpl::_VisualElementAnimationGroupImpl(const _VisualElementAnimationGroupImpl& animationGroupImpl)
45 __animationList.Construct();
47 result r = CopyAnimationValue(animationGroupImpl);
49 SysTryReturnVoidResult(NID_UI_ANIM, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
52 _VisualElementAnimationGroupImpl::~_VisualElementAnimationGroupImpl(void)
54 __animationList.RemoveAll(true);
58 _VisualElementAnimationGroupImpl::Equals(const Tizen::Base::Object& obj) const
65 if (_VisualElementAnimationImpl::Equals(obj) == false)
70 const _VisualElementAnimationGroupImpl* pAnimationGroupImpl = dynamic_cast< const _VisualElementAnimationGroupImpl* >(&obj);
72 if (pAnimationGroupImpl == null || GetAnimationCount() != pAnimationGroupImpl->GetAnimationCount())
77 for (int index = 0; index < GetAnimationCount(); index++)
79 if ((__animationList.GetAt(index))->Equals(*(pAnimationGroupImpl->__animationList.GetAt(index))) == false)
89 _VisualElementAnimationGroupImpl::GetHashCode(void) const
91 return (_VisualElementAnimationImpl::GetHashCode() + __animationList.GetHashCode());
95 _VisualElementAnimationGroupImpl::CopyAnimationValue(const _VisualElementAnimationGroupImpl& animationGroupImpl)
99 r = _VisualElementAnimationImpl::CopyAnimationValue(animationGroupImpl);
100 SysTryReturnResult(NID_UI_ANIM, (r == E_SUCCESS), r, "Propagating.");
102 const VisualElementAnimation* pAnimation = null;
103 VisualElementAnimation* pCloned = null;
105 for (int index = 0; index < animationGroupImpl.GetAnimationCount(); index++)
107 pAnimation = dynamic_cast< const VisualElementAnimation* >(animationGroupImpl.__animationList.GetAt(index));
109 if (pAnimation != null)
111 pCloned = const_cast< VisualElementAnimation* >(pAnimation)->CloneN();
115 __animationList.RemoveAll(true);
117 SysLogException(NID_UI_ANIM, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
118 return E_OUT_OF_MEMORY;
121 __animationList.Add(*pCloned);
129 _VisualElementAnimationGroupImpl::GetAnimationCount(void) const
131 return __animationList.GetCount();
135 _VisualElementAnimationGroupImpl::AddAnimation(const VisualElementAnimation& animation)
137 VisualElementAnimation* pCloned = const_cast< VisualElementAnimation& >(animation).CloneN();
138 SysTryReturnResult(NID_UI_ANIM, pCloned != null, E_OUT_OF_MEMORY, "Memory allocation failed.");
140 result r = __animationList.Add(*pCloned);
151 _VisualElementAnimationGroupImpl::RemoveAnimationAt(int index)
153 return __animationList.RemoveAt(index);
157 _VisualElementAnimationGroupImpl::RemoveAllAnimations(void)
159 __animationList.RemoveAll(true);
162 VisualElementAnimation*
163 _VisualElementAnimationGroupImpl::GetAnimationAtN(int index) const
165 const VisualElementAnimation* pAnimation = dynamic_cast< const VisualElementAnimation* >(__animationList.GetAt(index));
169 SetLastResult(E_SUCCESS);
170 return const_cast< VisualElementAnimation* >(pAnimation)->CloneN();
173 SetLastResult(E_OBJ_NOT_FOUND);
177 VisualElementAnimation*
178 _VisualElementAnimationGroupImpl::GetAnimation(int index) const
180 return dynamic_cast< VisualElementAnimation* >(const_cast< Tizen::Base::Object* >(__animationList.GetAt(index)));
183 _VisualElementAnimationGroupImpl*
184 _VisualElementAnimationGroupImpl::GetInstance(VisualElementAnimationGroup& animation)
186 return dynamic_cast<_VisualElementAnimationGroupImpl*>(animation._pAnimationImpl);
189 const _VisualElementAnimationGroupImpl*
190 _VisualElementAnimationGroupImpl::GetInstance(const VisualElementAnimationGroup& animation)
192 return dynamic_cast<const _VisualElementAnimationGroupImpl*>(animation._pAnimationImpl);
195 }}} // Tizen::Ui::Animations