2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 #include <dali/public-api/common/dali-common.h>
19 #include <dali/public-api/math/vector2.h>
20 #include <dali/public-api/math/vector3.h>
21 #include <dali/public-api/math/vector4.h>
22 #include <dali/public-api/object/property-input.h>
23 #include <dali/internal/update/common/property-condition-functions.h>
34 // LessThan ///////////////////////////////////////////////////////////////////
36 ConditionFunction LessThan::GetFunction(Property::Type valueType)
38 ConditionFunction function = NULL;
42 case Property::BOOLEAN:
44 function = LessThan::EvalBoolean;
49 function = LessThan::EvalFloat;
52 case Property::VECTOR2:
54 function = LessThan::EvalVector2;
57 case Property::VECTOR3:
59 function = LessThan::EvalVector3;
62 case Property::VECTOR4:
64 function = LessThan::EvalVector4;
69 function = LessThan::EvalDefault;
77 bool LessThan::EvalBoolean( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
79 const float arg0 = arg[0];
80 return (value.GetBoolean() < arg0);
83 bool LessThan::EvalFloat( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
85 const float arg0 = arg[0];
86 return (value.GetFloat() < arg0);
89 bool LessThan::EvalVector2( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
91 const float arg0 = arg[0];
92 return (value.GetVector2().LengthSquared() < arg0 * arg0);
95 bool LessThan::EvalVector3( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
97 const float arg0 = arg[0];
98 return (value.GetVector3().LengthSquared() < arg0 * arg0);
101 bool LessThan::EvalVector4( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
103 const float arg0 = arg[0];
104 return (value.GetVector4().LengthSquared() < arg0 * arg0);
107 bool LessThan::EvalDefault( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
112 // GreaterThan ///////////////////////////////////////////////////////////////////
114 ConditionFunction GreaterThan::GetFunction(Property::Type valueType)
116 ConditionFunction function = NULL;
120 case Property::BOOLEAN:
122 function = GreaterThan::EvalBoolean;
125 case Property::FLOAT:
127 function = GreaterThan::EvalFloat;
130 case Property::VECTOR2:
132 function = GreaterThan::EvalVector2;
135 case Property::VECTOR3:
137 function = GreaterThan::EvalVector3;
140 case Property::VECTOR4:
142 function = GreaterThan::EvalVector4;
147 function = GreaterThan::EvalDefault;
155 bool GreaterThan::EvalBoolean( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
157 const float arg0 = arg[0];
158 return (value.GetBoolean() > arg0);
161 bool GreaterThan::EvalFloat( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
163 const float arg0 = arg[0];
164 return (value.GetFloat() > arg0);
167 bool GreaterThan::EvalVector2( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
169 const float arg0 = arg[0];
170 return (value.GetVector2().LengthSquared() > arg0 * arg0);
173 bool GreaterThan::EvalVector3( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
175 const float arg0 = arg[0];
176 return (value.GetVector3().LengthSquared() > arg0 * arg0);
179 bool GreaterThan::EvalVector4( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
181 const float arg0 = arg[0];
182 return (value.GetVector4().LengthSquared() > arg0 * arg0);
185 bool GreaterThan::EvalDefault( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
190 // Inside /////////////////////////////////////////////////////////////////////
192 ConditionFunction Inside::GetFunction(Property::Type valueType)
194 ConditionFunction function = NULL;
198 case Property::BOOLEAN:
200 function = Inside::EvalBoolean;
203 case Property::FLOAT:
205 function = Inside::EvalFloat;
208 case Property::VECTOR2:
210 function = Inside::EvalVector2;
213 case Property::VECTOR3:
215 function = Inside::EvalVector3;
218 case Property::VECTOR4:
220 function = Inside::EvalVector4;
225 function = Inside::EvalDefault;
233 bool Inside::EvalBoolean( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
235 const bool valueBoolean = value.GetBoolean();
236 return ( (valueBoolean > arg[0]) && (valueBoolean < arg[1]) );
239 bool Inside::EvalFloat( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
241 const float valueFloat = value.GetFloat();
242 return ( (valueFloat > arg[0]) && (valueFloat < arg[1]) );
245 bool Inside::EvalVector2( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
247 const float length2 = value.GetVector2().LengthSquared();
248 return ( (length2 > arg[0]*arg[0]) && (length2 < arg[1]*arg[1]) );
251 bool Inside::EvalVector3( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
253 const float length2 = value.GetVector3().LengthSquared();
254 return ( (length2 > arg[0]*arg[0]) && (length2 < arg[1]*arg[1]) );
257 bool Inside::EvalVector4( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
259 const float length2 = value.GetVector4().LengthSquared();
260 return ( (length2 > arg[0]*arg[0]) && (length2 < arg[1]*arg[1]) );
263 bool Inside::EvalDefault( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
268 // Outside ////////////////////////////////////////////////////////////////////
270 ConditionFunction Outside::GetFunction(Property::Type valueType)
272 ConditionFunction function = NULL;
276 case Property::BOOLEAN:
278 function = Outside::EvalBoolean;
281 case Property::FLOAT:
283 function = Outside::EvalFloat;
286 case Property::VECTOR2:
288 function = Outside::EvalVector2;
291 case Property::VECTOR3:
293 function = Outside::EvalVector3;
296 case Property::VECTOR4:
298 function = Outside::EvalVector4;
303 function = Outside::EvalDefault;
311 bool Outside::EvalBoolean( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
313 const bool valueBoolean = value.GetBoolean();
314 return ( (valueBoolean < arg[0]) || (valueBoolean > arg[1]) );
317 bool Outside::EvalFloat( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
319 const float valueFloat = value.GetFloat();
320 return ( (valueFloat < arg[0]) || (valueFloat > arg[1]) );
323 bool Outside::EvalVector2( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
325 const float length2 = value.GetVector2().LengthSquared();
326 return ( (length2 < arg[0]*arg[0]) || (length2 > arg[1]*arg[1]) );
329 bool Outside::EvalVector3( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
331 const float length2 = value.GetVector3().LengthSquared();
332 return ( (length2 < arg[0]*arg[0]) || (length2 > arg[1]*arg[1]) );
335 bool Outside::EvalVector4( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
337 const float length2 = value.GetVector4().LengthSquared();
338 return ( (length2 < arg[0]*arg[0]) || (length2 > arg[1]*arg[1]) );
341 bool Outside::EvalDefault( const Dali::PropertyInput& value, PropertyNotification::RawArgumentContainer& arg )
346 } // namespace SceneGraph
348 } // namespace Internal