History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/javax/imageio/IIOImage.java (1 of 18352 files). Show all

Unified · Split

java/pkg/javax/imageio/IIOImage.java+322−0
@@ -0,0 +1,322 @@
1+/*
2+ * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+
26+package javax.imageio;
27+
28+import java.awt.image.BufferedImage;
29+import java.awt.image.Raster;
30+import java.awt.image.RenderedImage;
31+import java.util.List;
32+import javax.imageio.metadata.IIOMetadata;
33+
34+/**
35+ * A simple container class to aggregate an image, a set of
36+ * thumbnail (preview) images, and an object representing metadata
37+ * associated with the image.
38+ *
39+ * <p> The image data may take the form of either a
40+ * <code>RenderedImage</code>, or a <code>Raster</code>. Reader
41+ * methods that return an <code>IIOImage</code> will always return a
42+ * <code>BufferedImage</code> using the <code>RenderedImage</code>
43+ * reference. Writer methods that accept an <code>IIOImage</code>
44+ * will always accept a <code>RenderedImage</code>, and may optionally
45+ * accept a <code>Raster</code>.
46+ *
47+ * <p> Exactly one of <code>getRenderedImage</code> and
48+ * <code>getRaster</code> will return a non-<code>null</code> value.
49+ * Subclasses are responsible for ensuring this behavior.
50+ *
51+ * @see ImageReader#readAll(int, ImageReadParam)
52+ * @see ImageReader#readAll(java.util.Iterator)
53+ * @see ImageWriter#write(javax.imageio.metadata.IIOMetadata,
54+ * IIOImage, ImageWriteParam)
55+ * @see ImageWriter#write(IIOImage)
56+ * @see ImageWriter#writeToSequence(IIOImage, ImageWriteParam)
57+ * @see ImageWriter#writeInsert(int, IIOImage, ImageWriteParam)
58+ *
59+ */
60+public class IIOImage {
61+
62+ /**
63+ * The <code>RenderedImage</code> being referenced.
64+ */
65+ protected RenderedImage image;
66+
67+ /**
68+ * The <code>Raster</code> being referenced.
69+ */
70+ protected Raster raster;
71+
72+ /**
73+ * A <code>List</code> of <code>BufferedImage</code> thumbnails,
74+ * or <code>null</code>. Non-<code>BufferedImage</code> objects
75+ * must not be stored in this <code>List</code>.
76+ */
77+ protected List<? extends BufferedImage> thumbnails = null;
78+
79+ /**
80+ * An <code>IIOMetadata</code> object containing metadata
81+ * associated with the image.
82+ */
83+ protected IIOMetadata metadata;
84+
85+ /**
86+ * Constructs an <code>IIOImage</code> containing a
87+ * <code>RenderedImage</code>, and thumbnails and metadata
88+ * associated with it.
89+ *
90+ * <p> All parameters are stored by reference.
91+ *
92+ * <p> The <code>thumbnails</code> argument must either be
93+ * <code>null</code> or contain only <code>BufferedImage</code>
94+ * objects.
95+ *
96+ * @param image a <code>RenderedImage</code>.
97+ * @param thumbnails a <code>List</code> of <code>BufferedImage</code>s,
98+ * or <code>null</code>.
99+ * @param metadata an <code>IIOMetadata</code> object, or
100+ * <code>null</code>.
101+ *
102+ * @exception IllegalArgumentException if <code>image</code> is
103+ * <code>null</code>.
104+ */
105+ public IIOImage(RenderedImage image,
106+ List<? extends BufferedImage> thumbnails,
107+ IIOMetadata metadata) {
108+ if (image == null) {
109+ throw new IllegalArgumentException("image == null!");
110+ }
111+ this.image = image;
112+ this.raster = null;
113+ this.thumbnails = thumbnails;
114+ this.metadata = metadata;
115+ }
116+
117+ /**
118+ * Constructs an <code>IIOImage</code> containing a
119+ * <code>Raster</code>, and thumbnails and metadata
120+ * associated with it.
121+ *
122+ * <p> All parameters are stored by reference.
123+ *
124+ * @param raster a <code>Raster</code>.
125+ * @param thumbnails a <code>List</code> of <code>BufferedImage</code>s,
126+ * or <code>null</code>.
127+ * @param metadata an <code>IIOMetadata</code> object, or
128+ * <code>null</code>.
129+ *
130+ * @exception IllegalArgumentException if <code>raster</code> is
131+ * <code>null</code>.
132+ */
133+ public IIOImage(Raster raster,
134+ List<? extends BufferedImage> thumbnails,
135+ IIOMetadata metadata) {
136+ if (raster == null) {
137+ throw new IllegalArgumentException("raster == null!");
138+ }
139+ this.raster = raster;
140+ this.image = null;
141+ this.thumbnails = thumbnails;
142+ this.metadata = metadata;
143+ }
144+
145+ /**
146+ * Returns the currently set <code>RenderedImage</code>, or
147+ * <code>null</code> if only a <code>Raster</code> is available.
148+ *
149+ * @return a <code>RenderedImage</code>, or <code>null</code>.
150+ *
151+ * @see #setRenderedImage
152+ */
153+ public RenderedImage getRenderedImage() {
154+ synchronized(this) {
155+ return image;
156+ }
157+ }
158+
159+ /**
160+ * Sets the current <code>RenderedImage</code>. The value is
161+ * stored by reference. Any existing <code>Raster</code> is
162+ * discarded.
163+ *
164+ * @param image a <code>RenderedImage</code>.
165+ *
166+ * @exception IllegalArgumentException if <code>image</code> is
167+ * <code>null</code>.
168+ *
169+ * @see #getRenderedImage
170+ */
171+ public void setRenderedImage(RenderedImage image) {
172+ synchronized(this) {
173+ if (image == null) {
174+ throw new IllegalArgumentException("image == null!");
175+ }
176+ this.image = image;
177+ this.raster = null;
178+ }
179+ }
180+
181+ /**
182+ * Returns <code>true</code> if this <code>IIOImage</code> stores
183+ * a <code>Raster</code> rather than a <code>RenderedImage</code>.
184+ *
185+ * @return <code>true</code> if a <code>Raster</code> is
186+ * available.
187+ */
188+ public boolean hasRaster() {
189+ synchronized(this) {
190+ return (raster != null);
191+ }
192+ }
193+
194+ /**
195+ * Returns the currently set <code>Raster</code>, or
196+ * <code>null</code> if only a <code>RenderedImage</code> is
197+ * available.
198+ *
199+ * @return a <code>Raster</code>, or <code>null</code>.
200+ *
201+ * @see #setRaster
202+ */
203+ public Raster getRaster() {
204+ synchronized(this) {
205+ return raster;
206+ }
207+ }
208+
209+ /**
210+ * Sets the current <code>Raster</code>. The value is
211+ * stored by reference. Any existing <code>RenderedImage</code> is
212+ * discarded.
213+ *
214+ * @param raster a <code>Raster</code>.
215+ *
216+ * @exception IllegalArgumentException if <code>raster</code> is
217+ * <code>null</code>.
218+ *
219+ * @see #getRaster
220+ */
221+ public void setRaster(Raster raster) {
222+ synchronized(this) {
223+ if (raster == null) {
224+ throw new IllegalArgumentException("raster == null!");
225+ }
226+ this.raster = raster;
227+ this.image = null;
228+ }
229+ }
230+
231+ /**
232+ * Returns the number of thumbnails stored in this
233+ * <code>IIOImage</code>.
234+ *
235+ * @return the number of thumbnails, as an <code>int</code>.
236+ */
237+ public int getNumThumbnails() {
238+ return thumbnails == null ? 0 : thumbnails.size();
239+ }
240+
241+ /**
242+ * Returns a thumbnail associated with the main image.
243+ *
244+ * @param index the index of the desired thumbnail image.
245+ *
246+ * @return a thumbnail image, as a <code>BufferedImage</code>.
247+ *
248+ * @exception IndexOutOfBoundsException if the supplied index is
249+ * negative or larger than the largest valid index.
250+ * @exception ClassCastException if a
251+ * non-<code>BufferedImage</code> object is encountered in the
252+ * list of thumbnails at the given index.
253+ *
254+ * @see #getThumbnails
255+ * @see #setThumbnails
256+ */
257+ public BufferedImage getThumbnail(int index) {
258+ if (thumbnails == null) {
259+ throw new IndexOutOfBoundsException("No thumbnails available!");
260+ }
261+ return (BufferedImage)thumbnails.get(index);
262+ }
263+
264+ /**
265+ * Returns the current <code>List</code> of thumbnail
266+ * <code>BufferedImage</code>s, or <code>null</code> if none is
267+ * set. A live reference is returned.
268+ *
269+ * @return the current <code>List</code> of
270+ * <code>BufferedImage</code> thumbnails, or <code>null</code>.
271+ *
272+ * @see #getThumbnail(int)
273+ * @see #setThumbnails
274+ */
275+ public List<? extends BufferedImage> getThumbnails() {
276+ return thumbnails;
277+ }
278+
279+ /**
280+ * Sets the list of thumbnails to a new <code>List</code> of
281+ * <code>BufferedImage</code>s, or to <code>null</code>. The
282+ * reference to the previous <code>List</code> is discarded.
283+ *
284+ * <p> The <code>thumbnails</code> argument must either be
285+ * <code>null</code> or contain only <code>BufferedImage</code>
286+ * objects.
287+ *
288+ * @param thumbnails a <code>List</code> of
289+ * <code>BufferedImage</code> thumbnails, or <code>null</code>.
290+ *
291+ * @see #getThumbnail(int)
292+ * @see #getThumbnails
293+ */
294+ public void setThumbnails(List<? extends BufferedImage> thumbnails) {
295+ this.thumbnails = thumbnails;
296+ }
297+
298+ /**
299+ * Returns a reference to the current <code>IIOMetadata</code>
300+ * object, or <code>null</code> is none is set.
301+ *
302+ * @return an <code>IIOMetadata</code> object, or <code>null</code>.
303+ *
304+ * @see #setMetadata
305+ */
306+ public IIOMetadata getMetadata() {
307+ return metadata;
308+ }
309+
310+ /**
311+ * Sets the <code>IIOMetadata</code> to a new object, or
312+ * <code>null</code>.
313+ *
314+ * @param metadata an <code>IIOMetadata</code> object, or
315+ * <code>null</code>.
316+ *
317+ * @see #getMetadata
318+ */
319+ public void setMetadata(IIOMetadata metadata) {
320+ this.metadata = metadata;
321+ }
322+}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t