2 * Copyright (c) 2015 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.
19 #include <dali/public-api/object/property-conditions.h>
22 #include <dali/public-api/object/property-value.h>
23 #include <dali/internal/event/common/property-conditions-impl.h>
28 PropertyCondition::PropertyCondition()
29 : BaseHandle(new Internal::PropertyCondition())
34 PropertyCondition::~PropertyCondition()
39 PropertyCondition::PropertyCondition( const PropertyCondition& handle )
44 PropertyCondition& PropertyCondition::operator=( const PropertyCondition& rhs )
46 BaseHandle::operator=(rhs);
50 std::size_t PropertyCondition::GetArgumentCount() const
52 return GetImplementation(*this).arguments.Count();
55 float PropertyCondition::GetArgument( std::size_t index ) const
57 return GetImplementation(*this).arguments[ index ];
60 PropertyCondition LessThanCondition( float arg )
62 PropertyCondition condition;
63 Internal::PropertyCondition& impl = GetImplementation( condition );
64 impl.type = Internal::PropertyCondition::LessThan;
65 impl.arguments.PushBack( arg );
70 PropertyCondition GreaterThanCondition( float arg )
72 PropertyCondition condition;
73 Internal::PropertyCondition& impl = GetImplementation( condition );
74 impl.type = Internal::PropertyCondition::GreaterThan;
75 impl.arguments.PushBack( arg );
80 PropertyCondition InsideCondition( float arg0, float arg1 )
82 PropertyCondition condition;
83 Internal::PropertyCondition& impl = GetImplementation( condition );
84 impl.type = Internal::PropertyCondition::Inside;
85 impl.arguments.PushBack( arg0 );
86 impl.arguments.PushBack( arg1 );
91 PropertyCondition OutsideCondition( float arg0, float arg1 )
93 PropertyCondition condition;
94 Internal::PropertyCondition& impl = GetImplementation( condition );
95 impl.type = Internal::PropertyCondition::Outside;
96 impl.arguments.PushBack( arg0 );
97 impl.arguments.PushBack( arg1 );
102 PropertyCondition StepCondition( float stepAmount, float referenceValue )
104 PropertyCondition condition;
105 Internal::PropertyCondition& impl = GetImplementation( condition );
106 impl.type = Internal::PropertyCondition::Step;
107 impl.arguments.PushBack( referenceValue );
108 impl.arguments.PushBack( 1.0f / stepAmount );
109 impl.arguments.PushBack( 0.0f ); // current step
114 PropertyCondition VariableStepCondition( const Dali::Vector<float>& stepAmount )
116 PropertyCondition condition;
117 Internal::PropertyCondition& impl = GetImplementation( condition );
118 impl.type = Internal::PropertyCondition::VariableStep;
119 impl.arguments.PushBack( 0.0f ); // current step
120 Dali::Vector<float>::SizeType count = stepAmount.Count();
121 impl.arguments.PushBack( float( count ) ); // store number of steps
122 for( Dali::Vector<float>::SizeType index = 0; index < count; ++index )
124 impl.arguments.PushBack( stepAmount[index] );