package app.create.rpg; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Environment; import android.util.DisplayMetrics; import android.util.TypedValue; public class Helper { public Context context; public final String[] GRAPHIC_EXTS = {".jpg", ".JPG", ".png", ".PNG"}; public Helper(Context context) { this.context = context; } public File getProjectDir () { return new File(((ActivityProject) context).getProjectDir()); } public String validatePath (String path, boolean bAbsoluteAllowed, boolean bEndSlashAllowed, boolean bToLowerCase) { int i, n = path.length() - 1, s = 0; char c; StringBuilder sb = new StringBuilder(); if (!bAbsoluteAllowed && ((c = path.charAt(0)) == '/' || c == '\\')) for (; s < n && path.charAt(s) == '/'; s++); if (!bEndSlashAllowed && ((c = path.charAt(n)) == '/' || c == '\\')) for (; n >= 0 && path.charAt(n) == '/'; n--); for (i = s; i <= n; i++) { c = path.charAt(i); if (bToLowerCase && 'A' <= c && c <= 'Z') c = (char) (c - 'A' + 'a'); else if (c == '/' || c == '\\') for (; i < n && !(path.charAt(i) == '/' || path.charAt(i) == '\\'); i++); sb.append(c); } return sb.toString(); } public File dirToRTP (String basedir) { return new File(Environment.getExternalStorageDirectory(), "RTP_list/Standard/" + basedir); } public String woExt (String name) { int i = name.lastIndexOf('.'); if (i == -1) return name; return name.substring(0, i); } public File dirToProject (String basedir) { return new File(getProjectDir(), basedir); } public InputStream openMaterial (String basepath, boolean bRTP) throws FileNotFoundException, IOException { File f = bRTP ? new File(Environment.getExternalStorageDirectory(), "RTP_list/Standard/" + basepath) : new File(getProjectDir(), basepath); return new FileInputStream (f); } public Drawable getGraphicsMaterial (String category, String name, int hue) { if (name == null || name.length() == 0) return null; InputStream is = null; String path; name = "Graphics/" + category + "/" + name; for (String ext : GRAPHIC_EXTS) { path = name + ext; try { is = openMaterial(path, false); } catch (IOException e) { try { is = openMaterial(path, true); } catch (IOException e1) { continue; } } TypedValue typed = new TypedValue(); typed.density = DisplayMetrics.DENSITY_MEDIUM; Drawable draw = Drawable.createFromResourceStream(context.getResources(), typed, is, name); try { is.close(); } catch (IOException e) {} if (hue > 0) { draw.setColorFilter(ColorFilterGenerator.adjustHue(hue)); } return draw; } return null; } }