imagefilter.java

来自「This is a resource based on j2me embedde」· Java 代码 · 共 182 行

JAVA
182
字号
/* * @(#)ImageFilter.java	1.26 06/10/10 * * Copyright  1990-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER *  * This program 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.  *  * This program 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 at /legal/license.txt).  *  * 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 or visit www.sun.com if you need additional * information or have any questions.  * */package java.awt.image;import java.util.Hashtable;/** * This class implements a filter for the set of interface methods that * are used to deliver data from an ImageProducer to an ImageConsumer. * It is meant to be used in conjunction with a FilteredImageSource * object to produce filtered versions of existing images.  It is a * base class that provides the calls needed to implement a "Null filter" * which has no effect on the data being passed through.  Filters should * subclass this class and override the methods which deal with the * data that needs to be filtered and modify it as necessary. * * @see FilteredImageSource * @see ImageConsumer * * @version	1.22 08/19/02 * @author 	Jim Graham */public class ImageFilter implements ImageConsumer, Cloneable {    /**     * The consumer of the particular image data stream for which this     * instance of the ImageFilter is filtering data.  It is not     * initialized during the constructor, but rather during the     * getFilterInstance() method call when the FilteredImageSource     * is creating a unique instance of this object for a particular     * image data stream.     * @see #getFilterInstance     * @see ImageConsumer     */    protected ImageConsumer consumer;    /**     * Returns a unique instance of an ImageFilter object which will     * actually perform the filtering for the specified ImageConsumer.     * The default implementation just clones this object.     */    public ImageFilter getFilterInstance(ImageConsumer ic) {        ImageFilter instance = (ImageFilter) clone();        instance.consumer = ic;        return instance;    }    /**     * Filters the information provided in the setDimensions method     * of the ImageConsumer interface.     * @see ImageConsumer#setDimensions     */    public void setDimensions(int width, int height) {        consumer.setDimensions(width, height);    }    /**     * Passes the properties from the source object along after adding a     * property indicating the stream of filters it has been run through.     */    public void setProperties(Hashtable props) {        props = (Hashtable) props.clone();        Object o = props.get("filters");        if (o == null) {            props.put("filters", toString());        } else if (o instanceof String) {            props.put("filters", ((String) o) + toString());        }        consumer.setProperties(props);    }    /**     * Filter the information provided in the setColorModel method     * of the ImageConsumer interface.     * @see ImageConsumer#setColorModel     */    public void setColorModel(ColorModel model) {        consumer.setColorModel(model);    }    /**     * Filters the information provided in the setHints method     * of the ImageConsumer interface.     * @see ImageConsumer#setHints     */    public void setHints(int hints) {        consumer.setHints(hints);    }    /**     * Filters the information provided in the setPixels method of the     * ImageConsumer interface which takes an array of bytes.     * @see ImageConsumer#setPixels     */    public void setPixels(int x, int y, int w, int h,        ColorModel model, byte pixels[], int off,        int scansize) {        consumer.setPixels(x, y, w, h, model, pixels, off, scansize);    }    /**     * Filters the information provided in the setPixels method of the     * ImageConsumer interface which takes an array of integers.     * @see ImageConsumer#setPixels     */    public void setPixels(int x, int y, int w, int h,        ColorModel model, int pixels[], int off,        int scansize) {        consumer.setPixels(x, y, w, h, model, pixels, off, scansize);    }    /**     * Filters the information provided in the imageComplete method of     * the ImageConsumer interface.     * @see ImageConsumer#imageComplete     */    public void imageComplete(int status) {        consumer.imageComplete(status);    }    /**     * Responds to a request for a TopDownLeftRight (TDLR) ordered resend     * of the pixel data from an ImageConsumer.     * The ImageFilter can respond to this request in one of three ways.     * <ol>     * <li>If the filter can determine that it will forward the pixels in     * TDLR order if its upstream producer object sends them     * in TDLR order, then the request is automatically forwarded by     * default to the indicated ImageProducer using this filter as the     * requesting ImageConsumer, so no override is necessary.     * <li>If the filter can resend the pixels in the right order on its     * own (presumably because the generated pixels have been saved in     * some sort of buffer), then it can override this method and     * simply resend the pixels in TDLR order as specified in the     * ImageProducer API.  <li>If the filter simply returns from this     * method then the request will be ignored and no resend will     * occur.  </ol>      * @see ImageProducer#requestTopDownLeftRightResend     * @param ip The ImageProducer that is feeding this instance of     * the filter - also the ImageProducer that the request should be     * forwarded to if necessary.     */    public void resendTopDownLeftRight(ImageProducer ip) {        ip.requestTopDownLeftRightResend(this);    }        /**     * Clones this object.     */    public Object clone() {         try {             return super.clone();        } catch (CloneNotSupportedException e) {             // this shouldn't happen, since we are Cloneable            throw new InternalError();        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?