Class PDICCBased

All Implemented Interfaces:
COSObjectable

public final class PDICCBased extends PDCIEBasedColorSpace
ICCBased color spaces are based on a cross-platform color profile as defined by the International Color Consortium (ICC).
  • Field Details

    • LOG

      private static final org.apache.commons.logging.Log LOG
    • stream

      private final PDStream stream
    • numberOfComponents

      private int numberOfComponents
    • iccProfile

      private ICC_Profile iccProfile
    • alternateColorSpace

      private PDColorSpace alternateColorSpace
    • awtColorSpace

      private ICC_ColorSpace awtColorSpace
    • initialColor

      private PDColor initialColor
    • isRGB

      private boolean isRGB
    • useOnlyAlternateColorSpace

      private boolean useOnlyAlternateColorSpace
    • IS_KCMS

      private static final boolean IS_KCMS
  • Constructor Details

  • Method Details

    • create

      public static PDICCBased create(COSArray iccArray, PDResources resources) throws IOException
      Creates a new ICC color space using the PDF array, optionally using a resource cache.
      Parameters:
      iccArray - the ICC stream object.
      resources - resources to use as cache, or null for no caching.
      Returns:
      an ICC color space.
      Throws:
      IOException - if there is an error reading the ICC profile or if the parameter is invalid.
    • checkArray

      private static void checkArray(COSArray iccArray) throws IOException
      Throws:
      IOException
    • getName

      public String getName()
      Description copied from class: PDColorSpace
      Returns the name of the color space.
      Specified by:
      getName in class PDColorSpace
      Returns:
      the name of the color space
    • getPDStream

      public PDStream getPDStream()
      Get the underlying ICC profile stream.
      Returns:
      the underlying ICC profile stream
    • loadICCProfile

      private void loadICCProfile() throws IOException
      Load the ICC profile, or init alternateColorSpace color space.
      Throws:
      IOException
    • fallbackToAlternateColorSpace

      private void fallbackToAlternateColorSpace(Exception e) throws IOException
      Throws:
      IOException
    • is_sRGB

      private boolean is_sRGB(ICC_Profile profile)
      Returns true if the given profile represents sRGB. (unreliable on the data of ColorSpace.CS_sRGB in openjdk)
    • ensureDisplayProfile

      private static ICC_Profile ensureDisplayProfile(ICC_Profile profile)
    • intToBigEndian

      private static void intToBigEndian(int value, byte[] array, int index)
    • toRGB

      public float[] toRGB(float[] value) throws IOException
      Description copied from class: PDColorSpace
      Returns the RGB equivalent of the given color value.
      Specified by:
      toRGB in class PDColorSpace
      Parameters:
      value - a color value with component values between 0 and 1
      Returns:
      an array of R,G,B value between 0 and 255
      Throws:
      IOException - if the color conversion fails
    • clampColors

      private float[] clampColors(ICC_ColorSpace cs, float[] value)
    • toRGBImage

      public BufferedImage toRGBImage(WritableRaster raster) throws IOException
      Description copied from class: PDColorSpace
      Returns the (A)RGB equivalent of the given raster.
      Overrides:
      toRGBImage in class PDCIEBasedColorSpace
      Parameters:
      raster - the source raster
      Returns:
      an (A)RGB buffered image
      Throws:
      IOException - if the color conversion fails
    • toRawImage

      public BufferedImage toRawImage(WritableRaster raster) throws IOException
      Description copied from class: PDColorSpace
      Returns the image in this colorspace or null. No conversion is performed. For special colorspaces like PDSeparation the image is returned in the gray colorspace. For undefined colorspaces like DeviceCMYK/DeviceRGB and DeviceGray null is returned. You can always fallback to PDColorSpace.toRGBImage(WritableRaster) if this returns null.
      Overrides:
      toRawImage in class PDCIEBasedColorSpace
      Parameters:
      raster - the source raster
      Returns:
      an buffered image in this colorspace. Or null if it is not possible to extract that image with the original colorspace without conversion.
      Throws:
      IOException
    • getNumberOfComponents

      public int getNumberOfComponents()
      Description copied from class: PDColorSpace
      Returns the number of components in this color space
      Specified by:
      getNumberOfComponents in class PDColorSpace
      Returns:
      the number of components in this color space
    • getDefaultDecode

      public float[] getDefaultDecode(int bitsPerComponent)
      Description copied from class: PDColorSpace
      Returns the default decode array for this color space.
      Specified by:
      getDefaultDecode in class PDColorSpace
      Parameters:
      bitsPerComponent - the number of bits per component.
      Returns:
      the default decode array
    • getInitialColor

      public PDColor getInitialColor()
      Description copied from class: PDColorSpace
      Returns the initial color value for this color space.
      Specified by:
      getInitialColor in class PDColorSpace
      Returns:
      the initial color value for this color space
    • getAlternateColorSpace

      public PDColorSpace getAlternateColorSpace() throws IOException
      Returns a list of alternate color spaces for non-conforming readers. WARNING: Do not use the information in a conforming reader.
      Returns:
      A list of alternateColorSpace color spaces.
      Throws:
      IOException - If there is an error getting the alternateColorSpace color spaces.
    • getRangeForComponent

      public PDRange getRangeForComponent(int n)
      Returns the range for a certain component number. This will never return null. If it is not present then the range 0..1 will be returned.
      Parameters:
      n - the component number to get the range for
      Returns:
      the range for this component
    • getMetadata

      public COSStream getMetadata()
      Returns the metadata stream for this object, or null if there is no metadata stream.
      Returns:
      the metadata stream, or null if there is none
    • getColorSpaceType

      public int getColorSpaceType()
      Returns the type of the color space in the ICC profile. If the ICC profile is invalid, the type of the alternate colorspace is returned, which will be one of TYPE_GRAY, TYPE_RGB, TYPE_CMYK, or -1 if that one is invalid.
      Returns:
      an ICC color space type. See ColorSpace.getType() and the static values of ColorSpace for more details.
    • setNumberOfComponents

      @Deprecated public void setNumberOfComponents(int n)
      Deprecated.
      it's probably not safe to use this, this method will be removed in 3.0.
      Sets the number of color components.
      Parameters:
      n - the number of color components
    • setAlternateColorSpaces

      public void setAlternateColorSpaces(List<PDColorSpace> list)
      Sets the list of alternateColorSpace color spaces.
      Parameters:
      list - the list of color space objects
    • setRangeForComponent

      public void setRangeForComponent(PDRange range, int n)
      Sets the range for this color space.
      Parameters:
      range - the new range for the a component
      n - the component to set the range for
    • setMetadata

      public void setMetadata(COSStream metadata)
      Sets the metadata stream that is associated with this color space.
      Parameters:
      metadata - the new metadata stream
    • isSRGB

      boolean isSRGB()
      Internal accessor to support indexed raw images.
      Returns:
      true if this colorspace is sRGB.
    • toString

      public String toString()
      Overrides:
      toString in class PDCIEBasedColorSpace
    • isMinJdk8

      private static boolean isMinJdk8()