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 FUiAnimAnimationBase.cpp
20 * @brief This file contains implementation of AnimationBase class
22 * This file contains implementation of AnimationBase class.
26 #include <FBaseSysLog.h>
27 #include <FBaseColIMapEnumerator.h>
28 #include <FBaseColIListT.h>
29 #include <FBaseColArrayList.h>
30 #include <FBaseColHashMapT.h>
31 #include <FBaseFloatComparer.h>
32 #include <FBaseComparerT.h>
34 #include <FUiAnimAnimationBase.h>
36 #include "FUiAnim_AnimationBaseImpl.h"
39 using namespace Tizen::Base;
40 using namespace Tizen::Base::Collection;
43 namespace Tizen { namespace Ui { namespace Animations
46 AnimationBase::AnimationBase(void)
47 : _pAnimationBaseImpl(null)
51 AnimationBase::~AnimationBase(void)
53 if (_pAnimationBaseImpl != null)
55 delete _pAnimationBaseImpl;
56 _pAnimationBaseImpl = null;
60 AnimationBase::AnimationBase(const AnimationBase& animationBase)
66 _pAnimationBaseImpl = new (std::nothrow) _AnimationBaseImpl(this);
67 SysTryReturnVoidResult(NID_UI_ANIM, (_pAnimationBaseImpl != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
69 r = _pAnimationBaseImpl->Construct();
72 SysLogException(NID_UI_ANIM, r, "[%s] Failed to construct _AnimationBaseImpl instance.", GetErrorMessage(r));
74 delete _pAnimationBaseImpl;
75 _pAnimationBaseImpl = null;
80 SetInterpolatorType(animationBase.GetInterpolatorType());
81 SetBezierControlPoints(animationBase._pAnimationBaseImpl->controlPointTime1,
82 animationBase._pAnimationBaseImpl->controlPointValue1,
83 animationBase._pAnimationBaseImpl->controlPointTime2,
84 animationBase._pAnimationBaseImpl->controlPointValue2);
85 SetDuration(animationBase.GetDuration());
86 SetDelay(animationBase.GetDelay());
87 SetOffset(animationBase.GetOffset());
88 SetRepeatCount(animationBase.GetRepeatCount());
89 SetAutoReverseEnabled(animationBase.IsAutoReverseEnabled());
90 SetScaleRatio(animationBase.GetScaleRatio());
91 SetHoldEndEnabled(animationBase.IsHoldEndEnabled());
92 SetName(animationBase.GetName());
95 AnimationBase::AnimationBase(long duration, AnimationInterpolatorType interpolator)
96 : _pAnimationBaseImpl(null)
100 SysTryReturnVoidResult(NID_UI_ANIM, (duration >= 0), E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(s) is used. duration = %ld", duration);
101 SysTryReturnVoidResult(NID_UI_ANIM, (interpolator >= ANIMATION_INTERPOLATOR_LINEAR && interpolator <= ANIMATION_INTERPOLATOR_BEZIER),
102 E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(s) is used. interpolator is invalid.");
104 result r = E_SUCCESS;
106 _pAnimationBaseImpl = new (std::nothrow) _AnimationBaseImpl(this);
107 SysTryReturnVoidResult(NID_UI_ANIM, (_pAnimationBaseImpl != null), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
109 r = _pAnimationBaseImpl->Construct();
112 SysLogException(NID_UI_ANIM, r, "[%s] Propagating.", GetErrorMessage(r));
114 delete _pAnimationBaseImpl;
115 _pAnimationBaseImpl = null;
120 _pAnimationBaseImpl->duration = duration;
121 _pAnimationBaseImpl->interpolator = interpolator;
125 AnimationBase::operator =(const AnimationBase& rhs)
129 SetInterpolatorType(rhs.GetInterpolatorType());
130 SetBezierControlPoints(rhs._pAnimationBaseImpl->controlPointTime1, rhs._pAnimationBaseImpl->controlPointValue1,
131 rhs._pAnimationBaseImpl->controlPointTime2, rhs._pAnimationBaseImpl->controlPointValue2);
132 SetDuration(rhs.GetDuration());
133 SetDelay(rhs.GetDelay());
134 SetOffset(rhs.GetOffset());
135 SetRepeatCount(rhs.GetRepeatCount());
136 SetAutoReverseEnabled(rhs.IsAutoReverseEnabled());
137 SetScaleRatio(rhs.GetScaleRatio());
138 SetHoldEndEnabled(rhs.IsHoldEndEnabled());
139 SetName(rhs.GetName());
146 AnimationBase::SetInterpolatorType(AnimationInterpolatorType interpolator)
148 _pAnimationBaseImpl->interpolator = interpolator;
151 AnimationInterpolatorType
152 AnimationBase::GetInterpolatorType(void) const
154 return _pAnimationBaseImpl->interpolator;
158 AnimationBase::SetBezierControlPoints(float controlPointTime1, float controlPointValue1, float controlPointTime2, float controlPointValue2)
160 SysTryReturnResult(NID_UI_ANIM, (controlPointTime1 >= 0.0f && controlPointTime1 <= 1.0f), E_INVALID_ARG, "Invalid argument(s) is used. controlPointTime1 = %f", controlPointTime1);
161 SysTryReturnResult(NID_UI_ANIM, (controlPointValue1 >= 0.0f && controlPointValue1 <= 1.0f), E_INVALID_ARG, "Invalid argument(s) is used. controlPointValue1 = %f", controlPointValue1);
162 SysTryReturnResult(NID_UI_ANIM, (controlPointTime2 >= 0.0f && controlPointTime2 <= 1.0f), E_INVALID_ARG, "Invalid argument(s) is used. controlPointTime2 = %f", controlPointTime2);
163 SysTryReturnResult(NID_UI_ANIM, (controlPointValue2 >= 0.0f && controlPointValue2 <= 1.0f), E_INVALID_ARG, "Invalid argument(s) is used. controlPointValue2 = %f", controlPointValue2);
165 if (_pAnimationBaseImpl->interpolator != ANIMATION_INTERPOLATOR_BEZIER)
167 return E_INVALID_OPERATION;
170 _pAnimationBaseImpl->controlPointTime1 = controlPointTime1;
171 _pAnimationBaseImpl->controlPointValue1 = controlPointValue1;
172 _pAnimationBaseImpl->controlPointTime2 = controlPointTime2;
173 _pAnimationBaseImpl->controlPointValue2 = controlPointValue2;
179 AnimationBase::GetBezierControlPoints(float& controlPointTime1, float& controlPointValue1, float& controlPointTime2, float& controlPointValue2) const
181 if (_pAnimationBaseImpl->interpolator != ANIMATION_INTERPOLATOR_BEZIER)
183 return E_INVALID_OPERATION;
186 controlPointTime1 = _pAnimationBaseImpl->controlPointTime1;
187 controlPointValue1 = _pAnimationBaseImpl->controlPointValue1;
188 controlPointTime2 = _pAnimationBaseImpl->controlPointTime2;
189 controlPointValue2 = _pAnimationBaseImpl->controlPointValue2;
195 AnimationBase::GetKeyFrameCount(void) const
197 return _pAnimationBaseImpl->keyFrameList.GetCount();
201 AnimationBase::SetName(const String& name)
203 _pAnimationBaseImpl->animName = name;
208 AnimationBase::GetName(void) const
210 return _pAnimationBaseImpl->animName;
214 AnimationBase::SetDuration(long milliSeconds)
216 SysTryReturnResult(NID_UI_ANIM, (milliSeconds >= 0), E_INVALID_ARG, "Invalid argument(s) is used. milliSeconds = %ld", milliSeconds);
218 _pAnimationBaseImpl->duration = milliSeconds;
224 AnimationBase::SetOffset(long milliSeconds)
226 SysTryReturnResult(NID_UI_ANIM, (milliSeconds >= 0 && milliSeconds <= _pAnimationBaseImpl->duration), E_INVALID_ARG,
227 "Invalid argument(s) is used. milliSeconds = %ld", milliSeconds);
229 _pAnimationBaseImpl->offset = milliSeconds;
235 AnimationBase::SetDelay(long milliSeconds)
237 SysTryReturnResult(NID_UI_ANIM, (milliSeconds >= 0), E_INVALID_ARG, "Invalid argument(s) is used. milliSeconds = %ld", milliSeconds);
239 _pAnimationBaseImpl->delay = milliSeconds;
245 AnimationBase::SetRepeatCount(long count)
247 SysTryReturnResult(NID_UI_ANIM, (count >= 1), E_INVALID_ARG, "Invalid argument(s) is used. count = %ld", count);
249 _pAnimationBaseImpl->repeatCount = count;
255 AnimationBase::SetAutoReverseEnabled(bool autoReverse)
257 _pAnimationBaseImpl->autoReverse = autoReverse;
261 AnimationBase::SetScaleRatio(float scaleRatio)
263 SysTryReturnResult(NID_UI_ANIM, (scaleRatio >= 0), E_INVALID_ARG, "Invalid argument(s) is used. scaleRatio = %f", scaleRatio);
265 _pAnimationBaseImpl->scaleRatio = scaleRatio;
270 AnimationBase::SetHoldEndEnabled(bool holdEnd)
272 _pAnimationBaseImpl->holdEnd = holdEnd;
276 AnimationBase::GetDuration(void) const
278 return _pAnimationBaseImpl->duration;
282 AnimationBase::GetOffset(void) const
284 return _pAnimationBaseImpl->offset;
288 AnimationBase::GetDelay(void) const
290 return _pAnimationBaseImpl->delay;
294 AnimationBase::GetRepeatCount(void) const
296 return _pAnimationBaseImpl->repeatCount;
300 AnimationBase::IsAutoReverseEnabled(void) const
302 return _pAnimationBaseImpl->autoReverse;
306 AnimationBase::GetScaleRatio(void) const
308 return _pAnimationBaseImpl->scaleRatio;
312 AnimationBase::IsHoldEndEnabled(void) const
314 return _pAnimationBaseImpl->holdEnd;
318 AnimationBase::AnimationBase_Reserved1(void)
323 AnimationBase::AnimationBase_Reserved2(void)
328 AnimationBase::AnimationBase_Reserved3(void)
333 }}} // Tizen::Ui::Animations