FileDocCategorySizeDatePackage
GrayFilter.javaAPI DocJava SE 5 API2413Fri Aug 26 14:57:54 BST 2005javax.swing

GrayFilter

public class GrayFilter extends RGBImageFilter
An image filter that "disables" an image by turning it into a grayscale image, and brightening the pixels in the image. Used by buttons to create an image for a disabled button.
author
Jeff Dinkins
author
Tom Ball
author
Jim Graham
version
1.15 12/19/03

Fields Summary
private boolean
brighter
private int
percent
Constructors Summary
public GrayFilter(boolean b, int p)
Constructs a GrayFilter object that filters a color image to a grayscale image. Used by buttons to create disabled ("grayed out") button images.

param
b a boolean -- true if the pixels should be brightened
param
p an int in the range 0..100 that determines the percentage of gray, where 100 is the darkest gray, and 0 is the lightest

        brighter = b;
        percent = p;

	// 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 Summary
public static java.awt.ImagecreateDisabledImage(java.awt.Image i)
Creates a disabled image

	GrayFilter filter = new GrayFilter(true, 50);
	ImageProducer prod = new FilteredImageSource(i.getSource(), filter);
	Image grayImage = Toolkit.getDefaultToolkit().createImage(prod);
	return grayImage;
    
public intfilterRGB(int x, int y, int rgb)
Overrides RGBImageFilter.filterRGB.

        // Use NTSC conversion formula.
	int gray = (int)((0.30 * ((rgb >> 16) & 0xff) + 
                         0.59 * ((rgb >> 8) & 0xff) + 
                         0.11 * (rgb & 0xff)) / 3);
	
        if (brighter) {
            gray = (255 - ((255 - gray) * (100 - percent) / 100));
        } else {
            gray = (gray * (100 - percent) / 100);
        }
	
        if (gray < 0) gray = 0;
        if (gray > 255) gray = 255;
        return (rgb & 0xff000000) | (gray << 16) | (gray << 8) | (gray << 0);