/* |
|
* Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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. Oracle designates this |
|
* particular file as subject to the "Classpath" exception as provided |
|
* by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
|
* or visit www.oracle.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. |
|
* |
|
* <p> 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. |
|
* |
|
* <p> 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 property 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<RenderableImage> getSources(); |
|
/** |
|
* Gets a property from the property set of this image. |
|
* If the property name is not recognized, java.awt.Image.UndefinedProperty |
|
* will be returned. |
|
* |
|
* @param name the name of the property to get, as a String. |
|
* @return a reference to the property Object, or the value |
|
* java.awt.Image.UndefinedProperty. |
|
*/ |
|
Object getProperty(String name); |
|
/** |
|
* Returns a list of names recognized by getProperty. |
|
* @return a list of property names. |
|
*/ |
|
String[] getPropertyNames(); |
|
/** |
|
* Returns true if successive renderings (that is, calls to |
|
* createRendering() or createScaledRendering()) with the same arguments |
|
* may produce different results. This method may be used to |
|
* determine whether an existing rendering may be cached and |
|
* reused. It is always safe to return true. |
|
* @return <code>true</code> if successive renderings with the |
|
* same arguments might produce different results; |
|
* <code>false</code> 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. |
|
* |
|
* <p> 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. |
|
* |
|
* <p> 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 containing 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. |
|
* |
|
* <p> 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); |
|
} |