Package com.lightcrafts.image.libs

Source Code of com.lightcrafts.image.libs.InputStreamImageDataProvider

/* Copyright (C) 2005-2011 Fabio Riccardi */

package com.lightcrafts.image.libs;

import java.io.InputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;

/**
* An <code>InputStreamImageDataProvider</code> is-an
* {@link LCImageDataProvider} for getting image data from an
* {@link InputStream}.
*
* @author Paul J. Lucas [paul@lightcrafts.com]
*/
public final class InputStreamImageDataProvider
    implements LCImageDataProvider {

    ////////// public /////////////////////////////////////////////////////////

    /**
     * Construct an <code>InputStreamImageDataProvider</code>.
     *
     * @param stream The {@link InputStream} to get image data from.
     */
    public InputStreamImageDataProvider( InputStream stream ) {
        m_channel = Channels.newChannel( stream );
    }

    /**
     * Dispose of this <code>InputStreamImageDataProvider</code> and its
     * resources.
     */
    public synchronized void dispose() {
        if ( m_channel != null ) {
            final ReadableByteChannel temp = m_channel;
            m_channel = null;
            try {
                temp.close();
            }
            catch ( IOException e ) {
                e.printStackTrace();
            }
        }
    }

    /**
     * {@inheritDoc}
     */
    public int getImageData( ByteBuffer buf )
        throws IOException, LCImageLibException
    {
        buf.clear();
        return m_channel.read( buf );
    }

    ////////// protected //////////////////////////////////////////////////////

    protected void finalize() throws Throwable {
        dispose();
        super.finalize();
    }

    ////////// private ////////////////////////////////////////////////////////

    private ReadableByteChannel m_channel;
}
/* vim:set et sw=4 ts=4: */ 
TOP

Related Classes of com.lightcrafts.image.libs.InputStreamImageDataProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.