DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Destructor() <<\n");
}
-void Node::AddChild( Actor child, MeasureCallback measureFunction, int index )
+Node* Node::AddChild( Actor child, Extents margin, MeasureCallback measureFunction, int index )
{
if( child )
{
- DALI_LOG_INFO( gLogFilter, Debug::Verbose, "AddChild[%s] to node[%p] at index:%d\n", child.GetName().c_str(), mImpl->mYogaNode, index );
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "AddChild[%s] to node[%p] at index:%d\n", child.GetProperty< std::string >( Dali::Actor::Property::NAME ).c_str(), mImpl->mYogaNode, index );
NodePtr childNode( new Node() );
childNode->mImpl->mMeasureCallback = measureFunction;
childNode->mImpl->mActor = child;
- Vector2 minumumSize = child.GetMinimumSize();
- Vector2 maximumSize = child.GetMaximumSize();
+ Vector2 minumumSize = child.GetProperty< Vector2 >( Actor::Property::MINIMUM_SIZE );
+ Vector2 maximumSize = child.GetProperty< Vector2 >( Actor::Property::MAXIMUM_SIZE );
+
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 );
+ Node* result = childNode.get();
mImpl->mChildNodes.emplace_back( std::move(childNode) );
+
+ return result;;
}
+ return nullptr;
}
void Node::RemoveChild( Actor child )
{
- DALI_LOG_INFO( gLogFilter, Debug::Verbose, "RemoveChild child:[%s] from internal nodeCount[%d] childCount[%d]\n", child.GetName().c_str(), YGNodeGetChildCount( mImpl->mYogaNode ), mImpl->mChildNodes.size() );
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "RemoveChild child:[%s] from internal nodeCount[%d] childCount[%d]\n", child.GetProperty< std::string >( Dali::Actor::Property::NAME ).c_str(), YGNodeGetChildCount( mImpl->mYogaNode ), mImpl->mChildNodes.size() );
auto iterator = std::find_if( mImpl->mChildNodes.begin(),mImpl->mChildNodes.end(),
[&child]( NodePtr& childNode ){ return childNode->mImpl->mActor.GetHandle() == child;});
Toolkit::Flex::SizeTuple nodeSize{8,8}; // Default size set to 8,8 to aid bug detection.
if( mImpl->mMeasureCallback && mImpl->mActor.GetHandle() )
{
- DALI_LOG_INFO( gLogFilter, Debug::Verbose, "MeasureNode MeasureCallback executing on %s\n", mImpl->mActor.GetHandle().GetName().c_str() );
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "MeasureNode MeasureCallback executing on %s\n", mImpl->mActor.GetHandle().GetProperty< std::string >( Dali::Actor::Property::NAME ).c_str() );
nodeSize = mImpl->mMeasureCallback( mImpl->mActor.GetHandle(), width, widthMode, height, heightMode );
}
DALI_LOG_INFO( gLogFilter, Debug::Verbose, "MeasureNode nodeSize width:%f height:%f\n", nodeSize.width, nodeSize.height );
return static_cast<Dali::Toolkit::Flex::Alignment>( YGNodeStyleGetAlignItems( mImpl->mYogaNode ));
}
+void Node::SetFlexAlignmentSelf( Dali::Toolkit::Flex::Alignment flexAlignmentSelf )
+{
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Set flex alignment self [%d] on mYogaNode[%p]\n", flexAlignmentSelf, mImpl->mYogaNode )
+
+ YGNodeStyleSetAlignSelf( mImpl->mYogaNode, static_cast<YGAlign>(flexAlignmentSelf) );
+}
+
+Dali::Toolkit::Flex::Alignment Node::GetFlexAlignmentSelf() const
+{
+ return static_cast<Dali::Toolkit::Flex::Alignment>(YGNodeStyleGetAlignSelf( mImpl->mYogaNode ));
+}
+
+void Node::SetFlexPositionType( Dali::Toolkit::Flex::PositionType flexPositionType )
+{
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Set flex position type [%d] on mYogaNode[%p]\n", flexPositionType, mImpl->mYogaNode )
+
+ YGNodeStyleSetPositionType( mImpl->mYogaNode, static_cast<YGPositionType>(flexPositionType) );
+}
+
+Dali::Toolkit::Flex::PositionType Node::GetFlexPositionType() const
+{
+ return static_cast<Dali::Toolkit::Flex::PositionType>(YGNodeStyleGetPositionType( mImpl->mYogaNode ));
+}
+
+void Node::SetFlexAspectRatio( float flexAspectRatio )
+{
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Set flex aspect ratio [%d] on mYogaNode[%p]\n", flexAspectRatio, mImpl->mYogaNode )
+
+ YGNodeStyleSetAspectRatio( mImpl->mYogaNode, static_cast<float>(flexAspectRatio) );
+}
+
+float Node::GetFlexAspectRatio() const
+{
+ return static_cast<float>(YGNodeStyleGetAspectRatio( mImpl->mYogaNode ));
+}
+
+void Node::SetFlexBasis( float flexBasis )
+{
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Set flex basis [%d] on mYogaNode[%p]\n", flexBasis, mImpl->mYogaNode )
+
+ YGNodeStyleSetFlexBasis( mImpl->mYogaNode, static_cast<float>(flexBasis) );
+}
+
+float Node::GetFlexBasis() const
+{
+ return static_cast<float>(YGNodeStyleGetFlexBasis( mImpl->mYogaNode ).value);
+}
+
+void Node::SetFlexShrink( float flexShrink )
+{
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Set flex shrink [%d] on mYogaNode[%p]\n", flexShrink, mImpl->mYogaNode )
+
+ YGNodeStyleSetFlexShrink( mImpl->mYogaNode, static_cast<float>(flexShrink) );
+}
+
+float Node::GetFlexShrink() const
+{
+ return static_cast<float>(YGNodeStyleGetFlexShrink( mImpl->mYogaNode ));
+}
+
+void Node::SetFlexGrow( float flexGrow )
+{
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Set flex grow [%d] on mYogaNode[%p]\n", flexGrow, mImpl->mYogaNode )
+
+ YGNodeStyleSetFlexGrow( mImpl->mYogaNode, static_cast<float>(flexGrow) );
+}
+
+float Node::GetFlexGrow() const
+{
+ return static_cast<float>(YGNodeStyleGetFlexGrow( mImpl->mYogaNode ));
+}
+
float Node::GetFlexWidth() const
{
float flexWidth = YGNodeLayoutGetWidth( mImpl->mYogaNode );