Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / animations / FUiAnimVisualElementAnimationGroup.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        FUiAnimVisualElementAnimationGroup.cpp
20  * @brief       This file contains implementation of VisualElementAnimationGroup class
21  *
22  * This file contains implementation VisualElementAnimationGroup class.
23  */
24
25 #include <FBaseSysLog.h>
26
27 #include <FUiAnimVisualElementAnimation.h>
28 #include <FUiAnimVisualElementAnimationGroup.h>
29
30 #include "FUiAnim_VisualElementAnimationGroupImpl.h"
31
32 namespace Tizen { namespace Ui { namespace Animations
33 {
34
35 VisualElementAnimationGroup::VisualElementAnimationGroup(void)
36         : VisualElementAnimation(new (std::nothrow) _VisualElementAnimationGroupImpl())
37 {
38         if (_pAnimationImpl == null)
39         {
40                 SetLastResult(E_OUT_OF_MEMORY);
41         }
42 }
43
44 VisualElementAnimationGroup::~VisualElementAnimationGroup(void)
45 {
46
47 }
48
49 VisualElementAnimationGroup::VisualElementAnimationGroup(const VisualElementAnimationGroup& animationGroup)
50         : VisualElementAnimation(null)
51 {
52         ClearLastResult();
53
54         const _VisualElementAnimationGroupImpl* pAnimationImpl = _VisualElementAnimationGroupImpl::GetInstance(animationGroup);
55
56         _pAnimationImpl = new (std::nothrow) _VisualElementAnimationGroupImpl(*pAnimationImpl);
57         SysTryReturnVoidResult(NID_UI_ANIM, (_pAnimationImpl), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
58 }
59
60 VisualElementAnimationGroup&
61 VisualElementAnimationGroup::operator =(const VisualElementAnimationGroup& rhs)
62 {
63         ClearLastResult();
64
65         if (this != (&rhs))
66         {
67                 _VisualElementAnimationGroupImpl* pAnimationImpl = _VisualElementAnimationGroupImpl::GetInstance(*this);
68                 const _VisualElementAnimationGroupImpl* pRhsAnimationImpl = _VisualElementAnimationGroupImpl::GetInstance(rhs);
69
70                 result r = pAnimationImpl->CopyAnimationValue(*pRhsAnimationImpl);
71                 SysTryReturn(NID_UI_ANIM, (r == E_SUCCESS), *this, r, "[%s] Failed to copy the animation value.", GetErrorMessage(r));
72         }
73
74         return *this;
75 }
76
77 bool
78 VisualElementAnimationGroup::operator ==(const VisualElementAnimationGroup& rhs) const
79 {
80         return VisualElementAnimation::operator ==(rhs);
81 }
82
83 bool
84 VisualElementAnimationGroup::operator !=(const VisualElementAnimationGroup& rhs) const
85 {
86         return (!operator ==(rhs));
87 }
88
89 bool
90 VisualElementAnimationGroup::Equals(const Tizen::Base::Object& obj) const
91 {
92         const VisualElementAnimationGroup* pAnimationGroup = dynamic_cast< const VisualElementAnimationGroup* >(&obj);
93
94         if (pAnimationGroup == null)
95         {
96                 return false;
97         }
98
99         return (*this == *pAnimationGroup);
100 }
101
102 int
103 VisualElementAnimationGroup::GetHashCode(void) const
104 {
105         return VisualElementAnimation::GetHashCode();
106 }
107
108 VisualElementAnimation*
109 VisualElementAnimationGroup::CloneN(void) const
110 {
111         VisualElementAnimation* pCloned = new (std::nothrow) VisualElementAnimationGroup(*this);
112         SysTryReturn(NID_UI_ANIM, pCloned, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
113
114         return pCloned;
115 }
116
117 int
118 VisualElementAnimationGroup::GetAnimationCount(void) const
119 {
120         const _VisualElementAnimationGroupImpl* pAnimationImpl = _VisualElementAnimationGroupImpl::GetInstance(*this);
121
122         return pAnimationImpl->GetAnimationCount();
123 }
124
125 result
126 VisualElementAnimationGroup::AddAnimation(const VisualElementAnimation& animation)
127 {
128         _VisualElementAnimationGroupImpl* pAnimationImpl = _VisualElementAnimationGroupImpl::GetInstance(*this);
129
130         return pAnimationImpl->AddAnimation(animation);
131 }
132
133 result
134 VisualElementAnimationGroup::RemoveAnimationAt(int index)
135 {
136         _VisualElementAnimationGroupImpl* pAnimationImpl = _VisualElementAnimationGroupImpl::GetInstance(*this);
137
138         SysTryReturnResult(NID_UI_ANIM, (index >= 0 && index < pAnimationImpl->GetAnimationCount()), E_OUT_OF_RANGE, "Index (%d) is out of range.", index);
139
140         return pAnimationImpl->RemoveAnimationAt(index);
141 }
142
143 void
144 VisualElementAnimationGroup::RemoveAllAnimations(void)
145 {
146         _VisualElementAnimationGroupImpl* pAnimationImpl = _VisualElementAnimationGroupImpl::GetInstance(*this);
147
148         pAnimationImpl->RemoveAllAnimations();
149 }
150
151 VisualElementAnimation*
152 VisualElementAnimationGroup::GetAnimationAtN(int index) const
153 {
154         const _VisualElementAnimationGroupImpl* pAnimationImpl = _VisualElementAnimationGroupImpl::GetInstance(*this);
155
156         SysTryReturn(NID_UI_ANIM, (index >= 0 && index < pAnimationImpl->GetAnimationCount()), null, E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] Index (%d) is out of range.", index);
157
158         return pAnimationImpl->GetAnimationAtN(index);
159 }
160
161 }}}   // Tizen::Ui::Animations
162