public static CIMGrayColor ToGray(this CIMColor color) { if (color == null) { return(null); } switch (color) { case CIMRGBColor rgb: return(rgb.ToGray()); case CIMCMYKColor cmyk: return(cmyk.ToRGB().ToGray()); case CIMGrayColor gray: return(gray); case CIMHSVColor hsv: return(hsv.ToRGB().ToGray()); case CIMHSLColor hsl: return(hsl.ToRGB().ToGray()); default: throw new NotSupportedException($"Cannot convert from {color.GetType().Name} to Gray"); } }
public static string FormatColor([CanBeNull] CIMColor color) { if (color == null) { return(null); } var invariant = CultureInfo.InvariantCulture; if (color is CIMRGBColor rgb) { return(string.Format(invariant, "RGB({0:F0},{1:F0},{2:F0})", rgb.R, rgb.G, rgb.B)); } if (color is CIMCMYKColor cmyk) { return(string.Format(invariant, "CMYK({0:F0},{1:F0},{2:F0},{3:F0})", cmyk.C, cmyk.M, cmyk.Y, cmyk.K)); } if (color is CIMGrayColor gray) { return(string.Format(invariant, "Gray({0:F0})", gray.Level)); } if (color is CIMHSLColor hls) { return(string.Format(invariant, "HLS({0:F0},{1:F0},{2:F0})", hls.H, hls.L, hls.S)); } if (color is CIMHSVColor hsv) { return(string.Format(invariant, "HSV({0:F0},{1:F0},{2:F0})", hsv.H, hsv.S, hsv.V)); } throw new NotSupportedException( $"Color of type {color.GetType().Name} is not supported"); }