bool ProcessTemplateStyle(Style style, string attrKey, string attrValue) { switch (attrKey) { case "direction": if (Flex.StringToDirection(attrValue, out Direction direction)) { style.Direction = direction; } break; case "flex-direction": if (Flex.StringToFlexDirection(attrValue, out FlexDirection flexDirection)) { style.FlexDirection = flexDirection; } break; case "justify-content": if (Flex.StringToJustify(attrValue, out Justify justifyContent)) { style.JustifyContent = justifyContent; } break; case "align-content": if (Flex.StringToAlign(attrValue, out Align alignContent)) { style.AlignContent = alignContent; } break; case "align-items": if (Flex.StringToAlign(attrValue, out Align alignItem)) { style.AlignItems = alignItem; } break; case "align-self": if (Flex.StringToAlign(attrValue, out Align alignSelf)) { style.AlignSelf = alignSelf; } break; case "flex-wrap": if (Flex.StringToWrap(attrValue, out Wrap flexWrap)) { style.FlexWrap = flexWrap; } break; case "overflow": if (Flex.StringToOverflow(attrValue, out Overflow overflow)) { style.Overflow = overflow; } break; case "display": if (Flex.StringToDisplay(attrValue, out Display display)) { style.Display = display; } break; case "flex": if (float.TryParse(attrValue, out float flex)) { style.Flex = flex; } break; case "flex-grow": if (float.TryParse(attrValue, out float flexGrow)) { style.FlexGrow = flexGrow; } break; case "flex-shrink": if (float.TryParse(attrValue, out float flexShrink)) { style.FlexShrink = flexShrink; } break; case "flex-basis": style.FlexBasis = ParseValueFromString(attrValue); break; case "position": if (Flex.StringToPositionType(attrValue, out PositionType position)) { style.PositionType = position; } break; case "width": style.Dimensions[(int)Dimension.Width] = ParseValueFromString(attrValue); break; case "height": style.Dimensions[(int)Dimension.Height] = ParseValueFromString(attrValue); break; case "min-width": style.MinDimensions[(int)Dimension.Width] = ParseValueFromString(attrValue); break; case "min-height": style.MinDimensions[(int)Dimension.Height] = ParseValueFromString(attrValue); break; case "max-width": style.MaxDimensions[(int)Dimension.Width] = ParseValueFromString(attrValue); break; case "max-height": style.MaxDimensions[(int)Dimension.Height] = ParseValueFromString(attrValue); break; default: // parse [margin|padding|border|pos]-[Edgexxxx] if (ParseBreakWork(attrKey, out string head, out string tail)) { Value[] valuesToSet = null; switch (head) { case "margin": valuesToSet = style.Margin; break; case "padding": valuesToSet = style.Padding; break; case "border": valuesToSet = style.Border; break; case "pos": valuesToSet = style.Position; break; default: return(false); } if (valuesToSet == null) { break; } if (tail == "") { var valueArray = ParseFourValueFromString(attrValue); if (valueArray != null) { for (int i = 0; i < valueArray.Length; i++) { valuesToSet[i] = valueArray[i]; } } } else if (Flex.StringToEdge(tail, out Edge edge)) { valuesToSet[(int)edge] = ParseValueFromString(attrValue); } } else { return(false); } break; }
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; } }