// Copyright 2004 Adam Megacz, see the COPYING file for licensing [GPL]
-package org.ibex;
+package org.ibex.graphics;
import java.io.*;
import org.ibex.js.*;
+import org.ibex.plat.*;
import org.ibex.util.*;
-import org.ibex.translators.*;
+import org.ibex.core.*;
/**
* The in-memory representation of a PNG or GIF image. It is
protected void loaded() { isLoaded = true; }
/** turns a stream into a Picture.Source and passes it to the callback */
- public static Picture load(final JS stream, final Scheduler.Task callback) {
+ public static Picture load(final JS stream, final Task callback) {
+ if(stream == null) throw new NullPointerException();
Picture ret = (Picture)cache.get(stream);
- if (ret == null) cache.put(stream, ret = Platform.createPicture(stream));
+ if (ret == null) {
+ ret = Platform.createPicture(stream);
+ if(ret == null) throw new NullPointerException();
+ cache.put(stream, ret);
+ }
final Picture p = ret;
if (!ret.isLoaded && callback != null) {
+ // FEATURE: This is kind of ugly - shouldn't need a blessing
final Ibex.Blessing b = Ibex.Blessing.getBlessing(stream);
new java.lang.Thread() { public void run() {
InputStream in = null;
try {
- in = b == null ? Stream.getInputStream(stream) : b.getImage();
+ in = b == null ? stream.getInputStream() : b.getImage();
} catch (IOException e) { Log.error(Picture.class, e);
} catch (JSExn e) { Log.error(Picture.class, e);
}