2 using System.Globalization;
4 namespace Tizen.NUI.Binding
6 // [Xaml.ProvideCompiled("Xamarin.Forms.Core.XamlC.ThicknessTypeConverter")]
7 [Xaml.TypeConversion(typeof(Thickness))]
8 internal class ThicknessTypeConverter : TypeConverter
10 public override object ConvertFromInvariantString(string value)
14 if (value.Contains(",")) { //Xaml
15 var thickness = value.Split(',');
16 switch (thickness.Length) {
18 if ( double.TryParse(thickness[0], NumberStyles.Number, CultureInfo.InvariantCulture, out double h)
19 && double.TryParse(thickness[1], NumberStyles.Number, CultureInfo.InvariantCulture, out double v))
20 return new Thickness(h, v);
23 if ( double.TryParse(thickness[0], NumberStyles.Number, CultureInfo.InvariantCulture, out double l)
24 && double.TryParse(thickness[1], NumberStyles.Number, CultureInfo.InvariantCulture, out double t)
25 && double.TryParse(thickness[2], NumberStyles.Number, CultureInfo.InvariantCulture, out double r)
26 && double.TryParse(thickness[3], NumberStyles.Number, CultureInfo.InvariantCulture, out double b))
27 return new Thickness(l, t, r, b);
31 else if (value.Contains(" ")) { //CSS
32 var thickness = value.Split(' ');
33 switch (thickness.Length) {
35 if ( double.TryParse(thickness[0], NumberStyles.Number, CultureInfo.InvariantCulture, out double v)
36 && double.TryParse(thickness[1], NumberStyles.Number, CultureInfo.InvariantCulture, out double h))
37 return new Thickness(h, v);
40 if ( double.TryParse(thickness[0], NumberStyles.Number, CultureInfo.InvariantCulture, out double t)
41 && double.TryParse(thickness[1], NumberStyles.Number, CultureInfo.InvariantCulture, out h)
42 && double.TryParse(thickness[2], NumberStyles.Number, CultureInfo.InvariantCulture, out double b))
43 return new Thickness(h, t, h, b);
46 if ( double.TryParse(thickness[0], NumberStyles.Number, CultureInfo.InvariantCulture, out t)
47 && double.TryParse(thickness[1], NumberStyles.Number, CultureInfo.InvariantCulture, out double r)
48 && double.TryParse(thickness[2], NumberStyles.Number, CultureInfo.InvariantCulture, out b)
49 && double.TryParse(thickness[3], NumberStyles.Number, CultureInfo.InvariantCulture, out double l))
50 return new Thickness(l, t, r, b);
54 else { //single uniform thickness
55 if (double.TryParse(value, NumberStyles.Number, CultureInfo.InvariantCulture, out double l))
56 return new Thickness(l);
60 throw new InvalidOperationException($"Cannot convert \"{value}\" into {typeof(Thickness)}");