1 #ifndef __DALI_ACTIVE_CONSTRAINT_H__
2 #define __DALI_ACTIVE_CONSTRAINT_H__
5 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 #include <dali/public-api/animation/active-constraint-declarations.h>
23 #include <dali/public-api/object/any.h>
24 #include <dali/public-api/object/handle.h>
25 #include <dali/public-api/object/property.h>
26 #include <dali/public-api/object/property-index-ranges.h>
31 namespace Internal DALI_INTERNAL
33 class ActiveConstraintBase;
37 * @brief A constraint which is being applied to an object.
40 * | %Signal Name | Method |
41 * |--------------|-----------------------|
42 * | applied | @ref AppliedSignal() |
44 class DALI_IMPORT_API ActiveConstraint : public Handle
49 * @brief An enumeration of properties belonging to the ActiveConstraint class.
55 WEIGHT = DEFAULT_DERIVED_HANDLE_PROPERTY_START_INDEX, ///< name "weight", type Float
59 static const float FINAL_WEIGHT; ///< 1.0f means the constraint is fully-applied, unless weight is still being animated
60 static const float DEFAULT_WEIGHT; ///< 1.0f
63 * @brief Create an uninitialized Constraint; this can be initialized with Constraint::New().
65 * Calling member functions with an uninitialized Dali::Object is not allowed.
70 * @brief Dali::ActiveConstraint is intended as a base class
72 * This is non-virtual since derived Handle types must not contain data or virtual methods.
77 * @brief This copy constructor is required for (smart) pointer semantics.
79 * @param [in] handle A reference to the copied handle
81 ActiveConstraint(const ActiveConstraint& handle);
84 * @brief This assignment operator is required for (smart) pointer semantics.
86 * @param [in] rhs A reference to the copied handle
87 * @return A reference to this
89 ActiveConstraint& operator=(const ActiveConstraint& rhs);
92 * @brief Retrieve the object which this constraint is targeting.
94 * @return The target object.
96 Handle GetTargetObject();
99 * @brief Retrieve the property which this constraint is targeting.
101 * @return The target property.
103 Dali::Property::Index GetTargetProperty();
106 * @brief Set the weight of the constraint; this is a value clamped between 0.
108 * The default is 1.0f.
109 * 0.0f means the constraint has no effect, and 1.0f means the constraint is fully-applied.
110 * @note This is an asynchronous method; the value written may not match a value subsequently read with GetCurrentWeight().
111 * @param [in] weight The weight.
113 void SetWeight( float weight );
116 * @brief Retrieve the current weight of the constraint.
118 * @return The current weight.
120 float GetCurrentWeight() const;
123 * @brief This signal is emitted after the apply-time of the constraint has expired.
125 * @note A non-zero apply-time must have been set using Constraint::SetApplyTime().
126 * @return A signal object to Connect() with.
128 ActiveConstraintSignalType& AppliedSignal();
130 public: // Not intended for use by Application developers
133 * @brief This constructor is used by Dali New() methods.
135 * @param [in] constraint A pointer to a newly allocated Dali resource
137 explicit DALI_INTERNAL ActiveConstraint( Internal::ActiveConstraintBase* constraint );
142 #endif // __DALI_ACTIVE_CONSTRAINT_H__