/**
* Preview用フィルタ
*/
package jp.crwdev.app.imagefilter;
import java.awt.Dimension;
import java.awt.image.BufferedImage;
import jp.crwdev.app.interfaces.IImageFilter;
public class PreviewImageFilter extends OutputImageFilter {
//private boolean mIsPreview = true;
/** プレビュー画面サイズ */
private Dimension mPreviewSize = new Dimension(600, 800);
/** リサイズフィルタ - Preview画面のサイズ変更で使うのでリストとは別に保持しておく */
private ResizeFilter mResizeFilter = null;
// /** 余白追加フィルタ - リストとは別に保持しておく */
// private AddSpaceFilter mAddSpaceFilter = null;
/**
* コンストラクタ
*/
public PreviewImageFilter(){
super(false);
//mIsPreview = true;
setFilterVariables();
}
/**
* プレビューサイズ設定
* @param width
* @param height
*/
public void setPreviewSize(int width, int height){
if(width <= 20 || height <= 20){
width = 20;
height = 20;
}
mPreviewSize.setSize(width, height);
}
// /**
// * 余白追加フィルタへターゲットサイズ指定
// * @param size
// */
// public void setAddSpaceDimension(Dimension size){
// mAddSpaceFilter.setTargetSize(size);
// }
/**
* リサイズ時のスケーリング係数W を取得
* @return
*/
public double getResizedScaleW(){
return mResizeFilter.getResizedScaleW();
}
/**
* リサイズ時のスケーリング係数H を取得
* @return
*/
public double getResizedScaleH(){
return mResizeFilter.getResizedScaleH();
}
/**
* フィルタリストから良く使うフィルタを抜き出しておく
*/
private void setFilterVariables(){
for(IImageFilter filter : mFilters){
// if(filter instanceof AddSpaceFilter){
// mAddSpaceFilter = (AddSpaceFilter)filter;
// }
if(filter instanceof ResizeFilter){
mResizeFilter = (ResizeFilter)filter;
}
// if(filter instanceof FixedSizeFilter){
// ((FixedSizeFilter)filter).setEnable(false);
// }
}
}
@Override
public BufferedImage filter(BufferedImage image, ImageFilterParam param) {
ImageFilterParam newParam = mBaseFilterParams.createMergedFilterParam(param);
//newParam.setPreview(mIsPreview);
//newParam.setResize(true);
newParam.setResizeDimension(mPreviewSize);
for(IImageFilter filter : mFilters){
image = filter.filter(image, newParam);
}
return image;
}
}