/* * 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. */ /** * @author Rustem V. Rafikov * @version $Revision: 1.3 $ */ package javax.imageio; import java.awt.image.ColorModel; import java.awt.image.SampleModel; import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; import java.awt.color.ColorSpace; /** * The ImageTypeSpecifier class performs conversion operations on the * SampleModel and the ColorModel of an image. * * @since Android 1.0 */ public class ImageTypeSpecifier { /** * The ColorModel of this ImageTypeSpecifier. */ protected ColorModel colorModel; /** * The SampleModel of this ImageTypeSpecifier. */ protected SampleModel sampleModel; /** * Instantiates a new ImageTypeSpecifier with the specified ColorModel and * SampleModel objects. * * @param colorModel * the ColorModel. * @param sampleModel * the SampleModel. */ public ImageTypeSpecifier(ColorModel colorModel, SampleModel sampleModel) { if (colorModel == null) { throw new IllegalArgumentException("color model should not be NULL"); } if (sampleModel == null) { throw new IllegalArgumentException("sample model should not be NULL"); } if (!colorModel.isCompatibleSampleModel(sampleModel)) { throw new IllegalArgumentException("color and sample models are not compatible"); } this.colorModel = colorModel; this.sampleModel = sampleModel; } /** * Instantiates a new ImageTypeSpecifier using the specified RenderedImage. * * @param renderedImage * the RenderedImage. */ public ImageTypeSpecifier(RenderedImage renderedImage) { if (renderedImage == null) { throw new IllegalArgumentException("image should not be NULL"); } this.colorModel = renderedImage.getColorModel(); this.sampleModel = renderedImage.getSampleModel(); } /** * Creates an ImageTypeSpecifier with the specified DirectColorModel and a * packed SampleModel. * * @param colorSpace * the ColorSpace. * @param redMask * the red mask. * @param greenMask * the green mask. * @param blueMask * the blue mask. * @param alphaMask * the alpha mask. * @param transferType * the transfer type. * @param isAlphaPremultiplied * the parameter indicates if the color channel is pre-multiplied * by alpha. * @return the ImageTypeSpecifier. */ public static ImageTypeSpecifier createPacked(ColorSpace colorSpace, int redMask, int greenMask, int blueMask, int alphaMask, int transferType, boolean isAlphaPremultiplied) { throw new UnsupportedOperationException("Not supported yet"); } /** * Creates an ImageTypeSpecifier with specified ComponentColorModel and a * PixelInterleavedSampleModel. * * @param colorSpace * the ColorSpace. * @param bandOffsets * the band offsets. * @param dataType * the data type. * @param hasAlpha * the parameter indicates if alpha channel is needed. * @param isAlphaPremultiplied * the parameter indicates if the color channel is pre-multiplied * by alpha. * @return the ImageTypeSpecifier. */ public static ImageTypeSpecifier createInterleaved(ColorSpace colorSpace, int[] bandOffsets, int dataType, boolean hasAlpha, boolean isAlphaPremultiplied) { throw new UnsupportedOperationException("Not supported yet"); } /** * Creates a ImageTypeSpecifier for a image with a BandedSampleModel and a * ComponentColorModel. * * @param colorSpace * the ColorSpace. * @param bankIndices * the bank indices. * @param bandOffsets * the band offsets. * @param dataType * the data type. * @param hasAlpha * the parameter indicates a presence of alpha channel. * @param isAlphaPremultiplied * the parameter indicates whether or not color channel is alpha * pre-multiplied. * @return the image type specifier */ public static ImageTypeSpecifier createBanded(ColorSpace colorSpace, int[] bankIndices, int[] bandOffsets, int dataType, boolean hasAlpha, boolean isAlphaPremultiplied) { throw new UnsupportedOperationException("Not supported yet"); } /** * Creates a ImageTypeSpecifier for a grayscale image. * * @param bits * the number of bits per gray value. * @param dataType * the data type. * @param isSigned * a signed flag. * @return the ImageTypeSpecifier. */ public static ImageTypeSpecifier createGrayscale(int bits, int dataType, boolean isSigned) { throw new UnsupportedOperationException("Not supported yet"); } /** * Creates a ImageTypeSpecifier for a grayscale image. * * @param bits * the number of bits per gray value. * @param dataType * the data type. * @param isSigned * a signed flag. * @param isAlphaPremultiplied * the parameter indicates if color channel is pre-multiplied by * alpha, or not. * @return the ImageTypeSpecifier. */ public static ImageTypeSpecifier createGrayscale(int bits, int dataType, boolean isSigned, boolean isAlphaPremultiplied) { throw new UnsupportedOperationException("Not supported yet"); } /** * Creates a ImageTypeSpecifier with the indexed image format. * * @param redLUT * the red values of indices. * @param greenLUT * the green values of indices. * @param blueLUT * the blue values of indices. * @param alphaLUT * the alpha values of indices. * @param bits * the bits number for each index. * @param dataType * the data type. * @return the ImageTypeSpecifier. */ public static ImageTypeSpecifier createIndexed(byte[] redLUT, byte[] greenLUT, byte[] blueLUT, byte[] alphaLUT, int bits, int dataType) { throw new UnsupportedOperationException("Not supported yet"); } /** * Creates the ImageTypeSpecifier from the specified buffered image type. * * @param bufferedImageType * the buffered image type. * @return the ImageTypeSpecifier. */ public static ImageTypeSpecifier createFromBufferedImageType(int bufferedImageType) { throw new UnsupportedOperationException("Not supported yet"); } /** * Creates the ImageTypeSpecifier from the specified RenderedImage. * * @param image * the RenderedImage. * @return the ImageTypeSpecifier. */ public static ImageTypeSpecifier createFromRenderedImage(RenderedImage image) { if (null == image) { throw new IllegalArgumentException("image should not be NULL"); } return new ImageTypeSpecifier(image); } /** * Gets the BufferedImage type. * * @return the BufferedImage type. */ public int getBufferedImageType() { throw new UnsupportedOperationException("Not supported yet"); } /** * Gets the number of components. * * @return the number of components. */ public int getNumComponents() { return colorModel.getNumComponents(); } /** * Gets the number of bands. * * @return the number of bands. */ public int getNumBands() { return sampleModel.getNumBands(); } /** * Gets the number of bits per the specified band. * * @param band * the index of band. * @return the number of bits per the specified band. */ public int getBitsPerBand(int band) { if (band < 0 || band >= getNumBands()) { throw new IllegalArgumentException(); } return sampleModel.getSampleSize(band); } /** * Gets the SampleModel associated with this ImageTypeSpecifier. * * @return the SampleModel associated with this ImageTypeSpecifier. */ public SampleModel getSampleModel() { return sampleModel; } /** * Gets a compatible SampleModel with the specified width and height. * * @param width * the width. * @param height * the height. * @return the SampleModel. */ public SampleModel getSampleModel(int width, int height) { if ((long)width * height > Integer.MAX_VALUE) { throw new IllegalArgumentException("width * height > Integer.MAX_VALUE"); } return sampleModel.createCompatibleSampleModel(width, height); } /** * Gets the ColorModel associated with this ImageTypeSpecifier. * * @return the ColorModel associated with this ImageTypeSpecifier. */ public ColorModel getColorModel() { return colorModel; } /** * Creates the BufferedImage with the specified width and height and the * ColorMadel and SampleModel which are specified by this * ImageTypeSpecifier. * * @param width * the width of the BufferedImage. * @param height * the height of the BufferedImage. * @return the BufferedImage. */ public BufferedImage createBufferedImage(int width, int height) { throw new UnsupportedOperationException("Not supported yet"); } /** * Compares this ImageTypeSpecifier object with the specified object. * * @param o * the Object to be compared. * @return true, if the object is an ImageTypeSpecifier with the same data * as this ImageTypeSpecifier, false otherwise. */ @Override public boolean equals(Object o) { boolean rt = false; if (o instanceof ImageTypeSpecifier) { ImageTypeSpecifier ts = (ImageTypeSpecifier)o; rt = colorModel.equals(ts.colorModel) && sampleModel.equals(ts.sampleModel); } return rt; } }