Package com.lightcrafts.media.jai.codecimpl

Source Code of com.lightcrafts.media.jai.codecimpl.CodecUtils

/*
* $RCSfile: CodecUtils.java,v $
*
* Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved.
*
* Use is subject to license terms.
*
* $Revision: 1.2 $
* $Date: 2006/08/22 00:12:04 $
* $State: Exp $
*/
package com.lightcrafts.media.jai.codecimpl;

import java.awt.image.RenderedImage;
import java.awt.image.SampleModel;
import java.awt.image.SinglePixelPackedSampleModel;
import java.io.IOException;
import java.lang.reflect.Method;

/**
* A class for utility functions for codecs.
*/
class CodecUtils {
    /**
     * The <code>initCause()</code> method of <code>IOException</code>
     * which is available from J2SE 1.4 onward.
     */
    static Method ioExceptionInitCause;

    static {
        try {
            Class c = Class.forName("java.io.IOException");
            ioExceptionInitCause =
                c.getMethod("initCause",
                            new Class[] {java.lang.Throwable.class});
        } catch(Exception e) {
            ioExceptionInitCause = null;
        }
    }

    /**
     * Returns <code>true</code> if and only if <code>im</code>
     * has a <code>SinglePixelPackedSampleModel</code> with a
     * sample size of at most 8 bits for each of its bands.
     *
     * @param src The <code>RenderedImage</code> to test.
     * @return Whether the image is byte-packed.
     */
    static final boolean isPackedByteImage(RenderedImage im) {
        SampleModel imageSampleModel = im.getSampleModel();

        if(imageSampleModel instanceof SinglePixelPackedSampleModel) {
            for(int i = 0; i < imageSampleModel.getNumBands(); i++) {
                if(imageSampleModel.getSampleSize(i) > 8) {
                    return false;
                }
            }

            return true;
        }

        return false;
    }

    /**
     * Converts the parameter exception to an <code>IOException</code>.
     */
    static final IOException toIOException(Exception cause) {
        IOException ioe;

        if(cause != null) {
            if(cause instanceof IOException) {
                ioe = (IOException)cause;
            } else if(ioExceptionInitCause != null) {
                ioe = new IOException(cause.getMessage());
                try {
                    ioExceptionInitCause.invoke(ioe, new Object[] {cause});
                } catch(Exception e2) {
                    // Ignore it ...
                }
            } else {
                ioe = new IOException(cause.getClass().getName()+": "+
                                      cause.getMessage());
            }
        } else {
            ioe = new IOException();
        }

        return ioe;
    }
}
TOP

Related Classes of com.lightcrafts.media.jai.codecimpl.CodecUtils

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.