/* ぼかし ImageFilter Ver 0.10 */ /* */ /* */ /* by Atsushi 98/4/9 */ package net.antun.lib.awt.image; import java.awt.Dimension; import java.awt.image.ColorModel; public class ObscureImageFilter extends SinglepassImageFilter { /* --- Field --- */ private int range; /* --- Constructor --- */ public ObscureImageFilter(int range) { this.range=range; } /* --- フィルタリング --- */ public void setDimensions(int width,int height) { super.setDimensions(width,height); consumer.setDimensions(width,height); } protected void filterImage() { int rgb,p[]; int r,g,b,a; int s; p=new int[originalSize.width]; for (int y=0;y<=originalSize.height-1;y++) { for (int x=0;x<=originalSize.width-1;x++) { r=g=b=a=0; s=0; for (int ix=-range;ix<=range;ix++) { for (int iy=-range;iy<=range;iy++) { if (0<=x+ix && x+ix>24) & 0xff; r+=(rgb>>16) & 0xff; g+=(rgb>> 8) & 0xff; b+=(rgb>> 0) & 0xff; s++; } } } p[x]=((a/s)<<24) | ((r/s)<<16) | ((g/s)<<8) | ((b/s)<<0); } consumer.setPixels(0,y,originalSize.width,1,defaultRGB, p,0,originalSize.width); } } public void setHints(int hint) { consumer.setHints(TOPDOWNLEFTRIGHT | COMPLETESCANLINES | SINGLEPASS | (hint & SINGLEFRAME)); } /* --- 文字列化 --- */ public String toString() { return getClass().getName()+"[range="+range+"]"; } }