[Tizen] Revert the change for 0x0 size of the actor
[platform/core/uifw/dali-core.git] / dali / internal / event / actors / actor-impl.cpp
index 2065436..ba7e1cb 100644 (file)
@@ -193,13 +193,13 @@ DALI_PROPERTY( "sensitive",                 BOOLEAN,  true,  false, false, Dali:
 DALI_PROPERTY( "leaveRequired",             BOOLEAN,  true,  false, false, Dali::Actor::Property::LEAVE_REQUIRED )
 DALI_PROPERTY( "inheritOrientation",        BOOLEAN,  true,  false, false, Dali::Actor::Property::INHERIT_ORIENTATION )
 DALI_PROPERTY( "inheritScale",              BOOLEAN,  true,  false, false, Dali::Actor::Property::INHERIT_SCALE )
-DALI_PROPERTY( "colorMode",                 STRING,   true,  false, false, Dali::Actor::Property::COLOR_MODE )
+DALI_PROPERTY( "colorMode",                 INTEGER,  true,  false, false, Dali::Actor::Property::COLOR_MODE )
 DALI_PROPERTY( "reservedProperty01",        STRING,   true,  false, false, Dali::Actor::Property::RESERVED_PROPERTY_01 ) // This property was removed, but to keep binary compatibility and TypeRegister test app, remain it here.
-DALI_PROPERTY( "drawMode",                  STRING,   true,  false, false, Dali::Actor::Property::DRAW_MODE )
+DALI_PROPERTY( "drawMode",                  INTEGER,  true,  false, false, Dali::Actor::Property::DRAW_MODE )
 DALI_PROPERTY( "sizeModeFactor",            VECTOR3,  true,  false, false, Dali::Actor::Property::SIZE_MODE_FACTOR )
 DALI_PROPERTY( "widthResizePolicy",         STRING,   true,  false, false, Dali::Actor::Property::WIDTH_RESIZE_POLICY )
 DALI_PROPERTY( "heightResizePolicy",        STRING,   true,  false, false, Dali::Actor::Property::HEIGHT_RESIZE_POLICY )
-DALI_PROPERTY( "sizeScalePolicy",           STRING,   true,  false, false, Dali::Actor::Property::SIZE_SCALE_POLICY )
+DALI_PROPERTY( "sizeScalePolicy",           INTEGER,  true,  false, false, Dali::Actor::Property::SIZE_SCALE_POLICY )
 DALI_PROPERTY( "widthForHeight",            BOOLEAN,  true,  false, false, Dali::Actor::Property::WIDTH_FOR_HEIGHT )
 DALI_PROPERTY( "heightForWidth",            BOOLEAN,  true,  false, false, Dali::Actor::Property::HEIGHT_FOR_WIDTH )
 DALI_PROPERTY( "padding",                   VECTOR4,  true,  false, false, Dali::Actor::Property::PADDING )
@@ -1154,6 +1154,8 @@ void Actor::SetWidth( float width )
     SceneGraph::NodeTransformComponentMessage<Vector3>::Send( GetEventThreadServices(), &GetNode(), &GetNode().mSize, &SceneGraph::TransformManagerPropertyHandler<Vector3>::BakeX, width );
   }
 
+  mUseAnimatedSize &= ~AnimatedSizeFlag::WIDTH;
+
   RelayoutRequest();
 }
 
@@ -1172,6 +1174,8 @@ void Actor::SetHeight( float height )
     SceneGraph::NodeTransformComponentMessage<Vector3>::Send( GetEventThreadServices(), &GetNode(), &GetNode().mSize, &SceneGraph::TransformManagerPropertyHandler<Vector3>::BakeY, height );
   }
 
+  mUseAnimatedSize &= ~AnimatedSizeFlag::HEIGHT;
+
   RelayoutRequest();
 }
 
@@ -1179,6 +1183,8 @@ void Actor::SetDepth( float depth )
 {
   mTargetSize.depth = depth;
 
+  mUseAnimatedSize &= ~AnimatedSizeFlag::DEPTH;
+
   // node is being used in a separate thread; queue a message to set the value & base value
   SceneGraph::NodeTransformComponentMessage<Vector3>::Send( GetEventThreadServices(), &GetNode(), &GetNode().mSize, &SceneGraph::TransformManagerPropertyHandler<Vector3>::BakeZ, depth );
 }
@@ -1187,14 +1193,35 @@ Vector3 Actor::GetTargetSize() const
 {
   Vector3 size = mTargetSize;
 
-  // Should return preferred size if size is fixed as set by SetSize
-  if( GetResizePolicy( Dimension::WIDTH ) == ResizePolicy::FIXED )
+  if( mUseAnimatedSize & AnimatedSizeFlag::WIDTH )
+  {
+    // Should return animated size if size is animated
+    size.width = mAnimatedSize.width;
+  }
+  else
+  {
+    // Should return preferred size if size is fixed as set by SetSize
+    if( GetResizePolicy( Dimension::WIDTH ) == ResizePolicy::FIXED )
+    {
+      size.width = GetPreferredSize().width;
+    }
+  }
+
+  if( mUseAnimatedSize & AnimatedSizeFlag::HEIGHT )
   {
-    size.width = GetPreferredSize().width;
+    size.height = mAnimatedSize.height;
+  }
+  else
+  {
+    if( GetResizePolicy( Dimension::HEIGHT ) == ResizePolicy::FIXED )
+    {
+      size.height = GetPreferredSize().height;
+    }
   }
-  if( GetResizePolicy( Dimension::HEIGHT ) == ResizePolicy::FIXED )
+
+  if( mUseAnimatedSize & AnimatedSizeFlag::DEPTH )
   {
-    size.height = GetPreferredSize().height;
+    size.depth = mAnimatedSize.depth;
   }
 
   return size;
@@ -2031,9 +2058,11 @@ Actor::Actor( DerivedType derivedType, const SceneGraph::Node& node )
   mTargetSize( Vector3::ZERO ),
   mTargetPosition( Vector3::ZERO ),
   mTargetScale( Vector3::ONE ),
+  mAnimatedSize( Vector3::ZERO ),
   mName(),
   mSortedDepth( 0u ),
   mDepth( 0u ),
+  mUseAnimatedSize( AnimatedSizeFlag::CLEAR ),
   mIsRoot( ROOT_LAYER == derivedType ),
   mIsLayer( LAYER == derivedType || ROOT_LAYER == derivedType ),
   mIsOnStage( false ),
@@ -2623,7 +2652,7 @@ void Actor::SetDefaultProperty( Property::Index index, const Property::Value& pr
     case Dali::Actor::Property::SIZE_SCALE_POLICY:
     {
       SizeScalePolicy::Type type = GetSizeScalePolicy();
-      if( Scripting::GetEnumeration< SizeScalePolicy::Type >( property.Get< std::string >().c_str(), SIZE_SCALE_POLICY_TABLE, SIZE_SCALE_POLICY_TABLE_COUNT, type ) )
+      if( Scripting::GetEnumerationProperty< SizeScalePolicy::Type >( property, SIZE_SCALE_POLICY_TABLE, SIZE_SCALE_POLICY_TABLE_COUNT, type ) )
       {
         SetSizeScalePolicy( type );
       }
@@ -2930,18 +2959,8 @@ void Actor::OnNotifyDefaultPropertyAnimation( Animation& animation, Property::In
         {
           if( value.Get( mTargetSize ) )
           {
-            if( mRelayoutData )
-            {
-              if( GetResizePolicy( Dimension::WIDTH ) == ResizePolicy::FIXED )
-              {
-                mRelayoutData->preferredSize.width = mTargetSize.width;
-              }
-
-              if( GetResizePolicy( Dimension::HEIGHT ) == ResizePolicy::FIXED )
-              {
-                mRelayoutData->preferredSize.height = mTargetSize.height;
-              }
-            }
+            mAnimatedSize = mTargetSize;
+            mUseAnimatedSize = AnimatedSizeFlag::WIDTH | AnimatedSizeFlag::HEIGHT | AnimatedSizeFlag::DEPTH;
 
             // Notify deriving classes
             OnSizeAnimation( animation, mTargetSize );
@@ -2953,10 +2972,8 @@ void Actor::OnNotifyDefaultPropertyAnimation( Animation& animation, Property::In
         {
           if( value.Get( mTargetSize.width ) )
           {
-            if( mRelayoutData && GetResizePolicy( Dimension::WIDTH ) == ResizePolicy::FIXED )
-            {
-              mRelayoutData->preferredSize.width = mTargetSize.width;
-            }
+            mAnimatedSize.width = mTargetSize.width;
+            mUseAnimatedSize |= AnimatedSizeFlag::WIDTH;
 
             // Notify deriving classes
             OnSizeAnimation( animation, mTargetSize );
@@ -2968,10 +2985,8 @@ void Actor::OnNotifyDefaultPropertyAnimation( Animation& animation, Property::In
         {
           if( value.Get( mTargetSize.height ) )
           {
-            if( mRelayoutData && GetResizePolicy( Dimension::HEIGHT ) == ResizePolicy::FIXED )
-            {
-              mRelayoutData->preferredSize.height = mTargetSize.height;
-            }
+            mAnimatedSize.height = mTargetSize.height;
+            mUseAnimatedSize |= AnimatedSizeFlag::HEIGHT;
 
             // Notify deriving classes
             OnSizeAnimation( animation, mTargetSize );
@@ -2983,6 +2998,9 @@ void Actor::OnNotifyDefaultPropertyAnimation( Animation& animation, Property::In
         {
           if( value.Get( mTargetSize.depth ) )
           {
+            mAnimatedSize.depth = mTargetSize.depth;
+            mUseAnimatedSize |= AnimatedSizeFlag::DEPTH;
+
             // Notify deriving classes
             OnSizeAnimation( animation, mTargetSize );
           }
@@ -3097,18 +3115,8 @@ void Actor::OnNotifyDefaultPropertyAnimation( Animation& animation, Property::In
         {
           if( AdjustValue< Vector3 >( mTargetSize, value ) )
           {
-            if( mRelayoutData )
-            {
-              if( GetResizePolicy( Dimension::WIDTH ) == ResizePolicy::FIXED )
-              {
-                mRelayoutData->preferredSize.width = mTargetSize.width;
-              }
-
-              if( GetResizePolicy( Dimension::HEIGHT ) == ResizePolicy::FIXED )
-              {
-                mRelayoutData->preferredSize.height = mTargetSize.height;
-              }
-            }
+            mAnimatedSize = mTargetSize;
+            mUseAnimatedSize = AnimatedSizeFlag::WIDTH | AnimatedSizeFlag::HEIGHT | AnimatedSizeFlag::DEPTH;
 
             // Notify deriving classes
             OnSizeAnimation( animation, mTargetSize );
@@ -3120,10 +3128,8 @@ void Actor::OnNotifyDefaultPropertyAnimation( Animation& animation, Property::In
         {
           if( AdjustValue< float >( mTargetSize.width, value ) )
           {
-            if( mRelayoutData && GetResizePolicy( Dimension::WIDTH ) == ResizePolicy::FIXED )
-            {
-              mRelayoutData->preferredSize.width = mTargetSize.width;
-            }
+            mAnimatedSize.width = mTargetSize.width;
+            mUseAnimatedSize |= AnimatedSizeFlag::WIDTH;
 
             // Notify deriving classes
             OnSizeAnimation( animation, mTargetSize );
@@ -3135,10 +3141,8 @@ void Actor::OnNotifyDefaultPropertyAnimation( Animation& animation, Property::In
         {
           if( AdjustValue< float >( mTargetSize.height, value ) )
           {
-            if( mRelayoutData && GetResizePolicy( Dimension::HEIGHT ) == ResizePolicy::FIXED )
-            {
-              mRelayoutData->preferredSize.height = mTargetSize.height;
-            }
+            mAnimatedSize.height = mTargetSize.height;
+            mUseAnimatedSize |= AnimatedSizeFlag::HEIGHT;
 
             // Notify deriving classes
             OnSizeAnimation( animation, mTargetSize );
@@ -3150,6 +3154,9 @@ void Actor::OnNotifyDefaultPropertyAnimation( Animation& animation, Property::In
         {
           if( AdjustValue< float >( mTargetSize.depth, value ) )
           {
+            mAnimatedSize.depth = mTargetSize.depth;
+            mUseAnimatedSize |= AnimatedSizeFlag::DEPTH;
+
             // Notify deriving classes
             OnSizeAnimation( animation, mTargetSize );
           }
@@ -3743,13 +3750,13 @@ bool Actor::GetCachedPropertyValue( Property::Index index, Property::Value& valu
 
     case Dali::Actor::Property::COLOR_MODE:
     {
-      value = Scripting::GetLinearEnumerationName< ColorMode >( GetColorMode(), COLOR_MODE_TABLE, COLOR_MODE_TABLE_COUNT );
+      value = GetColorMode();
       break;
     }
 
     case Dali::Actor::Property::DRAW_MODE:
     {
-      value = Scripting::GetEnumerationName< DrawMode::Type >( GetDrawMode(), DRAW_MODE_TABLE, DRAW_MODE_TABLE_COUNT );
+      value = GetDrawMode();
       break;
     }
 
@@ -3773,7 +3780,7 @@ bool Actor::GetCachedPropertyValue( Property::Index index, Property::Value& valu
 
     case Dali::Actor::Property::SIZE_SCALE_POLICY:
     {
-      value = Scripting::GetLinearEnumerationName< SizeScalePolicy::Type >( GetSizeScalePolicy(), SIZE_SCALE_POLICY_TABLE, SIZE_SCALE_POLICY_TABLE_COUNT );
+      value = GetSizeScalePolicy();
       break;
     }
 
@@ -4245,12 +4252,12 @@ float Actor::CalculateChildSizeBase( const Dali::Actor& child, Dimension::Type d
 
     case ResizePolicy::SIZE_RELATIVE_TO_PARENT:
     {
-      return GetLatestSize( dimension ) * GetDimensionValue( child.GetSizeModeFactor(), dimension );
+      return GetLatestSize( dimension ) * GetDimensionValue( child.GetProperty< Vector3 >( Dali::Actor::Property::SIZE_MODE_FACTOR ), dimension );
     }
 
     case ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT:
     {
-      return GetLatestSize( dimension ) + GetDimensionValue( child.GetSizeModeFactor(), dimension );
+      return GetLatestSize( dimension ) + GetDimensionValue( child.GetProperty< Vector3 >( Dali::Actor::Property::SIZE_MODE_FACTOR ), dimension );
     }
 
     default:
@@ -4709,6 +4716,8 @@ void Actor::SetPreferredSize( const Vector2& size )
 
   mRelayoutData->preferredSize = size;
 
+  mUseAnimatedSize = AnimatedSizeFlag::CLEAR;
+
   RelayoutRequest();
 }