package jp.crwdev.app.imagefilter; import java.awt.Dimension; import jp.crwdev.app.constant.Constant; public class ImageFilterParam implements Cloneable { public ImageFilterParam(ImageFilterParam base){ copyParams(base, this); } public ImageFilterParam(){ mIsEnable = false; mIsPreview = false; mIsDrawCropAreaInPreview = true; mIsColorPageAutoCrop = false; mIsPictPageAutoCrop = false; mIsTextPageAutoCrop = false; mIsFullPageAutoCrop = false; mIsColorPageCrop = false; mColorPageCropLeft = 0; mColorPageCropTop = 0; mColorPageCropRight = 0; mColorPageCropBottom = 0; mIsTextPageCrop = false; mTextPageCropLeft = 0; mTextPageCropTop = 0; mTextPageCropRight = 0; mTextPageCropBottom = 0; mIsPictPageCrop = false; mPictPageCropLeft = 0; mPictPageCropTop = 0; mPictPageCropRight = 0; mPictPageCropBottom = 0; mIsResize = false; mResizeDimension = new Dimension(0, 0); mFixedSize = new Dimension(0, 0); mIsGrayscale = false; mIsGamma = false; mGamma = 1.0f; mIsContrast = false; mContrast = 1.0f; mBrightness = 0; mIsBlur = false; mBlurPixels = 3; mIsSharpness = false; mSharpnessPixels = 3; mIsEqualize = false; mIsFullPageCrop = false; mFullPageCropLeft = 0; mFullPageCropTop = 0; mFullPageCropRight = 0; mFullPageCropBottom = 0; mIsTranslate = false; mIsRotate = false; mTranslateX = 0; mTranslateY = 0; mRotateAngle = 0.0f; mSplitType = SplitFilter.TYPE_NONE; mSplitIndex = 0; mPageSpread = Constant.PAGESPREAD_AUTO; mColorPageAutoCropThreshold = 0; mTextPageAutoCropThreshold = 0; mPictPageAutoCropThreshold = 0; mFullPageAutoCropThreshold = 0; mPageType = Constant.PAGETYPE_AUTO; mConvertPageType = Constant.PAGETYPE_AUTO; } @Override public ImageFilterParam clone(){ ImageFilterParam p; try { p = (ImageFilterParam)super.clone(); } catch (CloneNotSupportedException ce){ throw new RuntimeException(); } copyParams(this, p); return p; } private void copyParams(ImageFilterParam src, ImageFilterParam dest){ dest.mIsEnable = src.isEnable(); dest.mIsPreview = src.isPreview(); dest.mIsDrawCropAreaInPreview = src.isDrawCropAreaInPreview(); dest.mIsColorPageAutoCrop = src.isColorPageAutoCrop(); dest.mIsPictPageAutoCrop = src.isPictPageAutoCrop(); dest.mIsTextPageAutoCrop = src.isTextPageAutoCrop(); dest.mIsFullPageAutoCrop = src.isFullPageAutoCrop(); dest.mIsColorPageCrop = src.isColorPageCrop(); dest.mColorPageCropLeft = src.getColorPageCropLeft(); dest.mColorPageCropTop = src.getColorPageCropTop(); dest.mColorPageCropRight = src.getColorPageCropRight(); dest.mColorPageCropBottom = src.getColorPageCropBottom(); dest.mIsTextPageCrop = src.isTextPageCrop(); dest.mTextPageCropLeft = src.getTextPageCropLeft(); dest.mTextPageCropTop = src.getTextPageCropTop(); dest.mTextPageCropRight = src.getTextPageCropRight(); dest.mTextPageCropBottom = src.getTextPageCropBottom(); dest.mIsPictPageCrop = src.isPictPageCrop(); dest.mPictPageCropLeft = src.getPictPageCropLeft(); dest.mPictPageCropTop = src.getPictPageCropTop(); dest.mPictPageCropRight = src.getPictPageCropRight(); dest.mPictPageCropBottom = src.getPictPageCropBottom(); dest.mColorPageAutoCropThreshold = src.getColorPageAutoCropThreshold(); dest.mTextPageAutoCropThreshold = src.getTextPageAutoCropThreshold(); dest.mPictPageAutoCropThreshold = src.getPictPageAutoCropThreshold(); dest.mFullPageAutoCropThreshold = src.getFullPageAutoCropThreshold(); dest.mIsResize = src.isResize(); dest.mResizeDimension = src.getResizeDimension(); dest.mFixedSize = src.getFixedSize(); dest.mIsGrayscale = src.isGrayscale(); dest.mIsGamma = src.isGamma(); dest.mGamma = src.getGamma(); dest.mIsBlur = src.isBlur(); dest.mBlurPixels = src.getBlurPixels(); dest.mIsSharpness = src.isSharpness(); dest.mSharpnessPixels = src.getSharpnessPixels(); dest.mIsContrast = src.isContrast(); dest.mContrast = src.getContrast(); dest.mBrightness = src.getBrightness(); dest.mIsEqualize = src.isEqualize(); dest.mIsFullPageCrop = src.isFullPageCrop(); dest.mFullPageCropLeft = src.getFullPageCropLeft(); dest.mFullPageCropTop = src.getFullPageCropTop(); dest.mFullPageCropRight = src.getFullPageCropRight(); dest.mFullPageCropBottom = src.getFullPageCropBottom(); dest.mIsTranslate = src.isTranslate(); dest.mIsRotate = src.isRotate(); dest.mTranslateX = src.getTranslateX(); dest.mTranslateY = src.getTranslateY(); dest.mRotateAngle = src.getRotateAngle(); dest.mSplitType = src.getSplitType(); dest.mSplitIndex = src.getSplitIndex(); dest.mPageSpread = src.getPageSpread(); } protected boolean mIsEnable; protected boolean mIsPreview; protected boolean mIsDrawCropAreaInPreview; protected boolean mIsColorPageAutoCrop; protected boolean mIsPictPageAutoCrop; protected boolean mIsTextPageAutoCrop; protected boolean mIsFullPageAutoCrop; protected boolean mIsColorPageCrop; protected int mColorPageCropLeft; protected int mColorPageCropTop; protected int mColorPageCropRight; protected int mColorPageCropBottom; protected boolean mIsTextPageCrop; protected int mTextPageCropLeft; protected int mTextPageCropTop; protected int mTextPageCropRight; protected int mTextPageCropBottom; protected boolean mIsPictPageCrop; protected int mPictPageCropLeft; protected int mPictPageCropTop; protected int mPictPageCropRight; protected int mPictPageCropBottom; protected boolean mIsResize; protected Dimension mResizeDimension = new Dimension(); protected Dimension mFixedSize = new Dimension(); protected boolean mIsGrayscale; protected boolean mIsGamma; protected double mGamma; protected boolean mIsBlur; protected float mBlurPixels; protected boolean mIsSharpness; protected float mSharpnessPixels; protected boolean mIsContrast; protected float mContrast; protected float mBrightness; protected boolean mIsEqualize; protected boolean mIsFullPageCrop; protected int mFullPageCropLeft; protected int mFullPageCropTop; protected int mFullPageCropRight; protected int mFullPageCropBottom; protected int mColorPageAutoCropThreshold; protected int mTextPageAutoCropThreshold; protected int mPictPageAutoCropThreshold; protected int mFullPageAutoCropThreshold; protected boolean mIsTranslate; protected int mTranslateX; protected int mTranslateY; protected boolean mIsRotate; protected double mRotateAngle; protected int mSplitType; protected int mSplitIndex; protected float[] mSplitOffsetV; protected float[] mSplitOffsetH; protected String mPageSpread; protected boolean mIsUnificationTextPage = false; //protected static Dimension mUnificationTextPageSize = new Dimension(0, 0); // Dynamic protected int mPageType; protected int mConvertPageType; public boolean isEnable() { return mIsEnable; } /** * 編集操作(Crop枠など)のプレビュー状態を返す。(設定パネルのプレビューモードとは逆の値) * @return */ public boolean isPreview() { return mIsPreview; } public boolean isDrawCropAreaInPreview(){ return mIsDrawCropAreaInPreview; } public boolean isColorPageAutoCrop() { return mIsColorPageAutoCrop; } public boolean isPictPageAutoCrop() { return mIsPictPageAutoCrop; } public boolean isTextPageAutoCrop() { return mIsTextPageAutoCrop; } public boolean isFullPageAutoCrop() { return mIsFullPageAutoCrop; } public int getColorPageAutoCropThreshold() { return mColorPageAutoCropThreshold; } public int getPictPageAutoCropThreshold() { return mPictPageAutoCropThreshold; } public int getTextPageAutoCropThreshold() { return mTextPageAutoCropThreshold; } public int getFullPageAutoCropThreshold() { return mFullPageAutoCropThreshold; } public boolean isColorPageCrop() { return mIsColorPageCrop; } public int getColorPageCropLeft() { return mColorPageCropLeft; } public int getColorPageCropTop() { return mColorPageCropTop; } public int getColorPageCropRight() { return mColorPageCropRight; } public int getColorPageCropBottom() { return mColorPageCropBottom; } public boolean isTextPageCrop() { return mIsTextPageCrop; } public int getTextPageCropLeft() { return mTextPageCropLeft; } public int getTextPageCropTop() { return mTextPageCropTop; } public int getTextPageCropRight() { return mTextPageCropRight; } public int getTextPageCropBottom() { return mTextPageCropBottom; } public boolean isPictPageCrop() { return mIsPictPageCrop; } public int getPictPageCropLeft() { return mPictPageCropLeft; } public int getPictPageCropTop() { return mPictPageCropTop; } public int getPictPageCropRight() { return mPictPageCropRight; } public int getPictPageCropBottom() { return mPictPageCropBottom; } public boolean isResize() { return mIsResize; } public Dimension getResizeDimension() { return mResizeDimension; } public Dimension getFixedSize() { return mFixedSize; } public boolean isGrayscale() { return mIsGrayscale; } public boolean isGamma() { return mIsGamma; } public double getGamma() { return mGamma; } public boolean isBlur() { return mIsBlur; } public float getBlurPixels() { return mBlurPixels; } public boolean isSharpness() { return mIsSharpness; } public float getSharpnessPixels() { return mSharpnessPixels; } public boolean isContrast() { return mIsContrast; } public float getContrast() { return mContrast; } public float getBrightness() { return mBrightness; } public boolean isEqualize() { return mIsEqualize; } public boolean isFullPageCrop() { return mIsFullPageCrop; } public int getFullPageCropLeft() { return mFullPageCropLeft; } public int getFullPageCropTop() { return mFullPageCropTop; } public int getFullPageCropRight() { return mFullPageCropRight; } public int getFullPageCropBottom() { return mFullPageCropBottom; } public boolean isRotate() { return mIsRotate; } public double getRotateAngle() { return mRotateAngle; } public boolean isTranslate() { return mIsTranslate; } public int getTranslateX() { return mTranslateX; } public int getTranslateY() { return mTranslateY; } public int getSplitType() { return mSplitType; } public int getSplitIndex() { return mSplitIndex; } public String getPageSpread(){ return mPageSpread; } public boolean isUnificationTextPage() { return mIsUnificationTextPage; } //public static Dimension getUnificationTextPageSize() { // return mUnificationTextPageSize; //} // Dynamic public int getPageType() { return mPageType; } public void setPageType(int pageType) { mPageType = pageType; } public void setRotate(boolean enable){ mIsRotate = enable; } public void setRotateAngle(double angle){ mRotateAngle = angle; } public int getConvertPageType() { return mConvertPageType; } public void setConvertPageType(int pageType) { mConvertPageType = pageType; } public void setBrightness(float offset) { mBrightness = offset; } public void setContrast(boolean enable) { mIsContrast = enable; } public void setContrast(float scale) { mContrast = scale; } public void setBlur(boolean enable) { mIsBlur = enable; } public void setBlurPixels(float pixels){ mBlurPixels = pixels; } public void setSharpness(boolean enable) { mIsSharpness = enable; } public void setSharpnessPixels(float pixels){ mSharpnessPixels = pixels; } public void setDrawCropAreaInPreview(boolean enable) { mIsDrawCropAreaInPreview = enable; } public void setEnable(boolean enable) { mIsEnable = enable; } public void setEqualize(boolean enable) { mIsEqualize = enable; } public void setColorPageAutoCrop(boolean enable) { mIsColorPageAutoCrop = enable; } public void setPictPageAutoCrop(boolean enable) { mIsPictPageAutoCrop = enable; } public void setTextPageAutoCrop(boolean enable) { mIsTextPageAutoCrop = enable; } public void setFullPageAutoCrop(boolean enable) { mIsFullPageAutoCrop = enable; } public void setColorPageAutoCropThreshold(int cropThreshold) { mColorPageAutoCropThreshold = cropThreshold; } public void setPictPageAutoCropThreshold(int cropThreshold) { mPictPageAutoCropThreshold = cropThreshold; } public void setTextPageAutoCropThreshold(int cropThreshold) { mTextPageAutoCropThreshold = cropThreshold; } public void setFullPageAutoCropThreshold(int cropThreshold) { mFullPageAutoCropThreshold = cropThreshold; } public void setFullPageCrop(boolean enable) { mIsFullPageCrop = enable; } public void setFullPageCropBottom(int bottom) { mFullPageCropBottom = bottom; } public void setFullPageCropLeft(int left) { mFullPageCropLeft = left; } public void setFullPageCropRight(int right) { mFullPageCropRight = right; } public void setFullPageCropTop(int top) { mFullPageCropTop = top; } public void setFullPageCrop(int left, int top, int right, int bottom) { mFullPageCropLeft = left; mFullPageCropTop = top; mFullPageCropRight = right; mFullPageCropBottom = bottom; } public void setGamma(boolean enable) { mIsGamma = enable; } public void setGamma(double gamma) { mGamma = gamma; } public void setGrayscale(boolean enable) { mIsGrayscale = enable; } public void setPictPageCrop(boolean enable) { mIsPictPageCrop = enable; } public void setPictPageCropBottom(int bottom) { mPictPageCropBottom = bottom; } public void setPictPageCropLeft(int left) { mPictPageCropLeft = left; } public void setPictPageCropRight(int right) { mPictPageCropRight = right; } public void setPictPageCropTop(int top) { mPictPageCropTop = top; } public void setPictPageCrop(int left, int top, int right, int bottom) { mPictPageCropLeft = left; mPictPageCropTop = top; mPictPageCropRight = right; mPictPageCropBottom = bottom; } public void setPreview(boolean enable) { mIsPreview = enable; } public void setResize(boolean enable) { mIsResize = enable; } public void setResizeDimension(Dimension size) { mResizeDimension.setSize(size); } public void setResizeDimension(int width, int height) { mResizeDimension.setSize(width, height); } public void setFixedSize(Dimension size) { mFixedSize.setSize(size); } public void setSplitType(int splitType) { setSplitType(splitType, null, null); } public void setSplitType(int splitType, float[] v, float[] h){ mSplitType = splitType; if(v != null){ mSplitOffsetV = v; } if(h != null){ mSplitOffsetH = h; } } public void setSplitIndex(int index){ mSplitIndex = index; } public float[] getSplitOffsetV(){ return mSplitOffsetV; } public float[] getSplitOffsetH(){ return mSplitOffsetH; } public void setTextPageCrop(boolean enable) { mIsTextPageCrop = enable; } public void setTextPageCropBottom(int bottom) { mTextPageCropBottom = bottom; } public void setTextPageCropLeft(int left) { mTextPageCropLeft = left; } public void setTextPageCropRight(int right) { mTextPageCropRight = right; } public void setTextPageCropTop(int top) { mTextPageCropTop = top; } public void setTextPageCrop(int left, int top, int right, int bottom) { mTextPageCropLeft = left; mTextPageCropTop = top; mTextPageCropRight = right; mTextPageCropBottom = bottom; } public void setColorPageCrop(boolean enable) { mIsColorPageCrop = enable; } public void setColorPageCropBottom(int bottom) { mColorPageCropBottom = bottom; } public void setColorPageCropLeft(int left) { mColorPageCropLeft = left; } public void setColorPageCropRight(int right) { mColorPageCropRight = right; } public void setColorPageCropTop(int top) { mColorPageCropTop = top; } public void setColorPageCrop(int left, int top, int right, int bottom) { mColorPageCropLeft = left; mColorPageCropTop = top; mColorPageCropRight = right; mColorPageCropBottom = bottom; } public void setTranslate(boolean enable) { mIsTranslate = enable; } public void setTranslateX(int x) { mTranslateX = x; } public void setTranslateY(int y) { mTranslateY = y; } public void setPageSpread(String spread){ mPageSpread = spread; } public void setUnificationTextPage(boolean enable) { mIsUnificationTextPage = enable; } //public static void setUnificationTextPageSize(Dimension size) { // mUnificationTextPageSize.setSize(size); //} //public static void setUnificationTextPageSize(int width, int height) { // mUnificationTextPageSize.setSize(width, height); //} public boolean isEdit() { return (mIsFullPageCrop || mIsTextPageCrop || mIsPictPageCrop || mIsRotate || mIsTranslate || !mPageSpread.equals(Constant.PAGESPREAD_AUTO)); } public ImageFilterParam createMergedFilterParam(ImageFilterParam update){ return createMergedFilterParam(this, update); } public static ImageFilterParam createMergedFilterParam(ImageFilterParam base, ImageFilterParam update){ if(base == null || update == null){ return new ImageFilterParam(base); } // 有効なパラメータのみ上書きする ImageFilterParam dest = new ImageFilterParam(base); if(update.isEnable()){ dest.mIsEnable = true; } if(update.isPreview()){ dest.mIsPreview = true; } // これを上書きしてしまうと都合が悪い //if(update.isDrawCropAreaInPreview()){ // dest.mIsDrawCropAreaInPreview = true; //} if(update.isColorPageAutoCrop()){ dest.mIsColorPageAutoCrop = true; } if(update.isPictPageAutoCrop()){ dest.mIsPictPageAutoCrop = true; } if(update.isTextPageAutoCrop()){ dest.mIsTextPageAutoCrop = true; } if(update.isFullPageAutoCrop()){ dest.mIsFullPageAutoCrop = true; } if(update.isColorPageCrop()){ dest.mIsColorPageCrop = true; } if(update.isColorPageCrop() || update.isColorPageAutoCrop()){ dest.mColorPageCropLeft = update.getColorPageCropLeft(); dest.mColorPageCropTop = update.getColorPageCropTop(); dest.mColorPageCropRight = update.getColorPageCropRight(); dest.mColorPageCropBottom = update.getColorPageCropBottom(); dest.mColorPageAutoCropThreshold = update.getColorPageAutoCropThreshold(); } if(update.isTextPageCrop()){ dest.mIsTextPageCrop = true; } if(update.isTextPageCrop() || update.isTextPageAutoCrop()){ dest.mTextPageCropLeft = update.getTextPageCropLeft(); dest.mTextPageCropTop = update.getTextPageCropTop(); dest.mTextPageCropRight = update.getTextPageCropRight(); dest.mTextPageCropBottom = update.getTextPageCropBottom(); dest.mTextPageAutoCropThreshold = update.getTextPageAutoCropThreshold(); } if(update.isPictPageCrop()){ dest.mIsPictPageCrop = true; } if(update.isPictPageCrop() || update.isPictPageAutoCrop()){ dest.mPictPageCropLeft = update.getPictPageCropLeft(); dest.mPictPageCropTop = update.getPictPageCropTop(); dest.mPictPageCropRight = update.getPictPageCropRight(); dest.mPictPageCropBottom = update.getPictPageCropBottom(); dest.mPictPageAutoCropThreshold = update.getPictPageAutoCropThreshold(); } if(update.isResize()){ dest.mIsResize = true; dest.mResizeDimension.setSize(update.getResizeDimension()); } if(update.isGrayscale()){ dest.mIsGrayscale = true; } if(update.isGamma()){ dest.mIsGamma = true; dest.mGamma = update.getGamma(); } if(update.isContrast()){ dest.mIsContrast = true; dest.mContrast = update.getContrast(); dest.mBrightness = update.getBrightness(); } if(update.isBlur()){ dest.mIsBlur = true; dest.mBlurPixels = update.getBlurPixels(); } if(update.isSharpness()){ dest.mIsSharpness = true; dest.mSharpnessPixels = update.getSharpnessPixels(); } if(update.isEqualize()){ dest.mIsEqualize = true; } if(update.isFullPageCrop()){ dest.mIsFullPageCrop = true; } if(update.isFullPageCrop() || update.isFullPageAutoCrop()){ dest.mFullPageCropLeft = update.getFullPageCropLeft(); dest.mFullPageCropTop = update.getFullPageCropTop(); dest.mFullPageCropRight = update.getFullPageCropRight(); dest.mFullPageCropBottom = update.getFullPageCropBottom(); dest.mFullPageAutoCropThreshold = update.getFullPageAutoCropThreshold(); } if(update.isTranslate()){ dest.mIsTranslate = true; dest.mTranslateX = update.getTranslateX(); dest.mTranslateY = update.getTranslateY(); } if(update.isRotate()){ dest.mIsRotate = true; dest.mRotateAngle = update.getRotateAngle(); } if(update.getSplitType() != SplitFilter.TYPE_NONE){ dest.mSplitType = update.getSplitType(); dest.mSplitIndex = update.getSplitIndex(); dest.mSplitOffsetV = update.getSplitOffsetV(); dest.mSplitOffsetH = update.getSplitOffsetH(); } if(update.isUnificationTextPage()){ dest.mIsUnificationTextPage = true; } dest.mPageType = update.getPageType(); dest.mPageSpread = update.getPageSpread(); return dest; } }