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>"); }