Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 protected BaseVisualElementPanel()
 {
     yogaConfig = new YogaConfig();
     yogaConfig.UseWebDefaults = YogaConfig.Default.UseWebDefaults;
 }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        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));
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
 public void Setup()
 {
     _config = new YogaConfig();
     _root   = Node(_config, width: 200, height: 100);
 }
Ejemplo n.º 11
0
        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));
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        /// <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();
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        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));
        }
Ejemplo n.º 16
0
        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);
        }
Ejemplo n.º 17
0
        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));
        }
Ejemplo n.º 18
0
        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);
        }
Ejemplo n.º 19
0
        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));
        }
Ejemplo n.º 20
0
        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);
        }
Ejemplo n.º 21
0
        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));
        }
Ejemplo n.º 22
0
        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);
        }
Ejemplo n.º 23
0
        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);
        }
Ejemplo n.º 24
0
        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);
        }
Ejemplo n.º 25
0
        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);
        }
Ejemplo n.º 26
0
        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);
        }
Ejemplo n.º 27
0
        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);
        }
Ejemplo n.º 28
0
        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);
        }
Ejemplo n.º 29
0
        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));
        }
Ejemplo n.º 30
0
        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();
        }