private static void CompileBoxArea(StylePropertyReader reader, out StyleLength top, out StyleLength right, out StyleLength bottom, out StyleLength left) { top = 0f; right = 0f; bottom = 0f; left = 0f; switch (reader.valueCount) { case 0: break; case 1: top = (right = (bottom = (left = reader.ReadStyleLength(0)))); break; case 2: top = (bottom = reader.ReadStyleLength(0)); left = (right = reader.ReadStyleLength(1)); break; case 3: top = reader.ReadStyleLength(0); left = (right = reader.ReadStyleLength(1)); bottom = reader.ReadStyleLength(2); break; default: top = reader.ReadStyleLength(0); right = reader.ReadStyleLength(1); bottom = reader.ReadStyleLength(2); left = reader.ReadStyleLength(3); break; } }
private static void CompileBoxArea(StylePropertyReader reader, out StyleLength top, out StyleLength right, out StyleLength bottom, out StyleLength left) { top = 0f; right = 0f; bottom = 0f; left = 0f; var valueCount = reader.valueCount; switch (valueCount) { // apply to all four sides case 0: break; case 1: { top = right = bottom = left = reader.ReadStyleLength(0); break; } // vertical | horizontal case 2: { top = bottom = reader.ReadStyleLength(0); left = right = reader.ReadStyleLength(1); break; } // top | horizontal | bottom case 3: { top = reader.ReadStyleLength(0); left = right = reader.ReadStyleLength(1); bottom = reader.ReadStyleLength(2); break; } // top | right | bottom | left default: { top = reader.ReadStyleLength(0); right = reader.ReadStyleLength(1); bottom = reader.ReadStyleLength(2); left = reader.ReadStyleLength(3); break; } } }
private static bool CompileFlexShorthand(StylePropertyReader reader, out StyleFloat grow, out StyleFloat shrink, out StyleLength basis) { grow = 0f; shrink = 1f; basis = StyleKeyword.Auto; bool flag = false; int valueCount = reader.valueCount; bool flag2 = valueCount == 1 && reader.IsValueType(0, StyleValueType.Keyword); if (flag2) { bool flag3 = reader.IsKeyword(0, StyleValueKeyword.None); if (flag3) { flag = true; grow = 0f; shrink = 0f; basis = StyleKeyword.Auto; } else { bool flag4 = reader.IsKeyword(0, StyleValueKeyword.Auto); if (flag4) { flag = true; grow = 1f; shrink = 1f; basis = StyleKeyword.Auto; } } } else { bool flag5 = valueCount <= 3; if (flag5) { flag = true; grow = 0f; shrink = 1f; basis = Length.Percent(0f); bool flag6 = false; bool flag7 = false; int num = 0; while (num < valueCount & flag) { StyleValueType valueType = reader.GetValueType(num); bool flag8 = valueType == StyleValueType.Dimension || valueType == StyleValueType.Keyword; if (flag8) { bool flag9 = flag7; if (flag9) { flag = false; break; } flag7 = true; bool flag10 = valueType == StyleValueType.Keyword; if (flag10) { bool flag11 = reader.IsKeyword(num, StyleValueKeyword.Auto); if (flag11) { basis = StyleKeyword.Auto; } } else { bool flag12 = valueType == StyleValueType.Dimension; if (flag12) { basis = reader.ReadStyleLength(num); } } bool flag13 = flag6 && num != valueCount - 1; if (flag13) { flag = false; } } else { bool flag14 = valueType == StyleValueType.Float; if (flag14) { StyleFloat styleFloat = reader.ReadStyleFloat(num); bool flag15 = !flag6; if (flag15) { flag6 = true; grow = styleFloat; } else { shrink = styleFloat; } } else { flag = false; } } num++; } } } return(flag); }
private static bool CompileFlexShorthand(StylePropertyReader reader, out StyleFloat grow, out StyleFloat shrink, out StyleLength basis) { grow = 0f; shrink = 1f; basis = StyleKeyword.Auto; bool valid = false; var valueCount = reader.valueCount; if (valueCount == 1 && reader.IsValueType(0, StyleValueType.Keyword)) { // Handle none | auto if (reader.IsKeyword(0, StyleValueKeyword.None)) { valid = true; grow = 0f; shrink = 0f; basis = StyleKeyword.Auto; } else if (reader.IsKeyword(0, StyleValueKeyword.Auto)) { valid = true; grow = 1f; shrink = 1f; basis = StyleKeyword.Auto; } } else if (valueCount <= 3) { // Handle [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] valid = true; grow = 0f; shrink = 1f; basis = Length.Percent(0); bool growFound = false; bool basisFound = false; for (int i = 0; i < valueCount && valid; i++) { var valueType = reader.GetValueType(i); if (valueType == StyleValueType.Dimension || valueType == StyleValueType.Keyword) { // Basis if (basisFound) { valid = false; break; } basisFound = true; if (valueType == StyleValueType.Keyword) { if (reader.IsKeyword(i, StyleValueKeyword.Auto)) { basis = StyleKeyword.Auto; } } else if (valueType == StyleValueType.Dimension) { basis = reader.ReadStyleLength(i); } if (growFound && i != valueCount - 1) { // If grow is already processed basis must be the last value valid = false; } } else if (valueType == StyleValueType.Float) { var value = reader.ReadStyleFloat(i); if (!growFound) { growFound = true; grow = value; } else { shrink = value; } } else { valid = false; } } } return(valid); }