#define __DALI_CONSTRAINT_H__
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
namespace Dali
{
+/**
+ * @addtogroup dali_core_animation
+ * @{
+ */
class Handle;
* constraint.AddSource( LocalSource( INPUT_PROPERTY_INDEX ) );
* constraint.Apply();
* @endcode
+ * @SINCE_1_0.0
*/
class DALI_IMPORT_API Constraint : public BaseHandle
{
* added to the Constraint in the order they were added via AddSource().
*
* @tparam P The property type to constrain.
+ * @SINCE_1_0.0
*/
template< typename P >
- class Function : public CallbackBase
+ class DALI_INTERNAL Function : public CallbackBase
{
public:
* void MyFunction( P&, const PropertyInputContainer& );
* @endcode
*
+ * @SINCE_1_0.0
* @param[in] function The function to call.
*/
Function( void( *function )( P&, const PropertyInputContainer& ) )
* void operator()( P&, const PropertyInputContainer& );
* @endcode
*
+ * @SINCE_1_0.0
* @param[in] object The object to copy.
*
* @tparam T The type of the object.
* void MyObject::MyMethod( P&, const PropertyInputContainer& );
* @endcode
*
+ * @SINCE_1_0.0
* @param[in] object The object to copy.
* @param[in] memberFunction The member function to call. This has to be a member of the same class.
*
*
* The object, if held by this object, is also copied.
*
+ * @SINCE_1_0.0
* @return A pointer to a newly-allocation Function.
*/
CallbackBase* Clone()
/**
* @brief Used to call the function to copy the stored object
+ * @SINCE_1_0.0
*/
typedef UndefinedClass* (*CopyConstructorDispatcher) ( UndefinedClass* object );
* @brief Copies the actual object in Constraint::Function.
*
* @tparam T The type of the object.
+ * @SINCE_1_0.0
*/
template< class T >
struct ObjectCopyConstructorDispatcher
/**
* @brief Copy the object stored in Constraint::Function.
*
+ * @SINCE_1_0.0
* @param[in] object The object to copy.
*
* @return Newly allocated clone of the object.
/**
* @brief Undefined copy constructor
+ * @SINCE_1_0.0
*/
Function( const Function& );
/**
* @brief Undefined assignment operator
+ * @SINCE_1_0.0
*/
Function& operator=( const Function& );
/**
* @brief Constructor used when copying the stored object.
*
+ * @SINCE_1_0.0
* @param[in] object A newly copied object
* @param[in] memberFunction The member function of the object.
* @param[in] dispatcher Used to call the actual object.
/**
* @brief Constructor used when copying a simple stored function.
*
+ * @SINCE_1_0.0
* @param[in] function The function to call.
*/
Function( CallbackBase::Function function )
*
* The final value may be "baked" i.e. saved permanently.
* Alternatively the constrained value may be discarded when the constraint is removed.
+ * @SINCE_1_0.0
*/
enum RemoveAction
{
- Bake, ///< When the constraint is fully-applied, the constrained value is saved.
- Discard ///< When the constraint is removed, the constrained value is discarded.
+ Bake, ///< When the constraint is fully-applied, the constrained value is saved. @SINCE_1_0.0
+ Discard ///< When the constraint is removed, the constrained value is discarded. @SINCE_1_0.0
};
static const RemoveAction DEFAULT_REMOVE_ACTION; ///< Bake
/**
* @brief Create an uninitialized Constraint; this can be initialized with Constraint::New().
*
- * Calling member functions with an uninitialized Dali::Object is not allowed.
+ * Calling member functions with an uninitialized Constraint handle is not allowed.
+ * @SINCE_1_0.0
*/
Constraint();
* @endcode
*
* Create the constraint with this function as follows:
+ *
* @code
* Constraint constraint = Constraint::New< Vector3 >( handle, CONSTRAINING_PROPERTY_INDEX, &MyFunction );
* @endcode
*
+ * @SINCE_1_0.0
* @param[in] handle The handle to the property-owning object.
* @param[in] targetIndex The index of the property to constrain.
* @param[in] function The function to call to set the constrained property value.
* @endcode
*
* Create the constraint with this object as follows:
+ *
* @code
* Constraint constraint = Constraint::New< Vector3 >( handle, CONSTRAINING_PROPERTY_INDEX, MyObject() );
* @endcode
*
+ * @SINCE_1_0.0
* @param[in] handle The handle to the property-owning object.
* @param[in] targetIndex The index of the property to constrain.
* @param[in] object The functor object whose functor is called to set the constrained property value.
* @endcode
*
* Create the constraint with this object as follows:
+ *
* @code
* Constraint constraint = Constraint::New< Vector3 >( handle, CONSTRAINING_PROPERTY_INDEX, MyObject(), &MyObject::MyMethod );
* @endcode
*
+ * @SINCE_1_0.0
* @param[in] handle The handle to the property-owning object.
* @param[in] targetIndex The index of the property to constrain.
* @param[in] object The object whose member function is called to set the constrained property value.
/**
* @brief Creates a clones of this constraint for another object.
*
+ * @SINCE_1_0.0
* @param[in] handle The handle to the property-owning object this constraint is to be cloned for.
*
* @return The new constraint.
* @brief Destructor
*
* This is non-virtual since derived Handle types must not contain data or virtual methods.
+ * @SINCE_1_0.0
*/
~Constraint();
/**
* @brief This copy constructor is required for (smart) pointer semantics.
*
+ * @SINCE_1_0.0
* @param [in] constraint A reference to the copied handle
*/
Constraint( const Constraint& constraint );
/**
* @brief This assignment operator is required for (smart) pointer semantics.
*
+ * @SINCE_1_0.0
* @param [in] rhs A reference to the copied handle
* @return A reference to this
*/
Constraint& operator=( const Constraint& rhs );
/**
- * @brief Downcast an Object handle to Constraint handle.
+ * @brief Downcast a handle to Constraint handle.
*
* If handle points to a Constraint object the
* downcast produces valid handle. If not the returned handle is left uninitialized.
- * @param[in] baseHandle to An object
- * @return handle to a Constraint object or an uninitialized handle
+ * @SINCE_1_0.0
+ * @param[in] baseHandle BaseHandle to an object
+ * @return Handle to a Constraint object or an uninitialized handle
*/
static Constraint DownCast( BaseHandle baseHandle );
/**
* @brief Adds a constraint source to the constraint
*
+ * @SINCE_1_0.0
* @param[in] source The constraint source input to add
*/
void AddSource( ConstraintSource source );
/**
* @brief Applies this constraint.
*
+ * @SINCE_1_0.0
* @pre The constraint must be initialized
* @pre The target object must still be alive
* @pre The source inputs should not have been destroyed
/**
* @brief Removes this constraint.
+ * @SINCE_1_0.0
*/
void Remove();
/**
* @brief Retrieve the object which this constraint is targeting.
*
+ * @SINCE_1_0.0
* @return The target object.
*/
Handle GetTargetObject();
/**
* @brief Retrieve the property which this constraint is targeting.
*
+ * @SINCE_1_0.0
* @return The target property.
*/
Dali::Property::Index GetTargetProperty();
/**
- * @brief Set whether the constraint will "bake" a value when fully-applied.
+ * @brief Set the remove action. Constraint::Bake will "bake" a value when fully-applied.
*
- * Otherwise the constrained value will be discarded, when the constraint is removed.
+ * In case of Constraint::Discard, the constrained value will be discarded, when the constraint is removed.
* The default value is Constraint::Bake.
+ * @SINCE_1_0.0
* @param[in] action The remove-action.
*/
void SetRemoveAction( RemoveAction action );
/**
- * @brief Query whether the constraint will "bake" a value when fully-applied.
+ * @brief Retrieve the remove action that will happen when the constraint is removed.
*
- * Otherwise the constrained value will be discarded, when the constraint is removed.
- * @return The apply-action.
+ * @SINCE_1_0.0
+ * @return The remove-action.
*/
RemoveAction GetRemoveAction() const;
/**
* @brief Set a tag for the constraint so it can be identified later
*
+ * @SINCE_1_0.0
* @param[in] tag An integer to identify the constraint
*/
void SetTag( const unsigned int tag );
/**
* @brief Get the tag
*
+ * @SINCE_1_0.0
* @return The tag
*/
unsigned int GetTag() const;
public: // Not intended for use by Application developers
/**
- * @brief This constructor is used by Dali New() methods
+ * @brief This constructor is used by Constraint::New() methods
+ * @SINCE_1_0.0
* @param [in] constraint A pointer to a newly allocated Dali resource
*/
explicit DALI_INTERNAL Constraint( Internal::ConstraintBase* constraint );
/**
* @brief Construct a new constraint which targets a property.
*
+ * @SINCE_1_0.0
* @param[in] handle The handle to the property-owning object.
* @param[in] targetIndex The index of the property to constrain.
* @param[in] targetType Type The type of the constrained property.
static Constraint New( Handle handle, Property::Index targetIndex, Property::Type targetType, CallbackBase* function );
};
+/**
+ * @}
+ */
} // namespace Dali
#endif // __DALI_CONSTRAINT_H__