0N/A/*
2362N/A * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
2362N/A * published by the Free Software Foundation. Oracle designates this
0N/A * particular file as subject to the "Classpath" exception as provided
2362N/A * by Oracle in the LICENSE file that accompanied this code.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A * or visit www.oracle.com if you need additional information or have any
2362N/A * questions.
0N/A */
0N/A
0N/Apackage java.awt.image;
0N/A
0N/Aimport java.awt.geom.Rectangle2D;
0N/Aimport java.awt.geom.Point2D;
0N/Aimport java.awt.RenderingHints;
0N/A
0N/A/**
0N/A * This interface describes single-input/single-output
0N/A * operations performed on <CODE>BufferedImage</CODE> objects.
0N/A * It is implemented by <CODE>AffineTransformOp</CODE>,
0N/A * <CODE>ConvolveOp</CODE>, <CODE>ColorConvertOp</CODE>, <CODE>RescaleOp</CODE>,
0N/A * and <CODE>LookupOp</CODE>. These objects can be passed into
0N/A * a <CODE>BufferedImageFilter</CODE> to operate on a
0N/A * <CODE>BufferedImage</CODE> in the
0N/A * ImageProducer-ImageFilter-ImageConsumer paradigm.
0N/A * <p>
0N/A * Classes that implement this
0N/A * interface must specify whether or not they allow in-place filtering--
0N/A * filter operations where the source object is equal to the destination
0N/A * object.
0N/A * <p>
0N/A * This interface cannot be used to describe more sophisticated operations
0N/A * such as those that take multiple sources. Note that this restriction also
0N/A * means that the values of the destination pixels prior to the operation are
0N/A * not used as input to the filter operation.
0N/A
0N/A * @see BufferedImage
0N/A * @see BufferedImageFilter
0N/A * @see AffineTransformOp
0N/A * @see BandCombineOp
0N/A * @see ColorConvertOp
0N/A * @see ConvolveOp
0N/A * @see LookupOp
0N/A * @see RescaleOp
0N/A */
0N/Apublic interface BufferedImageOp {
0N/A /**
0N/A * Performs a single-input/single-output operation on a
0N/A * <CODE>BufferedImage</CODE>.
0N/A * If the color models for the two images do not match, a color
0N/A * conversion into the destination color model is performed.
0N/A * If the destination image is null,
0N/A * a <CODE>BufferedImage</CODE> with an appropriate <CODE>ColorModel</CODE>
0N/A * is created.
0N/A * <p>
0N/A * An <CODE>IllegalArgumentException</CODE> may be thrown if the source
0N/A * and/or destination image is incompatible with the types of images $
0N/A * allowed by the class implementing this filter.
0N/A *
0N/A * @param src The <CODE>BufferedImage</CODE> to be filtered
0N/A * @param dest The <CODE>BufferedImage</CODE> in which to store the results$
0N/A *
0N/A * @return The filtered <CODE>BufferedImage</CODE>.
0N/A *
0N/A * @throws IllegalArgumentException If the source and/or destination
0N/A * image is not compatible with the types of images allowed by the class
0N/A * implementing this filter.
0N/A */
0N/A public BufferedImage filter(BufferedImage src, BufferedImage dest);
0N/A
0N/A /**
0N/A * Returns the bounding box of the filtered destination image.
0N/A * An <CODE>IllegalArgumentException</CODE> may be thrown if the source
0N/A * image is incompatible with the types of images allowed
0N/A * by the class implementing this filter.
0N/A *
0N/A * @param src The <CODE>BufferedImage</CODE> to be filtered
0N/A *
0N/A * @return The <CODE>Rectangle2D</CODE> representing the destination
0N/A * image's bounding box.
0N/A */
0N/A public Rectangle2D getBounds2D (BufferedImage src);
0N/A
0N/A /**
0N/A * Creates a zeroed destination image with the correct size and number of
0N/A * bands.
0N/A * An <CODE>IllegalArgumentException</CODE> may be thrown if the source
0N/A * image is incompatible with the types of images allowed
0N/A * by the class implementing this filter.
0N/A *
0N/A * @param src The <CODE>BufferedImage</CODE> to be filtered
0N/A * @param destCM <CODE>ColorModel</CODE> of the destination. If null,
0N/A * the <CODE>ColorModel</CODE> of the source is used.
0N/A *
0N/A * @return The zeroed destination image.
0N/A */
0N/A public BufferedImage createCompatibleDestImage (BufferedImage src,
0N/A ColorModel destCM);
0N/A
0N/A /**
0N/A * Returns the location of the corresponding destination point given a
0N/A * point in the source image. If <CODE>dstPt</CODE> is specified, it
0N/A * is used to hold the return value.
0N/A * @param srcPt the <code>Point2D</code> that represents the point in
0N/A * the source image
0N/A * @param dstPt The <CODE>Point2D</CODE> in which to store the result
0N/A *
0N/A * @return The <CODE>Point2D</CODE> in the destination image that
0N/A * corresponds to the specified point in the source image.
0N/A */
0N/A public Point2D getPoint2D (Point2D srcPt, Point2D dstPt);
0N/A
0N/A /**
0N/A * Returns the rendering hints for this operation.
0N/A *
0N/A * @return The <CODE>RenderingHints</CODE> object for this
0N/A * <CODE>BufferedImageOp</CODE>. Returns
0N/A * null if no hints have been set.
0N/A */
0N/A public RenderingHints getRenderingHints();
0N/A}