From: Adeel Kazmi Date: Fri, 14 Feb 2020 17:10:11 +0000 (+0000) Subject: Merge "Add child flex node with its margin" into devel/master X-Git-Tag: dali_1.9.0~5 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=37d747586c7385a57c2376b708795c46d607f14d;hp=ad0b769d16ad8f5dc941527248050d3ca0d8f5cb Merge "Add child flex node with its margin" into devel/master --- diff --git a/automated-tests/src/dali-toolkit/utc-Dali-FlexNode.cpp b/automated-tests/src/dali-toolkit/utc-Dali-FlexNode.cpp index 3d54ae2..31a6bf2 100755 --- a/automated-tests/src/dali-toolkit/utc-Dali-FlexNode.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-FlexNode.cpp @@ -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); diff --git a/dali-toolkit/devel-api/layouting/flex-node.cpp b/dali-toolkit/devel-api/layouting/flex-node.cpp index 189ab8a..f13549c 100644 --- a/dali-toolkit/devel-api/layouting/flex-node.cpp +++ b/dali-toolkit/devel-api/layouting/flex-node.cpp @@ -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 ); diff --git a/dali-toolkit/devel-api/layouting/flex-node.h b/dali-toolkit/devel-api/layouting/flex-node.h index 034e555..1b76f76 100644 --- a/dali-toolkit/devel-api/layouting/flex-node.h +++ b/dali-toolkit/devel-api/layouting/flex-node.h @@ -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.