1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 /** 18 * @author Rustem V. Rafikov 19 * @version $Revision: 1.3 $ 20 */ 21 22 package javax.imageio; 23 24 import javax.imageio.metadata.IIOMetadata; 25 import java.awt.image.RenderedImage; 26 import java.awt.image.Raster; 27 import java.awt.image.BufferedImage; 28 import java.util.List; 29 30 /** 31 * The IIOImage class combines the image, image's thumbnail and image's 32 * metadata. The image can be presented as RenderedImage or Raster object. 33 * 34 * @since Android 1.0 35 */ 36 public class IIOImage { 37 38 /** 39 * The image of this IIOImage. 40 */ 41 protected RenderedImage image; 42 43 /** 44 * The raster of this IIOImage. 45 */ 46 protected Raster raster; 47 48 /** 49 * The list with thumbnails associated with the image. 50 */ 51 protected List<? extends BufferedImage> thumbnails; 52 53 /** 54 * The metadata associated with the image. 55 */ 56 protected IIOMetadata metadata; 57 58 /** 59 * Instantiates a new IIOImage with the specified RenderedImage, list of 60 * thumbnails and metadata. 61 * 62 * @param image 63 * the image specified by RenderedImage. 64 * @param thumbnails 65 * the list of BufferedImage objects which represent the 66 * thumbnails of the image. 67 * @param metadata 68 * the metadata of the image. 69 */ 70 public IIOImage(RenderedImage image, List<? extends BufferedImage> thumbnails, 71 IIOMetadata metadata) { 72 if (image == null) { 73 throw new IllegalArgumentException("image should not be NULL"); 74 } 75 this.raster = null; 76 this.image = image; 77 this.thumbnails = thumbnails; 78 this.metadata = metadata; 79 } 80 81 /** 82 * Instantiates a new IIOImage with the specified Raster, list of thumbnails 83 * and metadata. 84 * 85 * @param raster 86 * the Raster. 87 * @param thumbnails 88 * the list of BufferedImage objects which represent the 89 * thumbnails of Raster data. 90 * @param metadata 91 * the metadata. 92 */ 93 public IIOImage(Raster raster, List<? extends BufferedImage> thumbnails, IIOMetadata metadata) { 94 if (raster == null) { 95 throw new IllegalArgumentException("raster should not be NULL"); 96 } 97 this.image = null; 98 this.raster = raster; 99 this.thumbnails = thumbnails; 100 this.metadata = metadata; 101 } 102 103 /** 104 * Gets the RenderedImage object or returns null if this IIOImage object is 105 * associated with a Raster. 106 * 107 * @return the RenderedImage object or null if this IIOImage object is 108 * associated with a Raster. 109 */ 110 public RenderedImage getRenderedImage() { 111 return image; 112 } 113 114 /** 115 * Sets the RenderedImage to this IIOImage object. 116 * 117 * @param image 118 * the RenderedImage to be set to this IIOImage. 119 */ 120 public void setRenderedImage(RenderedImage image) { 121 if (image == null) { 122 throw new IllegalArgumentException("image should not be NULL"); 123 } 124 raster = null; 125 this.image = image; 126 } 127 128 /** 129 * Returns true if the IIOImage object associated with a Raster, or false if 130 * it's associated with a RenderedImage. 131 * 132 * @return true, if the IIOImage object associated with a Raster, or false 133 * if it's associated with a RenderedImage. 134 */ 135 public boolean hasRaster() { 136 return raster != null; 137 } 138 139 /** 140 * Gets the Raster object or returns null if this IIOImage object is 141 * associated with a RenderedImage. 142 * 143 * @return the Raster or null if this IIOImage object is associated with a 144 * RenderedImage. 145 */ 146 public Raster getRaster() { 147 return raster; 148 } 149 150 /** 151 * Sets the Raster to the IIOImage. 152 * 153 * @param raster 154 * the new Raster to the IIOImage. 155 */ 156 public void setRaster(Raster raster) { 157 if (raster == null) { 158 throw new IllegalArgumentException("raster should not be NULL"); 159 } 160 image = null; 161 this.raster = raster; 162 } 163 164 /** 165 * Gets the number of thumbnails for this IIOImage. 166 * 167 * @return the number of thumbnails for this IIOImage. 168 */ 169 public int getNumThumbnails() { 170 return thumbnails != null ? thumbnails.size() : 0; 171 } 172 173 /** 174 * Gets the thumbnail with the specified index in the list. 175 * 176 * @param index 177 * the index of the thumbnail in the list. 178 * @return the thumbnail with the specified index in the list. 179 */ 180 public BufferedImage getThumbnail(int index) { 181 if (thumbnails != null) { 182 return thumbnails.get(index); 183 } 184 throw new IndexOutOfBoundsException("no thumbnails were set"); 185 } 186 187 /** 188 * Gets the list of thumbnails. 189 * 190 * @return the list of thumbnails. 191 */ 192 public List<? extends BufferedImage> getThumbnails() { 193 return thumbnails; 194 } 195 196 /** 197 * Sets the list of thumbnails images to this IIOImage object. 198 * 199 * @param thumbnails 200 * the list of BufferedImage which represent thumbnails. 201 */ 202 public void setThumbnails(List<? extends BufferedImage> thumbnails) { 203 this.thumbnails = thumbnails; 204 } 205 206 /** 207 * Gets the metadata of this IIOImage. 208 * 209 * @return the metadata of this IIOImage. 210 */ 211 public IIOMetadata getMetadata() { 212 return metadata; 213 } 214 215 /** 216 * Sets the metadata to this IIOImage object. 217 * 218 * @param metadata 219 * the IIOMetadata, or null. 220 */ 221 public void setMetadata(IIOMetadata metadata) { 222 this.metadata = metadata; 223 } 224 } 225