Example #1
0
 /// <inheritdoc />
 public LayoutPassStartEventArgs(YogaNode node, object layoutContext) : base(node)
 {
     LayoutContext = layoutContext;
 }
Example #2
0
        public YogaNodePrint Output(YogaNode node, int level = 0)
        {
            _currentNode = node;
            Indent(level);
            AppendString("<div ");

            if (!string.IsNullOrWhiteSpace(node.Trace))
            {
                AppendString(node.Trace + "; ");
            }

            if (_options.HasFlag(PrintOptions.Layout))
            {
                AppendString("layout=\"");
                AppendString($"width: {node.Layout.Width:G};");
                AppendString($" height: {node.Layout.Height:G};");
                AppendString($" top: {node.Layout.Top:G};");
                AppendString($" left: {node.Layout.Left:G};");
                if (!node.Layout.Margin.IsZero)
                {
                    AppendString($" margin: {node.Layout.Margin};");
                }
                if (!node.Layout.Border.IsZero)
                {
                    AppendString($" border: {node.Layout.Border};");
                }
                if (!node.Layout.Padding.IsZero)
                {
                    AppendString($" padding: {node.Layout.Padding};");
                }
                AppendString("\" ");
            }

            if (_options.HasFlag(PrintOptions.Style))
            {
                AppendString("style=\"");
                if (node.Style.FlexDirection != DefaultYogaNode.Style.FlexDirection)
                {
                    AppendString($"flex-direction: {node.Style.FlexDirection.ToString().ToLower()}; ");
                }

                if (node.Style.JustifyContent != DefaultYogaNode.Style.JustifyContent)
                {
                    AppendString($"justify-content: {node.Style.JustifyContent.ToString().ToLower()}; ");
                }

                if (node.Style.AlignItems != DefaultYogaNode.Style.AlignItems)
                {
                    AppendString($"align-items: {node.Style.AlignItems.ToString().ToLower()}; ");
                }

                if (node.Style.AlignContent != DefaultYogaNode.Style.AlignContent)
                {
                    AppendString($"align-content: {node.Style.AlignContent.ToString().ToLower()}; ");
                }

                if (node.Style.AlignSelf != DefaultYogaNode.Style.AlignSelf)
                {
                    AppendString($"align-self: {node.Style.AlignSelf.ToString().ToLower()}; ");
                }

                AppendNumberIfNotZero("flex-grow", node.StyleReadonly.FlexGrow);
                AppendNumberIfNotZero("flex-shrink", node.StyleReadonly.FlexShrink);
                AppendNumberIfNotAuto("flex-basis", node.Style.FlexBasis);
                AppendFloatOptionalIfDefined("flex", node.StyleReadonly.Flex);

                if (node.Style.FlexWrap != DefaultYogaNode.Style.FlexWrap)
                {
                    AppendString($"flex-wrap: {node.Style.FlexWrap.ToString().ToLower()}; ");
                }

                if (node.Style.Overflow != DefaultYogaNode.Style.Overflow)
                {
                    AppendString($"overflow: {node.Style.Overflow.ToString().ToLower()}; ");
                }

                if (node.Style.Display != DefaultYogaNode.Style.Display)
                {
                    AppendString($"display: {node.Style.Display.ToString().ToLower()}; ");
                }

                AppendEdges("margin", node.Style.Margin);
                AppendEdges("padding", node.Style.Padding);
                AppendEdges("border", node.Style.Border);

                AppendNumberIfNotAuto("width", node.Style.Width);
                AppendNumberIfNotAuto("height", node.Style.Height);
                AppendNumberIfNotAuto("max-width", node.Style.MaxWidth);
                AppendNumberIfNotAuto("max-height", node.Style.MaxHeight);
                AppendNumberIfNotAuto("min-width", node.Style.MinWidth);
                AppendNumberIfNotAuto("min-height", node.Style.MinHeight);

                if (node.Style.PositionType != DefaultYogaNode.Style.PositionType)
                {
                    AppendString($"position: {node.Style.PositionType.ToString().ToLower()}; ");
                }

                AppendEdgeIfNotUndefined("left", node.Style.Position, Edge.Left);
                AppendEdgeIfNotUndefined("right", node.Style.Position, Edge.Right);
                AppendEdgeIfNotUndefined("top", node.Style.Position, Edge.Top);
                AppendEdgeIfNotUndefined("bottom", node.Style.Position, Edge.Bottom);
                AppendString("\" ");

                if (node.HasMeasureFunc)
                {
                    AppendString("has-custom-measure=\"true\"");
                }
            }

            AppendString(">");

            var childCount = node.Children.Count;

            if (_options.HasFlag(PrintOptions.Children) && childCount > 0)
            {
                for (int i = 0; i < childCount; i++)
                {
                    AppendString("\n");
                    Output(node.Children[i], level + 1);
                    _currentNode = node;
                }

                AppendString("\n");
                Indent(level);
            }

            AppendString("</div>");

            return(this);
        }
Example #3
0
 protected YGNodeEventArgs(YogaNode node)
 {
     Node = node;
 }
Example #4
0
 public NodeDeallocationEventArgs(YogaNode node, YogaConfig config) : base(node)
 {
     Config = config;
 }
Example #5
0
 /// <inheritdoc />
 public NodeBaselineEndEventArgs(YogaNode node) : base(node)
 {
 }
Example #6
0
 /// <inheritdoc />
 public NodeBaselineStartEventArgs(YogaNode node) : base(node)
 {
 }
Example #7
0
 /// <inheritdoc />
 public MeasureCallbackStartEventArgs(YogaNode node) : base(node)
 {
 }
Example #8
0
 /// <inheritdoc />
 public NodeLayoutEventArgs(YogaNode node, LayoutType layoutType, object layoutContext) : base(node)
 {
     LayoutType    = layoutType;
     LayoutContext = layoutContext;
 }
Example #9
0
 /// <inheritdoc />
 public LayoutPassEndEventArgs(YogaNode node, object layoutContext, LayoutData layoutData) : base(node)
 {
     LayoutContext = layoutContext;
     LayoutData    = layoutData;
 }