Class DeviceNColorSpace

    • Method Detail

      • getName

        public String getName​(int comp)
        Returns the name of the specified component
        Overrides:
        getName in class ColorSpace
        Parameters:
        comp - the component index
        Returns:
        the name of the component at the specified index
        Since:
        2.11.26
      • getNames

        public List<String> getNames()
        Return the names of all the components as an unmodifiable List
        Since:
        2.28.3
      • isProcessComponent

        public boolean isProcessComponent​(int component)
        Return true if the specified component in this color is a "process" component, false if it's a "spot" component.
        Parameters:
        component - the component, from 0..getNumComponents();
        Since:
        2.28.3
      • getNumComponents

        public int getNumComponents()
        Returns the number of components of this ColorSpace.
        Overrides:
        getNumComponents in class ColorSpace
        Returns:
        the number of components in this ColorSpace
      • getFallbackColorSpace

        public ColorSpace getFallbackColorSpace()
        Get the ColorSpace which defines the "fallback" color, which must be a process ColorSpace (i.e. RGB, CMYK etc)
      • getComponentColorSpace

        public SpotColorSpace getComponentColorSpace​(int comp)
        Get the Component ColorSpace for an individual spot color in the ColorSpace. Note that prior to 2.28.4 this method returned null for process components, which is no longer the case.
        Parameters:
        comp - the component index
        Since:
        2.24.3
      • isAdditive

        public boolean isAdditive()
        Return true if this ColorSpace is additive (like RGB), as opposed to subtractive (like CMYK). DeviceN spaces are intended for print so will almost always be subtractive, but its possible to subvert this.
      • getColor

        public Color getColor​(float[] comps,
                              float alpha)
      • toFallback

        public float[] toFallback​(float[] input)
        Convert the color components in this color to the components in the fallback ColorSpace
        Parameters:
        input - the array of components in this ColorSpace
        Returns:
        the array of components in the fallback ColorSpace
      • toRGB

        public float[] toRGB​(float[] colorvalue)

        Transforms a color value assumed to be in this ColorSpace into a value in the default CS_sRGB color space. Calls toRGB on the fallback colorspace.

        Specified by:
        toRGB in class ColorSpace
        Parameters:
        colorvalue - a float array with length of at least the number of components in this ColorSpace
        Returns:
        a float array of length 3
      • toCIEXYZ

        public float[] toCIEXYZ​(float[] colorvalue)

        Transforms a color value assumed to be in this ColorSpace into the CIEXYZ values. Calls toCIEXYZ on the fallback colorspace.

        Specified by:
        toCIEXYZ in class ColorSpace
        Parameters:
        colorvalue - a float array with length of at least the number of components in this ColorSpace
        Returns:
        a float array of length 3
      • fromRGB

        public float[] fromRGB​(float[] rgb)

        Theoretically transforms a color value assumed to be in the sRGB ColorSpace into values in this ColorSpace. In practice this can't easily be done and isn't useful, so throws an UnsupportedOperationException.

        Specified by:
        fromRGB in class ColorSpace
        Parameters:
        rgb - a float array with length of at least 3
      • fromCIEXYZ

        public float[] fromCIEXYZ​(float[] xyz)

        Theoretically transforms a color value assumed to be in the XYZ ColorSpace into values in this ColorSpace. In practice this can't easily be done and isn't useful, so throws an UnsupportedOperationException.

        Specified by:
        fromCIEXYZ in class ColorSpace
        Parameters:
        xyz - a float array with length of at least 3
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • remap

        public final DeviceNColorSpace remap​(ColorSpace newfallback)
        Attempt to convert this DeviceNColorSpace to an equavalent one, but with a different fallback ColorSpace. The equivalent space will be as close as possible to the original, but may not be identical, as colors may be out of gamut. For some DeviceN spaces this process may not be possible - spaces are remapped with a lookup table function requiring mn samples where n is the number of inks
        Since:
        2.17.1
      • getColorConvertOp

        public BufferedImageOp getColorConvertOp​(ColorSpace outcs,
                                                 Object... options)

        Return a BufferedImageOp which will convert from an image in this ColorSpace to an image in the supplied ColorSpace.

        This can be used to convert a multi-channel image to
        • an RGB image - just pass in (eg)Color.red.getColorSpace()
        • the process colorspace used as a fallback for this space: pass in getFallbackColorSpace()
        • to extract a single separation from this image, pass in a SpotColorSpace with the specified component, retrieved from #getComponentColorSpace(). The resulting image will have a single component where 0 means "no ink" and 1 means "100% ink". This is mathematically correct but looked inverted when displayed as a bitmap, so passing an option of "invert" will invert this so white means no ink, black means 100% ink. Alternatively an option of "index" will return an indexed image where a value of 0 is transparent, and a value of 1 is the RGB value of the ink. Finally, an option of "gray" will return an image in a grayscale ColorSpace where 0 is white.

        This method will mostly be used with the BufferedImage returned from PagePainter.getImage() when the ColorModel supplied to that method is PDFParser.SEPARATIONS. Here is an example showing this

          PDFParser pdfparser = new PDFParser(pdf);
          PagePainter painter = pdfparser.getPagePainter(pdf.getPage(0));
          BufferedImage image = painter.getImage(200, PDFParser.SEPARATIONS);
          // "image" is a multi-channel image based on a DeviceNColorSpace.
          // To collapse it down to RGB
          DeviceNColorSpace cs = (DeviceNColorSpace)image.getColorModel().getColorSpace();
          ColorSpace sRGB = ColorSpace.getInstance(ColorSpace.CS_sRGB);
          BufferedImageOp op = cs.getColorConvertOp(sRGB);
          BufferedImage rgbimage = op.filter(image, null);
          // "rgbimage" is an RGB version of the same, which can be saved as PNG etc.
         

        Note - ideally this method would return a ColorConvertOp, but that class is broken to the point of being non-functional, and as most of the methods are final we have to return a BufferedImageOp instead.

        Since:
        2.28.3
        See Also:
        PDFParser.SEPARATIONS