private static bool CompileFlexShorthand(StylePropertyReader reader, out float grow, out float shrink, out Length basis) { grow = 0f; shrink = 1f; basis = Length.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 = Length.Auto(); } else if (reader.IsKeyword(0, StyleValueKeyword.Auto)) { valid = true; grow = 1f; shrink = 1f; basis = Length.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 = Length.Auto(); } } else if (valueType == StyleValueType.Dimension) { basis = reader.ReadLength(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.ReadFloat(i); if (!growFound) { growFound = true; grow = value; } else { shrink = value; } } else { valid = false; } } } return(valid); }
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); }