Use RegisterUniqueProperty for some more renderers
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / visuals / animated-gradient / animated-gradient-visual.cpp
old mode 100755 (executable)
new mode 100644 (file)
index 1a624c4..30d8616
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
 
 //INTERNAL INCLUDES
 #include <dali-toolkit/devel-api/visuals/animated-gradient-visual-properties-devel.h>
-#include <dali-toolkit/public-api/visuals/visual-properties.h>
 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
-#include <dali-toolkit/internal/visuals/visual-factory-impl.h>
+#include <dali-toolkit/internal/graphics/builtin-shader-extern-gen.h>
+#include <dali-toolkit/internal/visuals/visual-base-data-impl.h>
 #include <dali-toolkit/internal/visuals/visual-factory-cache.h>
+#include <dali-toolkit/internal/visuals/visual-factory-impl.h>
 #include <dali-toolkit/internal/visuals/visual-string-constants.h>
-#include <dali-toolkit/internal/visuals/visual-base-data-impl.h>
+#include <dali-toolkit/public-api/visuals/visual-properties.h>
 
 namespace Dali
 {
-
 namespace Toolkit
 {
-
 namespace Internal
 {
-
 namespace
 {
-// non-animated property
-const char* const GRADIENT_TYPE_NAME("gradientType");
-const char* const UNIT_TYPE_NAME("unitType");
-const char* const SPREAD_TYPE_NAME("spreadType");
-// animated property
-const char* const START_POSITION_NAME("startPosition");
-const char* const START_COLOR_NAME("startColor");
-const char* const END_POSITION_NAME("endPosition");
-const char* const END_COLOR_NAME("endColor");
-const char* const ROTATE_CENTER_NAME("rotateCenter");
-const char* const ROTATE_AMOUNT_NAME("rotateAmount");
-const char* const OFFSET_NAME("offset");
-// animation parameter property
-const char* const START_VALUE_NAME("startValue");
-const char* const TARGET_VALUE_NAME("targetValue");
-const char* const DIRECTION_TYPE_NAME("directionType");
-const char* const DURATION_NAME("duration");
-const char* const DELAY_NAME("delay");
-const char* const REPEAT_NAME("repeat");
-const char* const REPEAT_DELAY_NAME("repeatDelay");
-const char* const MOTION_TYPE_NAME("motionType");
-const char* const EASING_TYPE_NAME("easingType");
-// common shader property
-const char* const UNIFORM_START_POINT_NAME("start_point");
-const char* const UNIFORM_START_COLOR_NAME("start_color");
-const char* const UNIFORM_END_POINT_NAME("end_point");
-const char* const UNIFORM_END_COLOR_NAME("end_color");
-const char* const UNIFORM_ROTATE_CENTER_NAME("rotate_center");
-const char* const UNIFORM_ROTATE_ANGLE_NAME("rotate_angle");
-const char* const UNIFORM_OFFSET_NAME("gradient_offset");
-
-DALI_ENUM_TO_STRING_TABLE_BEGIN( GRADIENT_TYPE )
-DALI_ENUM_TO_STRING_WITH_SCOPE( Toolkit::DevelAnimatedGradientVisual::GradientType, LINEAR )
-DALI_ENUM_TO_STRING_WITH_SCOPE( Toolkit::DevelAnimatedGradientVisual::GradientType, RADIAL )
-DALI_ENUM_TO_STRING_TABLE_END( GRADIENT_TYPE )
-
-DALI_ENUM_TO_STRING_TABLE_BEGIN( UNIT_TYPE )
-DALI_ENUM_TO_STRING_WITH_SCOPE( Toolkit::DevelAnimatedGradientVisual::UnitType, OBJECT_BOUNDING_BOX )
-DALI_ENUM_TO_STRING_WITH_SCOPE( Toolkit::DevelAnimatedGradientVisual::UnitType, USER_SPACE )
-DALI_ENUM_TO_STRING_TABLE_END( UNIT_TYPE )
-
-DALI_ENUM_TO_STRING_TABLE_BEGIN( SPREAD_TYPE )
-DALI_ENUM_TO_STRING_WITH_SCOPE( Toolkit::DevelAnimatedGradientVisual::SpreadType, REFLECT )
-DALI_ENUM_TO_STRING_WITH_SCOPE( Toolkit::DevelAnimatedGradientVisual::SpreadType, REPEAT )
-DALI_ENUM_TO_STRING_WITH_SCOPE( Toolkit::DevelAnimatedGradientVisual::SpreadType, CLAMP )
-DALI_ENUM_TO_STRING_TABLE_END( SPREAD_TYPE )
-
-DALI_ENUM_TO_STRING_TABLE_BEGIN( DIRECTION_TYPE )
-DALI_ENUM_TO_STRING_WITH_SCOPE( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::DirectionType, FORWARD )
-DALI_ENUM_TO_STRING_WITH_SCOPE( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::DirectionType, BACKWARD )
-DALI_ENUM_TO_STRING_TABLE_END( DIRECTION_TYPE )
-
-DALI_ENUM_TO_STRING_TABLE_BEGIN( MOTION_TYPE )
-DALI_ENUM_TO_STRING_WITH_SCOPE( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::MotionType, LOOP )
-DALI_ENUM_TO_STRING_WITH_SCOPE( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::MotionType, MIRROR )
-DALI_ENUM_TO_STRING_TABLE_END( MOTION_TYPE )
-
-DALI_ENUM_TO_STRING_TABLE_BEGIN( EASING_TYPE )
-DALI_ENUM_TO_STRING_WITH_SCOPE( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType, LINEAR )
-DALI_ENUM_TO_STRING_WITH_SCOPE( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType, IN )
-DALI_ENUM_TO_STRING_WITH_SCOPE( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType, OUT )
-DALI_ENUM_TO_STRING_WITH_SCOPE( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType, IN_OUT )
-DALI_ENUM_TO_STRING_TABLE_END( EASING_TYPE )
+const int CUSTOM_PROPERTY_COUNT(12); // 5 transform properties + Start point/color, end point/color, rotate center/angle, offset
+
+DALI_ENUM_TO_STRING_TABLE_BEGIN(GRADIENT_TYPE)
+  DALI_ENUM_TO_STRING_WITH_SCOPE(Toolkit::DevelAnimatedGradientVisual::GradientType, LINEAR)
+  DALI_ENUM_TO_STRING_WITH_SCOPE(Toolkit::DevelAnimatedGradientVisual::GradientType, RADIAL)
+DALI_ENUM_TO_STRING_TABLE_END(GRADIENT_TYPE)
+
+DALI_ENUM_TO_STRING_TABLE_BEGIN(UNIT_TYPE)
+  DALI_ENUM_TO_STRING_WITH_SCOPE(Toolkit::DevelAnimatedGradientVisual::UnitType, OBJECT_BOUNDING_BOX)
+  DALI_ENUM_TO_STRING_WITH_SCOPE(Toolkit::DevelAnimatedGradientVisual::UnitType, USER_SPACE)
+DALI_ENUM_TO_STRING_TABLE_END(UNIT_TYPE)
+
+DALI_ENUM_TO_STRING_TABLE_BEGIN(SPREAD_TYPE)
+  DALI_ENUM_TO_STRING_WITH_SCOPE(Toolkit::DevelAnimatedGradientVisual::SpreadType, REFLECT)
+  DALI_ENUM_TO_STRING_WITH_SCOPE(Toolkit::DevelAnimatedGradientVisual::SpreadType, REPEAT)
+  DALI_ENUM_TO_STRING_WITH_SCOPE(Toolkit::DevelAnimatedGradientVisual::SpreadType, CLAMP)
+DALI_ENUM_TO_STRING_TABLE_END(SPREAD_TYPE)
+
+DALI_ENUM_TO_STRING_TABLE_BEGIN(DIRECTION_TYPE)
+  DALI_ENUM_TO_STRING_WITH_SCOPE(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::DirectionType, FORWARD)
+  DALI_ENUM_TO_STRING_WITH_SCOPE(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::DirectionType, BACKWARD)
+DALI_ENUM_TO_STRING_TABLE_END(DIRECTION_TYPE)
+
+DALI_ENUM_TO_STRING_TABLE_BEGIN(MOTION_TYPE)
+  DALI_ENUM_TO_STRING_WITH_SCOPE(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::MotionType, LOOP)
+  DALI_ENUM_TO_STRING_WITH_SCOPE(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::MotionType, MIRROR)
+DALI_ENUM_TO_STRING_TABLE_END(MOTION_TYPE)
+
+DALI_ENUM_TO_STRING_TABLE_BEGIN(EASING_TYPE)
+  DALI_ENUM_TO_STRING_WITH_SCOPE(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType, LINEAR)
+  DALI_ENUM_TO_STRING_WITH_SCOPE(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType, IN)
+  DALI_ENUM_TO_STRING_WITH_SCOPE(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType, OUT)
+  DALI_ENUM_TO_STRING_WITH_SCOPE(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType, IN_OUT)
+DALI_ENUM_TO_STRING_TABLE_END(EASING_TYPE)
 
 // Default values of each properties
 const Toolkit::DevelAnimatedGradientVisual::GradientType::Type DEFAULT_GRADIENT_TYPE = Toolkit::DevelAnimatedGradientVisual::GradientType::LINEAR;
 const Toolkit::DevelAnimatedGradientVisual::UnitType::Type     DEFAULT_UNIT_TYPE     = Toolkit::DevelAnimatedGradientVisual::UnitType::OBJECT_BOUNDING_BOX;
 const Toolkit::DevelAnimatedGradientVisual::SpreadType::Type   DEFAULT_SPREAD_TYPE   = Toolkit::DevelAnimatedGradientVisual::SpreadType::REFLECT;
 
-const float DEFAULT_START_POSITION[] = { -0.5f, 0.0f };
-const float DEFAULT_START_COLOR[]    = { 143.0f/255.0f, 170.0f/255.0f, 220.0f/255.0f, 255.0f/255.0f };
-const float DEFAULT_END_POSITION[]   = { 0.5f, 0.0f };
-const float DEFAULT_END_COLOR[]      = { 255.0f/255.0f, 163.0f/255.0f, 163.0f/255.0f, 255.0f/255.0f };
-const float DEFAULT_ROTATE_CENTER[]  = { 0.0f, 0.0f };
+const float DEFAULT_START_POSITION[] = {-0.5f, 0.0f};
+const float DEFAULT_START_COLOR[]    = {143.0f / 255.0f, 170.0f / 255.0f, 220.0f / 255.0f, 255.0f / 255.0f};
+const float DEFAULT_END_POSITION[]   = {0.5f, 0.0f};
+const float DEFAULT_END_COLOR[]      = {255.0f / 255.0f, 163.0f / 255.0f, 163.0f / 255.0f, 255.0f / 255.0f};
+const float DEFAULT_ROTATE_CENTER[]  = {0.0f, 0.0f};
 const float DEFAULT_ROTATE_AMOUNT    = 0.0f;
 
 const float DEFAULT_ANIMATION_START_VALUE  = 0.0f;
@@ -124,137 +93,53 @@ const Toolkit::DevelAnimatedGradientVisual::AnimationParameter::DirectionType::T
 const Toolkit::DevelAnimatedGradientVisual::AnimationParameter::MotionType::Type    DEFAULT_ANIMATION_MOTION_TYPE    = Toolkit::DevelAnimatedGradientVisual::AnimationParameter::MotionType::LOOP;
 const Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType::Type    DEFAULT_ANIMATION_EASING_TYPE    = Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType::LINEAR;
 
-const char* const BASIC_VERTEX_SHADER = DALI_COMPOSE_SHADER(
-  attribute mediump vec2 aPosition;
-  uniform highp   mat4 uMvpMatrix;
-  uniform mediump vec3 uSize;
-
-  uniform mediump vec2 start_point;
-  uniform mediump vec2 end_point;
-  uniform mediump vec2 rotate_center;
-  uniform mediump float rotate_angle;
-
-  varying mediump vec2 vTexCoord;
-  varying mediump vec2 vStart;
-  varying mediump vec2 vEnd;
-
-  vec2 rotate(vec2 x, vec2 c, float a)
-  {
-    vec2 d = x - c;
-    vec2 r = vec2(d.x * cos(a) - d.y * sin(a), d.x * sin(a) + d.y * cos(a));
-
-\n  #ifdef UNIT_TYPE_BOUNDING_BOX \n return r + c;             \n #endif \n /* UnitType::OBJECT_BOUNDING_BOX */
-\n  #ifdef UNIT_TYPE_USER         \n return (r + c) / uSize.x; \n #endif \n /* UnitType::USER_SPACE          */
-  }
-
-  //Visual size and offset
-  uniform mediump vec2 offset;
-  uniform mediump vec2 size;
-  uniform mediump vec4 offsetSizeMode;
-  uniform mediump vec2 origin;
-  uniform mediump vec2 anchorPoint;
-
-  vec4 ComputeVertexPosition()
-  {
-    vec2 visualSize = mix( uSize.xy*size, size, offsetSizeMode.zw );
-    vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy );
-    return vec4( (aPosition + anchorPoint)*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0 );
-  }
-
-  void main()
-  {
-    vStart = rotate( start_point, rotate_center, rotate_angle );
-    vEnd = rotate( end_point, rotate_center, rotate_angle );
-    gl_Position = uMvpMatrix * ComputeVertexPosition();
-
-\n  #ifdef UNIT_TYPE_BOUNDING_BOX \n vTexCoord = vec2(aPosition.x, -aPosition.y);                     \n #endif \n /* UnitType::OBJECT_BOUNDING_BOX */
-\n  #ifdef UNIT_TYPE_USER         \n vTexCoord = vec2(aPosition.x, -aPosition.y * uSize.y / uSize.x); \n #endif \n /* UnitType::USER_SPACE          */
-  }
-);
-
-const char* const BASIC_FRAGMENT_SHADER = DALI_COMPOSE_SHADER(
-  precision mediump float;
-
-  uniform mediump vec4 start_color;
-  uniform mediump vec4 end_color;
-  uniform mediump float gradient_offset;
-
-  varying mediump vec2 vTexCoord;
-  varying mediump vec2 vStart;
-  varying mediump vec2 vEnd;
-
-  float get_position(vec2 x, vec2 s, vec2 e)
-  {
-    vec2 df = e - s;
-    vec2 dx = x - s;
-
-\n  #ifdef GRADIENT_TYPE_LINEAR \n return dot(dx,df)/dot(df,df);       \n #endif \n /* GradientType::LINEAR */
-\n  #ifdef GRADIENT_TYPE_RADIAL \n return sqrt(dot(dx,dx)/dot(df,df)); \n #endif \n /* GradientType::RADIAL */
-  }
-  float recalculate(float r)
-  {
-\n  #ifdef SPREAD_TYPE_REFLECT \n return 1.0 - abs(mod(r, 2.0) - 1.0); \n #endif \n /* SpreadType::REFLECT */
-\n  #ifdef SPREAD_TYPE_REPEAT  \n return fract(r);                     \n #endif \n /* SpreadType::REPEAT  */
-\n  #ifdef SPREAD_TYPE_CLAMP   \n return clamp(r, 0.0, 1.0);           \n #endif \n /* SpreadType::CLAMP   */
-  }
-
-  void main()
-  {
-    float r = get_position( vTexCoord, vStart, vEnd );
-    r = recalculate( r + gradient_offset );
-    vec4 color = mix( start_color, end_color, r );
-    gl_FragColor = color;
-  }
-);
-
-Property::Value GetStartValue( const Property::Map& map, Property::Index index, const char* const name )
+Property::Value GetStartValue(const Property::Map& map, Property::Index index, const char* const name)
 {
   // Get start value of animation parameter
-  Property::Value* res = map.Find( index, name );
-  if( res )
+  Property::Value* res = map.Find(index, name);
+  if(res)
   {
     Property::Map* s_map = res->GetMap();
-    if( s_map )
+    if(s_map)
     {
-      res = s_map->Find( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::START, START_VALUE_NAME );
-      DALI_ASSERT_ALWAYS( res && "Start value is not setup in Property::Map" );
+      res = s_map->Find(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::START, START_VALUE_NAME);
+      DALI_ASSERT_ALWAYS(res && "Start value is not setup in Property::Map");
     }
   }
   else
   {
-    DALI_ASSERT_ALWAYS( !"Start value is not setup even default" );
+    DALI_ASSERT_ALWAYS(!"Start value is not setup even default");
   }
   return *res;
 }
 
-VisualFactoryCache::ShaderType GetShaderType( Toolkit::DevelAnimatedGradientVisual::GradientType::Type grad, Toolkit::DevelAnimatedGradientVisual::UnitType::Type unit, Toolkit::DevelAnimatedGradientVisual::SpreadType::Type spread )
+VisualFactoryCache::ShaderType GetShaderType(Toolkit::DevelAnimatedGradientVisual::GradientType::Type grad, Toolkit::DevelAnimatedGradientVisual::UnitType::Type unit, Toolkit::DevelAnimatedGradientVisual::SpreadType::Type spread)
 {
   return static_cast<VisualFactoryCache::ShaderType>(
     VisualFactoryCache::ANIMATED_GRADIENT_SHADER_LINEAR_BOUNDING_REFLECT +
-    static_cast<unsigned int>( grad ) * 6 + // 6 is the number of UnitType * SpreadType
-    static_cast<unsigned int>( unit ) * 3 + // 3 is the number of SpreadType.
-    static_cast<unsigned int>( spread )
-  );
+    static_cast<unsigned int>(grad) * 6 + // 6 is the number of UnitType * SpreadType
+    static_cast<unsigned int>(unit) * 3 + // 3 is the number of SpreadType.
+    static_cast<unsigned int>(spread));
 }
 
 } // unnamed namespace
 
-AnimatedGradientVisualPtr AnimatedGradientVisual::New( VisualFactoryCache& factoryCache, const Property::Map& properties )
+AnimatedGradientVisualPtr AnimatedGradientVisual::New(VisualFactoryCache& factoryCache, const Property::Map& properties)
 {
-  AnimatedGradientVisualPtr animatedGradientVisualPtr( new AnimatedGradientVisual( factoryCache ) );
-  animatedGradientVisualPtr->SetProperties( properties );
+  AnimatedGradientVisualPtr animatedGradientVisualPtr(new AnimatedGradientVisual(factoryCache));
+  animatedGradientVisualPtr->SetProperties(properties);
+  animatedGradientVisualPtr->Initialize();
   return animatedGradientVisualPtr;
 }
 
-AnimatedGradientVisual::AnimatedGradientVisual( VisualFactoryCache& factoryCache )
-: Visual::Base( factoryCache, Visual::FittingMode::FILL )
+AnimatedGradientVisual::AnimatedGradientVisual(VisualFactoryCache& factoryCache)
+: Visual::Base(factoryCache, Visual::FittingMode::FILL, static_cast<Toolkit::Visual::Type>(Toolkit::DevelVisual::ANIMATED_GRADIENT))
 {
   SetupDefaultValue();
 }
 
 AnimatedGradientVisual::~AnimatedGradientVisual()
 {
-
 }
 
 void AnimatedGradientVisual::SetupDefaultValue()
@@ -263,100 +148,100 @@ void AnimatedGradientVisual::SetupDefaultValue()
   mUnitType     = DEFAULT_UNIT_TYPE;
   mSpreadType   = DEFAULT_SPREAD_TYPE;
 
-  mValueMap[Toolkit::DevelAnimatedGradientVisual::Property::START_POSITION] = Vector2( DEFAULT_START_POSITION );
-  mValueMap[Toolkit::DevelAnimatedGradientVisual::Property::START_COLOR]    = Vector4( DEFAULT_START_COLOR );
-  mValueMap[Toolkit::DevelAnimatedGradientVisual::Property::END_POSITION]   = Vector2( DEFAULT_END_POSITION );
-  mValueMap[Toolkit::DevelAnimatedGradientVisual::Property::END_COLOR]      = Vector4( DEFAULT_END_COLOR );
-  mValueMap[Toolkit::DevelAnimatedGradientVisual::Property::ROTATE_CENTER]  = Vector2( DEFAULT_ROTATE_CENTER );
+  mValueMap[Toolkit::DevelAnimatedGradientVisual::Property::START_POSITION] = Vector2(DEFAULT_START_POSITION);
+  mValueMap[Toolkit::DevelAnimatedGradientVisual::Property::START_COLOR]    = Vector4(DEFAULT_START_COLOR);
+  mValueMap[Toolkit::DevelAnimatedGradientVisual::Property::END_POSITION]   = Vector2(DEFAULT_END_POSITION);
+  mValueMap[Toolkit::DevelAnimatedGradientVisual::Property::END_COLOR]      = Vector4(DEFAULT_END_COLOR);
+  mValueMap[Toolkit::DevelAnimatedGradientVisual::Property::ROTATE_CENTER]  = Vector2(DEFAULT_ROTATE_CENTER);
   mValueMap[Toolkit::DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT]  = DEFAULT_ROTATE_AMOUNT;
   // Default Offset value is very special. unlimited animation from 0.0f to 2.0f
   {
     Property::Map map;
-    map.Insert( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::START, 0.0f );
-    map.Insert( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::TARGET, 2.0f );
-    map.Insert( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT, -1 );
+    map.Insert(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::START, 0.0f);
+    map.Insert(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::TARGET, 2.0f);
+    map.Insert(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT, -1);
 
     mValueMap[Toolkit::DevelAnimatedGradientVisual::Property::OFFSET] = map;
   }
 }
 
-void AnimatedGradientVisual::DoSetProperties( const Property::Map& propertyMap )
+void AnimatedGradientVisual::DoSetProperties(const Property::Map& propertyMap)
 {
   //GRADIENT_TYPE
-  Property::Value* gradientTypeValue = propertyMap.Find( Toolkit::DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, GRADIENT_TYPE_NAME );
-  Toolkit::DevelAnimatedGradientVisual::GradientType::Type gradientType = mGradientType;
-  if( gradientTypeValue )
+  Property::Value*                                         gradientTypeValue = propertyMap.Find(Toolkit::DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, GRADIENT_TYPE_NAME);
+  Toolkit::DevelAnimatedGradientVisual::GradientType::Type gradientType      = mGradientType;
+  if(gradientTypeValue)
   {
-    Scripting::GetEnumerationProperty( *gradientTypeValue, GRADIENT_TYPE_TABLE, GRADIENT_TYPE_TABLE_COUNT, gradientType );
+    Scripting::GetEnumerationProperty(*gradientTypeValue, GRADIENT_TYPE_TABLE, GRADIENT_TYPE_TABLE_COUNT, gradientType);
   }
 
   //UNIT_TYPE
-  Property::Value* unitTypeValue = propertyMap.Find( Toolkit::DevelAnimatedGradientVisual::Property::UNIT_TYPE, UNIT_TYPE_NAME );
-  Toolkit::DevelAnimatedGradientVisual::UnitType::Type unitType = mUnitType;
-  if( unitTypeValue )
+  Property::Value*                                     unitTypeValue = propertyMap.Find(Toolkit::DevelAnimatedGradientVisual::Property::UNIT_TYPE, UNIT_TYPE_NAME);
+  Toolkit::DevelAnimatedGradientVisual::UnitType::Type unitType      = mUnitType;
+  if(unitTypeValue)
   {
-    Scripting::GetEnumerationProperty( *unitTypeValue, UNIT_TYPE_TABLE, UNIT_TYPE_TABLE_COUNT, unitType );
+    Scripting::GetEnumerationProperty(*unitTypeValue, UNIT_TYPE_TABLE, UNIT_TYPE_TABLE_COUNT, unitType);
   }
 
   //SPREAD_TYPE
-  Property::Value* spreadTypeValue = propertyMap.Find( Toolkit::DevelAnimatedGradientVisual::Property::SPREAD_TYPE, SPREAD_TYPE_NAME );
-  Toolkit::DevelAnimatedGradientVisual::SpreadType::Type spreadType = mSpreadType;
-  if( spreadTypeValue )
+  Property::Value*                                       spreadTypeValue = propertyMap.Find(Toolkit::DevelAnimatedGradientVisual::Property::SPREAD_TYPE, SPREAD_TYPE_NAME);
+  Toolkit::DevelAnimatedGradientVisual::SpreadType::Type spreadType      = mSpreadType;
+  if(spreadTypeValue)
   {
-    Scripting::GetEnumerationProperty( *spreadTypeValue, SPREAD_TYPE_TABLE, SPREAD_TYPE_TABLE_COUNT, spreadType );
+    Scripting::GetEnumerationProperty(*spreadTypeValue, SPREAD_TYPE_TABLE, SPREAD_TYPE_TABLE_COUNT, spreadType);
   }
 
   mGradientType = gradientType;
-  mUnitType = unitType;
-  mSpreadType = spreadType;
+  mUnitType     = unitType;
+  mSpreadType   = spreadType;
 
   SetupGradientAnimationData(propertyMap);
 }
 
-void AnimatedGradientVisual::SetupGradientAnimationData( const Property::Map& propertyMap )
+void AnimatedGradientVisual::SetupGradientAnimationData(const Property::Map& propertyMap)
 {
   mGradientAnimationDataList.Clear(); // Clear Transition Information. All animation will deleted safely
 
   static Property::Map propertyNameMap;
   static Property::Map propertyUniformNameMap;
-  if( propertyNameMap.Empty() )
+  if(propertyNameMap.Empty())
   {
     propertyNameMap[Toolkit::DevelAnimatedGradientVisual::Property::START_POSITION] = START_POSITION_NAME;
-    propertyNameMap[Toolkit::DevelAnimatedGradientVisual::Property::START_COLOR   ] = START_COLOR_NAME;
-    propertyNameMap[Toolkit::DevelAnimatedGradientVisual::Property::END_POSITION  ] = END_POSITION_NAME;
-    propertyNameMap[Toolkit::DevelAnimatedGradientVisual::Property::END_COLOR     ] = END_COLOR_NAME;
-    propertyNameMap[Toolkit::DevelAnimatedGradientVisual::Property::ROTATE_CENTER ] = ROTATE_CENTER_NAME;
-    propertyNameMap[Toolkit::DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT ] = ROTATE_AMOUNT_NAME;
-    propertyNameMap[Toolkit::DevelAnimatedGradientVisual::Property::OFFSET        ] = OFFSET_NAME;
+    propertyNameMap[Toolkit::DevelAnimatedGradientVisual::Property::START_COLOR]    = START_COLOR_NAME;
+    propertyNameMap[Toolkit::DevelAnimatedGradientVisual::Property::END_POSITION]   = END_POSITION_NAME;
+    propertyNameMap[Toolkit::DevelAnimatedGradientVisual::Property::END_COLOR]      = END_COLOR_NAME;
+    propertyNameMap[Toolkit::DevelAnimatedGradientVisual::Property::ROTATE_CENTER = ROTATE_CENTER_NAME;
+    propertyNameMap[Toolkit::DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT = ROTATE_AMOUNT_NAME;
+    propertyNameMap[Toolkit::DevelAnimatedGradientVisual::Property::OFFSET]         = OFFSET_NAME;
   }
-  if( propertyUniformNameMap.Empty() )
+  if(propertyUniformNameMap.Empty())
   {
     propertyUniformNameMap[Toolkit::DevelAnimatedGradientVisual::Property::START_POSITION] = UNIFORM_START_POINT_NAME;
-    propertyUniformNameMap[Toolkit::DevelAnimatedGradientVisual::Property::START_COLOR   ] = UNIFORM_START_COLOR_NAME;
-    propertyUniformNameMap[Toolkit::DevelAnimatedGradientVisual::Property::END_POSITION  ] = UNIFORM_END_POINT_NAME;
-    propertyUniformNameMap[Toolkit::DevelAnimatedGradientVisual::Property::END_COLOR     ] = UNIFORM_END_COLOR_NAME;
-    propertyUniformNameMap[Toolkit::DevelAnimatedGradientVisual::Property::ROTATE_CENTER ] = UNIFORM_ROTATE_CENTER_NAME;
-    propertyUniformNameMap[Toolkit::DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT ] = UNIFORM_ROTATE_ANGLE_NAME;
-    propertyUniformNameMap[Toolkit::DevelAnimatedGradientVisual::Property::OFFSET        ] = UNIFORM_OFFSET_NAME;
+    propertyUniformNameMap[Toolkit::DevelAnimatedGradientVisual::Property::START_COLOR]    = UNIFORM_START_COLOR_NAME;
+    propertyUniformNameMap[Toolkit::DevelAnimatedGradientVisual::Property::END_POSITION]   = UNIFORM_END_POINT_NAME;
+    propertyUniformNameMap[Toolkit::DevelAnimatedGradientVisual::Property::END_COLOR]      = UNIFORM_END_COLOR_NAME;
+    propertyUniformNameMap[Toolkit::DevelAnimatedGradientVisual::Property::ROTATE_CENTER = UNIFORM_ROTATE_CENTER_NAME;
+    propertyUniformNameMap[Toolkit::DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT = UNIFORM_ROTATE_ANGLE_NAME;
+    propertyUniformNameMap[Toolkit::DevelAnimatedGradientVisual::Property::OFFSET]         = UNIFORM_OFFSET_NAME;
   }
 
   Property::Map::SizeType map_index_end = propertyNameMap.Count();
-  for( Property::Map::SizeType map_index = 0; map_index < map_index_end; map_index++ )
+  for(Property::Map::SizeType map_index = 0; map_index < map_index_end; map_index++)
   {
-    KeyValuePair property_pair = propertyNameMap.GetKeyValue( map_index );
-    KeyValuePair uniform_pair = propertyUniformNameMap.GetKeyValue( map_index );
-    Property::Index index = property_pair.first.indexKey;
-    const std::string property_name = property_pair.second.Get< std::string >();
-    const std::string uniform_name = uniform_pair.second.Get< std::string >();
+    KeyValuePair      property_pair = propertyNameMap.GetKeyValue(map_index);
+    KeyValuePair      uniform_pair  = propertyUniformNameMap.GetKeyValue(map_index);
+    Property::Index   index         = property_pair.first.indexKey;
+    const std::string property_name = property_pair.second.Get<std::string>();
+    const std::string uniform_name  = uniform_pair.second.Get<std::string>();
 
-    Property::Map map;
+    Property::Map   map;
     Property::Value default_value = mValueMap[index];
 
-    map["target"] = "background";
+    map["target"]   = "background";
     map["property"] = uniform_name;
 
-    Property::Value *value = propertyMap.Find( index, property_name );
-    if( !value )
+    Property::Value* value = propertyMap.Find(index, property_name);
+    if(!value)
     {
       value = &default_value;
     }
@@ -366,18 +251,17 @@ void AnimatedGradientVisual::SetupGradientAnimationData( const Property::Map& pr
       mValueMap[index] = (*value);
     }
 
-    int loop_count = 0;
-    float delay = 0.0f;
-    bool forward = true;
-    bool auto_mirror = false;
-    std::string ease_str = "LINEAR";
-    Property::Map *map_value = value->GetMap();
-    if( map_value )
+    int            loop_count  = 0;
+    float          delay       = 0.0f;
+    bool           forward     = true;
+    bool           auto_mirror = false;
+    std::string    ease_str    = "LINEAR";
+    Property::Map* map_value   = value->GetMap();
+    if(map_value)
     {
-      auto getValueFromMap = [ &map_value ]( const Property::Index& index, const std::string& name, Property::Value& res ) -> void
-      {
-        Property::Value *sub_value = map_value->Find( index, name );
-        if( sub_value )
+      auto getValueFromMap = [&map_value](const Property::Index& index, const std::string& name, Property::Value& res) -> void {
+        Property::Value* sub_value = map_value->Find(index, name);
+        if(sub_value)
         {
           res = *sub_value;
         }
@@ -390,39 +274,39 @@ void AnimatedGradientVisual::SetupGradientAnimationData( const Property::Map& pr
       Property::Value value_repeat       = DEFAULT_ANIMATION_REPEAT;
       Property::Value value_repeat_delay = DEFAULT_ANIMATION_REPEAT_DELAY;
 
-      getValueFromMap( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::START       , START_VALUE_NAME   , value_start );
-      getValueFromMap( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::TARGET      , TARGET_VALUE_NAME  , value_target );
-      getValueFromMap( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::DURATION    , DURATION_NAME      , value_duration );
-      getValueFromMap( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::DELAY       , DELAY_NAME         , value_delay );
-      getValueFromMap( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT      , REPEAT_NAME        , value_repeat );
-      getValueFromMap( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT_DELAY, REPEAT_DELAY_NAME  , value_repeat_delay );
+      getValueFromMap(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::START, START_VALUE_NAME, value_start);
+      getValueFromMap(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::TARGET, TARGET_VALUE_NAME, value_target);
+      getValueFromMap(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::DURATION, DURATION_NAME, value_duration);
+      getValueFromMap(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::DELAY, DELAY_NAME, value_delay);
+      getValueFromMap(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT, REPEAT_NAME, value_repeat);
+      getValueFromMap(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT_DELAY, REPEAT_DELAY_NAME, value_repeat_delay);
 
       Toolkit::DevelAnimatedGradientVisual::AnimationParameter::DirectionType::Type direction_type = DEFAULT_ANIMATION_DIRECTION_TYPE;
       Toolkit::DevelAnimatedGradientVisual::AnimationParameter::MotionType::Type    motion_type    = DEFAULT_ANIMATION_MOTION_TYPE;
       Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType::Type    easing_type    = DEFAULT_ANIMATION_EASING_TYPE;
 
-      Property::Value *direction_sub_value = map_value->Find( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION, DIRECTION_TYPE_NAME );
-      if( direction_sub_value )
+      Property::Value* direction_sub_value = map_value->Find(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION, DIRECTION_TYPE_NAME);
+      if(direction_sub_value)
       {
-        Scripting::GetEnumerationProperty( *direction_sub_value, DIRECTION_TYPE_TABLE, DIRECTION_TYPE_TABLE_COUNT, direction_type );
+        Scripting::GetEnumerationProperty(*direction_sub_value, DIRECTION_TYPE_TABLE, DIRECTION_TYPE_TABLE_COUNT, direction_type);
       }
-      Property::Value *motion_sub_value = map_value->Find( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::MOTION_TYPE, MOTION_TYPE_NAME );
-      if( motion_sub_value )
+      Property::Value* motion_sub_value = map_value->Find(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::MOTION_TYPE, MOTION_TYPE_NAME);
+      if(motion_sub_value)
       {
-        Scripting::GetEnumerationProperty( *motion_sub_value   , MOTION_TYPE_TABLE   , MOTION_TYPE_TABLE_COUNT   , motion_type );
+        Scripting::GetEnumerationProperty(*motion_sub_value, MOTION_TYPE_TABLE, MOTION_TYPE_TABLE_COUNT, motion_type);
       }
-      Property::Value *easing_sub_value = map_value->Find( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE, EASING_TYPE_NAME );
-      if( easing_sub_value )
+      Property::Value* easing_sub_value = map_value->Find(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE, EASING_TYPE_NAME);
+      if(easing_sub_value)
       {
-        Scripting::GetEnumerationProperty( *easing_sub_value   , EASING_TYPE_TABLE   , EASING_TYPE_TABLE_COUNT   , easing_type );
+        Scripting::GetEnumerationProperty(*easing_sub_value, EASING_TYPE_TABLE, EASING_TYPE_TABLE_COUNT, easing_type);
       }
 
-      forward = ( direction_type == Toolkit::DevelAnimatedGradientVisual::AnimationParameter::DirectionType::FORWARD );
-      delay = value_delay.Get< float >();
-      loop_count = value_repeat.Get< int >();
-      auto_mirror = ( motion_type == Toolkit::DevelAnimatedGradientVisual::AnimationParameter::MotionType::MIRROR );
+      forward     = (direction_type == Toolkit::DevelAnimatedGradientVisual::AnimationParameter::DirectionType::FORWARD);
+      delay       = value_delay.Get<float>();
+      loop_count  = value_repeat.Get<int>();
+      auto_mirror = (motion_type == Toolkit::DevelAnimatedGradientVisual::AnimationParameter::MotionType::MIRROR);
 
-      switch( easing_type )
+      switch(easing_type)
       {
         case Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType::LINEAR:
         {
@@ -447,62 +331,60 @@ void AnimatedGradientVisual::SetupGradientAnimationData( const Property::Map& pr
       }
 
       map["initialValue"] = forward ? value_start : value_target;
-      map["targetValue"] = forward ? value_target : value_start;
-      if( loop_count != 0 )
+      map["targetValue"]  = forward ? value_target : value_start;
+      if(loop_count != 0)
       {
         map["animator"] = Property::Map()
-                          .Add( "alphaFunction", ease_str )
-                          .Add( "timePeriod", Property::Map()
-                                             .Add( "delay", value_repeat_delay.Get< float >() )
-                                             .Add( "duration", value_duration.Get< float >() ) );
+                            .Add("alphaFunction", ease_str)
+                            .Add("timePeriod", Property::Map().Add("delay", value_repeat_delay.Get<float>()).Add("duration", value_duration.Get<float>()));
       }
     }
     else
     {
       map["initialValue"] = *value;
-      map["targetValue"] = *value;
+      map["targetValue"]  = *value;
     }
 
-    AnimatedGradientVisual::GradientAnimationData *animData = new AnimatedGradientVisual::GradientAnimationData();
-    animData->transition = Toolkit::TransitionData::New( map );
-    animData->index = index;
-    animData->loop_count = loop_count;
-    animData->delay = delay;
-    animData->forward = forward;
-    animData->auto_mirror = auto_mirror;
-    mGradientAnimationDataList.PushBack( animData );
+    AnimatedGradientVisual::GradientAnimationDataanimData = new AnimatedGradientVisual::GradientAnimationData();
+    animData->transition                                    = Toolkit::TransitionData::New(map);
+    animData->index                                         = index;
+    animData->loop_count                                    = loop_count;
+    animData->delay                                         = delay;
+    animData->forward                                       = forward;
+    animData->auto_mirror                                   = auto_mirror;
+    mGradientAnimationDataList.PushBack(animData);
   }
 }
 
 void AnimatedGradientVisual::SetupAnimation()
 {
-  for( auto&& elem : mGradientAnimationDataList )
+  for(auto&& elem : mGradientAnimationDataList)
   {
-    Toolkit::TransitionData& transition = elem->transition;
-    Animation& animation = elem->animation;
-    int loop_count = elem->loop_count;
-    bool auto_mirror = elem->auto_mirror;
-    bool without_animation = ( loop_count == 0 );
-
-    const Internal::TransitionData& transitionData = Toolkit::GetImplementation( transition );
-    for( auto iter = transitionData.Begin(); iter != transitionData.End(); iter++ )
+    Toolkit::TransitionData& transition        = elem->transition;
+    Animation&               animation         = elem->animation;
+    int                      loop_count        = elem->loop_count;
+    bool                     auto_mirror       = elem->auto_mirror;
+    bool                     without_animation = (loop_count == 0);
+
+    const Internal::TransitionData& transitionData = Toolkit::GetImplementation(transition);
+    for(auto iter = transitionData.Begin(); iter != transitionData.End(); iter++)
     {
-      TransitionData::Animator *animator = (*iter);
-      AnimateProperty( animation, *animator );
+      TransitionData::Animatoranimator = (*iter);
+      AnimateProperty(animation, *animator);
     }
-    if( animation && !without_animation )
+    if(animation && !without_animation)
     {
-      if( loop_count < 0 )
+      if(loop_count < 0)
       {
-        animation.SetLooping( true );
+        animation.SetLooping(true);
       }
-      else if( loop_count > 0 )
+      else if(loop_count > 0)
       {
-        animation.SetLoopCount( loop_count );
+        animation.SetLoopCount(loop_count);
       }
-      if( auto_mirror )
+      if(auto_mirror)
       {
-        animation.SetLoopingMode( Animation::LoopingMode::AUTO_REVERSE );
+        animation.SetLoopingMode(Animation::LoopingMode::AUTO_REVERSE);
       }
     }
   }
@@ -510,51 +392,51 @@ void AnimatedGradientVisual::SetupAnimation()
 
 void AnimatedGradientVisual::PlayAnimation()
 {
-  for( auto&& elem : mGradientAnimationDataList )
+  for(auto&& elem : mGradientAnimationDataList)
   {
     Animation& animation = elem->animation;
-    if( animation )
+    if(animation)
     {
       float delay = elem->delay;
-      if( delay > 0.0f )
+      if(delay > 0.0f)
       {
-        animation.PlayAfter( delay );
+        animation.PlayAfter(delay);
       }
-      else if( delay < 0.0f )
+      else if(delay < 0.0f)
       {
         float progress = -delay / animation.GetDuration(); // (duration + repeat_duration)
         if(progress >= 1.0f)
         {
-          int cur_loop = animation.GetLoopCount();
-          int decrease_loop = floor( progress ) + 1;
-          while( decrease_loop > progress )
+          int cur_loop      = animation.GetLoopCount();
+          int decrease_loop = floor(progress) + 1;
+          while(decrease_loop > progress)
           {
             decrease_loop--;
           }
           progress -= decrease_loop;
-          if( cur_loop == 0 )
+          if(cur_loop == 0)
           {
-            animation.PlayFrom( progress );
+            animation.PlayFrom(progress);
           }
           else
           {
             cur_loop -= decrease_loop;
-            if( cur_loop > 0 )
+            if(cur_loop > 0)
             {
-              animation.SetLoopCount( cur_loop );
-              animation.PlayFrom( progress );
+              animation.SetLoopCount(cur_loop);
+              animation.PlayFrom(progress);
             }
             else
             {
               // animation done. make this animation finished safely.
-              animation.SetLoopCount( 1 );
-              animation.PlayFrom( 1.0f );
+              animation.SetLoopCount(1);
+              animation.PlayFrom(1.0f);
             }
           }
         }
         else
         {
-          animation.PlayFrom( progress );
+          animation.PlayFrom(progress);
         }
       }
       else
@@ -567,10 +449,10 @@ void AnimatedGradientVisual::PlayAnimation()
 
 void AnimatedGradientVisual::StopAnimation()
 {
-  for( auto&& elem : mGradientAnimationDataList )
+  for(auto&& elem : mGradientAnimationDataList)
   {
     Animation& animation = elem->animation;
-    if( animation )
+    if(animation)
     {
       animation.Stop();
     }
@@ -579,137 +461,134 @@ void AnimatedGradientVisual::StopAnimation()
 
 void AnimatedGradientVisual::OnSetTransform()
 {
-  if( mImpl->mRenderer )
+  if(mImpl->mRenderer)
   {
-    mImpl->mTransform.RegisterUniforms( mImpl->mRenderer, Direction::LEFT_TO_RIGHT );
+    mImpl->mTransform.RegisterUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT);
   }
 }
 
-void AnimatedGradientVisual::DoSetOnStage( Actor& actor )
+void AnimatedGradientVisual::DoSetOnScene(Actor& actor)
 {
-  InitializeRenderer();
-  actor.AddRenderer( mImpl->mRenderer );
+  actor.AddRenderer(mImpl->mRenderer);
   SetupAnimation();
   PlayAnimation();
 
-  ResourceReady( Toolkit::Visual::ResourceStatus::READY );
+  ResourceReady(Toolkit::Visual::ResourceStatus::READY);
 }
 
-void AnimatedGradientVisual::DoSetOffStage( Actor& actor )
+void AnimatedGradientVisual::DoSetOffScene(Actor& actor)
 {
-  DALI_ASSERT_DEBUG( (bool)mImpl->mRenderer && "There should always be a renderer whilst on stage");
+  DALI_ASSERT_DEBUG((bool)mImpl->mRenderer && "There should always be a renderer whilst on stage");
 
   StopAnimation();
-  actor.RemoveRenderer( mImpl->mRenderer );
-  mImpl->mRenderer.Reset();
+  actor.RemoveRenderer(mImpl->mRenderer);
 }
 
-void AnimatedGradientVisual::DoCreatePropertyMap( Property::Map& map ) const
+void AnimatedGradientVisual::DoCreatePropertyMap(Property::Map& map) const
 {
   map.Clear();
-  map.Insert( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::ANIMATED_GRADIENT );
+  map.Insert(Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::ANIMATED_GRADIENT);
 
   //Create non-animated properties
-  map.Insert( Toolkit::DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, static_cast<int>(mGradientType) );
-  map.Insert( Toolkit::DevelAnimatedGradientVisual::Property::UNIT_TYPE    , static_cast<int>(mUnitType) );
-  map.Insert( Toolkit::DevelAnimatedGradientVisual::Property::SPREAD_TYPE  , static_cast<int>(mSpreadType) );
+  map.Insert(Toolkit::DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, static_cast<int>(mGradientType));
+  map.Insert(Toolkit::DevelAnimatedGradientVisual::Property::UNIT_TYPE, static_cast<int>(mUnitType));
+  map.Insert(Toolkit::DevelAnimatedGradientVisual::Property::SPREAD_TYPE, static_cast<int>(mSpreadType));
 
   //Create animated properties. Get from transition for more realistic test. Not from animation cause Animation may not setuped
-  for( auto&& elem : mGradientAnimationDataList )
+  for(auto&& elem : mGradientAnimationDataList)
   {
-    Toolkit::TransitionData& transition = elem->transition;
-    Property::Index index = elem->index;
-    int loop_count = elem->loop_count;
-    float delay = elem->delay;
-    bool forward = elem->forward;
-    bool auto_mirror = elem->auto_mirror;
-
-    const Internal::TransitionData& transitionData = Toolkit::GetImplementation( transition );
-    for( auto iter = transitionData.Begin(); iter != transitionData.End(); iter++ )
+    Toolkit::TransitionData& transition  = elem->transition;
+    Property::Index          index       = elem->index;
+    int                      loop_count  = elem->loop_count;
+    float                    delay       = elem->delay;
+    bool                     forward     = elem->forward;
+    bool                     auto_mirror = elem->auto_mirror;
+
+    const Internal::TransitionData& transitionData = Toolkit::GetImplementation(transition);
+    for(auto iter = transitionData.Begin(); iter != transitionData.End(); iter++)
     {
-      TransitionData::Animator *animator = (*iter);
-      if( animator->animate )
+      TransitionData::Animatoranimator = (*iter);
+      if(animator->animate)
       {
         //with animation
-        Property::Map animation_map;
-        Property::Value value_start = forward ? animator->initialValue : animator->targetValue;
+        Property::Map   animation_map;
+        Property::Value value_start  = forward ? animator->initialValue : animator->targetValue;
         Property::Value value_target = forward ? animator->targetValue : animator->initialValue;
         Property::Value value_direction;
-        Property::Value value_duration = Property::Value( animator->timePeriodDuration );
-        Property::Value value_delay = Property::Value( delay );
-        Property::Value value_repeat = Property::Value( loop_count );
-        Property::Value value_repeat_delay = Property::Value( animator->timePeriodDelay );
+        Property::Value value_duration     = Property::Value(animator->timePeriodDuration);
+        Property::Value value_delay        = Property::Value(delay);
+        Property::Value value_repeat       = Property::Value(loop_count);
+        Property::Value value_repeat_delay = Property::Value(animator->timePeriodDelay);
         Property::Value value_motion_type;
         Property::Value value_easing_type;
 
-        if( forward )
+        if(forward)
         {
-          value_direction = Property::Value( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::DirectionType::FORWARD );
+          value_direction = Property::Value(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::DirectionType::FORWARD);
         }
         else
         {
-          value_direction = Property::Value( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::DirectionType::BACKWARD );
+          value_direction = Property::Value(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::DirectionType::BACKWARD);
         }
-        if( auto_mirror )
+        if(auto_mirror)
         {
-          value_motion_type = Property::Value( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::MotionType::MIRROR );
+          value_motion_type = Property::Value(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::MotionType::MIRROR);
         }
         else
         {
-          value_motion_type = Property::Value( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::MotionType::LOOP );
+          value_motion_type = Property::Value(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::MotionType::LOOP);
         }
-        switch( animator->alphaFunction.GetBuiltinFunction() )
+        switch(animator->alphaFunction.GetBuiltinFunction())
         {
           case Dali::AlphaFunction::LINEAR:
           {
-            value_easing_type = Property::Value( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType::LINEAR );
+            value_easing_type = Property::Value(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType::LINEAR);
             break;
           }
           case Dali::AlphaFunction::EASE_IN_SQUARE:
           {
-            value_easing_type = Property::Value( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType::IN );
+            value_easing_type = Property::Value(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType::IN);
             break;
           }
           case Dali::AlphaFunction::EASE_OUT_SQUARE:
           {
-            value_easing_type = Property::Value( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType::OUT );
+            value_easing_type = Property::Value(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType::OUT);
             break;
           }
           case Dali::AlphaFunction::EASE_IN_OUT:
           {
-            value_easing_type = Property::Value( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType::IN_OUT );
+            value_easing_type = Property::Value(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType::IN_OUT);
             break;
           }
           default:
           {
-            value_easing_type = Property::Value( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType::LINEAR );
+            value_easing_type = Property::Value(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::EasingType::LINEAR);
           }
         }
 
-        animation_map.Insert( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::START       , value_start );
-        animation_map.Insert( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::TARGET      , value_target );
-        animation_map.Insert( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION   , value_direction );
-        animation_map.Insert( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::DURATION    , value_duration );
-        animation_map.Insert( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::DELAY       , value_delay );
-        animation_map.Insert( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT      , value_repeat );
-        animation_map.Insert( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT_DELAY, value_repeat_delay );
-        animation_map.Insert( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::MOTION_TYPE , value_motion_type );
-        animation_map.Insert( Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE , value_easing_type );
-
-        map.Insert( index, animation_map );
+        animation_map.Insert(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::START, value_start);
+        animation_map.Insert(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::TARGET, value_target);
+        animation_map.Insert(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION, value_direction);
+        animation_map.Insert(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::DURATION, value_duration);
+        animation_map.Insert(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::DELAY, value_delay);
+        animation_map.Insert(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT, value_repeat);
+        animation_map.Insert(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT_DELAY, value_repeat_delay);
+        animation_map.Insert(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::MOTION_TYPE, value_motion_type);
+        animation_map.Insert(Toolkit::DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE, value_easing_type);
+
+        map.Insert(index, animation_map);
       }
       else
       {
         //without animation
-        map.Insert( index, animator->targetValue );
+        map.Insert(index, animator->targetValue);
       }
     }
   }
 }
 
-void AnimatedGradientVisual::DoCreateInstancePropertyMap( Property::Map& map ) const
+void AnimatedGradientVisual::DoCreateInstancePropertyMap(Property::Map& map) const
 {
-
 }
 
 Shader AnimatedGradientVisual::CreateShader()
@@ -719,7 +598,7 @@ Shader AnimatedGradientVisual::CreateShader()
   std::string tagUnit;
   std::string tagGrad;
   std::string tagSpread;
-  switch( mUnitType )
+  switch(mUnitType)
   {
     case Toolkit::DevelAnimatedGradientVisual::UnitType::OBJECT_BOUNDING_BOX:
     {
@@ -732,7 +611,7 @@ Shader AnimatedGradientVisual::CreateShader()
       break;
     }
   }
-  switch( mGradientType )
+  switch(mGradientType)
   {
     case Toolkit::DevelAnimatedGradientVisual::GradientType::LINEAR:
     {
@@ -745,7 +624,7 @@ Shader AnimatedGradientVisual::CreateShader()
       break;
     }
   }
-  switch( mSpreadType )
+  switch(mSpreadType)
   {
     case Toolkit::DevelAnimatedGradientVisual::SpreadType::REFLECT:
     {
@@ -767,43 +646,41 @@ Shader AnimatedGradientVisual::CreateShader()
   std::string vert;
   std::string frag;
 
-  vert = "#define " + tagUnit + "\n"
-       + BASIC_VERTEX_SHADER;
-  frag = "#define " + tagGrad + "\n"
-       + "#define " + tagSpread + "\n"
-       + BASIC_FRAGMENT_SHADER;
+  vert = "#define " + tagUnit + "\n" + SHADER_ANIMATED_GRADIENT_VISUAL_SHADER_VERT.data();
+  frag = "#define " + tagGrad + "\n" + "#define " + tagSpread + "\n" + SHADER_ANIMATED_GRADIENT_VISUAL_SHADER_FRAG.data();
 
-  shader = Shader::New( vert, frag );
+  shader = Shader::New(vert, frag);
   return shader;
 }
 
-void AnimatedGradientVisual::InitializeRenderer()
+void AnimatedGradientVisual::OnInitialize()
 {
-  Geometry geometry = mFactoryCache.GetGeometry( VisualFactoryCache::QUAD_GEOMETRY );
-  VisualFactoryCache::ShaderType shaderType = GetShaderType( mGradientType, mUnitType, mSpreadType );
-  Shader shader = mFactoryCache.GetShader( shaderType );
-  if( !shader )
+  Geometry                       geometry   = mFactoryCache.GetGeometry(VisualFactoryCache::QUAD_GEOMETRY);
+  VisualFactoryCache::ShaderType shaderType = GetShaderType(mGradientType, mUnitType, mSpreadType);
+  Shader                         shader     = mFactoryCache.GetShader(shaderType);
+  if(!shader)
   {
     shader = CreateShader();
-    mFactoryCache.SaveShader( shaderType, shader );
+    mFactoryCache.SaveShader(shaderType, shader);
   }
 
-  mImpl->mRenderer = Renderer::New( geometry, shader );
+  mImpl->mRenderer = Renderer::New(geometry, shader);
+  mImpl->mRenderer.ReserveCustomProperties(CUSTOM_PROPERTY_COUNT);
 
-  mImpl->mRenderer.RegisterProperty( UNIFORM_START_POINT_NAME  , GetStartValue( mValueMap, Toolkit::DevelAnimatedGradientVisual::Property::START_POSITION, START_POSITION_NAME ) );
-  mImpl->mRenderer.RegisterProperty( UNIFORM_START_COLOR_NAME  , GetStartValue( mValueMap, Toolkit::DevelAnimatedGradientVisual::Property::START_COLOR   , START_COLOR_NAME ) );
-  mImpl->mRenderer.RegisterProperty( UNIFORM_END_POINT_NAME    , GetStartValue( mValueMap, Toolkit::DevelAnimatedGradientVisual::Property::END_POSITION  , END_POSITION_NAME ) );
-  mImpl->mRenderer.RegisterProperty( UNIFORM_END_COLOR_NAME    , GetStartValue( mValueMap, Toolkit::DevelAnimatedGradientVisual::Property::END_COLOR     , END_COLOR_NAME ) );
-  mImpl->mRenderer.RegisterProperty( UNIFORM_ROTATE_CENTER_NAME, GetStartValue( mValueMap, Toolkit::DevelAnimatedGradientVisual::Property::ROTATE_CENTER , ROTATE_CENTER_NAME ) );
-  mImpl->mRenderer.RegisterProperty( UNIFORM_ROTATE_ANGLE_NAME , GetStartValue( mValueMap, Toolkit::DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT , ROTATE_AMOUNT_NAME ) );
-  mImpl->mRenderer.RegisterProperty( UNIFORM_OFFSET_NAME       , GetStartValue( mValueMap, Toolkit::DevelAnimatedGradientVisual::Property::OFFSET        , OFFSET_NAME ) );
+  mImpl->mRenderer.RegisterUniqueProperty(UNIFORM_START_POINT_NAME, GetStartValue(mValueMap, Toolkit::DevelAnimatedGradientVisual::Property::START_POSITION, START_POSITION_NAME));
+  mImpl->mRenderer.RegisterUniqueProperty(UNIFORM_START_COLOR_NAME, GetStartValue(mValueMap, Toolkit::DevelAnimatedGradientVisual::Property::START_COLOR, START_COLOR_NAME));
+  mImpl->mRenderer.RegisterUniqueProperty(UNIFORM_END_POINT_NAME, GetStartValue(mValueMap, Toolkit::DevelAnimatedGradientVisual::Property::END_POSITION, END_POSITION_NAME));
+  mImpl->mRenderer.RegisterUniqueProperty(UNIFORM_END_COLOR_NAME, GetStartValue(mValueMap, Toolkit::DevelAnimatedGradientVisual::Property::END_COLOR, END_COLOR_NAME));
+  mImpl->mRenderer.RegisterUniqueProperty(UNIFORM_ROTATE_CENTER_NAME, GetStartValue(mValueMap, Toolkit::DevelAnimatedGradientVisual::Property::ROTATE_CENTER, ROTATE_CENTER_NAME));
+  mImpl->mRenderer.RegisterUniqueProperty(UNIFORM_ROTATE_ANGLE_NAME, GetStartValue(mValueMap, Toolkit::DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT, ROTATE_AMOUNT_NAME));
+  mImpl->mRenderer.RegisterUniqueProperty(UNIFORM_OFFSET_NAME, GetStartValue(mValueMap, Toolkit::DevelAnimatedGradientVisual::Property::OFFSET, OFFSET_NAME));
 
   //Register transform properties
-  mImpl->mTransform.RegisterUniforms( mImpl->mRenderer, Direction::LEFT_TO_RIGHT );
+  mImpl->mTransform.RegisterUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT);
 }
 
-}//namespace Internal
+} //namespace Internal
 
-}//namespace Toolkit
+} //namespace Toolkit
 
-}//namespace Dali
+} //namespace Dali