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 be56774..609cac7 100644 (file)
@@ -2,7 +2,7 @@
 #define TRANSFORM_MANAGER_PROPERTY_H_
 
 /*
- * Copyright (c) 2018 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,7 +35,7 @@ struct TransformManagerPropertyHandler : public AnimatablePropertyBase
    * Constructor
    */
   TransformManagerPropertyHandler()
-  :mTxManager(0),
+  :mTxManager(nullptr),
    mId( INVALID_TRANSFORM_ID )
   {}
 
@@ -63,7 +63,13 @@ struct TransformManagerPropertyHandler : public AnimatablePropertyBase
    * Retrieve a component of property
    * @param[in] component The component of the property
    */
-  virtual const float& GetFloatComponent(uint32_t 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
@@ -170,7 +176,8 @@ struct TransformManagerPropertyVector3 : public TransformManagerPropertyHandler<
 
   const Vector3& Get( BufferIndex bufferIndex ) const override
   {
-    return mTxManager->GetVector3PropertyValue( mId, mProperty );
+    const TransformManager* txManager = mTxManager;
+    return txManager->GetVector3PropertyValue( mId, mProperty );
   }
 
   const Vector3& GetVector3( BufferIndex bufferIndex ) const override
@@ -178,9 +185,10 @@ struct TransformManagerPropertyVector3 : public TransformManagerPropertyHandler<
     return Get(bufferIndex);
   }
 
-  const float& GetFloatComponent( uint32_t component ) override
+  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) override
@@ -261,12 +269,8 @@ public:
 
   const Quaternion& Get( BufferIndex bufferIndex ) const override
   {
-    return mTxManager->GetQuaternionPropertyValue( mId );
-  }
-
-  const float& GetFloatComponent( uint32_t component) override
-  {
-    return mTxManager->GetQuaternionPropertyValue( mId ).mVector[component];
+    const TransformManager* txManager = mTxManager;
+    return txManager->GetQuaternionPropertyValue( mId );
   }
 
   void Set(BufferIndex bufferIndex, const Quaternion& value) override
@@ -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,9 +315,7 @@ public:
   /**
    * Virtual destructor.
    */
-  ~TransformManagerVector3Input() override
-  {
-  }
+  ~TransformManagerVector3Input() override = default;
 
   /**
    * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType()
@@ -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 )
       {
@@ -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,9 +476,7 @@ public:
   /**
    * Virtual destructor.
    */
-  ~TransformManagerQuaternionInput() override
-  {
-  }
+  ~TransformManagerQuaternionInput() override = default;
 
   /**
    * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType()
@@ -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);
     }
@@ -616,7 +618,7 @@ public:
    * Constructor
    */
   TransformManagerMatrixInput()
-  :mTxManager(0),
+  :mTxManager(nullptr),
    mId(INVALID_TRANSFORM_ID)
   {
   }
@@ -624,9 +626,7 @@ public:
   /**
    * Virtual destructor.
    */
-  ~TransformManagerMatrixInput() override
-  {
-  }
+  ~TransformManagerMatrixInput() override = default;
 
   /**
    * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType()
@@ -666,9 +666,10 @@ public:
    */
   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;
@@ -679,9 +680,10 @@ public:
    */
   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;
@@ -692,7 +694,7 @@ public:
    */
   Matrix& Get( BufferIndex bufferIndex )
   {
-    DALI_ASSERT_ALWAYS( mTxManager != 0 );
+    DALI_ASSERT_ALWAYS( mTxManager != nullptr );
     return mTxManager->GetWorldMatrix(mId);
   }