package jp.crwdev.app.constant;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import jp.crwdev.app.imagefilter.ImageFilterParam;
import jp.crwdev.app.imagefilter.SplitFilter;
import jp.crwdev.app.interfaces.IImageFileInfo;
public class Constant {
public static final List<String> SUPPORT_INPUT_PREFIX = new ArrayList<String>();
static{
SUPPORT_INPUT_PREFIX.add("zip");
SUPPORT_INPUT_PREFIX.add("rar");
SUPPORT_INPUT_PREFIX.add("pdf");
}
public static final List<String> SUPPORT_IMAGE_PREFIX = new ArrayList<String>();
static{
SUPPORT_IMAGE_PREFIX.add("jpg");
SUPPORT_IMAGE_PREFIX.add("png");
SUPPORT_IMAGE_PREFIX.add("bmp");
}
public static float jpegQuality = 0.8f;
public static final int PAGETYPE_AUTO = 0;
public static final int PAGETYPE_TEXT = 1;
public static final int PAGETYPE_PICT = 2;
public static final int PAGETYPE_COLOR = 3;
public static final String TEXT_PAGETYPE_AUTO = "";
public static final String TEXT_PAGETYPE_TEXT = "本文";
public static final String TEXT_PAGETYPE_PICT = "挿絵";
public static final String TEXT_PAGETYPE_COLOR = "カラー";
//public static final int SPLITTYPE_NONE = 0;
//public static final int SPLITTYPE_RIGHT_TO_LEFT = 1;
//public static final int SPLITTYPE_LEFT_TO_RIGHT = 2;
public static final String TEXT_SPLITTYPE_NONE = "";
public static final String TEXT_SPLITTYPE_R2L = "右→左";
public static final String TEXT_SPLITTYPE_L2R = "左→右";
public static final String TEXT_SPLITTYPE_R2L_2x2 = "逆Z 2x2";
public static final String TEXT_SPLITTYPE_L2R_2x2 = "順Z 2x2";
public static final String TEXT_SPLITTYPE_R2L_3x3 = "逆Z 3x3";
public static final String TEXT_SPLITTYPE_L2R_3x3 = "順Z 3x3";
public static final String TEXT_SPLITTYPE_CUSTOM = "カスタム";
public static final String PAGESPREAD_AUTO = "";
public static final String PAGESPREAD_LEFT = "left";
public static final String PAGESPREAD_RIGHT = "right";
public static final String PAGESPREAD_CENTER = "center";
public static final String TABLE_HEADER_ENTRYNAME = "ファイル名";
public static final String TABLE_HEADER_TOC = "目次";
public static final String TABLE_HEADER_PAGETYPE = "種別";
public static final String TABLE_HEADER_PAGESPREAD = "配置";
public static final String TABLE_HEADER_ROTATE = "回転";
public static final String TABLE_HEADER_POSITION = "座標";
public static final String TABLE_HEADER_WIDTH = "幅";
public static final String TABLE_HEADER_HEIGHT = "高さ";
//public static final String TABLE_HEADER_SIZE = "サイズ";
public static final String TABLE_HEADER_SPLITTYPE = "分割";
public static final int TABLE_COLUMN_ENTRYNAME = 0;
public static final int TABLE_COLUMN_PAGETYPE = 1;
public static final int TABLE_COLUMN_PAGESPREAD = 2;
public static final int TABLE_COLUMN_SPLITTYPE = 3;
public static final int TABLE_COLUMN_TOC = 4;
public static final int TABLE_COLUMN_ROTATE = 5;
public static final int TABLE_COLUMN_POSITION = 6;
public static final int TABLE_COLUMN_WIDTH = 7;
public static final int TABLE_COLUMN_HEIGHT = 8;
//public static final int TABLE_COLUMN_SIZE = 6;
public static final String[] TABLE_HEADER_COLUMNS = new String[]{
TABLE_HEADER_ENTRYNAME,
TABLE_HEADER_PAGETYPE,
TABLE_HEADER_PAGESPREAD,
TABLE_HEADER_SPLITTYPE,
TABLE_HEADER_TOC,
TABLE_HEADER_ROTATE,
TABLE_HEADER_POSITION,
TABLE_HEADER_WIDTH,
TABLE_HEADER_HEIGHT,
};
public static final String TABLE_HEADER_FILELIST_LOCK = "保存";
public static final String TABLE_HEADER_FILELIST_FILENAME = "ファイル/フォルダ名";
public static final String TABLE_HEADER_FILELIST_FILEPATH = "パス";
public static final int TABLE_HEADER_FILELIST_COLUMN_LOCK = 0;
public static final int TABLE_HEADER_FILELIST_COLUMN_FILENAME = 1;
public static final int TABLE_HEADER_FILELIST_COLUMN_FILEPATH = 2;
public static final String[] TABLE_HEADER_FILELIST_COLUMNS = new String[]{
TABLE_HEADER_FILELIST_LOCK,
TABLE_HEADER_FILELIST_FILENAME,
TABLE_HEADER_FILELIST_FILEPATH,
};
public static String getPageTypeText(int pageType){
switch(pageType){
case PAGETYPE_TEXT:
return TEXT_PAGETYPE_TEXT;
case PAGETYPE_PICT:
return TEXT_PAGETYPE_PICT;
case PAGETYPE_COLOR:
return TEXT_PAGETYPE_COLOR;
case PAGETYPE_AUTO:
default:
return TEXT_PAGETYPE_AUTO;
}
}
public static int getPageType(String pageType){
if(pageType.equals(TEXT_PAGETYPE_TEXT)){
return PAGETYPE_TEXT;
}
if(pageType.equals(TEXT_PAGETYPE_PICT)){
return PAGETYPE_PICT;
}
if(pageType.equals(TEXT_PAGETYPE_COLOR)){
return PAGETYPE_COLOR;
}
return PAGETYPE_AUTO;
}
public static String getSplitTypeText(int splitType){
switch(splitType){
case SplitFilter.TYPE_R2L_2:
return TEXT_SPLITTYPE_R2L;
case SplitFilter.TYPE_L2R_2:
return TEXT_SPLITTYPE_L2R;
case SplitFilter.TYPE_R2L_2x2:
return TEXT_SPLITTYPE_R2L_2x2;
case SplitFilter.TYPE_L2R_2x2:
return TEXT_SPLITTYPE_L2R_2x2;
case SplitFilter.TYPE_R2L_3x3:
return TEXT_SPLITTYPE_R2L_3x3;
case SplitFilter.TYPE_L2R_3x3:
return TEXT_SPLITTYPE_L2R_3x3;
case SplitFilter.TYPE_CUSTOM:
return TEXT_SPLITTYPE_CUSTOM;
case SplitFilter.TYPE_NONE:
default:
return TEXT_SPLITTYPE_NONE;
}
}
public static int getSplitType(String splitType){
if(splitType.equals(TEXT_SPLITTYPE_R2L)){
return SplitFilter.TYPE_R2L_2;
}
if(splitType.equals(TEXT_SPLITTYPE_L2R)){
return SplitFilter.TYPE_L2R_2;
}
if(splitType.equals(TEXT_SPLITTYPE_R2L_2x2)){
return SplitFilter.TYPE_R2L_2x2;
}
if(splitType.equals(TEXT_SPLITTYPE_L2R_2x2)){
return SplitFilter.TYPE_L2R_2x2;
}
if(splitType.equals(TEXT_SPLITTYPE_R2L_3x3)){
return SplitFilter.TYPE_R2L_3x3;
}
if(splitType.equals(TEXT_SPLITTYPE_L2R_3x3)){
return SplitFilter.TYPE_L2R_3x3;
}
if(splitType.equals(TEXT_SPLITTYPE_CUSTOM)){
return SplitFilter.TYPE_CUSTOM;
}
return SplitFilter.TYPE_NONE;
}
public static File getContentFile(File contentPath){
if(contentPath.isDirectory()){
return contentPath;
}
else{
String fileName = contentPath.getAbsolutePath();
int dotIndex = fileName.lastIndexOf(".");
String suffix = "";
if(dotIndex >= 0){
suffix = fileName.substring(dotIndex + 1);
}
if(Constant.SUPPORT_INPUT_PREFIX.contains(suffix.toLowerCase())){
return contentPath;
}
else{
return contentPath.getParentFile();
}
}
}
public static File getSettingFile(File contentPath){
if(contentPath.isDirectory()){
String settingFileName = contentPath.getName() + "_setting.xml";
File settingFile = new File(contentPath, settingFileName);
if(settingFile.exists() && !settingFile.isDirectory()){
return settingFile;
}
}
else{
String fileName = contentPath.getAbsolutePath();
int dotIndex = fileName.lastIndexOf(".");
String suffix = "";
if(dotIndex >= 0){
suffix = fileName.substring(dotIndex + 1);
}
if(Constant.SUPPORT_INPUT_PREFIX.contains(suffix.toLowerCase())){
String filenameNoSuffix = fileName;
if(dotIndex >= 0){
filenameNoSuffix = fileName.substring(0, dotIndex);
}
String settingFileName = filenameNoSuffix + "_setting.xml";
File settingFile = new File(settingFileName);
if(settingFile.exists() && !settingFile.isDirectory()){
return settingFile;
}
}else{
String parent = contentPath.getParent();
File parentFolder = new File(parent);
String settingFileName = parentFolder.getName() + "_setting.xml";
File settingFile = new File(parentFolder, settingFileName);
if(settingFile.exists() && !settingFile.isDirectory()){
return settingFile;
}
}
}
return null;
}
public static Object[] createRecord(IImageFileInfo info){
ImageFilterParam param = info.getFilterParam();
String pageType = Constant.getPageTypeText(param.getPageType());
String rotate = Double.toString(param.getRotateAngle());
String position = param.getTranslateX() + "," + param.getTranslateY();
String width = Integer.toString(info.getWidth());
String height = Integer.toString(info.getHeight());
//String size = Long.toString(info.getSize());
String splitType = Constant.getSplitTypeText(param.getSplitType());
String pageSpread = param.getPageSpread();
String tocText = info.getTocText();
return new String[]{info.getFileName(), pageType, pageSpread, splitType, tocText, rotate, position, width, height};
}
}