/**
* 余白追加フィルタ - 本文ページのみを対象とする
*/
package jp.crwdev.app.imagefilter;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import jp.crwdev.app.constant.Constant;
import jp.crwdev.app.interfaces.IImageFilter;
public class AddSpaceFilter implements IImageFilter {
private static Dimension mUnificationTextPageSize = new Dimension();
/**
* コンストラクタ
*/
public AddSpaceFilter(){
}
public static void setUnificationTextPageSize(Dimension size){
AddSpaceFilter.mUnificationTextPageSize = size;
}
public static void setUnificationTextPageSize(int width, int height){
AddSpaceFilter.mUnificationTextPageSize = new Dimension(width, height);
}
// /**
// * 余白追加後のサイズ指定
// * @param size
// */
// public void setTargetSize(Dimension size){
// mTargetSize = size;
// }
@Override
public BufferedImage filter(BufferedImage image, ImageFilterParam param) {
if(param.getPageType() != Constant.PAGETYPE_TEXT){
return image;
}
Dimension targetSize = mUnificationTextPageSize;
if(targetSize.width == 0 || targetSize.height == 0){
return image;
}
int width = image.getWidth();
int height = image.getHeight();
if(width >= targetSize.width && height >= targetSize.height){
// 同じサイズなら何もしない
return image;
}
BufferedImage dest = new BufferedImage(targetSize.width, targetSize.height, image.getType());
int dx = (targetSize.width - width) / 2;
int dy = (targetSize.height - height) / 2;
Graphics2D g = dest.createGraphics();
g.setBackground(Color.WHITE);
g.clearRect(0, 0, targetSize.width, targetSize.height);
g.drawImage(image, dx, dy, image.getWidth(), image.getHeight(), null);
g.dispose();
return dest;
}
}