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 ) = default;
41 PropertyCondition& PropertyCondition::operator=( const PropertyCondition& rhs ) = default;
43 PropertyCondition::PropertyCondition( PropertyCondition&& rhs ) = default;
45 PropertyCondition& PropertyCondition::operator=( PropertyCondition&& rhs ) = default;
47 std::size_t PropertyCondition::GetArgumentCount() const
49 return GetImplementation(*this).arguments.Count();
52 float PropertyCondition::GetArgument( std::size_t index ) const
54 return GetImplementation(*this).arguments[ index ];
57 PropertyCondition LessThanCondition( float arg )
59 PropertyCondition condition;
60 Internal::PropertyCondition& impl = GetImplementation( condition );
61 impl.type = Internal::PropertyCondition::LessThan;
62 impl.arguments.PushBack( arg );
67 PropertyCondition GreaterThanCondition( float arg )
69 PropertyCondition condition;
70 Internal::PropertyCondition& impl = GetImplementation( condition );
71 impl.type = Internal::PropertyCondition::GreaterThan;
72 impl.arguments.PushBack( arg );
77 PropertyCondition InsideCondition( float arg0, float arg1 )
79 PropertyCondition condition;
80 Internal::PropertyCondition& impl = GetImplementation( condition );
81 impl.type = Internal::PropertyCondition::Inside;
82 impl.arguments.PushBack( arg0 );
83 impl.arguments.PushBack( arg1 );
88 PropertyCondition OutsideCondition( float arg0, float arg1 )
90 PropertyCondition condition;
91 Internal::PropertyCondition& impl = GetImplementation( condition );
92 impl.type = Internal::PropertyCondition::Outside;
93 impl.arguments.PushBack( arg0 );
94 impl.arguments.PushBack( arg1 );
99 PropertyCondition StepCondition( float stepAmount, float referenceValue )
101 PropertyCondition condition;
102 Internal::PropertyCondition& impl = GetImplementation( condition );
103 impl.type = Internal::PropertyCondition::Step;
104 impl.arguments.PushBack( referenceValue );
105 impl.arguments.PushBack( 1.0f / stepAmount );
106 impl.arguments.PushBack( 0.0f ); // current step
111 PropertyCondition VariableStepCondition( const Dali::Vector<float>& stepAmount )
113 PropertyCondition condition;
114 Internal::PropertyCondition& impl = GetImplementation( condition );
115 impl.type = Internal::PropertyCondition::VariableStep;
116 impl.arguments.PushBack( 0.0f ); // current step
117 Dali::Vector<float>::SizeType count = stepAmount.Count();
118 impl.arguments.PushBack( float( count ) ); // store number of steps
119 for( Dali::Vector<float>::SizeType index = 0; index < count; ++index )
121 impl.arguments.PushBack( stepAmount[index] );