예제 #1
0
        void PrintNode(Node node, int level)
        {
            var printer = this;

            printer.printIndent(level);
            printer.printf("<div ");

            if (node.printFunc != null)
            {
                node.printFunc(node);
            }

            if (PrintOptionsLayout)
            {
                printer.printf($"layout=\"");
                printer.printf($"width: {node.LayoutGetWidth()}; ");
                printer.printf($"height: {node.LayoutGetHeight()}; ");
                printer.printf($"top: {node.LayoutGetTop()}; ");
                printer.printf($"left: {node.LayoutGetLeft()};");
                printer.printf("\" ");
            }

            if (PrintOptionsStyle)
            {
                printer.printf("style=\"");
                if (node.nodeStyle.FlexDirection != Constant.nodeDefaults.nodeStyle.FlexDirection)
                {
                    printer.printf($"flex-direction: {Flex.FlexDirectionToString(node.nodeStyle.FlexDirection)}; ");
                }
                if (node.nodeStyle.JustifyContent != Constant.nodeDefaults.nodeStyle.JustifyContent)
                {
                    printer.printf($"justify-content: {Flex.JustifyToString(node.nodeStyle.JustifyContent)}; ");
                }
                if (node.nodeStyle.AlignItems != Constant.nodeDefaults.nodeStyle.AlignItems)
                {
                    printer.printf($"align-items: {Flex.AlignToString(node.nodeStyle.AlignItems)}; ");
                }
                if (node.nodeStyle.AlignContent != Constant.nodeDefaults.nodeStyle.AlignContent)
                {
                    printer.printf($"align-content: {Flex.AlignToString(node.nodeStyle.AlignContent)}; ");
                }
                if (node.nodeStyle.AlignSelf != Constant.nodeDefaults.nodeStyle.AlignSelf)
                {
                    printer.printf($"align-self: {Flex.AlignToString(node.nodeStyle.AlignSelf)}; ");
                }

                printer.printFloatIfNotUndefined(node, "flex-grow", node.nodeStyle.FlexGrow);
                printer.printFloatIfNotUndefined(node, "flex-shrink", node.nodeStyle.FlexShrink);
                printer.printNumberIfNotAuto(node, "flex-basis", node.nodeStyle.FlexBasis);
                printer.printFloatIfNotUndefined(node, "flex", node.nodeStyle.Flex);

                if (node.nodeStyle.FlexWrap != Constant.nodeDefaults.nodeStyle.FlexWrap)
                {
                    printer.printf($"flexWrap: {Flex.WrapToString(node.nodeStyle.FlexWrap)}; ");
                }

                if (node.nodeStyle.Overflow != Constant.nodeDefaults.nodeStyle.Overflow)
                {
                    printer.printf($"overflow: {Flex.OverflowToString(node.nodeStyle.Overflow)}; ");
                }

                if (node.nodeStyle.Display != Constant.nodeDefaults.nodeStyle.Display)
                {
                    printer.printf($"display: {Flex.DisplayToString(node.nodeStyle.Display)}; ");
                }

                printer.printEdges(node, "margin", node.nodeStyle.Margin);
                printer.printEdges(node, "padding", node.nodeStyle.Padding);
                printer.printEdges(node, "border", node.nodeStyle.Border);

                printer.printNumberIfNotAuto(node, "width", node.nodeStyle.Dimensions[(int)Dimension.Width]);
                printer.printNumberIfNotAuto(node, "height", node.nodeStyle.Dimensions[(int)Dimension.Height]);
                printer.printNumberIfNotAuto(node, "max-width", node.nodeStyle.MaxDimensions[(int)Dimension.Width]);
                printer.printNumberIfNotAuto(node, "max-height", node.nodeStyle.MaxDimensions[(int)Dimension.Height]);
                printer.printNumberIfNotAuto(node, "min-width", node.nodeStyle.MinDimensions[(int)Dimension.Width]);
                printer.printNumberIfNotAuto(node, "min-height", node.nodeStyle.MinDimensions[(int)Dimension.Height]);

                if (node.nodeStyle.PositionType != Constant.nodeDefaults.nodeStyle.PositionType)
                {
                    printer.printf($"position: {Flex.PositionTypeToString(node.nodeStyle.PositionType)}; ");
                }

                printer.printEdgeIfNotUndefined(node, "left", node.nodeStyle.Position, Edge.Left);
                printer.printEdgeIfNotUndefined(node, "right", node.nodeStyle.Position, Edge.Right);
                printer.printEdgeIfNotUndefined(node, "top", node.nodeStyle.Position, Edge.Top);
                printer.printEdgeIfNotUndefined(node, "bottom", node.nodeStyle.Position, Edge.Bottom);
                printer.printf("\"");

                if (node.measureFunc != null)
                {
                    printer.printf(" has-custom-measure=\"true\"");
                }
            }
            printer.printf(">");

            var childCount = (node.Children.Count);

            if (PrintOptionsChildren && childCount > 0)
            {
                for (int i = 0; i < childCount; i++)
                {
                    printer.printf("\n");
                    printer.PrintNode(node.Children[(int)i], level + 1);
                }
                printer.printIndent(level);
                printer.printf("\n");
            }
            if (childCount != 0)
            {
                printer.printIndent(level);
            }
            printer.printf("</div>");
        }