class WhiteFilter extends RGBImageFilter {
    //~ Instance fields ------------------------------------------------------------------------------------------------------

    private final float[] hsv = new float[3];

    //~ Constructors ---------------------------------------------------------------------------------------------------------

    /**
     * Constructs a GrayFilter object that filters a color image to a
     * grayscale image. Used by buttons to create disabled ("grayed out")
     * button images.
     */
    public WhiteFilter() {
        // canFilterIndexColorModel indicates whether or not it is acceptable
        // to apply the color filtering of the filterRGB method to the color
        // table entries of an IndexColorModel object in lieu of pixel by pixel
        // filtering.
        canFilterIndexColorModel = true;
    }

    //~ Methods --------------------------------------------------------------------------------------------------------------

    /**
     * Creates a disabled image
     */
    public static Image createDisabledImage(final Image i) {
        final WhiteFilter filter = new WhiteFilter();
        final ImageProducer prod = new FilteredImageSource(i.getSource(), filter);

        return Toolkit.getDefaultToolkit().createImage(prod);
    }

    /**
     * Overrides <code>RGBImageFilter.filterRGB</code>.
     */
    @Override
    public int filterRGB(final int x, final int y, final int rgb) {<FILL_FUNCTION_BODY>}
}

        int transparency = (rgb >> 24) & 0xFF;

        if (transparency <= 1) {
            return rgb; // do not alter fully transparent pixels (those would end up being black)
        }

        transparency /= 2; // set transparency to 50% of original
        Color.RGBtoHSB((rgb >> 16) & 0xFF, (rgb >> 8) & 0xFF, (rgb >> 0) & 0xFF, hsv);
        hsv[1] = 0;

        return Color.HSBtoRGB(hsv[0], hsv[1], hsv[2]) + (transparency << 24);
    
<methods>public java.awt.image.IndexColorModel filterIndexColorModel(java.awt.image.IndexColorModel) ,public abstract int filterRGB(int, int, int) ,public void filterRGBPixels(int, int, int, int, int[], int, int) ,public void setColorModel(java.awt.image.ColorModel) ,public void setPixels(int, int, int, int, java.awt.image.ColorModel, byte[], int, int) ,public void setPixels(int, int, int, int, java.awt.image.ColorModel, int[], int, int) ,public void substituteColorModel(java.awt.image.ColorModel, java.awt.image.ColorModel) <variables>protected boolean canFilterIndexColorModel,protected java.awt.image.ColorModel newmodel,protected java.awt.image.ColorModel origmodel