ColorFilter.java



/**
 * RGB値によって色を調整するフィルター ColorFilterクラス
 */
import java.awt.Color;
import java.awt.image.RGBImageFilter;
public class ColorFilter extends RGBImageFilter {

  /** 各色の透過度( 0% - 100% ) */
    protected int tRed, tGreen, tBlue;

  /** コンストラクタ */
    public ColorFilter( int r, int g, int b ) {
        tRed = r;  tGreen = g;  tBlue = b; 
        canFilterIndexColorModel = true;  // インデックスカラーにも対応
    } 
 
  /** フィルタリングの処理を実行するメソッド */
    public int filterRGB(int x, int y, int rgb) {
        int r = (( rgb & 0x00ff0000 ) >> 16) * tRed / 100;
        if( r < 0 )  r = 0;
        if( r > 255 )  r = 255;
        int g = (( rgb & 0x0000ff00 ) >> 8) * tGreen / 100;
        if( g < 0 )  g = 0;
        if( g > 255 )  g = 255;
        int b = (( rgb & 0x000000ff ) ) * tBlue / 100;
        if( b < 0 )  b = 0;
        if( b > 255 )  b = 255;

        return 0xff000000 | (r << 16) | (g << 8) | (b << 0);
     }

  /** ファクターの設定を実行するメソッド */
     public void setColor( int r, int g, int b ){
         tRed = r;  tGreen = g;  tBlue = b; 
     }
 
     public void setRed( int r ){
         tRed = r;
     }
 
     public void setGreen( int g ){
         tGreen = g;
     }
 
     public void setBlue( int b ){
         tBlue = b; 
     }
}