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