projects
/
org.ibex.core.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Stream->Fountain, move Scheduler to Platform, HashMap->Hash
[org.ibex.core.git]
/
src
/
org
/
ibex
/
graphics
/
Picture.java
diff --git
a/src/org/ibex/graphics/Picture.java
b/src/org/ibex/graphics/Picture.java
index
d1abf61
..
ce7b20b
100644
(file)
--- a/
src/org/ibex/graphics/Picture.java
+++ b/
src/org/ibex/graphics/Picture.java
@@
-1,9
+1,12
@@
-// Copyright 2004 Adam Megacz, see the COPYING file for licensing [GPL]
-package org.ibex;
+// Copyright 2000-2005 the Contributors, as shown in the revision logs.
+// Licensed under the GNU General Public License version 2 ("the License").
+// You may not use this file except in compliance with the License.
+
+package org.ibex.graphics;
import java.io.*;
import org.ibex.js.*;
import java.io.*;
import org.ibex.js.*;
+import org.ibex.plat.*;
import org.ibex.util.*;
import org.ibex.util.*;
-import org.ibex.translators.*;
/**
* The in-memory representation of a PNG or GIF image. It is
/**
* The in-memory representation of a PNG or GIF image. It is
@@
-18,7
+21,7
@@
public class Picture {
public Picture() { this.stream = null; }
public Picture(JS r) { this.stream = r; }
public Picture() { this.stream = null; }
public Picture(JS r) { this.stream = r; }
- private static Cache cache = new Cache(100); ///< Picture, keyed by the Stream that loaded them
+ private static Cache cache = new Cache(100, true); ///< Picture, keyed by the Stream that loaded them
public JS stream = null; ///< the stream we were loaded from
public int width = -1; ///< the width of the image
public JS stream = null; ///< the stream we were loaded from
public int width = -1; ///< the width of the image
@@
-30,18
+33,22
@@
public class Picture {
protected void loaded() { isLoaded = true; }
/** turns a stream into a Picture.Source and passes it to the callback */
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 Callable callback) {
+ if(stream == null) throw new NullPointerException();
Picture ret = (Picture)cache.get(stream);
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) {
final Picture p = ret;
if (!ret.isLoaded && callback != null) {
- final Ibex.Blessing b = Ibex.Blessing.getBlessing(stream);
new java.lang.Thread() { public void run() {
InputStream in = null;
try {
new java.lang.Thread() { public void run() {
InputStream in = null;
try {
- in = b == null ? Stream.getInputStream(stream) : b.getImage();
+ in = JSU.getInputStream(stream);
} catch (IOException e) { Log.error(Picture.class, e);
} catch (IOException e) { Log.error(Picture.class, e);
- } catch (JSExn e) { Log.error(Picture.class, e);
+ //} catch (JSExn e) { Log.error(Picture.class, e);
}
if (in == null) { Log.warn(Picture.class, "couldn't load image for stream " + stream.unclone()); return; }
try {
}
if (in == null) { Log.warn(Picture.class, "couldn't load image for stream " + stream.unclone()); return; }
try {
@@
-54,7
+61,7
@@
public class Picture {
else if ((firstByte & 0xff) == 0xff) Platform.decodeJPEG(pbis, p);
else throw new JSExn("couldn't figure out image type from first byte");
p.loaded();
else if ((firstByte & 0xff) == 0xff) Platform.decodeJPEG(pbis, p);
else throw new JSExn("couldn't figure out image type from first byte");
p.loaded();
- Scheduler.add(callback);
+ Platform.Scheduler.add(callback);
} catch (Exception e) {
Log.info(this, "exception while loading image");
Log.info(this, e);
} catch (Exception e) {
Log.info(this, "exception while loading image");
Log.info(this, e);