Create new gradient visual only if required 11/324211/2
authorEunki, Hong <eunkiki.hong@samsung.com>
Wed, 14 May 2025 05:37:25 +0000 (14:37 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Wed, 14 May 2025 05:39:23 +0000 (14:39 +0900)
Change-Id: Ic3a859b106ffe03ae3167c20d88188e6457680e1
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
dali-toolkit/internal/visuals/gradient/gradient-visual.cpp

index 6156c8ce068cbb757e542859462ac9aa9530c4ed..da1d1a661d206c8f63c7bf5704d82c3e6bdbe876 100644 (file)
@@ -171,32 +171,35 @@ GradientVisual::~GradientVisual()
 
 void GradientVisual::DoSetProperties(const Property::Map& propertyMap)
 {
-  Toolkit::GradientVisual::Units::Type gradientUnits = Toolkit::GradientVisual::Units::OBJECT_BOUNDING_BOX;
-
-  Property::Value* unitsValue = propertyMap.Find(Toolkit::GradientVisual::Property::UNITS, UNITS_NAME);
-  if(unitsValue)
+  if(!mGradient)
   {
-    Scripting::GetEnumerationProperty(*unitsValue, UNITS_TABLE, UNITS_TABLE_COUNT, gradientUnits);
-  }
+    Toolkit::GradientVisual::Units::Type gradientUnits = Toolkit::GradientVisual::Units::OBJECT_BOUNDING_BOX;
 
-  mGradientType = Type::LINEAR;
-  if(propertyMap.Find(Toolkit::GradientVisual::Property::RADIUS, RADIUS_NAME))
-  {
-    mGradientType = Type::RADIAL;
-  }
-  else if(propertyMap.Find(Toolkit::GradientVisual::Property::START_ANGLE, CONIC_START_ANGLE_NAME))
-  {
-    mGradientType = Type::CONIC;
-  }
+    Property::Value* unitsValue = propertyMap.Find(Toolkit::GradientVisual::Property::UNITS, UNITS_NAME);
+    if(unitsValue)
+    {
+      Scripting::GetEnumerationProperty(*unitsValue, UNITS_TABLE, UNITS_TABLE_COUNT, gradientUnits);
+    }
 
-  if(NewGradient(mGradientType, propertyMap))
-  {
-    mGradient->SetGradientUnits(gradientUnits);
-    mGradientTransform = mGradient->GetAlignmentTransform();
-  }
-  else
-  {
-    DALI_LOG_ERROR("Fail to provide valid properties to create a GradientVisual object\n");
+    mGradientType = Type::LINEAR;
+    if(propertyMap.Find(Toolkit::GradientVisual::Property::RADIUS, RADIUS_NAME))
+    {
+      mGradientType = Type::RADIAL;
+    }
+    else if(propertyMap.Find(Toolkit::GradientVisual::Property::START_ANGLE, CONIC_START_ANGLE_NAME))
+    {
+      mGradientType = Type::CONIC;
+    }
+
+    if(NewGradient(mGradientType, propertyMap))
+    {
+      mGradient->SetGradientUnits(gradientUnits);
+      mGradientTransform = mGradient->GetAlignmentTransform();
+    }
+    else
+    {
+      DALI_LOG_ERROR("Fail to provide valid properties to create a GradientVisual object\n");
+    }
   }
 }
 
@@ -367,7 +370,7 @@ bool GradientVisual::NewGradient(Type gradientType, const Property::Map& propert
   }
   else // if(gradientType == Type::CONIC)
   {
-    Property::Value* centerValue = propertyMap.Find(Toolkit::GradientVisual::Property::CENTER, CENTER_NAME);
+    Property::Value* centerValue     = propertyMap.Find(Toolkit::GradientVisual::Property::CENTER, CENTER_NAME);
     Property::Value* startAngleValue = propertyMap.Find(Toolkit::GradientVisual::Property::START_ANGLE, CONIC_START_ANGLE_NAME);
     Vector2          center;
     float            startAngle;