Tizen 2.1 base
[sdk/ide/native-sample.git] / samples / native / partner / cpp / Sample / Tizen C++ / UiControlAnimator / UiControlAnimator / project / src / SampleDimensionAnimation.cpp
1 //
2 // Tizen C++ SDK
3 // Copyright (c) 2012 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://www.tizenopensource.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 #include "SampleDimensionAnimation.h"
19 #include "AnimationForm.h"
20
21 using namespace Osp::Graphics;
22 using namespace Osp::Ui;
23 using namespace Osp::Ui::Controls;
24 using namespace Osp::Ui::Animations;
25
26 SampleDimensionAnimation::SampleDimensionAnimation(AnimationForm& animationForm)
27         : AnimationManager(animationForm)
28         , __pButton1(null)
29         , __pButton2(null)
30         , __pButton3(null)
31         , __pButton4(null)
32         , __pButton5(null)
33 {
34 }
35
36 SampleDimensionAnimation::~SampleDimensionAnimation(void)
37 {
38 }
39
40 void
41 SampleDimensionAnimation::Initialize(void)
42 {
43         int offset = 50;
44
45         __pButton1 = new (std::nothrow) Button();
46         __pButton1->Construct(Rectangle(0+offset,0+offset,__buttonSize,__buttonSize),L"I");
47         __pAnimationForm->AddControl(*__pButton1);
48
49         __pButton2 = new (std::nothrow) Button();
50         __pButton2->Construct(Rectangle(__clientSize.width-__buttonSize-offset,0+offset,__buttonSize,__buttonSize),L"II");
51         __pAnimationForm->AddControl(*__pButton2);
52
53         __pButton3 = new (std::nothrow) Button();
54         __pButton3->Construct(Rectangle(__clientCenter.x,__clientCenter.y,__buttonSize,__buttonSize),L"III");
55         __pAnimationForm->AddControl(*__pButton3);
56
57         __pButton4 = new (std::nothrow) Button();
58         __pButton4->Construct(Rectangle(0+offset,__clientSize.height-__buttonSize-offset,__buttonSize,__buttonSize),L"IV");
59         __pAnimationForm->AddControl(*__pButton4);
60
61         __pButton5 = new (std::nothrow) Button();
62         __pButton5->Construct(Rectangle(__clientSize.width-__buttonSize-offset,__clientSize.height-__buttonSize-offset,__buttonSize,__buttonSize),L"V");
63         __pAnimationForm->AddControl(*__pButton5);
64 }
65
66 void
67 SampleDimensionAnimation::PlayAnimation(void)
68 {
69         result r = E_SUCCESS;
70
71         int offset = 50;
72
73         Dimension controlSize1 = __pButton1->GetSize();
74         Dimension controlSize2 = __pButton2->GetSize();
75         Dimension controlSize3 = __pButton3->GetSize();
76         Dimension controlSize4 = __pButton4->GetSize();
77         Dimension controlSize5 = __pButton5->GetSize();
78
79         DimensionAnimation dimensionAnimation1(Dimension(__buttonSize,__buttonSize),Dimension(__buttonSize,__buttonSize),1000,ANIMATION_INTERPOLATOR_LINEAR);
80         AnimationManager::CheckAnimationSuccessStatus(dimensionAnimation1);
81         DimensionAnimation dimensionAnimation2(Dimension(__buttonSize,__buttonSize),Dimension(__buttonSize,__buttonSize),1000,ANIMATION_INTERPOLATOR_LINEAR);
82         AnimationManager::CheckAnimationSuccessStatus(dimensionAnimation2);
83         DimensionAnimation dimensionAnimation3(Dimension(__buttonSize,__buttonSize),Dimension(__buttonSize,__buttonSize),1000,ANIMATION_INTERPOLATOR_LINEAR);
84         AnimationManager::CheckAnimationSuccessStatus(dimensionAnimation3);
85         DimensionAnimation dimensionAnimation4(Dimension(__buttonSize,__buttonSize),Dimension(__buttonSize,__buttonSize),1000,ANIMATION_INTERPOLATOR_LINEAR);
86         AnimationManager::CheckAnimationSuccessStatus(dimensionAnimation4);
87         DimensionAnimation dimensionAnimation5(Dimension(__buttonSize,__buttonSize),Dimension(__buttonSize,__buttonSize),1000,ANIMATION_INTERPOLATOR_LINEAR);
88         AnimationManager::CheckAnimationSuccessStatus(dimensionAnimation5);
89
90         //Initialize Animation
91         if (controlSize1 == Dimension(__buttonSize,__buttonSize))
92         {
93                 dimensionAnimation1 = DimensionAnimation(Dimension(__buttonSize,__buttonSize),Dimension(__buttonSize-offset,__buttonSize-offset),1000,ANIMATION_INTERPOLATOR_LINEAR);
94         }
95         else
96         {
97                 dimensionAnimation1 = DimensionAnimation(Dimension(__buttonSize-offset,__buttonSize-offset),Dimension(__buttonSize,__buttonSize),1000,ANIMATION_INTERPOLATOR_LINEAR);
98         }
99         AnimationManager::CheckAnimationSuccessStatus(dimensionAnimation1);
100         AnimationManager::InitializeAnimationSettings(dimensionAnimation1);
101
102         if (controlSize2 == Dimension(__buttonSize,__buttonSize))
103         {
104                 dimensionAnimation2 = DimensionAnimation(Dimension(__buttonSize,__buttonSize),Dimension(__buttonSize-offset,__buttonSize-offset),1000,ANIMATION_INTERPOLATOR_LINEAR);
105         }
106         else
107         {
108                 dimensionAnimation2 = DimensionAnimation(Dimension(__buttonSize-offset,__buttonSize-offset),Dimension(__buttonSize,__buttonSize),1000,ANIMATION_INTERPOLATOR_LINEAR);
109         }
110         AnimationManager::CheckAnimationSuccessStatus(dimensionAnimation2);
111         AnimationManager::InitializeAnimationSettings(dimensionAnimation2);
112
113         if (controlSize4 == Dimension(__buttonSize,__buttonSize))
114         {
115                 dimensionAnimation4 = DimensionAnimation(Dimension(__buttonSize,__buttonSize),Dimension(__buttonSize-offset,__buttonSize-offset),1000,ANIMATION_INTERPOLATOR_LINEAR);
116         }
117         else
118         {
119                 dimensionAnimation4 = DimensionAnimation(Dimension(__buttonSize-offset,__buttonSize-offset),Dimension(__buttonSize,__buttonSize),1000,ANIMATION_INTERPOLATOR_LINEAR);
120         }
121         AnimationManager::CheckAnimationSuccessStatus(dimensionAnimation4);
122         AnimationManager::InitializeAnimationSettings(dimensionAnimation4);
123
124         if (controlSize5 == Dimension(__buttonSize,__buttonSize))
125         {
126                 dimensionAnimation5 = DimensionAnimation(Dimension(__buttonSize,__buttonSize),Dimension(__buttonSize-offset,__buttonSize-offset),1000,ANIMATION_INTERPOLATOR_LINEAR);
127         }
128         else
129         {
130                 dimensionAnimation5 = DimensionAnimation(Dimension(__buttonSize-offset,__buttonSize-offset),Dimension(__buttonSize,__buttonSize),1000,ANIMATION_INTERPOLATOR_LINEAR);
131         }
132         AnimationManager::CheckAnimationSuccessStatus(dimensionAnimation5);
133         AnimationManager::InitializeAnimationSettings(dimensionAnimation5);
134
135         if (controlSize3 == Dimension(__buttonSize,__buttonSize))
136         {
137                 dimensionAnimation3 = DimensionAnimation(Dimension(__buttonSize,__buttonSize),Dimension(__buttonSize+offset,__buttonSize+offset),1000,ANIMATION_INTERPOLATOR_LINEAR);
138         }
139         else
140         {
141                 dimensionAnimation3 = DimensionAnimation(Dimension(__buttonSize+offset,__buttonSize+offset),Dimension(__buttonSize,__buttonSize),1000,ANIMATION_INTERPOLATOR_LINEAR);
142         }
143         AnimationManager::CheckAnimationSuccessStatus(dimensionAnimation3);
144         AnimationManager::InitializeAnimationSettings(dimensionAnimation3);
145
146         //Initialize Animator
147         ControlAnimator* pAnimator1 = __pButton1->GetControlAnimator();
148         AnimationManager::CheckAnimatorSuccessStatus(*pAnimator1);
149         ControlAnimator* pAnimator2 = __pButton2->GetControlAnimator();
150         AnimationManager::CheckAnimatorSuccessStatus(*pAnimator2);
151         ControlAnimator* pAnimator3 = __pButton3->GetControlAnimator();
152         AnimationManager::CheckAnimatorSuccessStatus(*pAnimator3);
153         ControlAnimator* pAnimator4 = __pButton4->GetControlAnimator();
154         AnimationManager::CheckAnimatorSuccessStatus(*pAnimator4);
155         ControlAnimator* pAnimator5 = __pButton5->GetControlAnimator();
156         AnimationManager::CheckAnimatorSuccessStatus(*pAnimator5);
157
158         //Start Animation
159         r = pAnimator1->StartUserAnimation(ANIMATION_TARGET_SIZE,dimensionAnimation1);
160         AnimationManager::CheckAnimationSuccessStatus(r,L"StartAnimation");
161
162         r = pAnimator2->StartUserAnimation(ANIMATION_TARGET_SIZE,dimensionAnimation2);
163         AnimationManager::CheckAnimationSuccessStatus(r,L"StartAnimation");
164
165         r = pAnimator3->StartUserAnimation(ANIMATION_TARGET_SIZE,dimensionAnimation3);
166         AnimationManager::CheckAnimationSuccessStatus(r,L"StartAnimation");
167
168         r = pAnimator4->StartUserAnimation(ANIMATION_TARGET_SIZE,dimensionAnimation4);
169         AnimationManager::CheckAnimationSuccessStatus(r,L"StartAnimation");
170
171         r = pAnimator5->StartUserAnimation(ANIMATION_TARGET_SIZE,dimensionAnimation5);
172         AnimationManager::CheckAnimationSuccessStatus(r,L"StartAnimation");
173 }
174
175 void
176 SampleDimensionAnimation::StopAnimation(void)
177 {
178         result r = E_SUCCESS;
179
180         for (int i=0; i<__pAnimationForm->GetControlCount(); ++i)
181         {
182                 Control* pControl = __pAnimationForm->GetControl(i);
183                 ControlAnimator* pAnimator = pControl->GetControlAnimator();
184                 AnimationManager::CheckAnimatorSuccessStatus(*pAnimator);
185
186                 if (pAnimator->GetStatus() == ANIMATOR_STATUS_PLAYING)
187                 {
188                         r = pAnimator->StopAnimation(ANIMATION_TRIGGER_USER);
189                         CheckAnimationSuccessStatus(r,L"StopAnimation");
190                 }
191         }
192 }