Exemple #1
0
        public object?Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            // Convert all colour types to Colour32
            var colour = Colour32.Black;

            switch (value)
            {
            case Color col:
            {
                colour = col.ToColour32();
                break;
            }

            case Colour32 col32:
            {
                colour = col32;
                break;
            }

            case uint u32:
            {
                colour = new Colour32(u32);
                break;
            }

            case int i32:
            {
                colour = new Colour32((uint)i32);
                break;
            }
            }
            if (parameter is string op)
            {
                var m = Regex.Match(op, @"lerp:\s*([0-9a-fA-F]{8})\s+(\d\.?\d*)");
                if (m.Success &&
                    Colour32.TryParse(m.Groups[1].Value) is Colour32 target &&
                    double_.TryParse(m.Groups[2].Value) is double frac)
                {
                    colour = Colour32.Lerp(colour, target, frac);
                }
            }
            return(new SolidColorBrush(colour.ToMediaColor()));
        }
        public object?Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (!(value is bool b))
            {
                return(null);
            }
            if (!(parameter is string s))
            {
                return(null);
            }

            var c = s.Split('|');

            if (c.Length != 2 || !Colour32.TryParse(c[0], out var true_colour) || !Colour32.TryParse(c[1], out var false_colour))
            {
                throw new Exception($"{nameof(BoolToBrush)} parameter has the incorrect format. Expected '<true_colour>|<false_colour>'");
            }

            var colour = b ? true_colour : false_colour;

            return(new SolidColorBrush(colour.ToMediaColor()));
        }
Exemple #3
0
 public object?ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
 {
     if (!(value is string str))
     {
         return(null);
     }
     if (targetType.Equals(typeof(Color)))
     {
         return(Colour32.TryParse(str)?.ToMediaColor());
     }
     if (targetType.Equals(typeof(Colour32)))
     {
         return(Colour32.TryParse(str));
     }
     if (targetType.Equals(typeof(uint)))
     {
         return(Colour32.TryParse(str)?.ARGB);
     }
     if (targetType.Equals(typeof(int)))
     {
         return((int?)Colour32.TryParse(str)?.ARGB);
     }
     return(null);
 }