2 * Copyright (c) 2020 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 PropertyCondition::PropertyCondition( PropertyCondition&& rhs ) = default;
52 PropertyCondition& PropertyCondition::operator=( PropertyCondition&& rhs ) = default;
54 std::size_t PropertyCondition::GetArgumentCount() const
56 return GetImplementation(*this).arguments.Count();
59 float PropertyCondition::GetArgument( std::size_t index ) const
61 return GetImplementation(*this).arguments[ index ];
64 PropertyCondition LessThanCondition( float arg )
66 PropertyCondition condition;
67 Internal::PropertyCondition& impl = GetImplementation( condition );
68 impl.type = Internal::PropertyCondition::LessThan;
69 impl.arguments.PushBack( arg );
74 PropertyCondition GreaterThanCondition( float arg )
76 PropertyCondition condition;
77 Internal::PropertyCondition& impl = GetImplementation( condition );
78 impl.type = Internal::PropertyCondition::GreaterThan;
79 impl.arguments.PushBack( arg );
84 PropertyCondition InsideCondition( float arg0, float arg1 )
86 PropertyCondition condition;
87 Internal::PropertyCondition& impl = GetImplementation( condition );
88 impl.type = Internal::PropertyCondition::Inside;
89 impl.arguments.PushBack( arg0 );
90 impl.arguments.PushBack( arg1 );
95 PropertyCondition OutsideCondition( float arg0, float arg1 )
97 PropertyCondition condition;
98 Internal::PropertyCondition& impl = GetImplementation( condition );
99 impl.type = Internal::PropertyCondition::Outside;
100 impl.arguments.PushBack( arg0 );
101 impl.arguments.PushBack( arg1 );
106 PropertyCondition StepCondition( float stepAmount, float referenceValue )
108 PropertyCondition condition;
109 Internal::PropertyCondition& impl = GetImplementation( condition );
110 impl.type = Internal::PropertyCondition::Step;
111 impl.arguments.PushBack( referenceValue );
112 impl.arguments.PushBack( 1.0f / stepAmount );
113 impl.arguments.PushBack( 0.0f ); // current step
118 PropertyCondition VariableStepCondition( const Dali::Vector<float>& stepAmount )
120 PropertyCondition condition;
121 Internal::PropertyCondition& impl = GetImplementation( condition );
122 impl.type = Internal::PropertyCondition::VariableStep;
123 impl.arguments.PushBack( 0.0f ); // current step
124 Dali::Vector<float>::SizeType count = stepAmount.Count();
125 impl.arguments.PushBack( float( count ) ); // store number of steps
126 for( Dali::Vector<float>::SizeType index = 0; index < count; ++index )
128 impl.arguments.PushBack( stepAmount[index] );