package com.sun.pdfview.colorspace; import java.awt.color.ColorSpace; import com.sun.pdfview.function.PDFFunction; /***************************************************************************** * Color Space implementation for handling the PDF AlternateColorSpace. * A PDF function is applied to colorvalues before converting. * * @author Katja Sondermann * @since 06.01.2011 ****************************************************************************/ public class AltColorSpace extends ColorSpace { private PDFFunction fkt; private ColorSpace origCs; /** * Create a new CMYKColorSpace Instance. */ public AltColorSpace(PDFFunction fkt, ColorSpace origCs) { super(origCs.getType(), fkt.getNumInputs()); this.fkt = fkt; this.origCs = origCs; } /** * Converts from CIEXYZ. * * @see java.awt.color.ColorSpace#fromCIEXYZ(float[]) * @see org.scantegrity.lib.CMYKColorSpace#toCIEXYZ */ @Override public float[] fromCIEXYZ(float[] p_colorvalue) { p_colorvalue = this.fkt.calculate(p_colorvalue); return this.origCs.fromCIEXYZ(p_colorvalue); } /** * Converts a given RGB. * * @param p_rgbvalue - The color to translate * @return a float[4] of the CMYK values. * @see java.awt.color.ColorSpace#fromRGB(float[]) */ @Override public float[] fromRGB(float[] p_rgbvalue) { p_rgbvalue = this.fkt.calculate(p_rgbvalue); return this.origCs.fromCIEXYZ(p_rgbvalue); } /** * Converts to CIEXYZ. * @see java.awt.color.ColorSpace#toCIEXYZ(float[]) */ @Override public float[] toCIEXYZ(float[] p_colorvalue) { float[] colorvalue = this.fkt.calculate(p_colorvalue); return this.origCs.toCIEXYZ(colorvalue); } /** * Converts to RGB. * * @param p_colorvalue The color in CMYK. * @see java.awt.color.ColorSpace#toRGB(float[]) */ @Override public float[] toRGB(float[] p_colorvalue) { float[] colorvalue = this.fkt.calculate(p_colorvalue); return this.origCs.toRGB(colorvalue); } }