private boolean establishColorFromColor(StringBuffer codeBuffer, Color color, boolean fill) {
ColorSpace cs = color.getColorSpace();
if (cs instanceof DeviceCMYKColorSpace) {
establishDeviceCMYK(codeBuffer, color, fill);
return true;
} else if (!cs.isCS_sRGB()) {
if (cs instanceof ICC_ColorSpace) {
PDFICCBasedColorSpace pdfcs = getICCBasedColorSpace((ICC_ColorSpace)cs);
establishColor(codeBuffer, pdfcs, color, fill);
return true;
} else if (cs instanceof NamedColorSpace) {
PDFSeparationColorSpace sepcs = getSeparationColorSpace((NamedColorSpace)cs);
establishColor(codeBuffer, sepcs, color, fill);
return true;
} else if (cs instanceof CIELabColorSpace) {
CIELabColorSpace labcs = (CIELabColorSpace)cs;
PDFCIELabColorSpace pdflab = getCIELabColorSpace(labcs);
selectColorSpace(codeBuffer, pdflab, fill);
float[] comps = color.getColorComponents(null);
float[] nativeComps = labcs.toNativeComponents(comps);
writeColor(codeBuffer, nativeComps, labcs.getNumComponents(), (fill ? "sc" : "SC"));
return true;
}
}
return false;
}