Initial
This commit is contained in:
64
java/ANIMATE/GrayModel.java
Normal file
64
java/ANIMATE/GrayModel.java
Normal file
@@ -0,0 +1,64 @@
|
||||
import java.awt.image.*;
|
||||
|
||||
// This class implements a gray color model
|
||||
// scheme based on another color model. It acts
|
||||
// like a gray filter. To compute the amount of
|
||||
// gray for a pixel, it takes the max of the red,
|
||||
// green, and blue components and uses that value
|
||||
// for all three color components.
|
||||
|
||||
public class GrayModel extends ColorModel
|
||||
{
|
||||
ColorModel originalModel;
|
||||
|
||||
public GrayModel(ColorModel originalModel)
|
||||
{
|
||||
super(originalModel.getPixelSize());
|
||||
this.originalModel = originalModel;
|
||||
}
|
||||
|
||||
// The amount of gray is the max of the red, green, and blue
|
||||
protected int getGrayLevel(int pixel)
|
||||
{
|
||||
return Math.max(originalModel.getRed(pixel),
|
||||
Math.max(originalModel.getGreen(pixel),
|
||||
originalModel.getBlue(pixel)));
|
||||
}
|
||||
|
||||
// Leave the alpha values untouched
|
||||
public int getAlpha(int pixel)
|
||||
{
|
||||
return originalModel.getAlpha(pixel);
|
||||
}
|
||||
|
||||
// Since gray requires red, green and blue to be the same,
|
||||
// use the same gray level value for red, green, and blue
|
||||
|
||||
public int getRed(int pixel)
|
||||
{
|
||||
return getGrayLevel(pixel);
|
||||
}
|
||||
|
||||
public int getGreen(int pixel)
|
||||
{
|
||||
return getGrayLevel(pixel);
|
||||
}
|
||||
|
||||
public int getBlue(int pixel)
|
||||
{
|
||||
return getGrayLevel(pixel);
|
||||
}
|
||||
|
||||
// Normally, this method queries the red, green, blue and
|
||||
// alpha values and returns them in the form 0xaarrggbb. To
|
||||
// keep from computing the gray level 3 times, we just override
|
||||
// this method, get the gray level once, and return it as the
|
||||
// red, green, and blue, and add in the original alpha value.
|
||||
|
||||
public int getRGB(int pixel)
|
||||
{
|
||||
int gray = getGrayLevel(pixel);
|
||||
return (getAlpha(pixel) << 24) + (gray << 16) +
|
||||
(gray << 8) + gray;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user