/**
* 画像分割用ラッパー
*/
package jp.crwdev.app.container;
import java.awt.image.BufferedImage;
import java.io.InputStream;
import java.security.InvalidParameterException;
import java.util.HashMap;
import jp.crwdev.app.imagefilter.ImageFilterParam;
import jp.crwdev.app.interfaces.IImageFileInfo;
public class ImageFileInfoSplitWrapper implements IImageFileInfo {
/** 元データ */
private IImageFileInfo mBaseInfo = null;
/** 分割後の個別フィルタパラメータ */
private ImageFilterParam mParam = null;
/** index=0のWrapperは全ての個別パラメータへの参照を持つ */
private HashMap<Integer, ImageFileInfoSplitWrapper> mWrapperParams = null;
/** index=0以外のWrapperはindex=0への参照を持つ */
private ImageFileInfoSplitWrapper mFirstWrapper = null;
/** TOCテキスト */
private String mTocText = null;
/** 編集フラグ */
private boolean mIsModify = false;
/** 有効フラグ */
boolean mIsEnable = true;
/** 並び順(ソート無効時) */
protected int mSortOrder = -1;
/**
* コンストラクタ
* @param info 画像ファイル情報元データ
* @param splitIndex 分割後のインデックス情報
*/
public ImageFileInfoSplitWrapper(IImageFileInfo info, int splitIndex){
if(info == null){
throw new InvalidParameterException();
}
mBaseInfo = info;
mParam = info.getFilterParam().clone();
//mParam.setSplitType(Constant.SPLITTYPE_NONE);
mParam.setSplitIndex(splitIndex);
}
public void setFirstSplitInfo(ImageFileInfoSplitWrapper first){
mFirstWrapper = first;
}
public ImageFileInfoSplitWrapper getFirstSplitInfo(){
return mFirstWrapper;
}
public void addRelativeSplitInfo(ImageFileInfoSplitWrapper info){
if(mWrapperParams == null){
mWrapperParams = new HashMap<Integer, ImageFileInfoSplitWrapper>();
}
ImageFilterParam param = info.getFilterParam();
mWrapperParams.put(param.getSplitIndex(), info);
}
public ImageFileInfoSplitWrapper getRelativeSplitInfo(int index){
return mWrapperParams.get(index);
}
public ImageFilterParam getRelativeSplitInfoFilterParam(int index){
return mWrapperParams.get(index).getFilterParam();
}
public int getRelativeSplitInfoSize(){
if(mWrapperParams != null){
return mWrapperParams.size();
}else{
return 0;
}
}
@Override
public void setEnable(boolean enable){
mIsEnable = enable;
}
@Override
public boolean isEnable(){
return mIsEnable;
}
/**
* 元ファイル情報取得
* @return
*/
public IImageFileInfo getBaseFileInfo() {
return mBaseInfo;
}
@Override
public String getFileName() {
return mBaseInfo.getFileName();
}
@Override
public String getSortString() {
return mBaseInfo.getSortString();
}
@Override
public String getFullPath() {
return mBaseInfo.getFullPath();
}
@Override
public String getFormat() {
return mBaseInfo.getFormat();
}
@Override
public int getWidth() {
//TODO split mode
return mBaseInfo.getWidth();
}
@Override
public int getHeight() {
//TODO split mode
return mBaseInfo.getHeight();
}
@Override
public long getSize() {
return mBaseInfo.getSize();
}
@Override
public InputStream getInputStream() {
return mBaseInfo.getInputStream();
}
@Override
public BufferedImage getImage(boolean preview) {
return mBaseInfo.getImage(preview);
}
@Override
public boolean isJpeg() {
return mBaseInfo.isJpeg();
}
@Override
public void update() {
//TODO split mode
mBaseInfo.update();
}
@Override
public ImageFilterParam getFilterParam() {
return mParam;
}
@Override
public void setFilterParam(ImageFilterParam param) {
mParam = param;
}
@Override
public void release() {
// NOP
}
@Override
public void setTocText(String text) {
mTocText = text;
}
@Override
public String getTocText() {
return mTocText;
}
@Override
public void setModify(boolean modify){
mIsModify = modify;
}
@Override
public boolean isModify() {
return mIsModify;
}
@Override
public void setSortOrder(int order){
mSortOrder = order;
}
@Override
public int getSortOrder(){
return mSortOrder;
}
@Override
public boolean isBlankPage(){
return mBaseInfo.isBlankPage();
}
}