org.apache.fop.pdf

## Class AlphaRasterImage

- java.lang.Object
- - org.apache.fop.pdf.AlphaRasterImage

All Implemented Interfaces:
  PDFImage

    public class AlphaRasterImage
    extends Object
    implements PDFImage

PDFImage implementation for alpha channel "images".

### Constructor Summary

Constructors
Constructor and Description
`AlphaRasterImage(String k, Raster alpha)` Create a alpha channel image.
`AlphaRasterImage(String k, RenderedImage image)` Create a alpha channel image.

### Method Summary

All Methods Instance Methods Concrete Methods
`int` `getBitsPerComponent()` Get the bits per color component for this image.
`PDFDeviceColorSpace` `getColorSpace()` Get the color space for this image.
`String` `getFilterHint()` Returns a hint in form of a String (Possible values from PDFFilterList) indicating which filter setup should be used to encode the object.
`int` `getHeight()` Get the image height in pixels.
`PDFICCStream` `getICCStream()` Get the ICC stream for this image.
`String` `getKey()` Key to look up XObject.
`String` `getMask()` Get the PDF reference for a bitmap mask.
`PDFFilter` `getPDFFilter()` Get the PDF Filter to be applied to the image.
`String` `getSoftMask()`
`PDFReference` `getSoftMaskReference()` Get the PDF reference for a soft mask.
`PDFColor` `getTransparentColor()` Get the transparent color.
`int` `getWidth()` Get the image width in pixels.
`boolean` `isInverted()`
`boolean` `isPS()` Check if this image is a PostScript image.
`boolean` `isTransparent()` Check if this image has a transparent color transparency.
`boolean` `multipleFiltersAllowed()` Indicates whether multiple image filters are allowed; this is implemented because Adobe Reader does not like multiple FlateDecode filters applied to an image even though that allowed by the PDF spec; this is probable due to security concerns since many PDF malware exploits, like zip bombs, make use of a chain of FlateDecode filters.
`void` `outputContents(OutputStream out)` Writes the raw, unencoded contents of the image to a given output stream.
`void` `populateXObjectDictionary(PDFDictionary dict)` Populates the XObject's dictionary with additional values.
`void` `setup(PDFDocument doc)` Setup the PDF image for the current document.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### AlphaRasterImage

    public AlphaRasterImage(String k,
                            Raster alpha)

Create a alpha channel image. Creates a new bitmap image with the given data.

Parameters:
  `k` - the key to be used to lookup the image
  `alpha` - the alpha channel raster

#### AlphaRasterImage

    public AlphaRasterImage(String k,
                            RenderedImage image)

Create a alpha channel image. Extracts the alpha channel from the RenderedImage and creates a new bitmap image with the given data.

Parameters:
  `k` - the key to be used to lookup the image
  `image` - the image (must have an alpha channel)

### Method Detail

#### setup

    public void setup(PDFDocument doc)

Setup the PDF image for the current document. Some image formats may need to access the document (for example to add an ICC profile to the document).

Specified by:
  `setup` in interface `PDFImage`
Parameters:
  `doc` - the PDF parent document (todo) Remove this and delegate to the XObject

#### getKey

    public String getKey()

Key to look up XObject. This should be a unique key to refer to the image.

Specified by:
  `getKey` in interface `PDFImage`
Returns:
  the key for this image

#### getWidth

    public int getWidth()

Get the image width in pixels.

Specified by:
  `getWidth` in interface `PDFImage`
Returns:
  the image width

#### getHeight

    public int getHeight()

Get the image height in pixels.

Specified by:
  `getHeight` in interface `PDFImage`
Returns:
  the image height

#### getColorSpace

    public PDFDeviceColorSpace getColorSpace()

Get the color space for this image. Possible results are: DeviceGray, DeviceRGB, or DeviceCMYK

Specified by:
  `getColorSpace` in interface `PDFImage`
Returns:
  the color space

#### getBitsPerComponent

    public int getBitsPerComponent()

Get the bits per color component for this image.

Specified by:
  `getBitsPerComponent` in interface `PDFImage`
Returns:
  the bits per component

#### isTransparent

    public boolean isTransparent()

Check if this image has a transparent color transparency. Classes such as `PDFImageXObject` rely on this simple binary model of transparency (e.g. compare to `Transparency`) in order to render color key masking (see PDF Spec 1.7 Chapter 8.9.6.4). Therefore only return true if image has fully transparent colors.

Specified by:
  `isTransparent` in interface `PDFImage`
Returns:
  true if it has at least one fully transparent color

#### getTransparentColor

    public PDFColor getTransparentColor()

Get the transparent color.

Specified by:
  `getTransparentColor` in interface `PDFImage`
Returns:
  the transparent color for this image

#### getMask

    public String getMask()

Get the PDF reference for a bitmap mask.

Specified by:
  `getMask` in interface `PDFImage`
Returns:
  the PDF reference for the mask image

#### getSoftMask

    public String getSoftMask()

Returns:
  null (unless overridden)

#### getSoftMaskReference

    public PDFReference getSoftMaskReference()

Get the PDF reference for a soft mask.

Specified by:
  `getSoftMaskReference` in interface `PDFImage`
Returns:
  the PDF reference for a soft mask image (or null if there's no soft mask)

#### isInverted

    public boolean isInverted()

Specified by:
  `isInverted` in interface `PDFImage`
Returns:
  true for CMYK images generated by Adobe Photoshop

#### outputContents

    public void outputContents(OutputStream out)
                        throws IOException

Writes the raw, unencoded contents of the image to a given output stream.

Specified by:
  `outputContents` in interface `PDFImage`
Parameters:
  `out` - OutputStream to write to
Throws:
  `IOException` - if there creating stream

#### populateXObjectDictionary

    public void populateXObjectDictionary(PDFDictionary dict)

Populates the XObject's dictionary with additional values. The values are added to the dictionary after all the values obtained from other methods from this interface have been put into the dictionary. That allows to override certain values.

Specified by:
  `populateXObjectDictionary` in interface `PDFImage`
Parameters:
  `dict` - the dictionary to fill

#### getICCStream

    public PDFICCStream getICCStream()

Get the ICC stream for this image.

Specified by:
  `getICCStream` in interface `PDFImage`
Returns:
  the ICC stream for this image if any

#### isPS

    public boolean isPS()

Check if this image is a PostScript image.

Specified by:
  `isPS` in interface `PDFImage`
Returns:
  true if this is a PostScript image

#### getFilterHint

    public String getFilterHint()

Returns a hint in form of a String (Possible values from PDFFilterList) indicating which filter setup should be used to encode the object.

Specified by:
  `getFilterHint` in interface `PDFImage`
Returns:
  the filter setup hint

#### getPDFFilter

    public PDFFilter getPDFFilter()

Get the PDF Filter to be applied to the image.

Specified by:
  `getPDFFilter` in interface `PDFImage`
Returns:
  the PDF Filter or null

#### multipleFiltersAllowed

    public boolean multipleFiltersAllowed()

Indicates whether multiple image filters are allowed; this is implemented because Adobe Reader does not like multiple FlateDecode filters applied to an image even though that allowed by the PDF spec; this is probable due to security concerns since many PDF malware exploits, like zip bombs, make use of a chain of FlateDecode filters.

Specified by:
  `multipleFiltersAllowed` in interface `PDFImage`