package jp.crwdev.app.imagefilter; import java.awt.Dimension; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; import jp.crwdev.app.interfaces.IImageFilter; import jp.crwdev.app.setting.ImageFilterParamSet; public class MaximumSizeCheckFilter implements IImageFilter { /** フィルタリスト */ protected List<IImageFilter> mFilters = new ArrayList<IImageFilter>(); /** フィルタパラメータ */ protected ImageFilterParamSet mBaseFilterParams = new ImageFilterParamSet(); private Dimension mMaxSize = new Dimension(0, 0); private IImageFilter mBaseFilter = null; /** * コンストラクタ */ public MaximumSizeCheckFilter(){ mFilters.add(new AddSpaceFilter()); mFilters.add(new TransRotateFilter()); mFilters.add(new SplitFilter()); mFilters.add(new CropFilter(true)); // 全ページCrop mFilters.add(new PageCheckFilter(true)); mFilters.add(new CropFilter(false)); // Text/Pictページ別Crop mFilters.add(new ContrastFilter()); mFilters.add(new GammaFilter()); mFilters.add(new AutoCropFilter()); mFilters.add(new GrayscaleFilter()); //mFilters.add(new BlurFilter(true)); mFilters.add(new ResizeFilter()); //mFilters.add(new BlurFilter(false)); } /** * フィルタパラメータを設定する * @param param */ public void setImageFilterParam(ImageFilterParamSet params){ mBaseFilterParams = params.clone(); mMaxSize.setSize(0, 0); } public void setImageFilter(IImageFilter filter){ mBaseFilter = filter; mMaxSize.setSize(0, 0); } public Dimension getMaxSize(){ return mMaxSize; } @Override public BufferedImage filter(BufferedImage image, ImageFilterParam param) { if(mBaseFilter != null){ image = mBaseFilter.filter(image, param); } else{ ImageFilterParam newParam = mBaseFilterParams.createMergedFilterParam(param); for(IImageFilter filter : mFilters){ image = filter.filter(image, newParam); } } int width = image.getWidth(); int height = image.getHeight(); if(width > mMaxSize.width){ mMaxSize.width = width; } if(height > mMaxSize.height){ mMaxSize.height = height; } return image; } }