X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FPicture.java;h=da65368727bc3a8d428d03e4029ecb08d5b3fd03;hb=d8a2348c7712a69ac368335417a8f6616e535b1b;hp=29e3184402cbf80671eae164e36538223b067f2a;hpb=29058bd93a808918b69221590a44e6fce48e84f8;p=org.ibex.core.git diff --git a/src/org/xwt/Picture.java b/src/org/xwt/Picture.java index 29e3184..da65368 100644 --- a/src/org/xwt/Picture.java +++ b/src/org/xwt/Picture.java @@ -24,11 +24,9 @@ public abstract class Picture { 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 { @@ -36,10 +34,11 @@ public abstract class Picture { 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; @@ -48,6 +47,9 @@ public abstract class Picture { return ret; } + /** the resource that created this Picture */ + public Res res = null; + /** the height of the picture */ public abstract int getHeight();