示例#1
0
        internal Color?GetColor(iText.Kernel.Colors.Color colorPfd, float alpha)
        {
            var value = colorPfd.GetColorValue();

            switch (colorPfd)
            {
            case CalGray calGray:
            case DeviceGray deviceGray:
                return(FromGray(value[0], alpha));

            case CalRgb calRgb:
            case DeviceRgb deviceRgb:
                return(FromRGB(value[0], value[1], value[2], alpha));

            case DeviceCmyk deviceCmyk:
                return(FromCmyk(value[0], value[1], value[2], value[3], alpha));

            case IccBased iccBased:
                var colorSpace = colorPfd.GetColorSpace();
                var source     = ((PdfArray)colorSpace.GetPdfObject()).GetAsStream(1);
                var alt        = source.GetAsName(PdfName.Alternate);
                if (Equals(alt, PdfName.CalGray) || Equals(alt, PdfName.DeviceGray))
                {
                    return(FromGray(value[0], alpha));
                }
                if (Equals(alt, PdfName.CalRGB) || Equals(alt, PdfName.DeviceRGB))
                {
                    return(FromRGB(value[0], value[1], value[2], alpha));
                }
                if (Equals(alt, PdfName.DeviceCMYK))
                {
                    return(FromCmyk(value[0], value[1], value[2], value[3], alpha));
                }
                return(FromUnkown(colorPfd, alpha));

            case PatternColor patternColor:
                var pattern = patternColor.GetPattern();
                return(PatternColorManager.GetColor(pattern, alpha));

            case DeviceN deviceN:
            case Indexed indexed:
            case Lab lab:
            case Separation separation:
            default:
                return(FromUnkown(colorPfd, alpha));
            }
        }
示例#2
0
        private Color?FromUnkown(iText.Kernel.Colors.Color colorPfd, float alpha)
        {
            var value = colorPfd.GetColorValue();

            switch (colorPfd.GetNumberOfComponents())
            {
            case 0:
                return(null);

            case 1:
                return(FromGray(value[0], alpha));

            case 3:
                return(FromRGB(value[0], value[1], value[2], alpha));

            case 4:
                return(FromCmyk(value[0], value[1], value[2], value[3], alpha));

            default: return(null);
            }
        }