Revert "[Tizen] Initialize 'mDepthTreeDirty' member in stage-impl.cpp"
[platform/core/uifw/dali-core.git] / dali / internal / event / common / property-metadata.cpp
1 /*
2  * Copyright (c) 2017 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0
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
18 // CLASS HEADER
19 #include <dali/internal/event/common/property-metadata.h>
20
21 // INTERNAL INCLUDES
22 #include <dali/public-api/math/vector2.h>
23 #include <dali/public-api/math/vector3.h>
24 #include <dali/public-api/math/vector4.h>
25 #include <dali/public-api/object/property.h>
26
27 namespace Dali
28 {
29
30 namespace Internal
31 {
32
33 void PropertyMetadata::SetPropertyValue( const Property::Value& propertyValue )
34 {
35   switch ( GetType() )
36   {
37     case Property::NONE:
38     case Property::RECTANGLE:
39     case Property::STRING:
40     case Property::ARRAY:
41     case Property::MAP:
42     case Property::BOOLEAN:
43     case Property::INTEGER:
44     case Property::FLOAT:
45     case Property::ROTATION:
46     case Property::MATRIX:
47     case Property::MATRIX3:
48     {
49       value = propertyValue;
50       break;
51     }
52
53     case Property::VECTOR2:
54     {
55       Vector2 vector2Value;
56       value.Get( vector2Value );
57
58       if( componentIndex == 0 )
59       {
60         vector2Value.x = propertyValue.Get< float >();
61       }
62       else if( componentIndex == 1 )
63       {
64         vector2Value.y = propertyValue.Get< float >();
65       }
66       else
67       {
68         propertyValue.Get( vector2Value );
69       }
70
71       value = vector2Value;
72       break;
73     }
74
75     case Property::VECTOR3:
76     {
77       Vector3 vector3Value;
78       value.Get( vector3Value );
79
80       if( componentIndex == 0 )
81       {
82         vector3Value.x = propertyValue.Get< float >();
83       }
84       else if( componentIndex == 1 )
85       {
86         vector3Value.y = propertyValue.Get< float >();
87       }
88       else if( componentIndex == 2 )
89       {
90         vector3Value.z = propertyValue.Get< float >();
91       }
92       else
93       {
94         propertyValue.Get( vector3Value );
95       }
96
97       value = vector3Value;
98       break;
99     }
100
101     case Property::VECTOR4:
102     {
103       Vector4 vector4Value;
104       value.Get( vector4Value );
105
106       if( componentIndex == 0 )
107       {
108         vector4Value.x = propertyValue.Get< float >();
109       }
110       else if( componentIndex == 1 )
111       {
112         vector4Value.y = propertyValue.Get< float >();
113       }
114       else if( componentIndex == 2 )
115       {
116         vector4Value.z = propertyValue.Get< float >();
117       }
118       else if( componentIndex == 3 )
119       {
120         vector4Value.w = propertyValue.Get< float >();
121       }
122       else
123       {
124         propertyValue.Get( vector4Value );
125       }
126
127       value = vector4Value;
128       break;
129     }
130   }
131 }
132
133 Property::Value PropertyMetadata::GetPropertyValue() const
134 {
135   Property::Value propertyValue;
136
137   if( !IsAnimatable() )
138   {
139     propertyValue = value;
140   }
141   else
142   {
143     switch ( GetType() )
144     {
145       case Property::NONE:
146       case Property::RECTANGLE:
147       case Property::STRING:
148       case Property::ARRAY:
149       case Property::MAP:
150       case Property::BOOLEAN:
151       case Property::INTEGER:
152       case Property::FLOAT:
153       case Property::MATRIX:
154       case Property::MATRIX3:
155       case Property::ROTATION:
156       {
157         propertyValue = value;
158         break;
159       }
160
161       case Property::VECTOR2:
162       {
163         Vector2 vector2Value;
164         value.Get( vector2Value );
165
166         if( componentIndex == 0 )
167         {
168           propertyValue = vector2Value.x;
169         }
170         else if( componentIndex == 1 )
171         {
172           propertyValue = vector2Value.y;
173         }
174         else
175         {
176           propertyValue = vector2Value;
177         }
178         break;
179       }
180
181       case Property::VECTOR3:
182       {
183         Vector3 vector3Value;
184         value.Get( vector3Value );
185
186         if( componentIndex == 0 )
187         {
188           propertyValue = vector3Value.x;
189         }
190         else if( componentIndex == 1 )
191         {
192           propertyValue = vector3Value.y;
193         }
194         else if( componentIndex == 2 )
195         {
196           propertyValue = vector3Value.z;
197         }
198         else
199         {
200           propertyValue = vector3Value;
201         }
202         break;
203       }
204
205       case Property::VECTOR4:
206       {
207         Vector4 vector4Value;
208         value.Get( vector4Value );
209
210         if( componentIndex == 0 )
211         {
212           propertyValue = vector4Value.x;
213         }
214         else if( componentIndex == 1 )
215         {
216           propertyValue = vector4Value.y;
217         }
218         else if( componentIndex == 2 )
219         {
220           propertyValue = vector4Value.z;
221         }
222         else if( componentIndex == 3 )
223         {
224           propertyValue = vector4Value.w;
225         }
226         else
227         {
228           propertyValue = vector4Value;
229         }
230         break;
231       }
232     }
233   }
234
235   return propertyValue;
236 }
237
238 } // namespace Internal
239
240 } // namespace Dali