diff -r d95bc71a5732 -r 7952521a4ad3 jdk/src/share/classes/java/awt/image/renderable/RenderableImage.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/share/classes/java/awt/image/renderable/RenderableImage.java Thu Apr 10 16:28:45 2008 -0700 @@ -0,0 +1,198 @@ +/* + * Portions Copyright 1998-2000 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* ******************************************************************** + ********************************************************************** + ********************************************************************** + *** COPYRIGHT (c) Eastman Kodak Company, 1997 *** + *** As an unpublished work pursuant to Title 17 of the United *** + *** States Code. All rights reserved. *** + ********************************************************************** + ********************************************************************** + **********************************************************************/ + +package java.awt.image.renderable; +import java.util.Vector; +import java.awt.RenderingHints; +import java.awt.image.*; + +/** + * A RenderableImage is a common interface for rendering-independent + * images (a notion which subsumes resolution independence). That is, + * images which are described and have operations applied to them + * independent of any specific rendering of the image. For example, a + * RenderableImage can be rotated and cropped in + * resolution-independent terms. Then, it can be rendered for various + * specific contexts, such as a draft preview, a high-quality screen + * display, or a printer, each in an optimal fashion. + * + *
A RenderedImage is returned from a RenderableImage via the + * createRendering() method, which takes a RenderContext. The + * RenderContext specifies how the RenderedImage should be + * constructed. Note that it is not possible to extract pixels + * directly from a RenderableImage. + * + *
The createDefaultRendering() and createScaledRendering() methods are
+ * convenience methods that construct an appropriate RenderContext
+ * internally. All of the rendering methods may return a reference to a
+ * previously produced rendering.
+ */
+public interface RenderableImage {
+
+ /**
+ * String constant that can be used to identify a property on
+ * a RenderedImage obtained via the createRendering or
+ * createScaledRendering methods. If such a property exists,
+ * the value of the propoery will be a RenderingHints object
+ * specifying which hints were observed in creating the rendering.
+ */
+ static final String HINTS_OBSERVED = "HINTS_OBSERVED";
+
+ /**
+ * Returns a vector of RenderableImages that are the sources of
+ * image data for this RenderableImage. Note that this method may
+ * return an empty vector, to indicate that the image has no sources,
+ * or null, to indicate that no information is available.
+ *
+ * @return a (possibly empty) Vector of RenderableImages, or null.
+ */
+ Vector If w == 0, it will be taken to equal
+ * Math.round(h*(getWidth()/getHeight())).
+ * Similarly, if h == 0, it will be taken to equal
+ * Math.round(w*(getHeight()/getWidth())). One of
+ * w or h must be non-zero or else an IllegalArgumentException
+ * will be thrown.
+ *
+ * The created RenderedImage may have a property identified
+ * by the String HINTS_OBSERVED to indicate which RenderingHints
+ * were used to create the image. In addition any RenderedImages
+ * that are obtained via the getSources() method on the created
+ * RenderedImage may have such a property.
+ *
+ * @param w the width of rendered image in pixels, or 0.
+ * @param h the height of rendered image in pixels, or 0.
+ * @param hints a RenderingHints object containg hints.
+ * @return a RenderedImage containing the rendered data.
+ */
+ RenderedImage createScaledRendering(int w, int h, RenderingHints hints);
+
+ /**
+ * Returnd a RenderedImage instance of this image with a default
+ * width and height in pixels. The RenderContext is built
+ * automatically with an appropriate usr2dev transform and an area
+ * of interest of the full image. The rendering hints are
+ * empty. createDefaultRendering may make use of a stored
+ * rendering for speed.
+ *
+ * @return a RenderedImage containing the rendered data.
+ */
+ RenderedImage createDefaultRendering();
+
+ /**
+ * Creates a RenderedImage that represented a rendering of this image
+ * using a given RenderContext. This is the most general way to obtain a
+ * rendering of a RenderableImage.
+ *
+ * The created RenderedImage may have a property identified
+ * by the String HINTS_OBSERVED to indicate which RenderingHints
+ * (from the RenderContext) were used to create the image.
+ * In addition any RenderedImages
+ * that are obtained via the getSources() method on the created
+ * RenderedImage may have such a property.
+ *
+ * @param renderContext the RenderContext to use to produce the rendering.
+ * @return a RenderedImage containing the rendered data.
+ */
+ RenderedImage createRendering(RenderContext renderContext);
+}
true
if successive renderings with the
+ * same arguments might produce different results;
+ * false
otherwise.
+ */
+ boolean isDynamic();
+
+ /**
+ * Gets the width in user coordinate space. By convention, the
+ * usual width of a RenderableImage is equal to the image's aspect
+ * ratio (width divided by height).
+ *
+ * @return the width of the image in user coordinates.
+ */
+ float getWidth();
+
+ /**
+ * Gets the height in user coordinate space. By convention, the
+ * usual height of a RenderedImage is equal to 1.0F.
+ *
+ * @return the height of the image in user coordinates.
+ */
+ float getHeight();
+
+ /**
+ * Gets the minimum X coordinate of the rendering-independent image data.
+ * @return the minimum X coordinate of the rendering-independent image
+ * data.
+ */
+ float getMinX();
+
+ /**
+ * Gets the minimum Y coordinate of the rendering-independent image data.
+ * @return the minimum Y coordinate of the rendering-independent image
+ * data.
+ */
+ float getMinY();
+
+ /**
+ * Creates a RenderedImage instance of this image with width w, and
+ * height h in pixels. The RenderContext is built automatically
+ * with an appropriate usr2dev transform and an area of interest
+ * of the full image. All the rendering hints come from hints
+ * passed in.
+ *
+ *