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.
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::ArgumentContainer PropertyCondition::GetArguments()
52 return GetImplementation(*this).arguments;
55 const PropertyCondition::ArgumentContainer& PropertyCondition::GetArguments() const
57 return GetImplementation(*this).arguments;
60 PropertyCondition LessThanCondition(float arg)
62 PropertyCondition condition;
63 GetImplementation(condition).type = Internal::PropertyCondition::LessThan;
64 GetImplementation(condition).arguments.push_back(Property::Value(arg));
69 PropertyCondition GreaterThanCondition(float arg)
71 PropertyCondition condition;
72 GetImplementation(condition).type = Internal::PropertyCondition::GreaterThan;
73 GetImplementation(condition).arguments.push_back(Property::Value(arg));
78 PropertyCondition InsideCondition(float arg0, float arg1)
80 PropertyCondition condition;
81 GetImplementation(condition).type = Internal::PropertyCondition::Inside;
82 GetImplementation(condition).arguments.push_back(Property::Value(arg0));
83 GetImplementation(condition).arguments.push_back(Property::Value(arg1));
88 PropertyCondition OutsideCondition(float arg0, float arg1)
90 PropertyCondition condition;
91 GetImplementation(condition).type = Internal::PropertyCondition::Outside;
92 GetImplementation(condition).arguments.push_back(Property::Value(arg0));
93 GetImplementation(condition).arguments.push_back(Property::Value(arg1));
98 PropertyCondition StepCondition(float stepAmount, float referenceValue)
100 PropertyCondition condition;
101 GetImplementation(condition).type = Internal::PropertyCondition::Step;
102 GetImplementation(condition).arguments.push_back(Property::Value(referenceValue));
103 GetImplementation(condition).arguments.push_back(Property::Value(1.0f / stepAmount));
104 GetImplementation(condition).arguments.push_back(Property::Value(0.0f)); // current step
109 PropertyCondition VariableStepCondition(const std::vector<float>& stepAmount)
111 PropertyCondition condition;
112 GetImplementation(condition).type = Internal::PropertyCondition::VariableStep;
113 GetImplementation(condition).arguments.push_back(Property::Value(0.0f)); // current step
114 int size = stepAmount.size();
115 GetImplementation(condition).arguments.push_back(Property::Value(static_cast<float>(size))); // store number of steps
116 for( std::vector<float>::const_iterator it = stepAmount.begin(), endIt = stepAmount.end(); it != endIt; ++it )
118 GetImplementation(condition).arguments.push_back(Property::Value( *it ));