X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fibex%2FIbex.java;h=225b4bcacf4e66ad8d54b6f2f0544b57b07bbd90;hb=07f137d5694c7d52a6a2c28e051546232b353f5d;hp=3828b1784cf85db9e09a924372d790e21651edcd;hpb=e2dab289d7adfebb01adf5ce782e7fa1b122cded;p=org.ibex.core.git diff --git a/src/org/ibex/Ibex.java b/src/org/ibex/Ibex.java index 3828b17..225b4bc 100644 --- a/src/org/ibex/Ibex.java +++ b/src/org/ibex/Ibex.java @@ -11,6 +11,7 @@ public final class Ibex extends JS.Cloneable { // FIXME remove this private final JS rr; + public Ibex(Stream rr) { this.rr = bless(rr); } public JS resolveString(String str, boolean permitAbsolute) throws JSExn { @@ -63,6 +64,7 @@ public final class Ibex extends JS.Cloneable { case "regexp": return METHOD; case "ui": return getSub("ui"); case "ui.font": return getSub("ui.font"); + case "ui.font.wait": return METHOD; case "ui.font.sansserif": return Main.builtin.get("fonts/vera/Vera.ttf"); case "ui.font.monospace": return Main.builtin.get("fonts/vera/VeraMono.ttf"); case "ui.font.serif": return Main.builtin.get("fonts/vera/VeraSe.ttf"); @@ -194,6 +196,17 @@ public final class Ibex extends JS.Cloneable { case "stream.watch": return new Stream.ProgressWatcher((Stream)a, (JS)b); case "regexp": return new JSRegexp(a, b); //#end + case 3: + //#switch(name) + case "font.wait": + try { + JS.UnpauseCallback callback = JS.pause(); + Font font = Font.getFont((Stream)a, JS.toInt(b)); + if (font.rasterizeGlyphs((String)c, null, 0,0,0,0,0,0,0, callback) != -1) Scheduler.add(callback); + } catch (JS.NotPauseableException npe) { + JS.error("can't wait for a font in a foreground thread"); + } + //#end break; } } catch (RuntimeException e) { @@ -309,8 +322,8 @@ public final class Ibex extends JS.Cloneable { public static class Blessing extends JS.Clone { private Ibex ibex; private Template t = null; - private Object parentkey = null; - private Blessing parent = null; + public Object parentkey = null; + public Blessing parent = null; public Blessing(JS.Cloneable clonee, Ibex ibex, Blessing parent, Object parentkey) { super(clonee); this.ibex = ibex; this.parentkey = parentkey; this.parent = parent; } public Object get(Object key) throws JSExn { @@ -340,7 +353,7 @@ public final class Ibex extends JS.Cloneable { try { // FIXME background? if (t == null) - t = Template.buildTemplate(parentkey + ".t", Stream.getInputStream(parent.get(parentkey + ".t")), ibex); + t = Template.buildTemplate(parentkey + ".t", parent.get(parentkey + ".t"), ibex); return t.staticScope; } catch (Exception e) { Log.error(this, e);