private static YogaValue ToYogaValue(JValue value)
        {
            if (value == null || value.Type == JTokenType.Null || value.Type == JTokenType.Undefined)
            {
                return(YogaValue.Undefined());
            }

            if (value.Type == JTokenType.String)
            {
                var s = value.Value <string>();

                if (s == "auto")
                {
                    return(YogaValue.Auto());
                }

                if (s.EndsWith("%"))
                {
                    return(YogaValue.Percent(float.Parse(s.Substring(0, s.Length - 1))));
                }

                throw new InvalidOperationException(
                          Invariant($"Unknown value: '{s}'"));
            }

            return(YogaValue.Point(value.Value <float>()));
        }
Exemple #2
0
        internal static YogaValue ToYogaValue(this StyleLength styleValue)
        {
            if (styleValue.keyword == StyleKeyword.Auto)
            {
                return(YogaValue.Auto());
            }

            // For max-width and max-height
            if (styleValue.keyword == StyleKeyword.None)
            {
                return(float.NaN);
            }

            var length = styleValue.value;

            switch (length.unit)
            {
            case LengthUnit.Pixel:
                return(YogaValue.Point(length.value));

            case LengthUnit.Percent:
                return(YogaValue.Percent(length.value));

            default:
                Debug.LogAssertion($"Unexpected unit '{length.unit}'");
                return(float.NaN);
            }
        }
        internal static YogaValue ToYogaValue(this Length length)
        {
            if (length.IsAuto())
            {
                return(YogaValue.Auto());
            }

            // For max-width and max-height
            if (length.IsNone())
            {
                return(float.NaN);
            }

            switch (length.unit)
            {
            case LengthUnit.Pixel:
                return(YogaValue.Point(length.value));

            case LengthUnit.Percent:
                return(YogaValue.Percent(length.value));

            default:
                Debug.LogAssertion($"Unexpected unit '{length.unit}'");
                return(float.NaN);
            }
        }
Exemple #4
0
        private object ParseFromPositioningLiteral(string str)
        {
            float x, y;

            if (str.Contains("top"))
            {
                x = 0.5f;
                y = 1;
                if (str.Contains("left"))
                {
                    x = 0;
                }
                if (str.Contains("right"))
                {
                    x = 1;
                }
            }
            else if (str.Contains("bottom"))
            {
                x = 0.5f;
                y = 0;
                if (str.Contains("left"))
                {
                    x = 0;
                }
                if (str.Contains("right"))
                {
                    x = 1;
                }
            }
            else if (str.Contains("left"))
            {
                x = 0;
                y = 0.5f;
            }
            else if (str.Contains("right"))
            {
                x = 1;
                y = 0.5f;
            }
            else if (str.Contains("center"))
            {
                x = 0.5f;
                y = 0.5f;
            }
            else
            {
                return(SpecialNames.CantParse);
            }

            return(new YogaValue2(YogaValue.Percent(x * 100), YogaValue.Percent(y * 100)));
        }
Exemple #5
0
        YogaValue DrawYogaValue(YogaValue value, GUIStyle style = null, params GUILayoutOption[] options)
        {
            var str      = "";
            var valueStr = IsNegativeZero(value.Value) ? "-0" : $"{value.Value}";

            if (value.Unit == YogaUnit.Auto)
            {
                str = "auto";
            }
            else if (value.Unit == YogaUnit.Percent)
            {
                str = $"{valueStr}%";
            }
            else if (value.Unit == YogaUnit.Point)
            {
                str = $"{valueStr}";
            }

            var res = EditorGUILayout.DelayedTextField(str, style ?? GUI.skin.textField, options);

            if (res == "auto")
            {
                return(YogaValue.Undefined());
            }

            var trimmed = new Regex("[^\\d\\.-]").Replace(res, "");

            var canParse = float.TryParse(trimmed, out var fval);

            if (trimmed == "-" || trimmed == "-0")
            {
                fval = -0f;
            }


            if (trimmed.Length > 0 && (canParse || trimmed == "-"))
            {
                if (res.EndsWith("%"))
                {
                    return(YogaValue.Percent(fval));
                }
                return(YogaValue.Point(fval));
            }

            return(YogaValue.Undefined());
        }
Exemple #6
0
 public static YogaValue?NormalizeYogaValue(object value)
 {
     if (value == null)
     {
         return(YogaValue.Undefined());
     }
     else if (value is YogaValue c)
     {
         return(c);
     }
     else if (value is double d)
     {
         return(YogaValue.Point((float)d));
     }
     else if (value is int i)
     {
         return(YogaValue.Point(i));
     }
     else if (value is float v)
     {
         return(YogaValue.Point(v));
     }
     else if (value is string s)
     {
         if (s == "auto")
         {
             return(YogaValue.Auto());
         }
         else if (s.EndsWith("%"))
         {
             return(YogaValue.Percent(float.Parse(s.Replace("%", ""))));
         }
         else
         {
             return(YogaValue.Point(float.Parse(s)));
         }
     }
     else
     {
         return(value as YogaValue?);
     }
 }
Exemple #7
0
 public static YogaValue StyleLengthToYogaValue(StyleLength value)
 {
     if (value.keyword == StyleKeyword.Auto)
     {
         return(YogaValue.Auto());
     }
     if (value.keyword == StyleKeyword.Null || value.keyword == StyleKeyword.None || value.keyword == StyleKeyword.Initial)
     {
         return(YogaValue.Undefined());
     }
     if (value.value.unit == LengthUnit.Percent)
     {
         return(YogaValue.Percent(value.value.value));
     }
     if (value.value.unit == LengthUnit.Pixel)
     {
         return(YogaValue.Point(value.value.value));
     }
     return(YogaValue.Undefined());
 }
Exemple #8
0
        internal static YogaValue ToYogaValue(this StyleLength styleValue)
        {
            bool      flag = styleValue.keyword == StyleKeyword.Auto;
            YogaValue result;

            if (flag)
            {
                result = YogaValue.Auto();
            }
            else
            {
                bool flag2 = styleValue.keyword == StyleKeyword.None;
                if (flag2)
                {
                    result = float.NaN;
                }
                else
                {
                    Length     value      = styleValue.value;
                    LengthUnit unit       = value.unit;
                    LengthUnit lengthUnit = unit;
                    if (lengthUnit != LengthUnit.Pixel)
                    {
                        if (lengthUnit != LengthUnit.Percent)
                        {
                            Debug.LogAssertion(string.Format("Unexpected unit '{0}'", value.unit));
                            result = float.NaN;
                        }
                        else
                        {
                            result = YogaValue.Percent(value.value);
                        }
                    }
                    else
                    {
                        result = YogaValue.Point(value.value);
                    }
                }
            }
            return(result);
        }
Exemple #9
0
        public object FromString(string value)
        {
            if (value == "auto")
            {
                return(YogaValue.Auto());
            }
            else if (value.EndsWith("%"))
            {
                if (float.TryParse(value.Replace("%", ""), NumberStyles.Float, culture, out var parsedValue))
                {
                    return(YogaValue.Percent(parsedValue));
                }
                return(SpecialNames.CantParse);
            }

            if (float.TryParse(PxRegex.Replace(value, ""), NumberStyles.Float, culture, out var parsedValue2))
            {
                return(YogaValue.Point(parsedValue2));
            }
            return(SpecialNames.CantParse);
        }
Exemple #10
0
 static YogaValue ParseYogaValue(string value)
 {
     if (value.EndsWith("%"))
     {
         return(YogaValue.Percent(float.Parse(value.Substring(0, value.Length - 1))));
     }
     else if (value.EndsWith("pt"))
     {
         return(YogaValue.Point(float.Parse(value.Substring(0, value.Length - 2))));
     }
     else if (float.TryParse(value, out float result))
     {
         return(YogaValue.Point(result));
     }
     else if (value == "auto")
     {
         return(YogaValue.Auto);
     }
     else
     {
         return(YogaValue.Undefined);
     }
 }
Exemple #11
0
 public static YogaValue Percent(this int value)
 {
     return(YogaValue.Percent(value));
 }