package cnp.ew.image;
import java.awt.*;
import java.awt.image.*;

public class CpGrayFilter extends RGBImageFilter
{

    public static final int DARKGRAY_RGB = Color.darkGray.getRGB();
    public static final int GRAY_RGB = Color.gray.getRGB();
    public static final int LIGHTGRAY_RGB = Color.lightGray.getRGB();
    public static final int WHITE_RGB = Color.white.getRGB();
    public static final int DARKGRAY_INTENSITY = rgbAsIntensity(DARKGRAY_RGB);
    public static final int GRAY_INTENSITY = rgbAsIntensity(GRAY_RGB);
    public static final int LIGHTGRAY_INTENSITY = rgbAsIntensity(LIGHTGRAY_RGB);

    public CpGrayFilter()
    {
        canFilterIndexColorModel = true;
    }

    public static final int rgbAsIntensity(int rgbValue)
    {
        return Math.max(
            rgbValue & 0x00ff0000 >>> 16,
            Math.max(rgbValue & 0x0000ff00 >>> 8, rgbValue & 0x000000ff));

    }

    public int filterRGB(int x, int y, int rgb)
    {
        int rgbThreshold;

        if ((rgb & 0xff000000) == 0) {
            return rgb;
        }

        int rgbIntensity = rgbAsIntensity(rgb);

        if (rgbIntensity > LIGHTGRAY_INTENSITY) {
            return WHITE_RGB;
        } else if (rgbIntensity > GRAY_INTENSITY) {
            return LIGHTGRAY_RGB;
        } else {
            return GRAY_RGB;
        }
    }
}



