Revert "License conversion from Flora to Apache 2.0"
[platform/core/uifw/dali-core.git] / dali / internal / event / animation / key-frames-impl.cpp
1 //
2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Flora License, Version 1.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://floralicense.org/license/
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16
17 // CLASS HEADER
18 #include <dali/internal/event/animation/key-frames-impl.h>
19
20 namespace Dali
21 {
22 namespace Internal
23 {
24
25 KeyFrames* KeyFrames::New()
26 {
27   return new KeyFrames();
28 }
29
30 KeyFrames::KeyFrames()
31   : mType(Property::NONE),
32     mKeyFrames(NULL)
33 {
34 }
35
36 KeyFrames::~KeyFrames()
37 {
38 }
39
40
41 void KeyFrames::CreateKeyFramesSpec(Property::Type type)
42 {
43   mType = type;
44   // Now we have a type, can create specific implementation
45   switch(type)
46   {
47     case Property::BOOLEAN:
48       mKeyFrames = Internal::KeyFrameBoolean::New();
49       break;
50     case Property::FLOAT:
51       mKeyFrames = Internal::KeyFrameNumber::New();
52       break;
53     case Property::VECTOR2:
54       mKeyFrames = Internal::KeyFrameVector2::New();
55       break;
56     case Property::VECTOR3:
57       mKeyFrames = Internal::KeyFrameVector3::New();
58       break;
59     case Property::VECTOR4:
60       mKeyFrames = Internal::KeyFrameVector4::New();
61       break;
62     case Property::ROTATION:
63       mKeyFrames = Internal::KeyFrameQuaternion::New();
64       break;
65     default:
66       DALI_ASSERT_DEBUG(!"Type not supported");
67       break;
68   }
69 }
70
71 Property::Type KeyFrames::GetType() const
72 {
73   return mType;
74 }
75
76 void KeyFrames::Add(float time, Property::Value value, AlphaFunction alpha)
77 {
78   if(mType == Property::NONE)
79   {
80     CreateKeyFramesSpec(value.GetType());
81   }
82
83   // Once we have created a type, can only add values of the same type
84   DALI_ASSERT_ALWAYS( mType == value.GetType() && "Can only add values of the same type to a KeyFrame" );
85
86   DALI_ASSERT_DEBUG(mKeyFrames);
87
88   switch(mType)
89   {
90     case Property::BOOLEAN:
91     {
92       Internal::KeyFrameBoolean* kf = static_cast<Internal::KeyFrameBoolean*>(mKeyFrames.Get());
93       kf->AddKeyFrame(time, value.Get<bool>(), alpha);
94       break;
95     }
96     case Property::FLOAT:
97     {
98       Internal::KeyFrameNumber* kf = static_cast<Internal::KeyFrameNumber*>(mKeyFrames.Get());
99       kf->AddKeyFrame(time, value.Get<float>(), alpha);
100       break;
101     }
102     case Property::VECTOR2:
103     {
104       Internal::KeyFrameVector2* kf = static_cast<Internal::KeyFrameVector2*>(mKeyFrames.Get());
105       kf->AddKeyFrame(time, value.Get<Vector2>(), alpha);
106       break;
107     }
108     case Property::VECTOR3:
109     {
110       Internal::KeyFrameVector3* kf = static_cast<Internal::KeyFrameVector3*>(mKeyFrames.Get());
111       kf->AddKeyFrame(time, value.Get<Vector3>(), alpha);
112       break;
113     }
114     case Property::VECTOR4:
115     {
116       Internal::KeyFrameVector4* kf = static_cast<Internal::KeyFrameVector4*>(mKeyFrames.Get());
117       kf->AddKeyFrame(time, value.Get<Vector4>(), alpha);
118       break;
119     }
120     case Property::ROTATION:
121     {
122       Internal::KeyFrameQuaternion* kf = static_cast<Internal::KeyFrameQuaternion*>(mKeyFrames.Get());
123       kf->AddKeyFrame(time, value.Get<Quaternion>(), alpha);
124       break;
125     }
126     default:
127       DALI_ASSERT_DEBUG(!"Type not supported");
128       break;
129   }
130 }
131
132 KeyFrameSpec* KeyFrames::GetKeyFramesBase() const
133 {
134   return mKeyFrames.Get();
135 }
136
137 } // Internal
138 } // Dali
139
140