Ensure we use TransformManager const methods to retrieve values from const getter...
[platform/core/uifw/dali-core.git] / dali / internal / update / manager / transform-manager-property.h
index f64d65e..609cac7 100644 (file)
@@ -2,7 +2,7 @@
 #define TRANSFORM_MANAGER_PROPERTY_H_
 
 /*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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.
@@ -35,35 +35,41 @@ struct TransformManagerPropertyHandler : public AnimatablePropertyBase
    * Constructor
    */
   TransformManagerPropertyHandler()
-  :mTxManager(0),
+  :mTxManager(nullptr),
    mId( INVALID_TRANSFORM_ID )
   {}
 
   /**
    * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType()
    */
-  virtual Dali::Property::Type GetType() const = 0;
+  Dali::Property::Type GetType() const override = 0;
 
   /**
    * @copydoc Dali::SceneGraph::AnimatableProperty::Get()
    */
-  virtual T& Get(size_t bufferIndex) = 0;
+  virtual T& Get( BufferIndex bufferIndex ) = 0;
 
   /**
    * @copydoc Dali::SceneGraph::AnimatableProperty::Get()
    */
-  virtual const T& Get(size_t bufferIndex) const = 0;
+  virtual const T& Get( BufferIndex bufferIndex ) const = 0;
 
   /**
    * @copydoc Dali::PropertyInput::GetVector3()
    */
-  virtual const Vector3& GetVector3( BufferIndex bufferIndex ) const{ return Vector3::ZERO; }
+  const Vector3& GetVector3( BufferIndex bufferIndex ) const override{ return Vector3::ZERO; }
 
   /**
    * Retrieve a component of property
    * @param[in] component The component of the property
    */
-  virtual const float& GetFloatComponent(unsigned int component)=0;
+  virtual const float& GetFloatComponent(uint32_t component) const
+  {
+    DALI_ASSERT_DEBUG( 0 && "Invalid call");
+
+    static const float value = 0.0f;
+    return value;
+  }
 
   /**
    * Set the property value. This will only persist for the current frame; the property
@@ -78,7 +84,7 @@ 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, unsigned int component){}
+  virtual void SetFloatComponent( float value, uint32_t component){}
 
   /**
    * @copydoc Dali::AnimatableProperty::Bake()
@@ -90,7 +96,7 @@ 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, unsigned int component){}
+  virtual void BakeFloatComponent( float value, uint32_t component){}
 
   /**
    * @copydoc Dali::AnimatableProperty::BakeX()
@@ -120,12 +126,12 @@ struct TransformManagerPropertyHandler : public AnimatablePropertyBase
   /**
    * @copydoc Dali::AnimatableProperty::ResetToBaseValue()
    */
-  virtual void ResetToBaseValue(BufferIndex updateBufferIndex){}
+  void ResetToBaseValue(BufferIndex updateBufferIndex) override{}
 
   /**
    * @copydoc Dali::AnimatableProperty::IsClean()
    */
-  virtual bool IsClean() const{ return false; }
+  bool IsClean() const override{ return false; }
 
   /**
    * Initializes the property
@@ -141,7 +147,7 @@ struct TransformManagerPropertyHandler : public AnimatablePropertyBase
   /**
    * @copydoc Dali::Internal::PropertyInputImpl::IsTransformManagerProperty()
    */
-  virtual bool IsTransformManagerProperty() const
+  bool IsTransformManagerProperty() const override
   {
     return true;
   }
@@ -158,82 +164,84 @@ struct TransformManagerPropertyVector3 : public TransformManagerPropertyHandler<
    mProperty( property )
   {}
 
-  Dali::Property::Type GetType() const
+  Dali::Property::Type GetType() const override
   {
     return Dali::PropertyTypes::Get<Vector3>();
   }
 
-  Vector3& Get(size_t bufferIndex)
+  Vector3& Get( BufferIndex bufferIndex ) override
   {
     return mTxManager->GetVector3PropertyValue( mId, mProperty );
   }
 
-  const Vector3& Get(size_t bufferIndex) const
+  const Vector3& Get( BufferIndex bufferIndex ) const override
   {
-    return mTxManager->GetVector3PropertyValue( mId, mProperty );
+    const TransformManager* txManager = mTxManager;
+    return txManager->GetVector3PropertyValue( mId, mProperty );
   }
 
-  virtual const Vector3& GetVector3( BufferIndex bufferIndex ) const
+  const Vector3& GetVector3( BufferIndex bufferIndex ) const override
   {
     return Get(bufferIndex);
   }
 
-  const float& GetFloatComponent( unsigned int component )
+  const float& GetFloatComponent( uint32_t component ) const override
   {
-    return mTxManager->GetVector3PropertyComponentValue( mId, mProperty, component );
+    const TransformManager* txManager = mTxManager;
+    return txManager->GetVector3PropertyComponentValue( mId, mProperty, component );
   }
 
-  void Set(BufferIndex bufferIndex, const Vector3& value)
+  void Set(BufferIndex bufferIndex, const Vector3& value) override
   {
     mTxManager->SetVector3PropertyValue( mId, mProperty, value );
   }
 
-  void SetComponent(BufferIndex bufferIndex, float value, unsigned int component)
+  void SetComponent(BufferIndex bufferIndex, float value, uint32_t component)
   {
     mTxManager->SetVector3PropertyComponentValue( mId, mProperty, value, component);
   }
 
-  void BakeComponent(BufferIndex bufferIndex, float value, unsigned int component)
+  void BakeComponent(BufferIndex bufferIndex, float value, uint32_t component)
   {
     mTxManager->BakeVector3PropertyComponentValue( mId, mProperty, value, component);
   }
 
-  void Bake(BufferIndex bufferIndex, const Vector3& value)
+  void Bake(BufferIndex bufferIndex, const Vector3& value) override
   {
     mTxManager->BakeVector3PropertyValue(mId, mProperty, value );
   }
 
-  void BakeX(BufferIndex bufferIndex, float value)
+  void BakeX(BufferIndex bufferIndex, float value) override
   {
     mTxManager->BakeXVector3PropertyValue(mId, mProperty, value );
   }
 
-  void BakeY(BufferIndex bufferIndex, float value)
+  void BakeY(BufferIndex bufferIndex, float value) override
   {
     mTxManager->BakeYVector3PropertyValue(mId, mProperty, value );
   }
 
-  void BakeZ(BufferIndex bufferIndex, float value)
+  void BakeZ(BufferIndex bufferIndex, float value) override
   {
     mTxManager->BakeZVector3PropertyValue(mId, mProperty, value );
   }
 
-  void SetFloatComponent( float value, unsigned int component)
+  void SetFloatComponent( float value, uint32_t component) override
   {
     mTxManager->SetVector3PropertyComponentValue( mId, mProperty, value, component);
   }
 
-  void BakeFloatComponent( float value, unsigned int component )
+  void BakeFloatComponent( float value, uint32_t component ) override
   {
     mTxManager->BakeVector3PropertyComponentValue( mId, mProperty, value, component);
   }
 
-  void BakeRelative(BufferIndex bufferIndex, const Vector3& value)
+  void BakeRelative(BufferIndex bufferIndex, const Vector3& value) override
   {
     mTxManager->BakeRelativeVector3PropertyValue(mId, mProperty, value );
   }
 
-  void BakeRelativeMultiply(BufferIndex bufferIndex, const Vector3& value)
+  void BakeRelativeMultiply(BufferIndex bufferIndex, const Vector3& value) override
   {
     mTxManager->BakeMultiplyVector3PropertyValue(mId, mProperty, value );
   }
@@ -249,42 +257,38 @@ public:
   :TransformManagerPropertyHandler()
   {}
 
-  virtual Dali::Property::Type GetType() const
+  Dali::Property::Type GetType() const override
   {
     return Dali::PropertyTypes::Get<Quaternion>();
   }
 
-  Quaternion& Get(size_t bufferIndex)
-  {
-    return mTxManager->GetQuaternionPropertyValue( mId );
-  }
-
-  const Quaternion& Get(size_t bufferIndex) const
+  Quaternion& Get( BufferIndex bufferIndex ) override
   {
     return mTxManager->GetQuaternionPropertyValue( mId );
   }
 
-  const float& GetFloatComponent( unsigned int component)
+  const Quaternion& Get( BufferIndex bufferIndex ) const override
   {
-    return mTxManager->GetQuaternionPropertyValue( mId ).mVector[component];
+    const TransformManager* txManager = mTxManager;
+    return txManager->GetQuaternionPropertyValue( mId );
   }
 
-  void Set(BufferIndex bufferIndex, const Quaternion& value)
+  void Set(BufferIndex bufferIndex, const Quaternion& value) override
   {
     return mTxManager->SetQuaternionPropertyValue( mId, value );
   }
 
-  void Bake(BufferIndex bufferIndex, const Quaternion& value)
+  void Bake(BufferIndex bufferIndex, const Quaternion& value) override
   {
     return mTxManager->BakeQuaternionPropertyValue( mId, value );
   }
 
-  void BakeRelative(BufferIndex bufferIndex, const Quaternion& value)
+  void BakeRelative(BufferIndex bufferIndex, const Quaternion& value) override
   {
     return mTxManager->BakeRelativeQuaternionPropertyValue( mId, value );
   }
 
-  virtual const Quaternion& GetQuaternion( BufferIndex bufferIndex ) const
+  const Quaternion& GetQuaternion( BufferIndex bufferIndex ) const override
   {
     return Get(bufferIndex);
   }
@@ -302,7 +306,7 @@ public:
    * Create an TransformManagerVector3Input
    */
   TransformManagerVector3Input( TransformManagerProperty property, const Vector3& initialValue )
-  :mTxManager(0),
+  :mTxManager(nullptr),
    mId(INVALID_TRANSFORM_ID),
    mProperty(property),
    mValue(initialValue)
@@ -311,14 +315,12 @@ public:
   /**
    * Virtual destructor.
    */
-  virtual ~TransformManagerVector3Input()
-  {
-  }
+  ~TransformManagerVector3Input() 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>();
   }
@@ -334,7 +336,7 @@ public:
   /**
    * @copydoc Dali::Internal::PropertyInputImpl::InputInitialized()
    */
-  virtual bool InputInitialized() const
+  bool InputInitialized() const override
   {
     return true;
   }
@@ -343,7 +345,7 @@ public:
    * @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 true;
   }
@@ -354,9 +356,10 @@ public:
    */
   void ComputeTransformComponent() const
   {
-    if( mTxManager )
+    const TransformManager* txManager = mTxManager;
+    if( txManager )
     {
-      const Matrix& worldMatrix = mTxManager->GetWorldMatrix(mId);
+      const Matrix& worldMatrix = txManager->GetWorldMatrix(mId);
 
       if( mProperty == TRANSFORM_PROPERTY_WORLD_POSITION )
       {
@@ -374,7 +377,7 @@ public:
   /**
    * @copydoc Dali::PropertyInput::GetVector3()
    */
-  virtual const Vector3& GetVector3( BufferIndex bufferIndex ) const
+  const Vector3& GetVector3( BufferIndex bufferIndex ) const override
   {
     ComputeTransformComponent();
     return mValue;
@@ -383,7 +386,7 @@ public:
   /**
    * @copydoc Dali::PropertyInput::GetConstraintInputVector3()
    */
-  virtual const Vector3& GetConstraintInputVector3( BufferIndex bufferIndex ) const
+  const Vector3& GetConstraintInputVector3( BufferIndex bufferIndex ) const override
   {
     ComputeTransformComponent();
     return mValue;
@@ -392,7 +395,7 @@ public:
   /**
    * @copydoc Dali::SceneGraph::PropertyInterface::Get()
    */
-  Vector3& Get(size_t bufferIndex)
+  Vector3& Get( BufferIndex bufferIndex )
   {
     ComputeTransformComponent();
     return mValue;
@@ -401,7 +404,7 @@ public:
   /**
    * @copydoc Dali::SceneGraph::PropertyInterface::Get()
    */
-  const Vector3& Get(size_t bufferIndex) const
+  const Vector3& Get( BufferIndex bufferIndex ) const
   {
     ComputeTransformComponent();
     return mValue;
@@ -412,7 +415,7 @@ public:
    * @param[in] bufferIndex The buffer to read.
    * @return The property value.
    */
-  const Vector3& operator[](size_t bufferIndex) const
+  const Vector3& operator[]( BufferIndex bufferIndex ) const
   {
     ComputeTransformComponent();
     return mValue;
@@ -432,7 +435,7 @@ public:
   /**
    * @copydoc Dali::Internal::PropertyInputImpl::IsTransformManagerProperty()
    */
-  virtual bool IsTransformManagerProperty() const
+  bool IsTransformManagerProperty() const override
   {
     return true;
   }
@@ -464,7 +467,7 @@ public:
    * Constructor
    */
   TransformManagerQuaternionInput()
-  :mTxManager(0),
+  :mTxManager(nullptr),
    mId(INVALID_TRANSFORM_ID),
    mValue(1.0f,0.0f,0.0f,0.0f)
   {
@@ -473,14 +476,12 @@ public:
   /**
    * Virtual destructor.
    */
-  virtual ~TransformManagerQuaternionInput()
-  {
-  }
+  ~TransformManagerQuaternionInput() 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>();
   }
@@ -496,7 +497,7 @@ public:
   /**
    * @copydoc Dali::Internal::PropertyInputImpl::InputInitialized()
    */
-  virtual bool InputInitialized() const
+  bool InputInitialized() const override
   {
     return true;
   }
@@ -505,7 +506,7 @@ public:
    * @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 true;
   }
@@ -516,9 +517,10 @@ public:
    */
   void ComputeTransformComponent() const
   {
-    if( mTxManager )
+    const TransformManager* txManager = mTxManager;
+    if( txManager )
     {
-      const Matrix& worldMatrix = mTxManager->GetWorldMatrix(mId);
+      const Matrix& worldMatrix = txManager->GetWorldMatrix(mId);
       Vector3 position, scale;
       worldMatrix.GetTransformComponents(position, mValue, scale);
     }
@@ -527,7 +529,7 @@ public:
   /**
    * @copydoc Dali::PropertyInput::GetQuaternion()
    */
-  virtual const Quaternion& GetQuaternion( BufferIndex bufferIndex ) const
+  const Quaternion& GetQuaternion( BufferIndex bufferIndex ) const override
   {
     ComputeTransformComponent();
     return mValue;
@@ -536,7 +538,7 @@ public:
   /**
    * @copydoc Dali::PropertyInput::GetConstraintInputQuaternion()
    */
-  virtual const Quaternion& GetConstraintInputQuaternion( BufferIndex bufferIndex ) const
+  const Quaternion& GetConstraintInputQuaternion( BufferIndex bufferIndex ) const override
   {
     ComputeTransformComponent();
     return mValue;
@@ -545,7 +547,7 @@ public:
   /**
    * @copydoc Dali::SceneGraph::PropertyInterface::Get()
    */
-  Quaternion& Get(size_t bufferIndex)
+  Quaternion& Get( BufferIndex bufferIndex )
   {
     ComputeTransformComponent();
     return mValue;
@@ -554,7 +556,7 @@ public:
   /**
    * @copydoc Dali::SceneGraph::PropertyInterface::Get()
    */
-  const Quaternion& Get(size_t bufferIndex) const
+  const Quaternion& Get( BufferIndex bufferIndex ) const
   {
     ComputeTransformComponent();
     return mValue;
@@ -565,7 +567,7 @@ public:
    * @param[in] bufferIndex The buffer to read.
    * @return The property value.
    */
-  const Quaternion& operator[](size_t bufferIndex) const
+  const Quaternion& operator[]( BufferIndex bufferIndex) const
   {
     ComputeTransformComponent();
     return mValue;
@@ -585,7 +587,7 @@ public:
   /**
    * @copydoc Dali::Internal::PropertyInputImpl::IsTransformManagerProperty()
    */
-  virtual bool IsTransformManagerProperty() const
+  bool IsTransformManagerProperty() const override
   {
     return true;
   }
@@ -616,7 +618,7 @@ public:
    * Constructor
    */
   TransformManagerMatrixInput()
-  :mTxManager(0),
+  :mTxManager(nullptr),
    mId(INVALID_TRANSFORM_ID)
   {
   }
@@ -624,14 +626,12 @@ public:
   /**
    * Virtual destructor.
    */
-  virtual ~TransformManagerMatrixInput()
-  {
-  }
+  ~TransformManagerMatrixInput() 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>();
   }
@@ -647,7 +647,7 @@ public:
   /**
    * @copydoc Dali::Internal::PropertyInputImpl::InputInitialized()
    */
-  virtual bool InputInitialized() const
+  bool InputInitialized() const override
   {
     return true;
   }
@@ -656,7 +656,7 @@ public:
    * @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 true;
   }
@@ -664,11 +664,12 @@ public:
   /**
    * @copydoc Dali::PropertyInput::GetMatrix()
    */
-  virtual const Matrix& GetMatrix( BufferIndex bufferIndex ) const
+  const Matrix& GetMatrix( BufferIndex bufferIndex ) const override
   {
-    if( mTxManager )
+    const TransformManager* txManager = mTxManager;
+    if( txManager )
     {
-      return mTxManager->GetWorldMatrix(mId);
+      return txManager->GetWorldMatrix(mId);
     }
 
     return Matrix::IDENTITY;
@@ -677,11 +678,12 @@ public:
   /**
    * @copydoc Dali::PropertyInput::GetConstraintInputMatrix()
    */
-  virtual const Matrix& GetConstraintInputMatrix( BufferIndex bufferIndex ) const
+  const Matrix& GetConstraintInputMatrix( BufferIndex bufferIndex ) const override
   {
-    if( mTxManager )
+    const TransformManager* txManager = mTxManager;
+    if( txManager )
     {
-      return mTxManager->GetWorldMatrix(mId);
+      return txManager->GetWorldMatrix(mId);
     }
 
     return Matrix::IDENTITY;
@@ -690,18 +692,18 @@ public:
   /**
    * @copydoc Dali::SceneGraph::PropertyInterface::Get()
    */
-  Matrix& Get(size_t bufferIndex)
+  Matrix& Get( BufferIndex bufferIndex )
   {
-    DALI_ASSERT_ALWAYS( mTxManager != 0 );
+    DALI_ASSERT_ALWAYS( mTxManager != nullptr );
     return mTxManager->GetWorldMatrix(mId);
   }
 
   /**
    * @copydoc Dali::SceneGraph::PropertyInterface::Get()
    */
-  const Matrix& Get(size_t bufferIndex) const
+  const Matrix& Get( BufferIndex bufferIndex ) const
   {
-    return GetMatrix(bufferIndex);
+    return GetMatrix( bufferIndex );
   }
 
   /**
@@ -709,9 +711,9 @@ public:
    * @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 GetMatrix(bufferIndex);
+    return GetMatrix( bufferIndex );
   }
 
   void Initialize( TransformManager* transformManager, TransformId id )
@@ -723,7 +725,7 @@ public:
   /**
    * @copydoc Dali::Internal::PropertyInputImpl::IsTransformManagerProperty()
    */
-  virtual bool IsTransformManagerProperty() const
+  bool IsTransformManagerProperty() const override
   {
     return true;
   }