void Init2_1() { YogaConfig config = new YogaConfig(); _rootNode = new YogaNode(config) { FlexDirection = YogaFlexDirection.Column, Width = _rootPanel.Width, Height = _rootPanel.Height, Padding = 20, AlignItems = YogaAlign.Stretch }; YogaNode root_child0 = _rootNode.Append(new YogaNode(config) { FlexDirection = YogaFlexDirection.Row, Width = _rootNode.Width, Height = 100, AlignItems = YogaAlign.Center, AlignSelf = YogaAlign.Center, Flex = 1, FlexShrink = 1, StyleDirection = YogaDirection.RightToLeft, Note = "yellow", }); YogaNode c1r0_child0 = root_child0.Append(new YogaNode(config) { Width = 100, Height = 100, FlexShrink = 1, Note = "blue", }); YogaNode c1r0_child1 = root_child0.Append(new YogaNode(config) { Width = 100, Height = 100, MarginHorizontal = 20, FlexGrow = 1, FlexShrink = 1, Note = "blue", }); YogaNode c1r0_child2 = root_child0.Append(new YogaNode(config) { Width = 100, Height = 100, FlexShrink = 1, Note = "blue", }); YogaNode root_child1 = _rootNode.Append(new YogaNode(config) { Width = 100, Height = 100, MarginHorizontal = 20, FlexGrow = 1, FlexShrink = 1, Note = "red", }); //YogaNode root_child2 = new YogaNode(config); //root_child2.Width = 100; //root_child2.Height = 100; //root_child2.FlexShrink = 1; //root.Insert(2, root_child2); _rootNode.StyleDirection = YogaDirection.LeftToRight; _rootNode.CalculateLayout(); foreach (YogaNode child in _rootNode) { _rootPanel.Add(CreateBoxFromYogaNode(child, (y_node, b_node) => { switch (y_node.Note) { case "yellow": b_node.BackColor = Color.Yellow; break; case "blue": b_node.BackColor = Color.Blue; break; case "red": b_node.BackColor = Color.Red; break; } })); } _rootPanel.UpdateLayout(); }
public void percentage_multiple_nested_with_padding_margin_and_percentage_values() { var config = new YogaConfig(); var root = new YogaNode(config); root.Width = 200f; root.Height = 200f; var root_child0 = new YogaNode(config); root_child0.FlexGrow = 1; root_child0.FlexBasis = 10.Percent(); root_child0.Margin = new Edges(5, 5, 5, 5); root_child0.Padding = new Edges(3, 3, 3, 3); root_child0.MinWidth = 60f.Percent(); root.Children.Add(root_child0); var root_child0_child0 = new YogaNode(config); root_child0_child0.Margin = new Edges(5, 5, 5, 5); root_child0_child0.Padding.Left = 3.Percent(); root_child0_child0.Padding.Top = 3.Percent(); root_child0_child0.Padding.Right = 3.Percent(); root_child0_child0.Padding.Bottom = 3.Percent(); root_child0_child0.Width = 50.Percent(); root_child0.Children.Add(root_child0_child0); var root_child0_child0_child0 = new YogaNode(config); root_child0_child0_child0.Margin.Left = 5.Percent(); root_child0_child0_child0.Margin.Top = 5.Percent(); root_child0_child0_child0.Margin.Right = 5.Percent(); root_child0_child0_child0.Margin.Bottom = 5.Percent(); root_child0_child0_child0.Padding = new Edges(3, 3, 3, 3); root_child0_child0_child0.Width = 45.Percent(); root_child0_child0.Children.Add(root_child0_child0_child0); var root_child1 = new YogaNode(config); root_child1.FlexGrow = 4; root_child1.FlexBasis = 15.Percent(); root_child1.MinWidth = 20.Percent(); root.Children.Insert(1, root_child1); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); Assert.AreEqual(0f, root.Layout.Position.Left); Assert.AreEqual(0f, root.Layout.Position.Top); Assert.AreEqual(200f, root.Layout.Width); Assert.AreEqual(200f, root.Layout.Height); Assert.AreEqual(5f, root_child0.Layout.Position.Left); Assert.AreEqual(5f, root_child0.Layout.Position.Top); Assert.AreEqual(190f, root_child0.Layout.Width); Assert.AreEqual(48f, root_child0.Layout.Height); Assert.AreEqual(8f, root_child0_child0.Layout.Position.Left); Assert.AreEqual(8f, root_child0_child0.Layout.Position.Top); Assert.AreEqual(92f, root_child0_child0.Layout.Width); Assert.AreEqual(25f, root_child0_child0.Layout.Height); Assert.AreEqual(10f, root_child0_child0_child0.Layout.Position.Left); Assert.AreEqual(10f, root_child0_child0_child0.Layout.Position.Top); Assert.AreEqual(36f, root_child0_child0_child0.Layout.Width); Assert.AreEqual(6f, root_child0_child0_child0.Layout.Height); Assert.AreEqual(0f, root_child1.Layout.Position.Left); Assert.AreEqual(58f, root_child1.Layout.Position.Top); Assert.AreEqual(200f, root_child1.Layout.Width); Assert.AreEqual(142f, root_child1.Layout.Height); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.RTL); Assert.AreEqual(0f, root.Layout.Position.Left); Assert.AreEqual(0f, root.Layout.Position.Top); Assert.AreEqual(200f, root.Layout.Width); Assert.AreEqual(200f, root.Layout.Height); Assert.AreEqual(5f, root_child0.Layout.Position.Left); Assert.AreEqual(5f, root_child0.Layout.Position.Top); Assert.AreEqual(190f, root_child0.Layout.Width); Assert.AreEqual(48f, root_child0.Layout.Height); Assert.AreEqual(90f, root_child0_child0.Layout.Position.Left); Assert.AreEqual(8f, root_child0_child0.Layout.Position.Top); Assert.AreEqual(92f, root_child0_child0.Layout.Width); Assert.AreEqual(25f, root_child0_child0.Layout.Height); Assert.AreEqual(46f, root_child0_child0_child0.Layout.Position.Left); Assert.AreEqual(10f, root_child0_child0_child0.Layout.Position.Top); Assert.AreEqual(36f, root_child0_child0_child0.Layout.Width); Assert.AreEqual(6f, root_child0_child0_child0.Layout.Height); Assert.AreEqual(0f, root_child1.Layout.Position.Left); Assert.AreEqual(58f, root_child1.Layout.Position.Top); Assert.AreEqual(200f, root_child1.Layout.Width); Assert.AreEqual(142f, root_child1.Layout.Height); }
protected BaseVisualElementPanel() { yogaConfig = new YogaConfig(); yogaConfig.UseWebDefaults = YogaConfig.Default.UseWebDefaults; }
public void rounding_inner_node_controversy_combined() { YogaConfig config = YGConfigNew(); YogaNode root = YGNodeNewWithConfig(config); YGNodeStyleSetFlexDirection(root, FlexDirection.Row); YGNodeStyleSetWidth(root, 640); YGNodeStyleSetHeight(root, 320); YogaNode rootChild0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild0, 1); YGNodeStyleSetHeightPercent(rootChild0, 100); YGNodeInsertChild(root, rootChild0, 0); YogaNode rootChild1 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild1, 1); YGNodeStyleSetHeightPercent(rootChild1, 100); YGNodeInsertChild(root, rootChild1, 1); YogaNode rootChild1Child0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild1Child0, 1); YGNodeStyleSetWidthPercent(rootChild1Child0, 100); YGNodeInsertChild(rootChild1, rootChild1Child0, 0); YogaNode rootChild1Child1 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild1Child1, 1); YGNodeStyleSetWidthPercent(rootChild1Child1, 100); YGNodeInsertChild(rootChild1, rootChild1Child1, 1); YogaNode rootChild1Child1Child0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild1Child1Child0, 1); YGNodeStyleSetWidthPercent(rootChild1Child1Child0, 100); YGNodeInsertChild(rootChild1Child1, rootChild1Child1Child0, 0); YogaNode rootChild1Child2 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild1Child2, 1); YGNodeStyleSetWidthPercent(rootChild1Child2, 100); YGNodeInsertChild(rootChild1, rootChild1Child2, 2); YogaNode rootChild2 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild2, 1); YGNodeStyleSetHeightPercent(rootChild2, 100); YGNodeInsertChild(root, rootChild2, 2); YGNodeCalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.LTR); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(640, YGNodeLayoutGetWidth(root)); Assert.AreEqual(320, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild0)); Assert.AreEqual(213, YGNodeLayoutGetWidth(rootChild0)); Assert.AreEqual(320, YGNodeLayoutGetHeight(rootChild0)); Assert.AreEqual(213, YGNodeLayoutGetLeft(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild1)); Assert.AreEqual(214, YGNodeLayoutGetWidth(rootChild1)); Assert.AreEqual(320, YGNodeLayoutGetHeight(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild1Child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild1Child0)); Assert.AreEqual(214, YGNodeLayoutGetWidth(rootChild1Child0)); Assert.AreEqual(107, YGNodeLayoutGetHeight(rootChild1Child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild1Child1)); Assert.AreEqual(107, YGNodeLayoutGetTop(rootChild1Child1)); Assert.AreEqual(214, YGNodeLayoutGetWidth(rootChild1Child1)); Assert.AreEqual(106, YGNodeLayoutGetHeight(rootChild1Child1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild1Child1Child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild1Child1Child0)); Assert.AreEqual(214, YGNodeLayoutGetWidth(rootChild1Child1Child0)); Assert.AreEqual(106, YGNodeLayoutGetHeight(rootChild1Child1Child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild1Child2)); Assert.AreEqual(213, YGNodeLayoutGetTop(rootChild1Child2)); Assert.AreEqual(214, YGNodeLayoutGetWidth(rootChild1Child2)); Assert.AreEqual(107, YGNodeLayoutGetHeight(rootChild1Child2)); Assert.AreEqual(427, YGNodeLayoutGetLeft(rootChild2)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild2)); Assert.AreEqual(213, YGNodeLayoutGetWidth(rootChild2)); Assert.AreEqual(320, YGNodeLayoutGetHeight(rootChild2)); YGNodeCalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.RTL); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(640, YGNodeLayoutGetWidth(root)); Assert.AreEqual(320, YGNodeLayoutGetHeight(root)); Assert.AreEqual(427, YGNodeLayoutGetLeft(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild0)); Assert.AreEqual(213, YGNodeLayoutGetWidth(rootChild0)); Assert.AreEqual(320, YGNodeLayoutGetHeight(rootChild0)); Assert.AreEqual(213, YGNodeLayoutGetLeft(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild1)); Assert.AreEqual(214, YGNodeLayoutGetWidth(rootChild1)); Assert.AreEqual(320, YGNodeLayoutGetHeight(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild1Child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild1Child0)); Assert.AreEqual(214, YGNodeLayoutGetWidth(rootChild1Child0)); Assert.AreEqual(107, YGNodeLayoutGetHeight(rootChild1Child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild1Child1)); Assert.AreEqual(107, YGNodeLayoutGetTop(rootChild1Child1)); Assert.AreEqual(214, YGNodeLayoutGetWidth(rootChild1Child1)); Assert.AreEqual(106, YGNodeLayoutGetHeight(rootChild1Child1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild1Child1Child0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild1Child1Child0)); Assert.AreEqual(214, YGNodeLayoutGetWidth(rootChild1Child1Child0)); Assert.AreEqual(106, YGNodeLayoutGetHeight(rootChild1Child1Child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild1Child2)); Assert.AreEqual(213, YGNodeLayoutGetTop(rootChild1Child2)); Assert.AreEqual(214, YGNodeLayoutGetWidth(rootChild1Child2)); Assert.AreEqual(107, YGNodeLayoutGetHeight(rootChild1Child2)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild2)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild2)); Assert.AreEqual(213, YGNodeLayoutGetWidth(rootChild2)); Assert.AreEqual(320, YGNodeLayoutGetHeight(rootChild2)); }
public void percent_absolute_position() { var config = new YogaConfig(); var root = new YogaNode(config); root.Width = 60f; root.Height = 50f; var root_child0 = new YogaNode(config); root_child0.FlexDirection = FlexDirectionType.Row; root_child0.PositionType = PositionType.Absolute; root_child0.Position.Left = 50.Percent(); root_child0.Width = 100.Percent(); root_child0.Height = 50f; root.Children.Add(root_child0); var root_child0_child0 = new YogaNode(config); root_child0_child0.Width = 100.Percent(); root_child0.Children.Add(root_child0_child0); var root_child0_child1 = new YogaNode(config); root_child0_child1.Width = 100.Percent(); root_child0.Children.Insert(1, root_child0_child1); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); Assert.AreEqual(0f, root.Layout.Position.Left); Assert.AreEqual(0f, root.Layout.Position.Top); Assert.AreEqual(60f, root.Layout.Width); Assert.AreEqual(50f, root.Layout.Height); Assert.AreEqual(30f, root_child0.Layout.Position.Left); Assert.AreEqual(0f, root_child0.Layout.Position.Top); Assert.AreEqual(60f, root_child0.Layout.Width); Assert.AreEqual(50f, root_child0.Layout.Height); Assert.AreEqual(0f, root_child0_child0.Layout.Position.Left); Assert.AreEqual(0f, root_child0_child0.Layout.Position.Top); Assert.AreEqual(60f, root_child0_child0.Layout.Width); Assert.AreEqual(50f, root_child0_child0.Layout.Height); Assert.AreEqual(60f, root_child0_child1.Layout.Position.Left); Assert.AreEqual(0f, root_child0_child1.Layout.Position.Top); Assert.AreEqual(60f, root_child0_child1.Layout.Width); Assert.AreEqual(50f, root_child0_child1.Layout.Height); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.RTL); Assert.AreEqual(0f, root.Layout.Position.Left); Assert.AreEqual(0f, root.Layout.Position.Top); Assert.AreEqual(60f, root.Layout.Width); Assert.AreEqual(50f, root.Layout.Height); Assert.AreEqual(30f, root_child0.Layout.Position.Left); Assert.AreEqual(0f, root_child0.Layout.Position.Top); Assert.AreEqual(60f, root_child0.Layout.Width); Assert.AreEqual(50f, root_child0.Layout.Height); Assert.AreEqual(0f, root_child0_child0.Layout.Position.Left); Assert.AreEqual(0f, root_child0_child0.Layout.Position.Top); Assert.AreEqual(60f, root_child0_child0.Layout.Width); Assert.AreEqual(50f, root_child0_child0.Layout.Height); Assert.AreEqual(-60f, root_child0_child1.Layout.Position.Left); Assert.AreEqual(0f, root_child0_child1.Layout.Position.Top); Assert.AreEqual(60f, root_child0_child1.Layout.Width); Assert.AreEqual(50f, root_child0_child1.Layout.Height); }
public void rounding_flex_basis_overrides_main_size() { YogaConfig config = YGConfigNew(); YogaNode root = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 113); YogaNode rootChild0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild0, 1); YGNodeStyleSetFlexBasis(rootChild0, 50); YGNodeStyleSetHeight(rootChild0, 20); YGNodeInsertChild(root, rootChild0, 0); YogaNode rootChild1 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild1, 1); YGNodeStyleSetHeight(rootChild1, 10); YGNodeInsertChild(root, rootChild1, 1); YogaNode rootChild2 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild2, 1); YGNodeStyleSetHeight(rootChild2, 10); YGNodeInsertChild(root, rootChild2, 2); YGNodeCalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.LTR); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(100, YGNodeLayoutGetWidth(root)); Assert.AreEqual(113, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild0)); Assert.AreEqual(100, YGNodeLayoutGetWidth(rootChild0)); Assert.AreEqual(64, YGNodeLayoutGetHeight(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild1)); Assert.AreEqual(64, YGNodeLayoutGetTop(rootChild1)); Assert.AreEqual(100, YGNodeLayoutGetWidth(rootChild1)); Assert.AreEqual(25, YGNodeLayoutGetHeight(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild2)); Assert.AreEqual(89, YGNodeLayoutGetTop(rootChild2)); Assert.AreEqual(100, YGNodeLayoutGetWidth(rootChild2)); Assert.AreEqual(24, YGNodeLayoutGetHeight(rootChild2)); YGNodeCalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.RTL); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(100, YGNodeLayoutGetWidth(root)); Assert.AreEqual(113, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild0)); Assert.AreEqual(100, YGNodeLayoutGetWidth(rootChild0)); Assert.AreEqual(64, YGNodeLayoutGetHeight(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild1)); Assert.AreEqual(64, YGNodeLayoutGetTop(rootChild1)); Assert.AreEqual(100, YGNodeLayoutGetWidth(rootChild1)); Assert.AreEqual(25, YGNodeLayoutGetHeight(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild2)); Assert.AreEqual(89, YGNodeLayoutGetTop(rootChild2)); Assert.AreEqual(100, YGNodeLayoutGetWidth(rootChild2)); Assert.AreEqual(24, YGNodeLayoutGetHeight(rootChild2)); }
public void rounding_fractial_input_4() { YogaConfig config = YGConfigNew(); YogaNode root = YGNodeNewWithConfig(config); YGNodeStyleSetPosition(root, Edge.Top, 0.7f); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 113.4f); YogaNode rootChild0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild0, 1); YGNodeStyleSetFlexBasis(rootChild0, 50); YGNodeStyleSetHeight(rootChild0, 20); YGNodeInsertChild(root, rootChild0, 0); YogaNode rootChild1 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild1, 1); YGNodeStyleSetHeight(rootChild1, 10); YGNodeInsertChild(root, rootChild1, 1); YogaNode rootChild2 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild2, 1); YGNodeStyleSetHeight(rootChild2, 10); YGNodeInsertChild(root, rootChild2, 2); YGNodeCalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.LTR); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(1, YGNodeLayoutGetTop(root)); Assert.AreEqual(100, YGNodeLayoutGetWidth(root)); Assert.AreEqual(113, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild0)); Assert.AreEqual(100, YGNodeLayoutGetWidth(rootChild0)); Assert.AreEqual(64, YGNodeLayoutGetHeight(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild1)); Assert.AreEqual(64, YGNodeLayoutGetTop(rootChild1)); Assert.AreEqual(100, YGNodeLayoutGetWidth(rootChild1)); Assert.AreEqual(25, YGNodeLayoutGetHeight(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild2)); Assert.AreEqual(89, YGNodeLayoutGetTop(rootChild2)); Assert.AreEqual(100, YGNodeLayoutGetWidth(rootChild2)); Assert.AreEqual(24, YGNodeLayoutGetHeight(rootChild2)); YGNodeCalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.RTL); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(1, YGNodeLayoutGetTop(root)); Assert.AreEqual(100, YGNodeLayoutGetWidth(root)); Assert.AreEqual(113, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild0)); Assert.AreEqual(100, YGNodeLayoutGetWidth(rootChild0)); Assert.AreEqual(64, YGNodeLayoutGetHeight(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild1)); Assert.AreEqual(64, YGNodeLayoutGetTop(rootChild1)); Assert.AreEqual(100, YGNodeLayoutGetWidth(rootChild1)); Assert.AreEqual(25, YGNodeLayoutGetHeight(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild2)); Assert.AreEqual(89, YGNodeLayoutGetTop(rootChild2)); Assert.AreEqual(100, YGNodeLayoutGetWidth(rootChild2)); Assert.AreEqual(24, YGNodeLayoutGetHeight(rootChild2)); }
public void flex_basis_overrides_main_size() { var config = new YogaConfig(); var root = new YogaNode(config); root.Width = 100; root.Height = 100; var root_child0 = new YogaNode(config); root_child0.FlexGrow = 1; root_child0.FlexBasis = 50; root_child0.Height = 20; root.Children.Add(root_child0); var root_child1 = new YogaNode(config); root_child1.FlexGrow = 1; root_child1.Height = 10; root.Children.Insert(1, root_child1); var root_child2 = new YogaNode(config); root_child2.FlexGrow = 1; root_child2.Height = 10; root.Children.Insert(2, root_child2); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(100, root.Layout.Width); Assert.AreEqual(100, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(100, root_child0.Layout.Width); Assert.AreEqual(60, root_child0.Layout.Height); Assert.AreEqual(0, root_child1.Layout.Position.Left); Assert.AreEqual(60, root_child1.Layout.Position.Top); Assert.AreEqual(100, root_child1.Layout.Width); Assert.AreEqual(20, root_child1.Layout.Height); Assert.AreEqual(0, root_child2.Layout.Position.Left); Assert.AreEqual(80, root_child2.Layout.Position.Top); Assert.AreEqual(100, root_child2.Layout.Width); Assert.AreEqual(20, root_child2.Layout.Height); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.RTL); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(100, root.Layout.Width); Assert.AreEqual(100, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(100, root_child0.Layout.Width); Assert.AreEqual(60, root_child0.Layout.Height); Assert.AreEqual(0, root_child1.Layout.Position.Left); Assert.AreEqual(60, root_child1.Layout.Position.Top); Assert.AreEqual(100, root_child1.Layout.Width); Assert.AreEqual(20, root_child1.Layout.Height); Assert.AreEqual(0, root_child2.Layout.Position.Left); Assert.AreEqual(80, root_child2.Layout.Position.Top); Assert.AreEqual(100, root_child2.Layout.Width); Assert.AreEqual(20, root_child2.Layout.Height); }
public void flex_grow_less_than_factor_one() { var config = new YogaConfig(); var root = new YogaNode(config); root.Width = 200; root.Height = 500; var root_child0 = new YogaNode(config); root_child0.FlexGrow = 0.2f; root_child0.FlexBasis = 40; root.Children.Add(root_child0); var root_child1 = new YogaNode(config); root_child1.FlexGrow = 0.2f; root.Children.Insert(1, root_child1); var root_child2 = new YogaNode(config); root_child2.FlexGrow = 0.4f; root.Children.Insert(2, root_child2); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(200, root.Layout.Width); Assert.AreEqual(500, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(200, root_child0.Layout.Width); Assert.AreEqual(132, root_child0.Layout.Height); Assert.AreEqual(0, root_child1.Layout.Position.Left); Assert.AreEqual(132, root_child1.Layout.Position.Top); Assert.AreEqual(200, root_child1.Layout.Width); Assert.AreEqual(92, root_child1.Layout.Height); Assert.AreEqual(0, root_child2.Layout.Position.Left); Assert.AreEqual(224, root_child2.Layout.Position.Top); Assert.AreEqual(200, root_child2.Layout.Width); Assert.AreEqual(184, root_child2.Layout.Height); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.RTL); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(200, root.Layout.Width); Assert.AreEqual(500, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(200, root_child0.Layout.Width); Assert.AreEqual(132, root_child0.Layout.Height); Assert.AreEqual(0, root_child1.Layout.Position.Left); Assert.AreEqual(132, root_child1.Layout.Position.Top); Assert.AreEqual(200, root_child1.Layout.Width); Assert.AreEqual(92, root_child1.Layout.Height); Assert.AreEqual(0, root_child2.Layout.Position.Left); Assert.AreEqual(224, root_child2.Layout.Position.Top); Assert.AreEqual(200, root_child2.Layout.Width); Assert.AreEqual(184, root_child2.Layout.Height); }
public void Setup() { _config = new YogaConfig(); _root = Node(_config, width: 200, height: 100); }
public void assert_layout_trees_are_same() { var config = new YogaConfig(); var root1 = new YogaNode(config); root1.Width = 500; root1.Height = 500; var root1_child0 = new YogaNode(config); root1_child0.AlignItems = AlignType.FlexStart; root1.Children.Add(root1_child0); var root1_child0_child0 = new YogaNode(config); root1_child0_child0.FlexGrow = 1; root1_child0_child0.FlexShrink = 1; root1_child0.Children.Add(root1_child0_child0); var root1_child0_child0_child0 = new YogaNode(config); root1_child0_child0_child0.FlexGrow = 1; root1_child0_child0_child0.FlexShrink = 1; root1_child0_child0.Children.Add(root1_child0_child0_child0); root1.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); var root2 = new YogaNode(config); root2.Width = 500; root2.Height = 500; var root2_child0 = new YogaNode(config); root2_child0.AlignItems = AlignType.FlexStart; root2.Children.Add(root2_child0); var root2_child0_child0 = new YogaNode(config); root2_child0_child0.FlexGrow = 1; root2_child0_child0.FlexShrink = 1; root2_child0.Children.Add(root2_child0_child0); var root2_child0_child0_child0 = new YogaNode(config); root2_child0_child0_child0.FlexGrow = 1; root2_child0_child0_child0.FlexShrink = 1; root2_child0_child0.Children.Add(root2_child0_child0_child0); root2.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); Assert.IsTrue(root1.IsLayoutTreeEqualToNode(root2)); //Assert.IsTrue(root1.isLayoutTreeEqualToNode(*root2)); root2.AlignItems = AlignType.FlexEnd; root2.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); Assert.IsFalse(root1.IsLayoutTreeEqualToNode(root2)); //Assert.IsFalse(root1.isLayoutTreeEqualToNode(*root2)); }
public void flex_direction_column() { var config = new YogaConfig(); var root = new YogaNode(config); root.Width = 100; root.Height = 100; var root_child0 = new YogaNode(config); root_child0.Height = 10; root.Children.Add(root_child0); var root_child1 = new YogaNode(config); root_child1.Height = 10; root.Children.Insert(1, root_child1); var root_child2 = new YogaNode(config); root_child2.Height = 10; root.Children.Insert(2, root_child2); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(100, root.Layout.Width); Assert.AreEqual(100, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(100, root_child0.Layout.Width); Assert.AreEqual(10, root_child0.Layout.Height); Assert.AreEqual(0, root_child1.Layout.Position.Left); Assert.AreEqual(10, root_child1.Layout.Position.Top); Assert.AreEqual(100, root_child1.Layout.Width); Assert.AreEqual(10, root_child1.Layout.Height); Assert.AreEqual(0, root_child2.Layout.Position.Left); Assert.AreEqual(20, root_child2.Layout.Position.Top); Assert.AreEqual(100, root_child2.Layout.Width); Assert.AreEqual(10, root_child2.Layout.Height); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.RTL); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(100, root.Layout.Width); Assert.AreEqual(100, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(100, root_child0.Layout.Width); Assert.AreEqual(10, root_child0.Layout.Height); Assert.AreEqual(0, root_child1.Layout.Position.Left); Assert.AreEqual(10, root_child1.Layout.Position.Top); Assert.AreEqual(100, root_child1.Layout.Width); Assert.AreEqual(10, root_child1.Layout.Height); Assert.AreEqual(0, root_child2.Layout.Position.Left); Assert.AreEqual(20, root_child2.Layout.Position.Top); Assert.AreEqual(100, root_child2.Layout.Width); Assert.AreEqual(10, root_child2.Layout.Height); }
/// <summary> /// create boxes first and assign yoga spec then arrange the boxes /// </summary> void Init2_3() { //if the yoga-node is expensive=> use yoga-spec and reusable yoga-node ////1. markup //string myYogaMarkup = $@" //<column style='width:{_rootPanel.Width}; height:{_rootPanel.Height }; padding:20; align-items:stretch'> // <row style='width:{_rootPanel.Width}; height:100; align-items:center; align-self:center; flex:1; flex-shrink:1; style-direction:right_to_left;' note='yellow'> // <box style='width:100; height: 100; flex-shrink:1;' note='blue'></box> // <box style='width:100; height: 100; margin-horizontal:20; flex-glow:1; flex-shrink:1;' note='blue'></box> // <box style='width:100; height: 100; flex-shrink:1;' note='blue'></box> // </row> // <box style='width:100; height:100; margin-horizontal:20; flex-glow:1; flex-shrink:1' note='red'> // </box> //</column> //"; Box columnBox = new Box(100, 100) { LayoutInstance = (new YogaSpec() { FlexDirection = YogaFlexDirection.Column, Width = _rootPanel.Width, Height = _rootPanel.Height, Padding = 20, AlignItems = YogaAlign.Stretch }).ToLayoutInstance() }; Box row = new Box(100, 100) { BackColor = Color.Yellow, LayoutInstance = (new YogaSpec() { FlexDirection = YogaFlexDirection.Row, Width = _rootPanel.Width, Height = 100, AlignItems = YogaAlign.Center, AlignSelf = YogaAlign.Center, Flex = 1, FlexShrink = 1, StyleDirection = YogaDirection.RightToLeft }).ToLayoutInstance() }; columnBox.Add(row); { Box b1 = new Box(100, 100) { BackColor = Color.Blue, LayoutInstance = (new YogaSpec() { Width = 100, Height = 100, FlexShrink = 1 }).ToLayoutInstance() }; Box b2 = new Box(100, 100) { BackColor = Color.Blue, LayoutInstance = (new YogaSpec() { Width = 100, Height = 100, MarginHorizontal = 20, FlexGlow = 1, FlexShrink = 1, }).ToLayoutInstance() }; Box b3 = new Box(100, 100) { BackColor = Color.Blue, LayoutInstance = (new YogaSpec() { Width = 100, Height = 100, FlexShrink = 1 }).ToLayoutInstance() }; row.Add(b1); row.Add(b2); row.Add(b3); } Box b4 = new Box(100, 100) { BackColor = Color.Red, LayoutInstance = (new YogaSpec() { Width = 100, Height = 100, MarginHorizontal = 20, FlexGlow = 1, FlexShrink = 1 }).ToLayoutInstance() }; columnBox.Add(b4); _rootPanel.Add(columnBox); //------------------------ //now create yoga node from YogaSpec //------------------------ ////2. parse to yoga tree YogaConfig conf = new YogaConfig(); _rootNode = CreateYogaNode(columnBox, conf, false); _rootNode.StyleDirection = YogaDirection.LeftToRight; //------------ _rootNode.CalculateLayout(); _rootPanel.UpdateLayout(); }
static YogaNode CreateYogaNode(XmlElement elem, YogaConfig conf) { YogaNode node = new YogaNode(conf); node.Note = elem.GetAttribute("note"); //parse style Dictionary <string, string> style = ParseStyle(elem.GetAttribute("style")); switch (elem.Name) { default: throw new NotSupportedException(); case "box": break; case "row": node.FlexDirection = YogaFlexDirection.Row; break; case "column": node.FlexDirection = YogaFlexDirection.Column; break; } foreach (var kv in style) { switch (kv.Key) { default: throw new NotSupportedException(); case "width": node.Width = ParseYogaValue(kv.Value); break; case "height": node.Height = ParseYogaValue(kv.Value); break; case "padding": node.Padding = ParseYogaValue(kv.Value); break; case "align-items": node.AlignItems = GetYogaAlign(kv.Value); break; case "align-self": node.AlignSelf = GetYogaAlign(kv.Value); break; case "align-content": node.AlignContent = GetYogaAlign(kv.Value); break; case "margin-horizontal": node.MarginHorizontal = ParseYogaValue(kv.Value); break; case "flex": node.Flex = float.Parse(kv.Value); break; case "flex-shrink": node.FlexShrink = float.Parse(kv.Value); break; case "flex-glow": node.FlexGrow = float.Parse(kv.Value); break; case "max-width": node.MaxWidth = ParseYogaValue(kv.Value); break; case "max-height": node.MaxHeight = ParseYogaValue(kv.Value); break; case "min-width": node.MinWidth = ParseYogaValue(kv.Value); break; case "min-height": node.MinHeight = ParseYogaValue(kv.Value); break; case "aspect-ratio": node.MinHeight = float.Parse(kv.Value); break; case "overflow": node.Overflow = GetOverflow(kv.Value); break; case "flex-basis": node.FlexBasis = ParseYogaValue(kv.Value); break; case "wrap": node.Wrap = GetYogaWrap(kv.Value); break; case "position-type": node.PositionType = GetYogaPosition(kv.Value); break; case "justify-content": node.JustifyContent = GetJustify(kv.Value); break; case "flex-direction": node.FlexDirection = GetFlexDirection(kv.Value); break; case "style-direction": node.StyleDirection = GetYogaDirection(kv.Value); break; } } foreach (XmlNode ch in elem) { if (ch is XmlElement childElem) { node.Append(CreateYogaNode(childElem, conf)); } } return(node); }
public void rounding_flex_basis_flex_grow_row_width_of_100() { YogaConfig config = YGConfigNew(); YogaNode root = YGNodeNewWithConfig(config); YGNodeStyleSetFlexDirection(root, FlexDirection.Row); YGNodeStyleSetWidth(root, 100); YGNodeStyleSetHeight(root, 100); YogaNode rootChild0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild0, 1); YGNodeInsertChild(root, rootChild0, 0); YogaNode rootChild1 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild1, 1); YGNodeInsertChild(root, rootChild1, 1); YogaNode rootChild2 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild2, 1); YGNodeInsertChild(root, rootChild2, 2); YGNodeCalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.LTR); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(100, YGNodeLayoutGetWidth(root)); Assert.AreEqual(100, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild0)); Assert.AreEqual(33, YGNodeLayoutGetWidth(rootChild0)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild0)); Assert.AreEqual(33, YGNodeLayoutGetLeft(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild1)); Assert.AreEqual(34, YGNodeLayoutGetWidth(rootChild1)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild1)); Assert.AreEqual(67, YGNodeLayoutGetLeft(rootChild2)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild2)); Assert.AreEqual(33, YGNodeLayoutGetWidth(rootChild2)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild2)); YGNodeCalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.RTL); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(100, YGNodeLayoutGetWidth(root)); Assert.AreEqual(100, YGNodeLayoutGetHeight(root)); Assert.AreEqual(67, YGNodeLayoutGetLeft(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild0)); Assert.AreEqual(33, YGNodeLayoutGetWidth(rootChild0)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild0)); Assert.AreEqual(33, YGNodeLayoutGetLeft(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild1)); Assert.AreEqual(34, YGNodeLayoutGetWidth(rootChild1)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild2)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild2)); Assert.AreEqual(33, YGNodeLayoutGetWidth(rootChild2)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild2)); }
public void flex_shrink_to_zero() { var config = new YogaConfig(); var root = new YogaNode(config); root.Height = 75; var root_child0 = new YogaNode(config); root_child0.Width = 50; root_child0.Height = 50; root.Children.Add(root_child0); var root_child1 = new YogaNode(config); root_child1.FlexShrink = 1; root_child1.Width = 50; root_child1.Height = 50; root.Children.Insert(1, root_child1); var root_child2 = new YogaNode(config); root_child2.Width = 50; root_child2.Height = 50; root.Children.Insert(2, root_child2); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(50, root.Layout.Width); Assert.AreEqual(75, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(50, root_child0.Layout.Width); Assert.AreEqual(50, root_child0.Layout.Height); Assert.AreEqual(0, root_child1.Layout.Position.Left); Assert.AreEqual(50, root_child1.Layout.Position.Top); Assert.AreEqual(50, root_child1.Layout.Width); Assert.AreEqual(0, root_child1.Layout.Height); Assert.AreEqual(0, root_child2.Layout.Position.Left); Assert.AreEqual(50, root_child2.Layout.Position.Top); Assert.AreEqual(50, root_child2.Layout.Width); Assert.AreEqual(50, root_child2.Layout.Height); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.RTL); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(50, root.Layout.Width); Assert.AreEqual(75, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(50, root_child0.Layout.Width); Assert.AreEqual(50, root_child0.Layout.Height); Assert.AreEqual(0, root_child1.Layout.Position.Left); Assert.AreEqual(50, root_child1.Layout.Position.Top); Assert.AreEqual(50, root_child1.Layout.Width); Assert.AreEqual(0, root_child1.Layout.Height); Assert.AreEqual(0, root_child2.Layout.Position.Left); Assert.AreEqual(50, root_child2.Layout.Position.Top); Assert.AreEqual(50, root_child2.Layout.Width); Assert.AreEqual(50, root_child2.Layout.Height); }
public void rounding_flex_basis_flex_shrink_row() { YogaConfig config = YGConfigNew(); YogaNode root = YGNodeNewWithConfig(config); YGNodeStyleSetFlexDirection(root, FlexDirection.Row); YGNodeStyleSetWidth(root, 101); YGNodeStyleSetHeight(root, 100); YogaNode rootChild0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexShrink(rootChild0, 1); YGNodeStyleSetFlexBasis(rootChild0, 100); YGNodeInsertChild(root, rootChild0, 0); YogaNode rootChild1 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexBasis(rootChild1, 25); YGNodeInsertChild(root, rootChild1, 1); YogaNode rootChild2 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexBasis(rootChild2, 25); YGNodeInsertChild(root, rootChild2, 2); YGNodeCalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.LTR); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(101, YGNodeLayoutGetWidth(root)); Assert.AreEqual(100, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild0)); Assert.AreEqual(51, YGNodeLayoutGetWidth(rootChild0)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild0)); Assert.AreEqual(51, YGNodeLayoutGetLeft(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild1)); Assert.AreEqual(25, YGNodeLayoutGetWidth(rootChild1)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild1)); Assert.AreEqual(76, YGNodeLayoutGetLeft(rootChild2)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild2)); Assert.AreEqual(25, YGNodeLayoutGetWidth(rootChild2)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild2)); YGNodeCalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.RTL); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(101, YGNodeLayoutGetWidth(root)); Assert.AreEqual(100, YGNodeLayoutGetHeight(root)); Assert.AreEqual(50, YGNodeLayoutGetLeft(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild0)); Assert.AreEqual(51, YGNodeLayoutGetWidth(rootChild0)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild0)); Assert.AreEqual(25, YGNodeLayoutGetLeft(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild1)); Assert.AreEqual(25, YGNodeLayoutGetWidth(rootChild1)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild2)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild2)); Assert.AreEqual(25, YGNodeLayoutGetWidth(rootChild2)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild2)); }
public void rounding_flex_basis_flex_grow_row_width_of_100() { var config = new YogaConfig(); var root = new YogaNode(config); root.FlexDirection = FlexDirectionType.Row; root.Width = 100; root.Height = 100; var root_child0 = new YogaNode(config); root_child0.FlexGrow = 1; root.Children.Add(root_child0); var root_child1 = new YogaNode(config); root_child1.FlexGrow = 1; root.Children.Insert(1, root_child1); var root_child2 = new YogaNode(config); root_child2.FlexGrow = 1; root.Children.Insert(2, root_child2); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(100, root.Layout.Width); Assert.AreEqual(100, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(33, root_child0.Layout.Width); Assert.AreEqual(100, root_child0.Layout.Height); Assert.AreEqual(33, root_child1.Layout.Position.Left); Assert.AreEqual(0, root_child1.Layout.Position.Top); Assert.AreEqual(34, root_child1.Layout.Width); Assert.AreEqual(100, root_child1.Layout.Height); Assert.AreEqual(67, root_child2.Layout.Position.Left); Assert.AreEqual(0, root_child2.Layout.Position.Top); Assert.AreEqual(33, root_child2.Layout.Width); Assert.AreEqual(100, root_child2.Layout.Height); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.RTL); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(100, root.Layout.Width); Assert.AreEqual(100, root.Layout.Height); Assert.AreEqual(67, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(33, root_child0.Layout.Width); Assert.AreEqual(100, root_child0.Layout.Height); Assert.AreEqual(33, root_child1.Layout.Position.Left); Assert.AreEqual(0, root_child1.Layout.Position.Top); Assert.AreEqual(34, root_child1.Layout.Width); Assert.AreEqual(100, root_child1.Layout.Height); Assert.AreEqual(0, root_child2.Layout.Position.Left); Assert.AreEqual(0, root_child2.Layout.Position.Top); Assert.AreEqual(33, root_child2.Layout.Width); Assert.AreEqual(100, root_child2.Layout.Height); }
public void rounding_total_fractial_nested() { YogaConfig config = YGConfigNew(); YogaNode root = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(root, 87.4f); YGNodeStyleSetHeight(root, 113.4f); YogaNode rootChild0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild0, 0.7f); YGNodeStyleSetFlexBasis(rootChild0, 50.3f); YGNodeStyleSetHeight(rootChild0, 20.3f); YGNodeInsertChild(root, rootChild0, 0); YogaNode rootChild0Child0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild0Child0, 1); YGNodeStyleSetFlexBasis(rootChild0Child0, 0.3f); YGNodeStyleSetPosition(rootChild0Child0, Edge.Bottom, 13.3f); YGNodeStyleSetHeight(rootChild0Child0, 9.9f); YGNodeInsertChild(rootChild0, rootChild0Child0, 0); YogaNode rootChild0Child1 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild0Child1, 4); YGNodeStyleSetFlexBasis(rootChild0Child1, 0.3f); YGNodeStyleSetPosition(rootChild0Child1, Edge.Top, 13.3f); YGNodeStyleSetHeight(rootChild0Child1, 1.1f); YGNodeInsertChild(rootChild0, rootChild0Child1, 1); YogaNode rootChild1 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild1, 1.6f); YGNodeStyleSetHeight(rootChild1, 10); YGNodeInsertChild(root, rootChild1, 1); YogaNode rootChild2 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild2, 1.1f); YGNodeStyleSetHeight(rootChild2, 10.7f); YGNodeInsertChild(root, rootChild2, 2); YGNodeCalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.LTR); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(87, YGNodeLayoutGetWidth(root)); Assert.AreEqual(113, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild0)); Assert.AreEqual(87, YGNodeLayoutGetWidth(rootChild0)); Assert.AreEqual(59, YGNodeLayoutGetHeight(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild0Child0)); Assert.AreEqual(-13, YGNodeLayoutGetTop(rootChild0Child0)); Assert.AreEqual(87, YGNodeLayoutGetWidth(rootChild0Child0)); Assert.AreEqual(12, YGNodeLayoutGetHeight(rootChild0Child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild0Child1)); Assert.AreEqual(25, YGNodeLayoutGetTop(rootChild0Child1)); Assert.AreEqual(87, YGNodeLayoutGetWidth(rootChild0Child1)); Assert.AreEqual(47, YGNodeLayoutGetHeight(rootChild0Child1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild1)); Assert.AreEqual(59, YGNodeLayoutGetTop(rootChild1)); Assert.AreEqual(87, YGNodeLayoutGetWidth(rootChild1)); Assert.AreEqual(30, YGNodeLayoutGetHeight(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild2)); Assert.AreEqual(89, YGNodeLayoutGetTop(rootChild2)); Assert.AreEqual(87, YGNodeLayoutGetWidth(rootChild2)); Assert.AreEqual(24, YGNodeLayoutGetHeight(rootChild2)); YGNodeCalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.RTL); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(87, YGNodeLayoutGetWidth(root)); Assert.AreEqual(113, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild0)); Assert.AreEqual(87, YGNodeLayoutGetWidth(rootChild0)); Assert.AreEqual(59, YGNodeLayoutGetHeight(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild0Child0)); Assert.AreEqual(-13, YGNodeLayoutGetTop(rootChild0Child0)); Assert.AreEqual(87, YGNodeLayoutGetWidth(rootChild0Child0)); Assert.AreEqual(12, YGNodeLayoutGetHeight(rootChild0Child0)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild0Child1)); Assert.AreEqual(25, YGNodeLayoutGetTop(rootChild0Child1)); Assert.AreEqual(87, YGNodeLayoutGetWidth(rootChild0Child1)); Assert.AreEqual(47, YGNodeLayoutGetHeight(rootChild0Child1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild1)); Assert.AreEqual(59, YGNodeLayoutGetTop(rootChild1)); Assert.AreEqual(87, YGNodeLayoutGetWidth(rootChild1)); Assert.AreEqual(30, YGNodeLayoutGetHeight(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild2)); Assert.AreEqual(89, YGNodeLayoutGetTop(rootChild2)); Assert.AreEqual(87, YGNodeLayoutGetWidth(rootChild2)); Assert.AreEqual(24, YGNodeLayoutGetHeight(rootChild2)); }
public void rounding_flex_basis_flex_shrink_row() { var config = new YogaConfig(); var root = new YogaNode(config); root.FlexDirection = FlexDirectionType.Row; root.Width = 101; root.Height = 100; var root_child0 = new YogaNode(config); root_child0.FlexShrink = 1; root_child0.FlexBasis = 100; root.Children.Add(root_child0); var root_child1 = new YogaNode(config); root_child1.FlexBasis = 25; root.Children.Insert(1, root_child1); var root_child2 = new YogaNode(config); root_child2.FlexBasis = 25; root.Children.Insert(2, root_child2); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(101, root.Layout.Width); Assert.AreEqual(100, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(51, root_child0.Layout.Width); Assert.AreEqual(100, root_child0.Layout.Height); Assert.AreEqual(51, root_child1.Layout.Position.Left); Assert.AreEqual(0, root_child1.Layout.Position.Top); Assert.AreEqual(25, root_child1.Layout.Width); Assert.AreEqual(100, root_child1.Layout.Height); Assert.AreEqual(76, root_child2.Layout.Position.Left); Assert.AreEqual(0, root_child2.Layout.Position.Top); Assert.AreEqual(25, root_child2.Layout.Width); Assert.AreEqual(100, root_child2.Layout.Height); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.RTL); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(101, root.Layout.Width); Assert.AreEqual(100, root.Layout.Height); Assert.AreEqual(50, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(51, root_child0.Layout.Width); Assert.AreEqual(100, root_child0.Layout.Height); Assert.AreEqual(25, root_child1.Layout.Position.Left); Assert.AreEqual(0, root_child1.Layout.Position.Top); Assert.AreEqual(25, root_child1.Layout.Width); Assert.AreEqual(100, root_child1.Layout.Height); Assert.AreEqual(0, root_child2.Layout.Position.Left); Assert.AreEqual(0, root_child2.Layout.Position.Top); Assert.AreEqual(25, root_child2.Layout.Width); Assert.AreEqual(100, root_child2.Layout.Height); }
public void rounding_flex_basis_flex_grow_row_prime_number_width() { YogaConfig config = YGConfigNew(); YogaNode root = YGNodeNewWithConfig(config); YGNodeStyleSetFlexDirection(root, FlexDirection.Row); YGNodeStyleSetWidth(root, 113); YGNodeStyleSetHeight(root, 100); YogaNode rootChild0 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild0, 1); YGNodeInsertChild(root, rootChild0, 0); YogaNode rootChild1 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild1, 1); YGNodeInsertChild(root, rootChild1, 1); YogaNode rootChild2 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild2, 1); YGNodeInsertChild(root, rootChild2, 2); YogaNode rootChild3 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild3, 1); YGNodeInsertChild(root, rootChild3, 3); YogaNode rootChild4 = YGNodeNewWithConfig(config); YGNodeStyleSetFlexGrow(rootChild4, 1); YGNodeInsertChild(root, rootChild4, 4); YGNodeCalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.LTR); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(113, YGNodeLayoutGetWidth(root)); Assert.AreEqual(100, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild0)); Assert.AreEqual(23, YGNodeLayoutGetWidth(rootChild0)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild0)); Assert.AreEqual(23, YGNodeLayoutGetLeft(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild1)); Assert.AreEqual(22, YGNodeLayoutGetWidth(rootChild1)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild1)); Assert.AreEqual(45, YGNodeLayoutGetLeft(rootChild2)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild2)); Assert.AreEqual(23, YGNodeLayoutGetWidth(rootChild2)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild2)); Assert.AreEqual(68, YGNodeLayoutGetLeft(rootChild3)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild3)); Assert.AreEqual(22, YGNodeLayoutGetWidth(rootChild3)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild3)); Assert.AreEqual(90, YGNodeLayoutGetLeft(rootChild4)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild4)); Assert.AreEqual(23, YGNodeLayoutGetWidth(rootChild4)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild4)); YGNodeCalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.RTL); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(113, YGNodeLayoutGetWidth(root)); Assert.AreEqual(100, YGNodeLayoutGetHeight(root)); Assert.AreEqual(90, YGNodeLayoutGetLeft(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild0)); Assert.AreEqual(23, YGNodeLayoutGetWidth(rootChild0)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild0)); Assert.AreEqual(68, YGNodeLayoutGetLeft(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild1)); Assert.AreEqual(22, YGNodeLayoutGetWidth(rootChild1)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild1)); Assert.AreEqual(45, YGNodeLayoutGetLeft(rootChild2)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild2)); Assert.AreEqual(23, YGNodeLayoutGetWidth(rootChild2)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild2)); Assert.AreEqual(23, YGNodeLayoutGetLeft(rootChild3)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild3)); Assert.AreEqual(22, YGNodeLayoutGetWidth(rootChild3)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild3)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild4)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild4)); Assert.AreEqual(23, YGNodeLayoutGetWidth(rootChild4)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild4)); }
public void rounding_fractial_input_2() { var config = new YogaConfig(); var root = new YogaNode(config); root.Width = 100; root.Height = 113.6f; var root_child0 = new YogaNode(config); root_child0.FlexGrow = 1; root_child0.FlexBasis = 50; root_child0.Height = 20; root.Children.Add(root_child0); var root_child1 = new YogaNode(config); root_child1.FlexGrow = 1; root_child1.Height = 10; root.Children.Insert(1, root_child1); var root_child2 = new YogaNode(config); root_child2.FlexGrow = 1; root_child2.Height = 10; root.Children.Insert(2, root_child2); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(100, root.Layout.Width); Assert.AreEqual(114, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(100, root_child0.Layout.Width); Assert.AreEqual(65, root_child0.Layout.Height); Assert.AreEqual(0, root_child1.Layout.Position.Left); Assert.AreEqual(65, root_child1.Layout.Position.Top); Assert.AreEqual(100, root_child1.Layout.Width); Assert.AreEqual(24, root_child1.Layout.Height); Assert.AreEqual(0, root_child2.Layout.Position.Left); Assert.AreEqual(89, root_child2.Layout.Position.Top); Assert.AreEqual(100, root_child2.Layout.Width); Assert.AreEqual(25, root_child2.Layout.Height); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.RTL); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(100, root.Layout.Width); Assert.AreEqual(114, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(100, root_child0.Layout.Width); Assert.AreEqual(65, root_child0.Layout.Height); Assert.AreEqual(0, root_child1.Layout.Position.Left); Assert.AreEqual(65, root_child1.Layout.Position.Top); Assert.AreEqual(100, root_child1.Layout.Width); Assert.AreEqual(24, root_child1.Layout.Height); Assert.AreEqual(0, root_child2.Layout.Position.Left); Assert.AreEqual(89, root_child2.Layout.Position.Top); Assert.AreEqual(100, root_child2.Layout.Width); Assert.AreEqual(25, root_child2.Layout.Height); }
public void percentage_container_in_wrapping_container() { var config = new YogaConfig(); var root = new YogaNode(config); root.JustifyContent = JustifyType.Center; root.AlignItems = AlignType.Center; root.Width = 200f; root.Height = 200f; var root_child0 = new YogaNode(config); root.Children.Add(root_child0); var root_child0_child0 = new YogaNode(config); root_child0_child0.FlexDirection = FlexDirectionType.Row; root_child0_child0.JustifyContent = JustifyType.Center; root_child0_child0.Width = 100.Percent(); root_child0.Children.Add(root_child0_child0); var root_child0_child0_child0 = new YogaNode(config); root_child0_child0_child0.Width = 50f; root_child0_child0_child0.Height = 50f; root_child0_child0.Children.Add(root_child0_child0_child0); var root_child0_child0_child1 = new YogaNode(config); root_child0_child0_child1.Width = 50f; root_child0_child0_child1.Height = 50f; root_child0_child0.Children.Insert(1, root_child0_child0_child1); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); Assert.AreEqual(0f, root.Layout.Position.Left); Assert.AreEqual(0f, root.Layout.Position.Top); Assert.AreEqual(200f, root.Layout.Width); Assert.AreEqual(200f, root.Layout.Height); Assert.AreEqual(50f, root_child0.Layout.Position.Left); Assert.AreEqual(75f, root_child0.Layout.Position.Top); Assert.AreEqual(100f, root_child0.Layout.Width); Assert.AreEqual(50f, root_child0.Layout.Height); Assert.AreEqual(0f, root_child0_child0.Layout.Position.Left); Assert.AreEqual(0f, root_child0_child0.Layout.Position.Top); Assert.AreEqual(100f, root_child0_child0.Layout.Width); Assert.AreEqual(50f, root_child0_child0.Layout.Height); Assert.AreEqual(0f, root_child0_child0_child0.Layout.Position.Left); Assert.AreEqual(0f, root_child0_child0_child0.Layout.Position.Top); Assert.AreEqual(50f, root_child0_child0_child0.Layout.Width); Assert.AreEqual(50f, root_child0_child0_child0.Layout.Height); Assert.AreEqual(50f, root_child0_child0_child1.Layout.Position.Left); Assert.AreEqual(0f, root_child0_child0_child1.Layout.Position.Top); Assert.AreEqual(50f, root_child0_child0_child1.Layout.Width); Assert.AreEqual(50f, root_child0_child0_child1.Layout.Height); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.RTL); Assert.AreEqual(0f, root.Layout.Position.Left); Assert.AreEqual(0f, root.Layout.Position.Top); Assert.AreEqual(200f, root.Layout.Width); Assert.AreEqual(200f, root.Layout.Height); Assert.AreEqual(50f, root_child0.Layout.Position.Left); Assert.AreEqual(75f, root_child0.Layout.Position.Top); Assert.AreEqual(100f, root_child0.Layout.Width); Assert.AreEqual(50f, root_child0.Layout.Height); Assert.AreEqual(0f, root_child0_child0.Layout.Position.Left); Assert.AreEqual(0f, root_child0_child0.Layout.Position.Top); Assert.AreEqual(100f, root_child0_child0.Layout.Width); Assert.AreEqual(50f, root_child0_child0.Layout.Height); Assert.AreEqual(50f, root_child0_child0_child0.Layout.Position.Left); Assert.AreEqual(0f, root_child0_child0_child0.Layout.Position.Top); Assert.AreEqual(50f, root_child0_child0_child0.Layout.Width); Assert.AreEqual(50f, root_child0_child0_child0.Layout.Height); Assert.AreEqual(0f, root_child0_child0_child1.Layout.Position.Left); Assert.AreEqual(0f, root_child0_child0_child1.Layout.Position.Top); Assert.AreEqual(50f, root_child0_child0_child1.Layout.Width); Assert.AreEqual(50f, root_child0_child0_child1.Layout.Height); }
public void rounding_flex_basis_flex_grow_row_prime_number_width() { var config = new YogaConfig(); var root = new YogaNode(config); root.FlexDirection = FlexDirectionType.Row; root.Width = 113; root.Height = 100; var root_child0 = new YogaNode(config); root_child0.FlexGrow = 1; root.Children.Add(root_child0); var root_child1 = new YogaNode(config); root_child1.FlexGrow = 1; root.Children.Insert(1, root_child1); var root_child2 = new YogaNode(config); root_child2.FlexGrow = 1; root.Children.Insert(2, root_child2); var root_child3 = new YogaNode(config); root_child3.FlexGrow = 1; root.Children.Insert(3, root_child3); var root_child4 = new YogaNode(config); root_child4.FlexGrow = 1; root.Children.Insert(4, root_child4); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(113, root.Layout.Width); Assert.AreEqual(100, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(23, root_child0.Layout.Width); Assert.AreEqual(100, root_child0.Layout.Height); Assert.AreEqual(23, root_child1.Layout.Position.Left); Assert.AreEqual(0, root_child1.Layout.Position.Top); Assert.AreEqual(22, root_child1.Layout.Width); Assert.AreEqual(100, root_child1.Layout.Height); Assert.AreEqual(45, root_child2.Layout.Position.Left); Assert.AreEqual(0, root_child2.Layout.Position.Top); Assert.AreEqual(23, root_child2.Layout.Width); Assert.AreEqual(100, root_child2.Layout.Height); Assert.AreEqual(68, root_child3.Layout.Position.Left); Assert.AreEqual(0, root_child3.Layout.Position.Top); Assert.AreEqual(22, root_child3.Layout.Width); Assert.AreEqual(100, root_child3.Layout.Height); Assert.AreEqual(90, root_child4.Layout.Position.Left); Assert.AreEqual(0, root_child4.Layout.Position.Top); Assert.AreEqual(23, root_child4.Layout.Width); Assert.AreEqual(100, root_child4.Layout.Height); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.RTL); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(113, root.Layout.Width); Assert.AreEqual(100, root.Layout.Height); Assert.AreEqual(90, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(23, root_child0.Layout.Width); Assert.AreEqual(100, root_child0.Layout.Height); Assert.AreEqual(68, root_child1.Layout.Position.Left); Assert.AreEqual(0, root_child1.Layout.Position.Top); Assert.AreEqual(22, root_child1.Layout.Width); Assert.AreEqual(100, root_child1.Layout.Height); Assert.AreEqual(45, root_child2.Layout.Position.Left); Assert.AreEqual(0, root_child2.Layout.Position.Top); Assert.AreEqual(23, root_child2.Layout.Width); Assert.AreEqual(100, root_child2.Layout.Height); Assert.AreEqual(23, root_child3.Layout.Position.Left); Assert.AreEqual(0, root_child3.Layout.Position.Top); Assert.AreEqual(22, root_child3.Layout.Width); Assert.AreEqual(100, root_child3.Layout.Height); Assert.AreEqual(0, root_child4.Layout.Position.Left); Assert.AreEqual(0, root_child4.Layout.Position.Top); Assert.AreEqual(23, root_child4.Layout.Width); Assert.AreEqual(100, root_child4.Layout.Height); }
public void percent_within_flex_grow() { var config = new YogaConfig(); var root = new YogaNode(config); root.FlexDirection = FlexDirectionType.Row; root.Width = 350f; root.Height = 100f; var root_child0 = new YogaNode(config); root_child0.Width = 100f; root.Children.Add(root_child0); var root_child1 = new YogaNode(config); root_child1.FlexGrow = 1; root.Children.Insert(1, root_child1); var root_child1_child0 = new YogaNode(config); root_child1_child0.Width = 100.Percent(); root_child1.Children.Add(root_child1_child0); var root_child2 = new YogaNode(config); root_child2.Width = 100f; root.Children.Insert(2, root_child2); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); Assert.AreEqual(0f, root.Layout.Position.Left); Assert.AreEqual(0f, root.Layout.Position.Top); Assert.AreEqual(350f, root.Layout.Width); Assert.AreEqual(100f, root.Layout.Height); Assert.AreEqual(0f, root_child0.Layout.Position.Left); Assert.AreEqual(0f, root_child0.Layout.Position.Top); Assert.AreEqual(100f, root_child0.Layout.Width); Assert.AreEqual(100f, root_child0.Layout.Height); Assert.AreEqual(100f, root_child1.Layout.Position.Left); Assert.AreEqual(0f, root_child1.Layout.Position.Top); Assert.AreEqual(150f, root_child1.Layout.Width); Assert.AreEqual(100f, root_child1.Layout.Height); Assert.AreEqual(0f, root_child1_child0.Layout.Position.Left); Assert.AreEqual(0f, root_child1_child0.Layout.Position.Top); Assert.AreEqual(150f, root_child1_child0.Layout.Width); Assert.AreEqual(0f, root_child1_child0.Layout.Height); Assert.AreEqual(250f, root_child2.Layout.Position.Left); Assert.AreEqual(0f, root_child2.Layout.Position.Top); Assert.AreEqual(100f, root_child2.Layout.Width); Assert.AreEqual(100f, root_child2.Layout.Height); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.RTL); Assert.AreEqual(0f, root.Layout.Position.Left); Assert.AreEqual(0f, root.Layout.Position.Top); Assert.AreEqual(350f, root.Layout.Width); Assert.AreEqual(100f, root.Layout.Height); Assert.AreEqual(250f, root_child0.Layout.Position.Left); Assert.AreEqual(0f, root_child0.Layout.Position.Top); Assert.AreEqual(100f, root_child0.Layout.Width); Assert.AreEqual(100f, root_child0.Layout.Height); Assert.AreEqual(100f, root_child1.Layout.Position.Left); Assert.AreEqual(0f, root_child1.Layout.Position.Top); Assert.AreEqual(150f, root_child1.Layout.Width); Assert.AreEqual(100f, root_child1.Layout.Height); Assert.AreEqual(0f, root_child1_child0.Layout.Position.Left); Assert.AreEqual(0f, root_child1_child0.Layout.Position.Top); Assert.AreEqual(150f, root_child1_child0.Layout.Width); Assert.AreEqual(0f, root_child1_child0.Layout.Height); Assert.AreEqual(0f, root_child2.Layout.Position.Left); Assert.AreEqual(0f, root_child2.Layout.Position.Top); Assert.AreEqual(100f, root_child2.Layout.Width); Assert.AreEqual(100f, root_child2.Layout.Height); }
public void rounding_inner_node_controversy_vertical() { var config = new YogaConfig(); var root = new YogaNode(config); root.Height = 320; var root_child0 = new YogaNode(config); root_child0.FlexGrow = 1; root_child0.Width = 10; root.Children.Add(root_child0); var root_child1 = new YogaNode(config); root_child1.FlexGrow = 1; root_child1.Width = 10; root.Children.Insert(1, root_child1); var root_child1_child0 = new YogaNode(config); root_child1_child0.FlexGrow = 1; root_child1_child0.Width = 10; root_child1.Children.Add(root_child1_child0); var root_child2 = new YogaNode(config); root_child2.FlexGrow = 1; root_child2.Width = 10; root.Children.Insert(2, root_child2); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(10, root.Layout.Width); Assert.AreEqual(320, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(10, root_child0.Layout.Width); Assert.AreEqual(107, root_child0.Layout.Height); Assert.AreEqual(0, root_child1.Layout.Position.Left); Assert.AreEqual(107, root_child1.Layout.Position.Top); Assert.AreEqual(10, root_child1.Layout.Width); Assert.AreEqual(106, root_child1.Layout.Height); Assert.AreEqual(0, root_child1_child0.Layout.Position.Left); Assert.AreEqual(0, root_child1_child0.Layout.Position.Top); Assert.AreEqual(10, root_child1_child0.Layout.Width); Assert.AreEqual(106, root_child1_child0.Layout.Height); Assert.AreEqual(0, root_child2.Layout.Position.Left); Assert.AreEqual(213, root_child2.Layout.Position.Top); Assert.AreEqual(10, root_child2.Layout.Width); Assert.AreEqual(107, root_child2.Layout.Height); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.RTL); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(10, root.Layout.Width); Assert.AreEqual(320, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(10, root_child0.Layout.Width); Assert.AreEqual(107, root_child0.Layout.Height); Assert.AreEqual(0, root_child1.Layout.Position.Left); Assert.AreEqual(107, root_child1.Layout.Position.Top); Assert.AreEqual(10, root_child1.Layout.Width); Assert.AreEqual(106, root_child1.Layout.Height); Assert.AreEqual(0, root_child1_child0.Layout.Position.Left); Assert.AreEqual(0, root_child1_child0.Layout.Position.Top); Assert.AreEqual(10, root_child1_child0.Layout.Width); Assert.AreEqual(106, root_child1_child0.Layout.Height); Assert.AreEqual(0, root_child2.Layout.Position.Left); Assert.AreEqual(213, root_child2.Layout.Position.Top); Assert.AreEqual(10, root_child2.Layout.Width); Assert.AreEqual(107, root_child2.Layout.Height); }
public void display_none_with_child() { YogaConfig config = new YogaConfig(); YogaNode rootChild0, rootChild1, rootChild2, rootChild1Child0; YogaNode root = Node(config, flexDirection: FlexDirection.Row, width: 100, height: 100) .Add(rootChild0 = Node(flexGrow: 1, flexShrink: 1, flexBasis: 0.Percent())) .Add(rootChild1 = Node(flexGrow: 1, flexShrink: 1, flexBasis: 0.Percent(), display: Display.None) .Add(rootChild1Child0 = Node(flexGrow: 1, flexShrink: 1, flexBasis: 0.Percent(), width: 20, minWidth: 0, minHeight: 0))) .Add(rootChild2 = Node(flexGrow: 1, flexShrink: 1, flexBasis: 0.Percent())); YogaArrange.CalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.LTR); Assert.AreEqual(0, root.Layout.Left); Assert.AreEqual(0, root.Layout.Top); Assert.AreEqual(100, root.Layout.Width); Assert.AreEqual(100, root.Layout.Height); Assert.AreEqual(0, rootChild0.Layout.Left); Assert.AreEqual(0, rootChild0.Layout.Top); Assert.AreEqual(50, rootChild0.Layout.Width); Assert.AreEqual(100, rootChild0.Layout.Height); Assert.AreEqual(0, rootChild1.Layout.Left); Assert.AreEqual(0, rootChild1.Layout.Top); Assert.AreEqual(0, rootChild1.Layout.Width); Assert.AreEqual(0, rootChild1.Layout.Height); Assert.AreEqual(0, rootChild1Child0.Layout.Left); Assert.AreEqual(0, rootChild1Child0.Layout.Top); Assert.AreEqual(0, rootChild1Child0.Layout.Width); Assert.AreEqual(0, rootChild1Child0.Layout.Height); Assert.AreEqual(50, rootChild2.Layout.Left); Assert.AreEqual(0, rootChild2.Layout.Top); Assert.AreEqual(50, rootChild2.Layout.Width); Assert.AreEqual(100, rootChild2.Layout.Height); YogaArrange.CalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.RTL); Assert.AreEqual(0, root.Layout.Left); Assert.AreEqual(0, root.Layout.Top); Assert.AreEqual(100, root.Layout.Width); Assert.AreEqual(100, root.Layout.Height); Assert.AreEqual(50, rootChild0.Layout.Left); Assert.AreEqual(0, rootChild0.Layout.Top); Assert.AreEqual(50, rootChild0.Layout.Width); Assert.AreEqual(100, rootChild0.Layout.Height); Assert.AreEqual(0, rootChild1.Layout.Left); Assert.AreEqual(0, rootChild1.Layout.Top); Assert.AreEqual(0, rootChild1.Layout.Width); Assert.AreEqual(0, rootChild1.Layout.Height); Assert.AreEqual(0, rootChild1Child0.Layout.Left); Assert.AreEqual(0, rootChild1Child0.Layout.Top); Assert.AreEqual(0, rootChild1Child0.Layout.Width); Assert.AreEqual(0, rootChild1Child0.Layout.Height); Assert.AreEqual(0, rootChild2.Layout.Left); Assert.AreEqual(0, rootChild2.Layout.Top); Assert.AreEqual(50, rootChild2.Layout.Width); Assert.AreEqual(100, rootChild2.Layout.Height); }
public void rounding_total_fractial() { var config = new YogaConfig(); var root = new YogaNode(config); root.Width = 87.4f; root.Height = 113.4f; var root_child0 = new YogaNode(config); root_child0.FlexGrow = 0.7f; root_child0.FlexBasis = 50.3f; root_child0.Height = 20.3f; root.Children.Add(root_child0); var root_child1 = new YogaNode(config); root_child1.FlexGrow = 1.6f; root_child1.Height = 10; root.Children.Insert(1, root_child1); var root_child2 = new YogaNode(config); root_child2.FlexGrow = 1.1f; root_child2.Height = 10.7f; root.Children.Insert(2, root_child2); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.LTR); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(87, root.Layout.Width); Assert.AreEqual(113, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(87, root_child0.Layout.Width); Assert.AreEqual(59, root_child0.Layout.Height); Assert.AreEqual(0, root_child1.Layout.Position.Left); Assert.AreEqual(59, root_child1.Layout.Position.Top); Assert.AreEqual(87, root_child1.Layout.Width); Assert.AreEqual(30, root_child1.Layout.Height); Assert.AreEqual(0, root_child2.Layout.Position.Left); Assert.AreEqual(89, root_child2.Layout.Position.Top); Assert.AreEqual(87, root_child2.Layout.Width); Assert.AreEqual(24, root_child2.Layout.Height); root.Calc.CalculateLayout(float.NaN, float.NaN, DirectionType.RTL); Assert.AreEqual(0, root.Layout.Position.Left); Assert.AreEqual(0, root.Layout.Position.Top); Assert.AreEqual(87, root.Layout.Width); Assert.AreEqual(113, root.Layout.Height); Assert.AreEqual(0, root_child0.Layout.Position.Left); Assert.AreEqual(0, root_child0.Layout.Position.Top); Assert.AreEqual(87, root_child0.Layout.Width); Assert.AreEqual(59, root_child0.Layout.Height); Assert.AreEqual(0, root_child1.Layout.Position.Left); Assert.AreEqual(59, root_child1.Layout.Position.Top); Assert.AreEqual(87, root_child1.Layout.Width); Assert.AreEqual(30, root_child1.Layout.Height); Assert.AreEqual(0, root_child2.Layout.Position.Left); Assert.AreEqual(89, root_child2.Layout.Position.Top); Assert.AreEqual(87, root_child2.Layout.Width); Assert.AreEqual(24, root_child2.Layout.Height); }
public void flex_direction_row_no_width() { YogaConfig config = YGConfigNew(); YogaNode root = YGNodeNewWithConfig(config); YGNodeStyleSetFlexDirection(root, FlexDirection.Row); YGNodeStyleSetHeight(root, 100); YogaNode rootChild0 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(rootChild0, 10); YGNodeInsertChild(root, rootChild0, 0); YogaNode rootChild1 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(rootChild1, 10); YGNodeInsertChild(root, rootChild1, 1); YogaNode rootChild2 = YGNodeNewWithConfig(config); YGNodeStyleSetWidth(rootChild2, 10); YGNodeInsertChild(root, rootChild2, 2); YGNodeCalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.LTR); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(30, YGNodeLayoutGetWidth(root)); Assert.AreEqual(100, YGNodeLayoutGetHeight(root)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild0)); Assert.AreEqual(10, YGNodeLayoutGetWidth(rootChild0)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild0)); Assert.AreEqual(10, YGNodeLayoutGetLeft(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild1)); Assert.AreEqual(10, YGNodeLayoutGetWidth(rootChild1)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild1)); Assert.AreEqual(20, YGNodeLayoutGetLeft(rootChild2)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild2)); Assert.AreEqual(10, YGNodeLayoutGetWidth(rootChild2)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild2)); YGNodeCalculateLayout(root, YogaValue.YGUndefined, YogaValue.YGUndefined, Direction.RTL); Assert.AreEqual(0, YGNodeLayoutGetLeft(root)); Assert.AreEqual(0, YGNodeLayoutGetTop(root)); Assert.AreEqual(30, YGNodeLayoutGetWidth(root)); Assert.AreEqual(100, YGNodeLayoutGetHeight(root)); Assert.AreEqual(20, YGNodeLayoutGetLeft(rootChild0)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild0)); Assert.AreEqual(10, YGNodeLayoutGetWidth(rootChild0)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild0)); Assert.AreEqual(10, YGNodeLayoutGetLeft(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild1)); Assert.AreEqual(10, YGNodeLayoutGetWidth(rootChild1)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild1)); Assert.AreEqual(0, YGNodeLayoutGetLeft(rootChild2)); Assert.AreEqual(0, YGNodeLayoutGetTop(rootChild2)); Assert.AreEqual(10, YGNodeLayoutGetWidth(rootChild2)); Assert.AreEqual(100, YGNodeLayoutGetHeight(rootChild2)); }
void Init2() { YogaConfig config = new YogaConfig(); _rootNode = new YogaNode(config) { FlexDirection = YogaFlexDirection.Column, Width = _rootPanel.Width, Height = _rootPanel.Height, Padding = 20, AlignItems = YogaAlign.Stretch }; var _root_child0 = new YogaNode(config) { FlexDirection = YogaFlexDirection.Row, Width = _rootNode.Width, Height = 100, AlignItems = YogaAlign.Center, AlignSelf = YogaAlign.Center, Flex = 1, FlexShrink = 1, StyleDirection = YogaDirection.RightToLeft }; _rootNode.Insert(0, _root_child0); YogaNode c1r0_child0 = new YogaNode(config) { Width = 100, Height = 100, FlexShrink = 1 }; _root_child0.Insert(0, c1r0_child0); YogaNode c1r0_child1 = new YogaNode(config) { Width = 100, Height = 100, MarginHorizontal = 20, FlexGrow = 1, FlexShrink = 1 }; _root_child0.Insert(1, c1r0_child1); YogaNode c1r0_child2 = new YogaNode(config) { Width = 100, Height = 100, FlexShrink = 1 }; _root_child0.Insert(2, c1r0_child2); YogaNode root_child1 = new YogaNode(config) { Width = 100, Height = 100, MarginHorizontal = 20, FlexGrow = 1, FlexShrink = 1 }; _rootNode.Insert(1, root_child1); //YogaNode root_child2 = new YogaNode(config); //root_child2.Width = 100; //root_child2.Height = 100; //root_child2.FlexShrink = 1; //root.Insert(2, root_child2); _rootNode.StyleDirection = YogaDirection.LeftToRight; _rootNode.CalculateLayout(); CustomWidgets.Box fb0 = new CustomWidgets.Box(100, 100) { BackColor = PixelFarm.Drawing.Color.Yellow, LayoutInstance = _root_child0.ToLayoutInstance() }; _rootPanel.Add(fb0); CustomWidgets.Box fb0_child0 = new CustomWidgets.Box(100, 100) { BackColor = PixelFarm.Drawing.Color.Blue, LayoutInstance = c1r0_child0.ToLayoutInstance() }; fb0.Add(fb0_child0); CustomWidgets.Box fb0_child1 = new CustomWidgets.Box(100, 100) { BackColor = PixelFarm.Drawing.Color.Blue, LayoutInstance = c1r0_child1.ToLayoutInstance() }; fb0.Add(fb0_child1); CustomWidgets.Box fb0_child2 = new CustomWidgets.Box(100, 100) { BackColor = PixelFarm.Drawing.Color.Blue, LayoutInstance = c1r0_child2.ToLayoutInstance() }; fb0.Add(fb0_child2); CustomWidgets.Box fb1 = new CustomWidgets.Box(100, 100) { BackColor = PixelFarm.Drawing.Color.Red, LayoutInstance = root_child1.ToLayoutInstance() }; _rootPanel.Add(fb1); _rootPanel.UpdateLayout(); }