All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.xmlgraphics.image.codec.util.ImageDecoderImpl Maven / Gradle / Ivy

Go to download

Tool to convert CSV and XLS to XML, to transform XML and to convert XML to CSV, HTML, other text files, PDF etc., useful as command line tool and integrated in other projects.

There is a newer version: 3.119
Show 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 750418 2009-03-05 11:03:54Z vhennebert $ */

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 - 2024 Weber Informatics LLC | Privacy Policy