Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / animations / FUiAnimVisualElementValueAnimation.cpp
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        FUiAnimVisualElementValueAnimation.cpp
20  * @brief       This file contains implementation of VisualElementVAlueAnimation class
21  *
22  * This file contains implementation VisualElementPropertyAnimation class.
23  */
24
25 #include <FBaseSysLog.h>
26
27 #include <FUiAnimVisualElementValueAnimation.h>
28
29 #include "FUiAnim_VisualElementValueAnimationImpl.h"
30
31 namespace Tizen { namespace Ui { namespace Animations
32 {
33
34 VisualElementValueAnimation::VisualElementValueAnimation(void)
35         : VisualElementAnimation(new (std::nothrow) _VisualElementValueAnimationImpl())
36 {
37         if (_pAnimationImpl == null)
38         {
39                 SetLastResult(E_OUT_OF_MEMORY);
40         }
41 }
42
43 VisualElementValueAnimation::~VisualElementValueAnimation(void)
44 {
45
46 }
47
48 VisualElementValueAnimation::VisualElementValueAnimation(_VisualElementValueAnimationImpl* pImpl)
49         : VisualElementAnimation(pImpl)
50 {
51 }
52
53 VisualElementValueAnimation::VisualElementValueAnimation(const VisualElementValueAnimation& animation)
54         : VisualElementAnimation(null)
55 {
56         ClearLastResult();
57
58         const _VisualElementValueAnimationImpl* pAnimationImpl = _VisualElementValueAnimationImpl::GetInstance(animation);
59
60         _pAnimationImpl = new (std::nothrow) _VisualElementValueAnimationImpl(*pAnimationImpl);
61         SysTryReturnVoidResult(NID_UI_ANIM, (_pAnimationImpl), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
62 }
63
64 VisualElementValueAnimation&
65 VisualElementValueAnimation::operator =(const VisualElementValueAnimation& rhs)
66 {
67         ClearLastResult();
68
69         if (this != (&rhs))
70         {
71                 _VisualElementValueAnimationImpl* pAnimationImpl = _VisualElementValueAnimationImpl::GetInstance(*this);
72                 const _VisualElementValueAnimationImpl* pRhsAnimationImpl = _VisualElementValueAnimationImpl::GetInstance(rhs);
73
74                 result r = pAnimationImpl->CopyAnimationValue(*pRhsAnimationImpl);
75                 SysTryReturn(NID_UI_ANIM, (r == E_SUCCESS), *this, r, "[%s] Failed to copy the animation value.", GetErrorMessage(r));
76         }
77
78         return *this;
79 }
80
81 bool
82 VisualElementValueAnimation::operator ==(const VisualElementValueAnimation& rhs) const
83 {
84         return VisualElementAnimation::operator ==(rhs);
85 }
86
87 bool
88 VisualElementValueAnimation::operator !=(const VisualElementValueAnimation& rhs) const
89 {
90         return (!operator ==(rhs));
91 }
92
93 bool
94 VisualElementValueAnimation::Equals(const Tizen::Base::Object& obj) const
95 {
96         const VisualElementValueAnimation* pAnimation = dynamic_cast< const VisualElementValueAnimation* >(&obj);
97
98         if (pAnimation == null)
99         {
100                 return false;
101         }
102
103         return (*this == *pAnimation);
104 }
105
106 int
107 VisualElementValueAnimation::GetHashCode(void) const
108 {
109         return VisualElementAnimation::GetHashCode();
110 }
111
112 VisualElementAnimation*
113 VisualElementValueAnimation::CloneN(void) const
114 {
115         VisualElementAnimation* pCloned = new (std::nothrow) VisualElementValueAnimation(*this);
116         SysTryReturn(NID_UI_ANIM, (pCloned != null), null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
117
118         return pCloned;
119 }
120
121 void
122 VisualElementValueAnimation::SetVisualElementAnimationTickEventListener(IVisualElementAnimationTickEventListener* pListener)
123 {
124         _VisualElementValueAnimationImpl* pAnimationImpl = _VisualElementValueAnimationImpl::GetInstance(*this);
125
126         pAnimationImpl->SetTickEventListener(pListener);
127 }
128
129 IVisualElementAnimationTickEventListener*
130 VisualElementValueAnimation::GetVisualElementAnimationTickEventListener(void) const
131 {
132         const _VisualElementValueAnimationImpl* pAnimationImpl = _VisualElementValueAnimationImpl::GetInstance(*this);
133
134         return pAnimationImpl->GetTickEventListener();
135 }
136
137 result
138 VisualElementValueAnimation::SetStartValue(const Tizen::Ui::Variant& startValue)
139 {
140         SysTryReturnResult(NID_UI_ANIM, (startValue.IsEmpty() == false), E_INVALID_ARG, "Invalid argument(s) is used. startValue is empty.");
141
142         _VisualElementValueAnimationImpl* pAnimationImpl = _VisualElementValueAnimationImpl::GetInstance(*this);
143
144         pAnimationImpl->SetStartValue(startValue);
145
146         return E_SUCCESS;
147 }
148
149 Tizen::Ui::Variant
150 VisualElementValueAnimation::GetStartValue(void) const
151 {
152         const _VisualElementValueAnimationImpl* pAnimationImpl = _VisualElementValueAnimationImpl::GetInstance(*this);
153
154         return pAnimationImpl->GetStartValue();
155 }
156
157 result
158 VisualElementValueAnimation::SetEndValue(const Tizen::Ui::Variant& endValue)
159 {
160         SysTryReturnResult(NID_UI_ANIM, (endValue.IsEmpty() == false), E_INVALID_ARG, "Invalid argument(s) is used. endValue is empty.");
161
162         _VisualElementValueAnimationImpl* pAnimationImpl = _VisualElementValueAnimationImpl::GetInstance(*this);
163
164         pAnimationImpl->SetEndValue(endValue);
165
166         return E_SUCCESS;
167 }
168
169 Tizen::Ui::Variant
170 VisualElementValueAnimation::GetEndValue(void) const
171 {
172         const _VisualElementValueAnimationImpl* pAnimationImpl = _VisualElementValueAnimationImpl::GetInstance(*this);
173
174         return pAnimationImpl->GetEndValue();
175 }
176
177 void
178 VisualElementValueAnimation::SetEndValueApplied(bool apply)
179 {
180         _VisualElementValueAnimationImpl* pAnimationImpl = _VisualElementValueAnimationImpl::GetInstance(*this);
181
182         pAnimationImpl->SetEndValueApplied(apply);
183 }
184
185 bool
186 VisualElementValueAnimation::IsEndValueApplied(void) const
187 {
188         const _VisualElementValueAnimationImpl* pAnimationImpl = _VisualElementValueAnimationImpl::GetInstance(*this);
189
190         return pAnimationImpl->IsEndValueApplied();
191 }
192
193 result
194 VisualElementValueAnimation::AddKeyFrame(float timeProgress, const Tizen::Ui::Variant& value, const IVisualElementAnimationTimingFunction* pTimingFunction)
195 {
196         SysTryReturnResult(NID_UI_ANIM, (timeProgress > 0.0f && timeProgress < 1.0f), E_OUT_OF_RANGE, "The time (%f) is out of range.", timeProgress);
197         SysTryReturnResult(NID_UI_ANIM, (value.IsEmpty() == false), E_INVALID_ARG, "Invalid argument(s) is used. value is empty.");
198
199         _VisualElementValueAnimationImpl* pAnimationImpl = _VisualElementValueAnimationImpl::GetInstance(*this);
200
201         return pAnimationImpl->AddKeyFrame(timeProgress, value, pTimingFunction);
202 }
203
204 result
205 VisualElementValueAnimation::RemoveKeyFrame(float timeProgress)
206 {
207         SysTryReturnResult(NID_UI_ANIM, (timeProgress > 0.0f && timeProgress < 1.0f), E_OUT_OF_RANGE, "The time (%f) is out of range.", timeProgress);
208
209         _VisualElementValueAnimationImpl* pAnimationImpl = _VisualElementValueAnimationImpl::GetInstance(*this);
210
211         return pAnimationImpl->RemoveKeyFrame(timeProgress);
212 }
213
214 void
215 VisualElementValueAnimation::RemoveAllKeyFrames(void)
216 {
217         _VisualElementValueAnimationImpl* pAnimationImpl = _VisualElementValueAnimationImpl::GetInstance(*this);
218
219         pAnimationImpl->RemoveAllKeyFrames();
220 }
221
222 }}}   // Tizen::Ui::Animations
223