Save This Page
Home » openjdk-7 » java » awt » image » renderable » [javadoc | source]
    1   /*
    2    * Portions Copyright 1998-2000 Sun Microsystems, Inc.  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.  Sun designates this
    8    * particular file as subject to the "Classpath" exception as provided
    9    * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
   22    * CA 95054 USA or visit www.sun.com if you need additional information or
   23    * have any questions.
   24    */
   25   
   26   /* ********************************************************************
   27    **********************************************************************
   28    **********************************************************************
   29    *** COPYRIGHT (c) Eastman Kodak Company, 1997                      ***
   30    *** As  an unpublished  work pursuant to Title 17 of the United    ***
   31    *** States Code.  All rights reserved.                             ***
   32    **********************************************************************
   33    **********************************************************************
   34    **********************************************************************/
   35   
   36   package java.awt.image.renderable;
   37   import java.util.Vector;
   38   import java.awt.RenderingHints;
   39   import java.awt.image;
   40   
   41   /**
   42    * A RenderableImage is a common interface for rendering-independent
   43    * images (a notion which subsumes resolution independence).  That is,
   44    * images which are described and have operations applied to them
   45    * independent of any specific rendering of the image.  For example, a
   46    * RenderableImage can be rotated and cropped in
   47    * resolution-independent terms.  Then, it can be rendered for various
   48    * specific contexts, such as a draft preview, a high-quality screen
   49    * display, or a printer, each in an optimal fashion.
   50    *
   51    * <p> A RenderedImage is returned from a RenderableImage via the
   52    * createRendering() method, which takes a RenderContext.  The
   53    * RenderContext specifies how the RenderedImage should be
   54    * constructed.  Note that it is not possible to extract pixels
   55    * directly from a RenderableImage.
   56    *
   57    * <p> The createDefaultRendering() and createScaledRendering() methods are
   58    * convenience methods that construct an appropriate RenderContext
   59    * internally.  All of the rendering methods may return a reference to a
   60    * previously produced rendering.
   61    */
   62   public interface RenderableImage {
   63   
   64       /**
   65        * String constant that can be used to identify a property on
   66        * a RenderedImage obtained via the createRendering or
   67        * createScaledRendering methods.  If such a property exists,
   68        * the value of the propoery will be a RenderingHints object
   69        * specifying which hints were observed in creating the rendering.
   70        */
   71        static final String HINTS_OBSERVED = "HINTS_OBSERVED";
   72   
   73       /**
   74        * Returns a vector of RenderableImages that are the sources of
   75        * image data for this RenderableImage. Note that this method may
   76        * return an empty vector, to indicate that the image has no sources,
   77        * or null, to indicate that no information is available.
   78        *
   79        * @return a (possibly empty) Vector of RenderableImages, or null.
   80        */
   81       Vector<RenderableImage> getSources();
   82   
   83       /**
   84        * Gets a property from the property set of this image.
   85        * If the property name is not recognized, java.awt.Image.UndefinedProperty
   86        * will be returned.
   87        *
   88        * @param name the name of the property to get, as a String.
   89        * @return a reference to the property Object, or the value
   90        *         java.awt.Image.UndefinedProperty.
   91        */
   92       Object getProperty(String name);
   93   
   94       /**
   95        * Returns a list of names recognized by getProperty.
   96        * @return a list of property names.
   97        */
   98       String[] getPropertyNames();
   99   
  100       /**
  101        * Returns true if successive renderings (that is, calls to
  102        * createRendering() or createScaledRendering()) with the same arguments
  103        * may produce different results.  This method may be used to
  104        * determine whether an existing rendering may be cached and
  105        * reused.  It is always safe to return true.
  106        * @return <code>true</code> if successive renderings with the
  107        *         same arguments might produce different results;
  108        *         <code>false</code> otherwise.
  109        */
  110       boolean isDynamic();
  111   
  112       /**
  113        * Gets the width in user coordinate space.  By convention, the
  114        * usual width of a RenderableImage is equal to the image's aspect
  115        * ratio (width divided by height).
  116        *
  117        * @return the width of the image in user coordinates.
  118        */
  119       float getWidth();
  120   
  121       /**
  122        * Gets the height in user coordinate space.  By convention, the
  123        * usual height of a RenderedImage is equal to 1.0F.
  124        *
  125        * @return the height of the image in user coordinates.
  126        */
  127       float getHeight();
  128   
  129       /**
  130        * Gets the minimum X coordinate of the rendering-independent image data.
  131        * @return the minimum X coordinate of the rendering-independent image
  132        * data.
  133        */
  134       float getMinX();
  135   
  136       /**
  137        * Gets the minimum Y coordinate of the rendering-independent image data.
  138        * @return the minimum Y coordinate of the rendering-independent image
  139        * data.
  140        */
  141       float getMinY();
  142   
  143       /**
  144        * Creates a RenderedImage instance of this image with width w, and
  145        * height h in pixels.  The RenderContext is built automatically
  146        * with an appropriate usr2dev transform and an area of interest
  147        * of the full image.  All the rendering hints come from hints
  148        * passed in.
  149        *
  150        * <p> If w == 0, it will be taken to equal
  151        * Math.round(h*(getWidth()/getHeight())).
  152        * Similarly, if h == 0, it will be taken to equal
  153        * Math.round(w*(getHeight()/getWidth())).  One of
  154        * w or h must be non-zero or else an IllegalArgumentException
  155        * will be thrown.
  156        *
  157        * <p> The created RenderedImage may have a property identified
  158        * by the String HINTS_OBSERVED to indicate which RenderingHints
  159        * were used to create the image.  In addition any RenderedImages
  160        * that are obtained via the getSources() method on the created
  161        * RenderedImage may have such a property.
  162        *
  163        * @param w the width of rendered image in pixels, or 0.
  164        * @param h the height of rendered image in pixels, or 0.
  165        * @param hints a RenderingHints object containg hints.
  166        * @return a RenderedImage containing the rendered data.
  167        */
  168       RenderedImage createScaledRendering(int w, int h, RenderingHints hints);
  169   
  170       /**
  171        * Returnd a RenderedImage instance of this image with a default
  172        * width and height in pixels.  The RenderContext is built
  173        * automatically with an appropriate usr2dev transform and an area
  174        * of interest of the full image.  The rendering hints are
  175        * empty.  createDefaultRendering may make use of a stored
  176        * rendering for speed.
  177        *
  178        * @return a RenderedImage containing the rendered data.
  179        */
  180       RenderedImage createDefaultRendering();
  181   
  182       /**
  183        * Creates a RenderedImage that represented a rendering of this image
  184        * using a given RenderContext.  This is the most general way to obtain a
  185        * rendering of a RenderableImage.
  186        *
  187        * <p> The created RenderedImage may have a property identified
  188        * by the String HINTS_OBSERVED to indicate which RenderingHints
  189        * (from the RenderContext) were used to create the image.
  190        * In addition any RenderedImages
  191        * that are obtained via the getSources() method on the created
  192        * RenderedImage may have such a property.
  193        *
  194        * @param renderContext the RenderContext to use to produce the rendering.
  195        * @return a RenderedImage containing the rendered data.
  196        */
  197       RenderedImage createRendering(RenderContext renderContext);
  198   }

Save This Page
Home » openjdk-7 » java » awt » image » renderable » [javadoc | source]