public static ConsoleColor ToConsoleColor(this Color thisValue) { EnumRange <ConsoleColor> consoleColors = new EnumRange <ConsoleColor>(); ConsoleColor result = consoleColors.Minimum; double red = thisValue.R, green = thisValue.G, blue = thisValue.B, delta = double.MaxValue; foreach (ConsoleColor consoleColor in consoleColors) { Color color = Color.FromName(consoleColor == ConsoleColor.DarkYellow ? nameof(Color.Orange) : consoleColor.GetName()); double t = Math.Pow(color.R - red, 2.0) + Math.Pow(color.G - green, 2.0) + Math.Pow(color.B - blue, 2.0); if (t.IsEqual(0.0d)) { return(consoleColor); } if (t < delta) { delta = t; result = consoleColor; } } return(result); }
private static bool IsWellFormattedRangeString <T>(string value, out EnumRange <T> parsed) where T : struct, Enum, IComparable { parsed = null; if (string.IsNullOrEmpty(value)) { return(false); } if (!value.Contains(Range.SPLIT)) { if (!EnumHelper <T> .TryParse(value, true, out T p)) { return(false); } parsed = new EnumRange <T>(p, p); return(true); } string[] parts = value.Split(2, Range.SPLIT); if (parts.Length != 2 || parts.Any(string.IsNullOrEmpty)) { return(false); } if (!EnumHelper <T> .TryParse(value, true, out T p1) || !EnumHelper <T> .TryParse(value, true, out T p2)) { return(false); } parsed = new EnumRange <T>(p1, p2); return(true); }
public void SetMeasurementRange(EnumChannel CH, EnumRange Range) { if (Range == EnumRange.AUTO) { Send(string.Format("AUTO_{0} 1", CH)); } else { Send(string.Format("RANGE_{0} {1}", CH, (int)Range)); } MetaProperties[(int)CH].Range = Range; }