Exemple #1
0
        internal void ProcessNodeStyle(Node node, string attrKey, string attrValue)
        {
            switch (attrKey)
            {
            case "position":
                if (Flex.StringToPositionType(attrValue, out PositionType position))
                {
                    node.StyleSetPositionType(position);
                }
                break;

            case "align-content":
                if (Flex.StringToAlign(attrValue, out Align alignContent))
                {
                    node.StyleSetAlignContent(alignContent);
                }
                break;

            case "align-items":
                if (Flex.StringToAlign(attrValue, out Align alignItem))
                {
                    node.StyleSetAlignItems(alignItem);
                }
                break;

            case "align-self":
                if (Flex.StringToAlign(attrValue, out Align alignSelf))
                {
                    node.StyleSetAlignSelf(alignSelf);
                }
                break;

            case "flex-direction":
                if (Flex.StringToFlexDirection(attrValue, out FlexDirection flexDirection))
                {
                    node.StyleSetFlexDirection(flexDirection);
                }
                break;

            case "flex-wrap":
                if (Flex.StringToWrap(attrValue, out Wrap flexWrap))
                {
                    node.StyleSetFlexWrap(flexWrap);
                }
                break;

            case "flex-basis":
                var flexBasisValue = ParseValueFromString(attrValue);
                if (flexBasisValue.unit == Unit.Auto)
                {
                    node.NodeStyleSetFlexBasisAuto();
                }
                else if (flexBasisValue.unit == Unit.Point)
                {
                    node.StyleSetFlexBasis(flexBasisValue.value);
                }
                else if (flexBasisValue.unit == Unit.Percent)
                {
                    node.StyleSetFlexBasisPercent(flexBasisValue.value);
                }
                break;

            case "flex-shrink":
                if (float.TryParse(attrValue, out float flexShrink))
                {
                    node.StyleSetFlexShrink(flexShrink);
                }
                break;

            case "flex-grow":
                if (float.TryParse(attrValue, out float flexGrow))
                {
                    node.StyleSetFlexGrow(flexGrow);
                }
                break;

            case "justify-content":
                if (Flex.StringToJustify(attrValue, out Justify justifyContent))
                {
                    node.StyleSetJustifyContent(justifyContent);
                }
                break;

            case "direction":
                if (Flex.StringToDirection(attrValue, out Direction direction))
                {
                    node.StyleSetDirection(direction);
                }
                break;

            case "width":
                node.Helper_SetDimensions(ParseValueFromString(attrValue), Dimension.Width);
                break;

            case "height":
                node.Helper_SetDimensions(ParseValueFromString(attrValue), Dimension.Height);
                break;

            case "min-width":
                node.Helper_SetMinDimensions(ParseValueFromString(attrValue), Dimension.Width);
                break;

            case "min-height":
                node.Helper_SetMinDimensions(ParseValueFromString(attrValue), Dimension.Height);
                break;

            case "max-width":
                node.Helper_SetMaxDimensions(ParseValueFromString(attrValue), Dimension.Width);
                break;

            case "max-height":
                node.Helper_SetMaxDimensions(ParseValueFromString(attrValue), Dimension.Height);
                break;

            default:
                // parse [margin|padding|border]-[Edgexxxx]
                if (ParseBreakWork(attrKey, out string head, out string tail))
                {
                    if (head == "margin" || head == "padding" || head == "border" || head == "pos")
                    {
                        if (tail == "")
                        {
                            var valueArray = ParseFourValueFromString(attrValue);
                            if (valueArray != null)
                            {
                                for (int i = 0; i < valueArray.Length; i++)
                                {
                                    node.Helper_SetMarginPaddingBorder(head, (Edge)i, valueArray[i]);
                                }
                            }
                        }
                        else if (Flex.StringToEdge(tail, out Edge edge))
                        {
                            node.Helper_SetMarginPaddingBorder(head, edge, ParseValueFromString(attrValue));
                        }
                    }
                }
                break;
            }
        }