org.apache.xmlgraphics.image.codec.util.ImageDecoderImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.apache.fop Show documentation
Show all versions of org.apache.fop Show documentation
The core maven build properties
The newest version!
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* $Id: ImageDecoderImpl.java 1732018 2016-02-24 04:51:06Z gadams $ */
package org.apache.xmlgraphics.image.codec.util;
import java.awt.image.Raster;
import java.awt.image.RenderedImage;
import java.io.IOException;
import java.io.InputStream;
/**
* A partial implementation of the ImageDecoder
interface
* useful for subclassing.
*
*/
public abstract class ImageDecoderImpl implements ImageDecoder {
/**
* The SeekableStream
associcted with this
* ImageEncoder
.
*/
protected SeekableStream input;
/**
* The ImageDecodeParam
object associated with this
* ImageEncoder
.
*/
protected ImageDecodeParam param;
/**
* Constructs an ImageDecoderImpl
with a given
* SeekableStream
and ImageDecodeParam
* instance.
*/
public ImageDecoderImpl(SeekableStream input,
ImageDecodeParam param) {
this.input = input;
this.param = param;
}
/**
* Constructs an ImageDecoderImpl
with a given
* InputStream
and ImageDecodeParam
* instance. The input
parameter will be used to
* construct a ForwardSeekableStream
; if the ability
* to seek backwards is required, the caller should construct
* an instance of SeekableStream
and
* make use of the other contructor.
*/
public ImageDecoderImpl(InputStream input,
ImageDecodeParam param) {
this.input = new ForwardSeekableStream(input);
this.param = param;
}
/**
* Returns the current parameters as an instance of the
* ImageDecodeParam
interface. Concrete
* implementations of this interface will return corresponding
* concrete implementations of the ImageDecodeParam
* interface. For example, a JPEGImageDecoder
will
* return an instance of JPEGDecodeParam
.
*/
public ImageDecodeParam getParam() {
return param;
}
/**
* Sets the current parameters to an instance of the
* ImageDecodeParam
interface. Concrete
* implementations of ImageDecoder
may throw a
* RuntimeException
if the param
* argument is not an instance of the appropriate subclass or
* subinterface. For example, a JPEGImageDecoder
* will expect param
to be an instance of
* JPEGDecodeParam
.
*/
public void setParam(ImageDecodeParam param) {
this.param = param;
}
/**
* Returns the SeekableStream
associated with
* this ImageDecoder
.
*/
public SeekableStream getInputStream() {
return input;
}
/**
* Returns the number of pages present in the current stream.
* By default, the return value is 1. Subclasses that deal with
* multi-page formats should override this method.
*/
public int getNumPages() throws IOException {
return 1;
}
/**
* Returns a Raster
that contains the decoded
* contents of the SeekableStream
associated
* with this ImageDecoder
. Only
* the first page of a multi-page image is decoded.
*/
public Raster decodeAsRaster() throws IOException {
return decodeAsRaster(0);
}
/**
* Returns a Raster
that contains the decoded
* contents of the SeekableStream
associated
* with this ImageDecoder
.
* The given page of a multi-page image is decoded. If
* the page does not exist, an IOException will be thrown.
* Page numbering begins at zero.
*
* @param page The page to be decoded.
*/
public Raster decodeAsRaster(int page) throws IOException {
RenderedImage im = decodeAsRenderedImage(page);
return im.getData();
}
/**
* Returns a RenderedImage
that contains the decoded
* contents of the SeekableStream
associated
* with this ImageDecoder
. Only
* the first page of a multi-page image is decoded.
*/
public RenderedImage decodeAsRenderedImage() throws IOException {
return decodeAsRenderedImage(0);
}
/**
* Returns a RenderedImage
that contains the decoded
* contents of the SeekableStream
associated
* with this ImageDecoder
.
* The given page of a multi-page image is decoded. If
* the page does not exist, an IOException will be thrown.
* Page numbering begins at zero.
*
* @param page The page to be decoded.
*/
public abstract RenderedImage decodeAsRenderedImage(int page)
throws IOException;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy