Exemple #1
0
        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");
            }
        }
Exemple #2
0
        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");
        }