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)); } }