Merge "Add child flex node with its margin" into devel/master
authorAdeel Kazmi <adeel.kazmi@samsung.com>
Fri, 14 Feb 2020 17:10:11 +0000 (17:10 +0000)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Fri, 14 Feb 2020 17:10:11 +0000 (17:10 +0000)
automated-tests/src/dali-toolkit/utc-Dali-FlexNode.cpp
dali-toolkit/devel-api/layouting/flex-node.cpp
dali-toolkit/devel-api/layouting/flex-node.h

index 3d54ae2..31a6bf2 100755 (executable)
@@ -63,6 +63,36 @@ int UtcDaliToolkitFlexNodeConstructorP(void)
   END_TEST;
 }
 
+int UtcDaliToolkitFlexNodeAddChildWithMarginP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitFlexNodeAddChildWithMarginP");
+  Flex::Node* flexNode = new Flex::Node();
+  DALI_TEST_CHECK( flexNode );
+
+  // Position elements as a Row
+  flexNode->SetFlexDirection(Flex::FlexDirection::ROW);
+
+  // Create two actors and add them to the parent flex node
+  Actor actor = Actor::New();
+  DALI_TEST_CHECK( actor );
+
+  Extents margin( 5,5,5,5);
+  flexNode->AddChild(actor, margin, &MeasureChild, 0);
+
+  DALI_TEST_EQUALS( (int)flexNode->GetFlexDirection(), (int)Flex::FlexDirection::ROW, TEST_LOCATION );
+
+  flexNode->CalculateLayout(480, 800, false);
+
+  Vector4 actorFrame = flexNode->GetNodeFrame(0);
+
+  tet_printf("Actor frame(left:%f,top:%f,right:%f,bottom:%f)\n", actorFrame.x, actorFrame.y, actorFrame.z, actorFrame.w);
+
+  DALI_TEST_EQUALS( actorFrame, Vector4( 5.0f, 5.0f, ITEM_SIZE.width+5, ITEM_SIZE.height+5 ), TEST_LOCATION );
+
+  END_TEST;
+}
+
 int UtcDaliToolkitFlexNodeAddChildrenRowP(void)
 {
   ToolkitTestApplication application;
@@ -79,8 +109,8 @@ int UtcDaliToolkitFlexNodeAddChildrenRowP(void)
   DALI_TEST_CHECK( actor1 );
   DALI_TEST_CHECK( actor2 );
 
-  flexNode->AddChild(actor1, &MeasureChild, 0);
-  flexNode->AddChild(actor2, &MeasureChild, 1);
+  flexNode->AddChild(actor1, Extents(0,0,0,0), &MeasureChild, 0);
+  flexNode->AddChild(actor2, Extents(0,0,0,0), &MeasureChild, 1);
 
   DALI_TEST_EQUALS( (int)flexNode->GetFlexDirection(), (int)Flex::FlexDirection::ROW, TEST_LOCATION );
 
@@ -114,8 +144,8 @@ int UtcDaliToolkitFlexNodeAddChildrenColumnP(void)
   DALI_TEST_CHECK( actor1 );
   DALI_TEST_CHECK( actor2 );
 
-  flexNode->AddChild(actor1, &MeasureChild, 0);
-  flexNode->AddChild(actor2, &MeasureChild, 1);
+  flexNode->AddChild(actor1, Extents(0,0,0,0), &MeasureChild, 0);
+  flexNode->AddChild(actor2, Extents(0,0,0,0), &MeasureChild, 1);
 
   flexNode->CalculateLayout(480, 800, false);
 
@@ -158,8 +188,8 @@ int UtcDaliToolkitFlexNodeAddChildrenColumnJustify(void)
   DALI_TEST_EQUALS( (int)flexNode->GetFlexJustification(), (int)Flex::Justification::FLEX_START, TEST_LOCATION );
   DALI_TEST_EQUALS( (int)flexNode->GetFlexItemsAlignment(), (int)Flex::Alignment::FLEX_START, TEST_LOCATION );
 
-  flexNode->AddChild(actor1, &MeasureChild, 0);
-  flexNode->AddChild(actor2, &MeasureChild, 1);
+  flexNode->AddChild(actor1, Extents(0,0,0,0), &MeasureChild, 0);
+  flexNode->AddChild(actor2, Extents(0,0,0,0), &MeasureChild, 1);
 
   flexNode->CalculateLayout(480, 800, false);
 
@@ -256,8 +286,8 @@ int UtcDaliToolkitFlexNodeSizingP(void)
   DALI_TEST_CHECK( actor1 );
   DALI_TEST_CHECK( actor2 );
 
-  flexNode->AddChild(actor1, &MeasureChild, 0);
-  flexNode->AddChild(actor2, &MeasureChild, 1);
+  flexNode->AddChild(actor1, Extents(0,0,0,0), &MeasureChild, 0);
+  flexNode->AddChild(actor2, Extents(0,0,0,0), &MeasureChild, 1);
 
   flexNode->CalculateLayout(480, 800, false);
 
@@ -290,10 +320,10 @@ int UtcDaliToolkitFlexNodeWrapModeP(void)
   DALI_TEST_EQUALS( (int)flexNode->GetFlexAlignment(), (int)Flex::Alignment::FLEX_START, TEST_LOCATION );
   DALI_TEST_EQUALS( (int)flexNode->GetFlexWrap(), (int)Flex::WrapType::NO_WRAP, TEST_LOCATION );
 
-  flexNode->AddChild( actor1, &MeasureChild, 0 );
-  flexNode->AddChild( actor2, &MeasureChild, 1 );
-  flexNode->AddChild( actor2, &MeasureChild, 2 );
-  flexNode->AddChild( actor2, &MeasureChild, 3 );
+  flexNode->AddChild( actor1, Extents(0,0,0,0), &MeasureChild, 0 );
+  flexNode->AddChild( actor2, Extents(0,0,0,0), &MeasureChild, 1 );
+  flexNode->AddChild( actor2, Extents(0,0,0,0), &MeasureChild, 2 );
+  flexNode->AddChild( actor2, Extents(0,0,0,0), &MeasureChild, 3 );
 
   flexNode->CalculateLayout(30, 800, false);
 
@@ -377,8 +407,8 @@ int UtcDaliToolkitFlexNodeRemoveChildP(void)
   DALI_TEST_CHECK( actor1 );
   DALI_TEST_CHECK( actor2 );
 
-  flexNode->AddChild(actor1, &MeasureChild, 0);
-  flexNode->AddChild(actor2, &MeasureChild, 1);
+  flexNode->AddChild(actor1, Extents(0,0,0,0), &MeasureChild, 0);
+  flexNode->AddChild(actor2, Extents(0,0,0,0), &MeasureChild, 1);
 
   flexNode->CalculateLayout(480, 800, false);
 
@@ -420,8 +450,8 @@ int UtcDaliToolkitFlexNodeRemoveAllChildrenP(void)
   DALI_TEST_CHECK( actor1 );
   DALI_TEST_CHECK( actor2 );
 
-  flexNode->AddChild(actor1, &MeasureChild, 0);
-  flexNode->AddChild(actor2, &MeasureChild, 1);
+  flexNode->AddChild(actor1, Extents(0,0,0,0), &MeasureChild, 0);
+  flexNode->AddChild(actor2, Extents(0,0,0,0), &MeasureChild, 1);
 
   flexNode->CalculateLayout(480, 800, false);
 
@@ -462,8 +492,8 @@ int UtcDaliToolkitFlexNodePaddingMarginP(void)
   DALI_TEST_CHECK( actor1 );
   DALI_TEST_CHECK( actor2 );
 
-  flexNode->AddChild(actor1, &MeasureChild, 0);
-  flexNode->AddChild(actor2, &MeasureChild, 1);
+  flexNode->AddChild(actor1, Extents(0,0,0,0), &MeasureChild, 0);
+  flexNode->AddChild(actor2, Extents(0,0,0,0), &MeasureChild, 1);
 
   Extents padding( 5,5,5,5);
   Extents margin( 5,5,5,5);
@@ -509,8 +539,8 @@ int UtcDaliToolkitFlexNodeCallbackTestP(void)
   DALI_TEST_CHECK( actor1 );
   DALI_TEST_CHECK( actor2 );
 
-  flexNode->AddChild(actor1, &MeasureChild, 0);
-  flexNode->AddChild(actor2, &MeasureChild, 1);
+  flexNode->AddChild(actor1, Extents(0,0,0,0), &MeasureChild, 0);
+  flexNode->AddChild(actor2, Extents(0,0,0,0), &MeasureChild, 1);
 
   flexNode->CalculateLayout(480, 800, false);
 
index 189ab8a..f13549c 100644 (file)
@@ -101,7 +101,7 @@ Node::~Node()
   DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Destructor() <<\n");
 }
 
-void Node::AddChild( Actor child, MeasureCallback measureFunction, int index )
+void Node::AddChild( Actor child, Extents margin, MeasureCallback measureFunction, int index )
 {
   if( child )
   {
@@ -115,11 +115,17 @@ void Node::AddChild( Actor child, MeasureCallback measureFunction, int index )
     childNode->mImpl->mActor = child;
     Vector2 minumumSize = child.GetMinimumSize();
     Vector2 maximumSize = child.GetMaximumSize();
+
     YGNodeStyleSetMaxWidth( childNode->mImpl->mYogaNode, maximumSize.width );
     YGNodeStyleSetMaxHeight( childNode->mImpl->mYogaNode, maximumSize.height );
     YGNodeStyleSetMinWidth( childNode->mImpl->mYogaNode, minumumSize.width );
     YGNodeStyleSetMinHeight( childNode->mImpl->mYogaNode, minumumSize.height );
 
+    YGNodeStyleSetMargin( childNode->mImpl->mYogaNode, YGEdgeLeft, margin.start );
+    YGNodeStyleSetMargin( childNode->mImpl->mYogaNode, YGEdgeTop, margin.top );
+    YGNodeStyleSetMargin( childNode->mImpl->mYogaNode, YGEdgeRight, margin.end );
+    YGNodeStyleSetMargin( childNode->mImpl->mYogaNode, YGEdgeBottom, margin.bottom );
+
     YGNodeSetMeasureFunc( childNode->mImpl->mYogaNode, &MeasureChild );
 
     YGNodeInsertChild( mImpl->mYogaNode, childNode->mImpl->mYogaNode, index );
index 034e555..1b76f76 100644 (file)
@@ -130,10 +130,11 @@ public:
   /**
    * @brief Insert child into the FlexLayout at the given index.
    * @param[in] child Actor to insert.
+   * @param[in] margin of child Actor.
    * @param[in] measureFunction for the child.
    * @param[in] index to insert at.
    */
-  void AddChild( Actor child, MeasureCallback measureFunction, int index );
+  void AddChild( Actor child, Extents margin, MeasureCallback measureFunction, int index );
 
   /**
    * @brief Remove child from the FlexLayout at the given index.