private static Cache cache = new Cache();
private static GIF gif = new GIF();
- private static PNG png = new PNG();
/** turns a resource into a Picture.Source */
public static Picture fromRes(Res r) {
- // FIXME: put self in background thread if needed
Picture ret = (Picture)cache.get(r);
if (ret == null) {
try {
int c = pbis.read();
pbis.unread(c);
if (c == 'G') ret = gif.fromInputStream(pbis, r.getDescriptiveName());
- else if (c == 137) ret = png.fromInputStream(pbis, r.getDescriptiveName());
+ else if (c == 137) ret = new PNG().fromInputStream(pbis, r.getDescriptiveName());
else if (c == 0xff) ret = Platform.decodeJPEG(pbis, r.getDescriptiveName());
else throw new JS.Exn("couldn't figure out image type from first byte");
cache.put(r, ret);
+ ret.res = r;
} catch (IOException e) {
Log.logJS(Picture.class, e);
return null;
return ret;
}
+ /** the resource that created this Picture */
+ public Res res = null;
+
/** the height of the picture */
public abstract int getHeight();