2003/10/28 10:10:17
[org.ibex.core.git] / src / org / xwt / Picture.java
index 29e3184..da65368 100644 (file)
@@ -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();