X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Fmanager%2Ftransform-manager-property.h;h=619abee91ebc0473e1fc02b089bb28d1fea64799;hb=1cfe34df1874bde90b571a998d21709b2bdea29e;hp=609cac734aeab79c8080238989e05d03722a19a6;hpb=66df8a861f62fcb1ec441544e9ac6a10adf27002;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/manager/transform-manager-property.h b/dali/internal/update/manager/transform-manager-property.h index 609cac7..619abee 100644 --- a/dali/internal/update/manager/transform-manager-property.h +++ b/dali/internal/update/manager/transform-manager-property.h @@ -2,7 +2,7 @@ #define TRANSFORM_MANAGER_PROPERTY_H_ /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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. @@ -18,8 +18,8 @@ * */ -#include #include +#include namespace Dali { @@ -27,17 +27,13 @@ namespace Internal { namespace SceneGraph { - -template +template struct TransformManagerPropertyHandler : public AnimatablePropertyBase { /** * Constructor */ - TransformManagerPropertyHandler() - :mTxManager(nullptr), - mId( INVALID_TRANSFORM_ID ) - {} + TransformManagerPropertyHandler() = default; /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType() @@ -47,17 +43,20 @@ struct TransformManagerPropertyHandler : public AnimatablePropertyBase /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - virtual T& Get( BufferIndex bufferIndex ) = 0; + virtual T& Get(BufferIndex bufferIndex) = 0; /** * @copydoc Dali::SceneGraph::AnimatableProperty::Get() */ - virtual const T& Get( BufferIndex bufferIndex ) const = 0; + virtual const T& Get(BufferIndex bufferIndex) const = 0; /** * @copydoc Dali::PropertyInput::GetVector3() */ - const Vector3& GetVector3( BufferIndex bufferIndex ) const override{ return Vector3::ZERO; } + const Vector3& GetVector3(BufferIndex bufferIndex) const override + { + return Vector3::ZERO; + } /** * Retrieve a component of property @@ -65,7 +64,7 @@ struct TransformManagerPropertyHandler : public AnimatablePropertyBase */ virtual const float& GetFloatComponent(uint32_t component) const { - DALI_ASSERT_DEBUG( 0 && "Invalid call"); + DALI_ASSERT_DEBUG(0 && "Invalid call"); static const float value = 0.0f; return value; @@ -84,7 +83,9 @@ struct TransformManagerPropertyHandler : public AnimatablePropertyBase * @param[in] value The new value of the component * @param[in] component The component of the property */ - virtual void SetFloatComponent( float value, uint32_t component){} + virtual void SetFloatComponent(float value, uint32_t component) + { + } /** * @copydoc Dali::AnimatableProperty::Bake() @@ -96,22 +97,30 @@ struct TransformManagerPropertyHandler : public AnimatablePropertyBase * @param[in] value The new value of the component * @param[in] component The component of the property */ - virtual void BakeFloatComponent( float value, uint32_t component){} + virtual void BakeFloatComponent(float value, uint32_t component) + { + } /** * @copydoc Dali::AnimatableProperty::BakeX() */ - virtual void BakeX(BufferIndex bufferIndex, float value){} + virtual void BakeX(BufferIndex bufferIndex, float value) + { + } /** * @copydoc Dali::AnimatableProperty::BakeY() */ - virtual void BakeY(BufferIndex bufferIndex, float value){} + virtual void BakeY(BufferIndex bufferIndex, float value) + { + } /** * @copydoc Dali::AnimatableProperty::BakeZ() */ - virtual void BakeZ(BufferIndex bufferIndex, float value){} + virtual void BakeZ(BufferIndex bufferIndex, float value) + { + } /** * @copydoc Dali::AnimatableProperty::BakeRelative() @@ -126,22 +135,27 @@ struct TransformManagerPropertyHandler : public AnimatablePropertyBase /** * @copydoc Dali::AnimatableProperty::ResetToBaseValue() */ - void ResetToBaseValue(BufferIndex updateBufferIndex) override{} + void ResetToBaseValue(BufferIndex updateBufferIndex) override + { + } /** * @copydoc Dali::AnimatableProperty::IsClean() */ - bool IsClean() const override{ return false; } + bool IsClean() const override + { + return false; + } /** * Initializes the property * @param[in] transformManager Pointer to the transform manager * @param[in] Id of the transformation the property is associated with */ - void Initialize( TransformManager* transformManager, TransformId id ) + void Initialize(TransformManagerData* data) { - mTxManager = transformManager; - mId = id; + DALI_ASSERT_ALWAYS(data != nullptr && data->Manager() != nullptr); + mTxManagerData = data; } /** @@ -152,147 +166,134 @@ struct TransformManagerPropertyHandler : public AnimatablePropertyBase return true; } - TransformManager* mTxManager; - TransformId mId; + TransformManagerData* mTxManagerData{nullptr}; }; -struct TransformManagerPropertyVector3 : public TransformManagerPropertyHandler +template +struct TransformManagerPropertyVector3 final : public TransformManagerPropertyHandler { - - TransformManagerPropertyVector3(TransformManagerProperty property) - :TransformManagerPropertyHandler(), - mProperty( property ) - {} + TransformManagerPropertyVector3() = default; Dali::Property::Type GetType() const override { return Dali::PropertyTypes::Get(); } - Vector3& Get( BufferIndex bufferIndex ) override + Vector3& Get(BufferIndex bufferIndex) override { - return mTxManager->GetVector3PropertyValue( mId, mProperty ); + return mTxManagerData->Manager()->GetVector3PropertyValue(mTxManagerData->Id(), PropertyT); } - const Vector3& Get( BufferIndex bufferIndex ) const override + const Vector3& Get(BufferIndex bufferIndex) const override { - const TransformManager* txManager = mTxManager; - return txManager->GetVector3PropertyValue( mId, mProperty ); + return mTxManagerData->Manager()->GetVector3PropertyValue(mTxManagerData->Id(), PropertyT); } - const Vector3& GetVector3( BufferIndex bufferIndex ) const override + const Vector3& GetVector3(BufferIndex bufferIndex) const override { return Get(bufferIndex); } - const float& GetFloatComponent( uint32_t component ) const override + const float& GetFloatComponent(uint32_t component) const override { - const TransformManager* txManager = mTxManager; - return txManager->GetVector3PropertyComponentValue( mId, mProperty, component ); + return mTxManagerData->Manager()->GetVector3PropertyComponentValue(mTxManagerData->Id(), PropertyT, component); } void Set(BufferIndex bufferIndex, const Vector3& value) override { - mTxManager->SetVector3PropertyValue( mId, mProperty, value ); + mTxManagerData->Manager()->SetVector3PropertyValue(mTxManagerData->Id(), PropertyT, value); } void SetComponent(BufferIndex bufferIndex, float value, uint32_t component) { - mTxManager->SetVector3PropertyComponentValue( mId, mProperty, value, component); + mTxManagerData->Manager()->SetVector3PropertyComponentValue(mTxManagerData->Id(), PropertyT, value, component); } void BakeComponent(BufferIndex bufferIndex, float value, uint32_t component) { - mTxManager->BakeVector3PropertyComponentValue( mId, mProperty, value, component); + mTxManagerData->Manager()->BakeVector3PropertyComponentValue(mTxManagerData->Id(), PropertyT, value, component); } void Bake(BufferIndex bufferIndex, const Vector3& value) override { - mTxManager->BakeVector3PropertyValue(mId, mProperty, value ); + mTxManagerData->Manager()->BakeVector3PropertyValue(mTxManagerData->Id(), PropertyT, value); } void BakeX(BufferIndex bufferIndex, float value) override { - mTxManager->BakeXVector3PropertyValue(mId, mProperty, value ); + mTxManagerData->Manager()->BakeXVector3PropertyValue(mTxManagerData->Id(), PropertyT, value); } void BakeY(BufferIndex bufferIndex, float value) override { - mTxManager->BakeYVector3PropertyValue(mId, mProperty, value ); + mTxManagerData->Manager()->BakeYVector3PropertyValue(mTxManagerData->Id(), PropertyT, value); } void BakeZ(BufferIndex bufferIndex, float value) override { - mTxManager->BakeZVector3PropertyValue(mId, mProperty, value ); + mTxManagerData->Manager()->BakeZVector3PropertyValue(mTxManagerData->Id(), PropertyT, value); } - void SetFloatComponent( float value, uint32_t component) override + void SetFloatComponent(float value, uint32_t component) override { - mTxManager->SetVector3PropertyComponentValue( mId, mProperty, value, component); + mTxManagerData->Manager()->SetVector3PropertyComponentValue(mTxManagerData->Id(), PropertyT, value, component); } - void BakeFloatComponent( float value, uint32_t component ) override + void BakeFloatComponent(float value, uint32_t component) override { - mTxManager->BakeVector3PropertyComponentValue( mId, mProperty, value, component); + mTxManagerData->Manager()->BakeVector3PropertyComponentValue(mTxManagerData->Id(), PropertyT, value, component); } void BakeRelative(BufferIndex bufferIndex, const Vector3& value) override { - mTxManager->BakeRelativeVector3PropertyValue(mId, mProperty, value ); + mTxManagerData->Manager()->BakeRelativeVector3PropertyValue(mTxManagerData->Id(), PropertyT, value); } void BakeRelativeMultiply(BufferIndex bufferIndex, const Vector3& value) override { - mTxManager->BakeMultiplyVector3PropertyValue(mId, mProperty, value ); + mTxManagerData->Manager()->BakeMultiplyVector3PropertyValue(mTxManagerData->Id(), PropertyT, value); } - - TransformManagerProperty mProperty; }; -class TransformManagerPropertyQuaternion : public TransformManagerPropertyHandler +class TransformManagerPropertyQuaternion final : public TransformManagerPropertyHandler { public: - - TransformManagerPropertyQuaternion() - :TransformManagerPropertyHandler() - {} + TransformManagerPropertyQuaternion() = default; Dali::Property::Type GetType() const override { return Dali::PropertyTypes::Get(); } - Quaternion& Get( BufferIndex bufferIndex ) override + Quaternion& Get(BufferIndex bufferIndex) override { - return mTxManager->GetQuaternionPropertyValue( mId ); + return mTxManagerData->Manager()->GetQuaternionPropertyValue(mTxManagerData->Id()); } - const Quaternion& Get( BufferIndex bufferIndex ) const override + const Quaternion& Get(BufferIndex bufferIndex) const override { - const TransformManager* txManager = mTxManager; - return txManager->GetQuaternionPropertyValue( mId ); + return mTxManagerData->Manager()->GetQuaternionPropertyValue(mTxManagerData->Id()); } void Set(BufferIndex bufferIndex, const Quaternion& value) override { - return mTxManager->SetQuaternionPropertyValue( mId, value ); + return mTxManagerData->Manager()->SetQuaternionPropertyValue(mTxManagerData->Id(), value); } void Bake(BufferIndex bufferIndex, const Quaternion& value) override { - return mTxManager->BakeQuaternionPropertyValue( mId, value ); + return mTxManagerData->Manager()->BakeQuaternionPropertyValue(mTxManagerData->Id(), value); } void BakeRelative(BufferIndex bufferIndex, const Quaternion& value) override { - return mTxManager->BakeRelativeQuaternionPropertyValue( mId, value ); + return mTxManagerData->Manager()->BakeRelativeQuaternionPropertyValue(mTxManagerData->Id(), value); } - const Quaternion& GetQuaternion( BufferIndex bufferIndex ) const override + const Quaternion& GetQuaternion(BufferIndex bufferIndex) const override { return Get(bufferIndex); } - }; /** @@ -301,16 +302,14 @@ public: class TransformManagerVector3Input : public PropertyInputImpl { public: - /** * Create an TransformManagerVector3Input */ - TransformManagerVector3Input( TransformManagerProperty property, const Vector3& initialValue ) - :mTxManager(nullptr), - mId(INVALID_TRANSFORM_ID), - mProperty(property), - mValue(initialValue) - {} + TransformManagerVector3Input(TransformManagerProperty property, const Vector3& initialValue) + : mProperty(property), + mValue(initialValue) + { + } /** * Virtual destructor. @@ -356,18 +355,17 @@ public: */ void ComputeTransformComponent() const { - const TransformManager* txManager = mTxManager; - if( txManager ) + if(mTxManagerData) { - const Matrix& worldMatrix = txManager->GetWorldMatrix(mId); + const Matrix& worldMatrix = mTxManagerData->Manager()->GetWorldMatrix(mTxManagerData->Id()); - if( mProperty == TRANSFORM_PROPERTY_WORLD_POSITION ) + if(mProperty == TRANSFORM_PROPERTY_WORLD_POSITION) { mValue = worldMatrix.GetTranslation3(); } - else if( mProperty == TRANSFORM_PROPERTY_WORLD_SCALE ) + else if(mProperty == TRANSFORM_PROPERTY_WORLD_SCALE) { - Vector3 position; + Vector3 position; Quaternion orientation; worldMatrix.GetTransformComponents(position, orientation, mValue); } @@ -377,7 +375,7 @@ public: /** * @copydoc Dali::PropertyInput::GetVector3() */ - const Vector3& GetVector3( BufferIndex bufferIndex ) const override + const Vector3& GetVector3(BufferIndex bufferIndex) const override { ComputeTransformComponent(); return mValue; @@ -386,7 +384,7 @@ public: /** * @copydoc Dali::PropertyInput::GetConstraintInputVector3() */ - const Vector3& GetConstraintInputVector3( BufferIndex bufferIndex ) const override + const Vector3& GetConstraintInputVector3(BufferIndex bufferIndex) const override { ComputeTransformComponent(); return mValue; @@ -395,7 +393,7 @@ public: /** * @copydoc Dali::SceneGraph::PropertyInterface::Get() */ - Vector3& Get( BufferIndex bufferIndex ) + Vector3& Get(BufferIndex bufferIndex) { ComputeTransformComponent(); return mValue; @@ -404,7 +402,7 @@ public: /** * @copydoc Dali::SceneGraph::PropertyInterface::Get() */ - const Vector3& Get( BufferIndex bufferIndex ) const + const Vector3& Get(BufferIndex bufferIndex) const { ComputeTransformComponent(); return mValue; @@ -415,7 +413,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - const Vector3& operator[]( BufferIndex bufferIndex ) const + const Vector3& operator[](BufferIndex bufferIndex) const { ComputeTransformComponent(); return mValue; @@ -426,10 +424,10 @@ public: * @param[in] transformManager Pointer to the transform manager * @param[in] Id of the transformation the property is associated with */ - void Initialize( TransformManager* transformManager, TransformId id ) + void Initialize(TransformManagerData* data) { - mTxManager = transformManager; - mId = id; + DALI_ASSERT_ALWAYS(data != nullptr && data->Manager() != nullptr); + mTxManagerData = data; } /** @@ -441,7 +439,6 @@ public: } private: - // Undefined TransformManagerVector3Input(const TransformManagerVector3Input& property); @@ -449,34 +446,21 @@ private: TransformManagerVector3Input& operator=(const TransformManagerVector3Input& rhs); public: - - TransformManager* mTxManager; - TransformId mId; + TransformManagerData* mTxManagerData{nullptr}; TransformManagerProperty mProperty; - mutable Vector3 mValue; + mutable Vector3 mValue; }; /** * A Quaternion property used as input. */ -class TransformManagerQuaternionInput : public PropertyInputImpl +class TransformManagerQuaternionInput final : public PropertyInputImpl { public: - /** * Constructor */ - TransformManagerQuaternionInput() - :mTxManager(nullptr), - mId(INVALID_TRANSFORM_ID), - mValue(1.0f,0.0f,0.0f,0.0f) - { - } - - /** - * Virtual destructor. - */ - ~TransformManagerQuaternionInput() override = default; + TransformManagerQuaternionInput() = default; /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType() @@ -517,11 +501,10 @@ public: */ void ComputeTransformComponent() const { - const TransformManager* txManager = mTxManager; - if( txManager ) + if(mTxManagerData) { - const Matrix& worldMatrix = txManager->GetWorldMatrix(mId); - Vector3 position, scale; + const Matrix& worldMatrix = mTxManagerData->Manager()->GetWorldMatrix(mTxManagerData->Id()); + Vector3 position, scale; worldMatrix.GetTransformComponents(position, mValue, scale); } } @@ -529,7 +512,7 @@ public: /** * @copydoc Dali::PropertyInput::GetQuaternion() */ - const Quaternion& GetQuaternion( BufferIndex bufferIndex ) const override + const Quaternion& GetQuaternion(BufferIndex bufferIndex) const override { ComputeTransformComponent(); return mValue; @@ -538,7 +521,7 @@ public: /** * @copydoc Dali::PropertyInput::GetConstraintInputQuaternion() */ - const Quaternion& GetConstraintInputQuaternion( BufferIndex bufferIndex ) const override + const Quaternion& GetConstraintInputQuaternion(BufferIndex bufferIndex) const override { ComputeTransformComponent(); return mValue; @@ -547,7 +530,7 @@ public: /** * @copydoc Dali::SceneGraph::PropertyInterface::Get() */ - Quaternion& Get( BufferIndex bufferIndex ) + Quaternion& Get(BufferIndex bufferIndex) { ComputeTransformComponent(); return mValue; @@ -556,7 +539,7 @@ public: /** * @copydoc Dali::SceneGraph::PropertyInterface::Get() */ - const Quaternion& Get( BufferIndex bufferIndex ) const + const Quaternion& Get(BufferIndex bufferIndex) const { ComputeTransformComponent(); return mValue; @@ -567,7 +550,7 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - const Quaternion& operator[]( BufferIndex bufferIndex) const + const Quaternion& operator[](BufferIndex bufferIndex) const { ComputeTransformComponent(); return mValue; @@ -578,10 +561,10 @@ public: * @param[in] transformManager Pointer to the transform manager * @param[in] Id of the transformation the property is associated with */ - void Initialize( TransformManager* transformManager, TransformId id ) + void Initialize(TransformManagerData* data) { - mTxManager = transformManager; - mId = id; + DALI_ASSERT_ALWAYS(data != nullptr && data->Manager() != nullptr); + mTxManagerData = data; } /** @@ -593,7 +576,6 @@ public: } private: - // Undefined TransformManagerQuaternionInput(const TransformManagerQuaternionInput& property); @@ -601,32 +583,20 @@ private: TransformManagerQuaternionInput& operator=(const TransformManagerQuaternionInput& rhs); public: - - TransformManager* mTxManager; - TransformId mId; - mutable Quaternion mValue; + TransformManagerData* mTxManagerData{nullptr}; + mutable Quaternion mValue; }; /** * A Matrix property used as input. */ -class TransformManagerMatrixInput : public PropertyInputImpl +class TransformManagerMatrixInput final : public PropertyInputImpl { public: - /** * Constructor */ - TransformManagerMatrixInput() - :mTxManager(nullptr), - mId(INVALID_TRANSFORM_ID) - { - } - - /** - * Virtual destructor. - */ - ~TransformManagerMatrixInput() override = default; + TransformManagerMatrixInput() = default; /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType() @@ -664,12 +634,11 @@ public: /** * @copydoc Dali::PropertyInput::GetMatrix() */ - const Matrix& GetMatrix( BufferIndex bufferIndex ) const override + const Matrix& GetMatrix(BufferIndex bufferIndex) const override { - const TransformManager* txManager = mTxManager; - if( txManager ) + if(mTxManagerData) { - return txManager->GetWorldMatrix(mId); + return mTxManagerData->Manager()->GetWorldMatrix(mTxManagerData->Id()); } return Matrix::IDENTITY; @@ -678,12 +647,11 @@ public: /** * @copydoc Dali::PropertyInput::GetConstraintInputMatrix() */ - const Matrix& GetConstraintInputMatrix( BufferIndex bufferIndex ) const override + const Matrix& GetConstraintInputMatrix(BufferIndex bufferIndex) const override { - const TransformManager* txManager = mTxManager; - if( txManager ) + if(mTxManagerData) { - return txManager->GetWorldMatrix(mId); + return mTxManagerData->Manager()->GetWorldMatrix(mTxManagerData->Id()); } return Matrix::IDENTITY; @@ -692,18 +660,18 @@ public: /** * @copydoc Dali::SceneGraph::PropertyInterface::Get() */ - Matrix& Get( BufferIndex bufferIndex ) + Matrix& Get(BufferIndex bufferIndex) { - DALI_ASSERT_ALWAYS( mTxManager != nullptr ); - return mTxManager->GetWorldMatrix(mId); + DALI_ASSERT_ALWAYS(mTxManagerData != nullptr); + return mTxManagerData->Manager()->GetWorldMatrix(mTxManagerData->Id()); } /** * @copydoc Dali::SceneGraph::PropertyInterface::Get() */ - const Matrix& Get( BufferIndex bufferIndex ) const + const Matrix& Get(BufferIndex bufferIndex) const { - return GetMatrix( bufferIndex ); + return GetMatrix(bufferIndex); } /** @@ -711,15 +679,15 @@ public: * @param[in] bufferIndex The buffer to read. * @return The property value. */ - const Matrix& operator[]( BufferIndex bufferIndex ) const + const Matrix& operator[](BufferIndex bufferIndex) const { - return GetMatrix( bufferIndex ); + return GetMatrix(bufferIndex); } - void Initialize( TransformManager* transformManager, TransformId id ) + void Initialize(TransformManagerData* data) { - mTxManager = transformManager; - mId = id; + DALI_ASSERT_ALWAYS(data != nullptr && data->Manager() != nullptr); + mTxManagerData = data; } /** @@ -731,7 +699,6 @@ public: } private: - // Undefined TransformManagerMatrixInput(const TransformManagerMatrixInput& property); @@ -739,12 +706,9 @@ private: TransformManagerMatrixInput& operator=(const TransformManagerMatrixInput& rhs); public: - - TransformManager* mTxManager; - TransformId mId; + TransformManagerData* mTxManagerData{nullptr}; }; - } //namespace SceneGraph } //namespace Internal } //namespace Dali