|  | /* | 
|  | *  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 javax.imageio.metadata.IIOMetadata; | 
|  | import java.awt.image.RenderedImage; | 
|  | import java.awt.image.Raster; | 
|  | import java.awt.image.BufferedImage; | 
|  | import java.util.List; | 
|  |  | 
|  | /** | 
|  | * The IIOImage class combines the image, image's thumbnail and image's | 
|  | * metadata. The image can be presented as RenderedImage or Raster object. | 
|  | * | 
|  | * @since Android 1.0 | 
|  | */ | 
|  | public class IIOImage { | 
|  |  | 
|  | /** | 
|  | * The image of this IIOImage. | 
|  | */ | 
|  | protected RenderedImage image; | 
|  |  | 
|  | /** | 
|  | * The raster of this IIOImage. | 
|  | */ | 
|  | protected Raster raster; | 
|  |  | 
|  | /** | 
|  | * The list with thumbnails associated with the image. | 
|  | */ | 
|  | protected List<? extends BufferedImage> thumbnails; | 
|  |  | 
|  | /** | 
|  | * The metadata associated with the image. | 
|  | */ | 
|  | protected IIOMetadata metadata; | 
|  |  | 
|  | /** | 
|  | * Instantiates a new IIOImage with the specified RenderedImage, list of | 
|  | * thumbnails and metadata. | 
|  | * | 
|  | * @param image | 
|  | *            the image specified by RenderedImage. | 
|  | * @param thumbnails | 
|  | *            the list of BufferedImage objects which represent the | 
|  | *            thumbnails of the image. | 
|  | * @param metadata | 
|  | *            the metadata of the image. | 
|  | */ | 
|  | public IIOImage(RenderedImage image, List<? extends BufferedImage> thumbnails, | 
|  | IIOMetadata metadata) { | 
|  | if (image == null) { | 
|  | throw new IllegalArgumentException("image should not be NULL"); | 
|  | } | 
|  | this.raster = null; | 
|  | this.image = image; | 
|  | this.thumbnails = thumbnails; | 
|  | this.metadata = metadata; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Instantiates a new IIOImage with the specified Raster, list of thumbnails | 
|  | * and metadata. | 
|  | * | 
|  | * @param raster | 
|  | *            the Raster. | 
|  | * @param thumbnails | 
|  | *            the list of BufferedImage objects which represent the | 
|  | *            thumbnails of Raster data. | 
|  | * @param metadata | 
|  | *            the metadata. | 
|  | */ | 
|  | public IIOImage(Raster raster, List<? extends BufferedImage> thumbnails, IIOMetadata metadata) { | 
|  | if (raster == null) { | 
|  | throw new IllegalArgumentException("raster should not be NULL"); | 
|  | } | 
|  | this.image = null; | 
|  | this.raster = raster; | 
|  | this.thumbnails = thumbnails; | 
|  | this.metadata = metadata; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Gets the RenderedImage object or returns null if this IIOImage object is | 
|  | * associated with a Raster. | 
|  | * | 
|  | * @return the RenderedImage object or null if this IIOImage object is | 
|  | *         associated with a Raster. | 
|  | */ | 
|  | public RenderedImage getRenderedImage() { | 
|  | return image; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Sets the RenderedImage to this IIOImage object. | 
|  | * | 
|  | * @param image | 
|  | *            the RenderedImage to be set to this IIOImage. | 
|  | */ | 
|  | public void setRenderedImage(RenderedImage image) { | 
|  | if (image == null) { | 
|  | throw new IllegalArgumentException("image should not be NULL"); | 
|  | } | 
|  | raster = null; | 
|  | this.image = image; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Returns true if the IIOImage object associated with a Raster, or false if | 
|  | * it's associated with a RenderedImage. | 
|  | * | 
|  | * @return true, if the IIOImage object associated with a Raster, or false | 
|  | *         if it's associated with a RenderedImage. | 
|  | */ | 
|  | public boolean hasRaster() { | 
|  | return raster != null; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Gets the Raster object or returns null if this IIOImage object is | 
|  | * associated with a RenderedImage. | 
|  | * | 
|  | * @return the Raster or null if this IIOImage object is associated with a | 
|  | *         RenderedImage. | 
|  | */ | 
|  | public Raster getRaster() { | 
|  | return raster; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Sets the Raster to the IIOImage. | 
|  | * | 
|  | * @param raster | 
|  | *            the new Raster to the IIOImage. | 
|  | */ | 
|  | public void setRaster(Raster raster) { | 
|  | if (raster == null) { | 
|  | throw new IllegalArgumentException("raster should not be NULL"); | 
|  | } | 
|  | image = null; | 
|  | this.raster = raster; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Gets the number of thumbnails for this IIOImage. | 
|  | * | 
|  | * @return the number of thumbnails for this IIOImage. | 
|  | */ | 
|  | public int getNumThumbnails() { | 
|  | return thumbnails != null ? thumbnails.size() : 0; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Gets the thumbnail with the specified index in the list. | 
|  | * | 
|  | * @param index | 
|  | *            the index of the thumbnail in the list. | 
|  | * @return the thumbnail with the specified index in the list. | 
|  | */ | 
|  | public BufferedImage getThumbnail(int index) { | 
|  | if (thumbnails != null) { | 
|  | return thumbnails.get(index); | 
|  | } | 
|  | throw new IndexOutOfBoundsException("no thumbnails were set"); | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Gets the list of thumbnails. | 
|  | * | 
|  | * @return the list of thumbnails. | 
|  | */ | 
|  | public List<? extends BufferedImage> getThumbnails() { | 
|  | return thumbnails; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Sets the list of thumbnails images to this IIOImage object. | 
|  | * | 
|  | * @param thumbnails | 
|  | *            the list of BufferedImage which represent thumbnails. | 
|  | */ | 
|  | public void setThumbnails(List<? extends BufferedImage> thumbnails) { | 
|  | this.thumbnails = thumbnails; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Gets the metadata of this IIOImage. | 
|  | * | 
|  | * @return the metadata of this IIOImage. | 
|  | */ | 
|  | public IIOMetadata getMetadata() { | 
|  | return metadata; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Sets the metadata to this IIOImage object. | 
|  | * | 
|  | * @param metadata | 
|  | *            the IIOMetadata, or null. | 
|  | */ | 
|  | public void setMetadata(IIOMetadata metadata) { | 
|  | this.metadata = metadata; | 
|  | } | 
|  | } |