private static String toCIELabFunctionCall(ColorWithAlternatives color) { Color fallbackColor = getsRGBFallback(color); StringBuffer sb = new StringBuffer("cie-lab-color("); sb.append(fallbackColor.getRed()).append(','); sb.append(fallbackColor.getGreen()).append(','); sb.append(fallbackColor.getBlue()); CIELabColorSpace cs = (CIELabColorSpace)color.getColorSpace(); float[] lab = cs.toNativeComponents(color.getColorComponents(null)); for (int i = 0; i < 3; i++) { sb.append(',').append(lab[i]); } sb.append(')'); return sb.toString(); }
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; }