-#ifndef __DALI_INTERNAL_SCENE_GRAPH_INHERITED_PROPERTY_H__
-#define __DALI_INTERNAL_SCENE_GRAPH_INHERITED_PROPERTY_H__
+#ifndef DALI_INTERNAL_SCENE_GRAPH_INHERITED_PROPERTY_H
+#define DALI_INTERNAL_SCENE_GRAPH_INHERITED_PROPERTY_H
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 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.
#include <dali/public-api/object/property.h>
#include <dali/public-api/object/property-input.h>
#include <dali/public-api/object/property-types.h>
+#include <dali/public-api/math/math-utils.h> // Clamp
namespace Dali
{
namespace SceneGraph
{
-template <class T>
-class InheritedProperty;
-
/**
* An inherited Vector3 property.
*/
-template <>
-class InheritedProperty<Vector3> : public PropertyInputImpl
+class InheritedVector3 : public PropertyInputImpl
{
public:
/**
- * Create an inherited property.
- * @param [in] initialValue The initial value of the property.
+ * Create an inherited Vector3.
*/
- InheritedProperty( const Vector3& initialValue )
- : mValue( initialValue ),
+ InheritedVector3()
+ : mValue(),
mInheritedFlag( false ),
mReinheritedFlag( true )
{
}
/**
- * Virtual destructor.
+ * Create an inherited Vector3.
+ * @param [in] initialValue The initial value of the property.
*/
- virtual ~InheritedProperty()
+ InheritedVector3( const Vector3& initialValue )
+ : mValue( initialValue ),
+ mInheritedFlag( false ),
+ mReinheritedFlag( true )
{
}
+ /**
+ * Virtual destructor.
+ */
+ ~InheritedVector3() override = default;
/**
* @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType()
*/
- virtual Dali::Property::Type GetType() const
+ Dali::Property::Type GetType() const override
{
return Dali::PropertyTypes::Get<Vector3>();
}
/**
* @copydoc Dali::Internal::PropertyInputImpl::InputInitialized()
*/
- virtual bool InputInitialized() const
+ bool InputInitialized() const override
{
// A constraint cannot use the property until it has been inherited (at least once).
return mInheritedFlag;
* @copydoc Dali::Internal::PropertyInputImpl::InputChanged()
* @note A constraint can only receive the inherited property from the previous frame.
*/
- virtual bool InputChanged() const
+ bool InputChanged() const override
{
return !IsClean();
}
/**
* @copydoc Dali::PropertyInput::GetVector3()
*/
- virtual const Vector3& GetVector3( BufferIndex bufferIndex ) const
+ const Vector3& GetVector3( BufferIndex bufferIndex ) const override
{
return mValue[ bufferIndex ];
}
/**
* @copydoc Dali::PropertyInput::GetConstraintInputVector3()
*/
- virtual const Vector3& GetConstraintInputVector3( BufferIndex bufferIndex ) const
+ const Vector3& GetConstraintInputVector3( BufferIndex bufferIndex ) const override
{
// For inherited properties, constraints work with the value from the previous frame.
// This is because constraints are applied to position etc, before world-position is calculated.
/**
* @copydoc Dali::SceneGraph::PropertyInterface::Get()
*/
- Vector3& Get(size_t bufferIndex)
+ Vector3& Get( BufferIndex bufferIndex )
{
return mValue[bufferIndex];
}
/**
* @copydoc Dali::SceneGraph::PropertyInterface::Get()
*/
- const Vector3& Get(size_t bufferIndex) const
+ const Vector3& Get( BufferIndex bufferIndex ) const
{
return mValue[bufferIndex];
}
* @param[in] bufferIndex The buffer to read.
* @return The property value.
*/
- const Vector3& operator[](size_t bufferIndex) const
+ const Vector3& operator[]( BufferIndex bufferIndex ) const
{
return mValue[bufferIndex];
}
private:
// Undefined
- InheritedProperty(const InheritedProperty& property);
+ InheritedVector3(const InheritedVector3& property);
// Undefined
- InheritedProperty& operator=(const InheritedProperty& rhs);
+ InheritedVector3& operator=(const InheritedVector3& rhs);
private:
/**
* Virtual destructor.
*/
- virtual ~InheritedColor()
- {
- }
+ ~InheritedColor() override = default;
/**
* @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType()
*/
- virtual Dali::Property::Type GetType() const
+ Dali::Property::Type GetType() const override
{
return Dali::PropertyTypes::Get<Vector4>();
}
/**
* @copydoc Dali::Internal::PropertyInputImpl::InputInitialized()
*/
- virtual bool InputInitialized() const
+ bool InputInitialized() const override
{
// A constraint cannot use the property until it has been inherited (at least once).
return mInheritedFlag;
* @copydoc Dali::Internal::PropertyInputImpl::InputChanged()
* @note A constraint can only receive the inherited property from the previous frame.
*/
- virtual bool InputChanged() const
+ bool InputChanged() const override
{
return !IsClean();
}
/**
* @copydoc Dali::PropertyInput::GetVector4()
*/
- virtual const Vector4& GetVector4( BufferIndex bufferIndex ) const
+ const Vector4& GetVector4( BufferIndex bufferIndex ) const override
{
return mValue[ bufferIndex ];
}
/**
* @copydoc Dali::PropertyInput::GetConstraintInputVector4()
*/
- virtual const Vector4& GetConstraintInputVector4( BufferIndex bufferIndex ) const
+ const Vector4& GetConstraintInputVector4( BufferIndex bufferIndex ) const override
{
// For inherited properties, constraints work with the value from the previous frame.
// This is because constraints are applied to position etc, before world-position is calculated.
/**
* @copydoc Dali::SceneGraph::PropertyInterface::Get()
*/
- Vector4& Get(size_t bufferIndex)
+ Vector4& Get( BufferIndex bufferIndex )
{
return mValue[bufferIndex];
}
/**
* @copydoc Dali::SceneGraph::PropertyInterface::Get()
*/
- const Vector4& Get(size_t bufferIndex) const
+ const Vector4& Get( BufferIndex bufferIndex ) const
{
return mValue[bufferIndex];
}
* @param[in] bufferIndex The buffer to read.
* @return The property value.
*/
- const Vector4& operator[](size_t bufferIndex) const
+ const Vector4& operator[]( BufferIndex bufferIndex ) const
{
return mValue[bufferIndex];
}
bool mInheritedFlag :1; ///< Flag whether the value has ever been inherited
bool mReinheritedFlag :1; ///< Flag whether value was re-inherited in previous frame
-
};
/**
* An inherited Quaternion property.
*/
-template <>
-class InheritedProperty<Quaternion> : public PropertyInputImpl
+class InheritedQuaternion : public PropertyInputImpl
{
public:
/**
* Create an inherited property.
- * @param [in] initialValue The initial value of the property.
*/
- InheritedProperty( const Quaternion& initialValue )
- : mValue( initialValue ),
+ InheritedQuaternion()
+ : mValue(),
mInheritedFlag( false ),
mReinheritedFlag( true )
{
/**
* Virtual destructor.
*/
- virtual ~InheritedProperty()
- {
- }
+ ~InheritedQuaternion() override = default;
/**
* @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType()
*/
- virtual Dali::Property::Type GetType() const
+ Dali::Property::Type GetType() const override
{
return Dali::PropertyTypes::Get<Quaternion>();
}
/**
* @copydoc Dali::Internal::PropertyInputImpl::InputInitialized()
*/
- virtual bool InputInitialized() const
+ bool InputInitialized() const override
{
// A constraint cannot use the property until it has been inherited (at least once).
return mInheritedFlag;
* @copydoc Dali::Internal::PropertyInputImpl::InputChanged()
* @note A constraint can only receive the inherited property from the previous frame.
*/
- virtual bool InputChanged() const
+ bool InputChanged() const override
{
return !IsClean();
}
/**
* @copydoc Dali::PropertyInput::GetQuaternion()
*/
- virtual const Quaternion& GetQuaternion( BufferIndex bufferIndex ) const
+ const Quaternion& GetQuaternion( BufferIndex bufferIndex ) const override
{
return mValue[ bufferIndex ];
}
/**
* @copydoc Dali::PropertyInput::GetConstraintInputQuaternion()
*/
- virtual const Quaternion& GetConstraintInputQuaternion( BufferIndex bufferIndex ) const
+ const Quaternion& GetConstraintInputQuaternion( BufferIndex bufferIndex ) const override
{
// For inherited properties, constraints work with the value from the previous frame.
// This is because constraints are applied to position etc, before world-position is calculated.
/**
* @copydoc Dali::SceneGraph::PropertyInterface::Get()
*/
- Quaternion& Get(size_t bufferIndex)
+ Quaternion& Get( BufferIndex bufferIndex )
{
return mValue[bufferIndex];
}
/**
* @copydoc Dali::SceneGraph::PropertyInterface::Get()
*/
- const Quaternion& Get(size_t bufferIndex) const
+ const Quaternion& Get( BufferIndex bufferIndex ) const
{
return mValue[bufferIndex];
}
* @param[in] bufferIndex The buffer to read.
* @return The property value.
*/
- const Quaternion& operator[](size_t bufferIndex) const
+ const Quaternion& operator[]( BufferIndex bufferIndex ) const
{
return mValue[bufferIndex];
}
private:
// Undefined
- InheritedProperty();
+ InheritedQuaternion(const InheritedQuaternion& property);
// Undefined
- InheritedProperty(const InheritedProperty& property);
-
- // Undefined
- InheritedProperty& operator=(const InheritedProperty& rhs);
+ InheritedQuaternion& operator=(const InheritedQuaternion& rhs);
private:
/**
* An inherited Matrix property.
*/
-template <>
-class InheritedProperty<Matrix> : public PropertyInputImpl
+class InheritedMatrix : public PropertyInputImpl
{
public:
/**
* Create an inherited property.
- * @param [in] initialValue The initial value of the property.
*/
- InheritedProperty( const Matrix& initialValue )
- : mValue( initialValue ),
+ InheritedMatrix()
+ : mValue(),
mInheritedFlag( false ),
mReinheritedFlag( true )
{
/**
* Virtual destructor.
*/
- virtual ~InheritedProperty()
- {
- }
+ ~InheritedMatrix() override = default;
/**
* @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType()
*/
- virtual Dali::Property::Type GetType() const
+ Dali::Property::Type GetType() const override
{
return Dali::PropertyTypes::Get<Matrix>();
}
/**
* @copydoc Dali::Internal::PropertyInputImpl::InputInitialized()
*/
- virtual bool InputInitialized() const
+ bool InputInitialized() const override
{
// A constraint cannot use the property until it has been inherited (at least once).
return mInheritedFlag;
* @copydoc Dali::Internal::PropertyInputImpl::InputChanged()
* @note A constraint can only receive the inherited property from the previous frame.
*/
- virtual bool InputChanged() const
+ bool InputChanged() const override
{
return !IsClean();
}
/**
* @copydoc Dali::Internal::PropertyInputImpl::GetMatrix()
*/
- virtual const Matrix& GetMatrix( BufferIndex bufferIndex ) const
+ const Matrix& GetMatrix( BufferIndex bufferIndex ) const override
{
return mValue[ bufferIndex ];
}
/**
* @copydoc Dali::Internal::PropertyInputImpl::GetConstraintInputMatrix()
*/
- virtual const Matrix& GetConstraintInputMatrix( BufferIndex bufferIndex ) const
+ const Matrix& GetConstraintInputMatrix( BufferIndex bufferIndex ) const override
{
// For inherited properties, constraints work with the value from the previous frame.
// This is because constraints are applied to position etc, before world-position is calculated.
}
/**
- * @copydoc Dali::PropertyInput::GetQuaternion()
- */
- virtual const Quaternion& GetQuaternion() const
- {
- DALI_ASSERT_ALWAYS( false && "Property type mismatch" );
- return DUMMY_QUATERNION_VALUE;
- }
-
- /**
- * @copydoc Dali::PropertyInput::GetQuaternion()
- */
- virtual const Quaternion& GetQuaternion( BufferIndex bufferIndex ) const
- {
- DALI_ASSERT_ALWAYS( false && "Property type mismatch" );
- return DUMMY_QUATERNION_VALUE;
- }
-
- /**
* Set the property value. This will only persist for the current frame; the property
* will be reset with the base value, at the beginning of the next frame.
* @param[in] bufferIndex The buffer to write.
/**
* @copydoc Dali::SceneGraph::PropertyInterface::Get()
*/
- Matrix& Get(size_t bufferIndex)
+ Matrix& Get( BufferIndex bufferIndex )
{
return mValue[bufferIndex];
}
/**
* @copydoc Dali::SceneGraph::PropertyInterface::Get()
*/
- const Matrix& Get(size_t bufferIndex) const
+ const Matrix& Get( BufferIndex bufferIndex ) const
{
return mValue[bufferIndex];
}
* @param[in] bufferIndex The buffer to read.
* @return The property value.
*/
- const Matrix& operator[](size_t bufferIndex) const
+ const Matrix& operator[]( BufferIndex bufferIndex ) const
{
return mValue[bufferIndex];
}
- void SetDirty(size_t bufferIndex)
+ void SetDirty( BufferIndex bufferIndex )
{
mReinheritedFlag = true;
private:
// Undefined
- InheritedProperty();
-
- // Undefined
- InheritedProperty(const InheritedProperty& property);
+ InheritedMatrix(const InheritedMatrix& property);
// Undefined
- InheritedProperty& operator=(const InheritedProperty& rhs);
+ InheritedMatrix& operator=(const InheritedMatrix& rhs);
private:
} // namespace Dali
-#endif // __DALI_INTERNAL_SCENE_GRAPH_INHERITED_PROPERTY_H__
+#endif // DALI_INTERNAL_SCENE_GRAPH_INHERITED_PROPERTY_H