2003/12/25 08:09:21
[org.ibex.core.git] / src / org / xwt / translators / Freetype.java
index 3079606..55dbf68 100644 (file)
@@ -15,7 +15,7 @@ public class Freetype {
     private static byte[] image = null;
 
     private int mem_allocated = 0;
-    private org.xwt.mips.Interpreter vm = null;
+    private org.xwt.mips.Runtime vm = null;
 
     private Res loadedStream = null;
 
@@ -26,7 +26,8 @@ public class Freetype {
             InputStream is = res.getInputStream();
             byte[] fontstream = InputStreamToByteArray.convert(is);
             if (image == null) image = InputStreamToByteArray.convert(Main.builtin.getInputStream("freetype.mips"));
-            vm = new org.xwt.mips.Interpreter(image);
+            //vm = new org.xwt.mips.Interpreter(image);
+            vm = new FreetypeVM();
             int baseAddr = vm.sbrk(fontstream.length);
             vm.copyout(fontstream, baseAddr, fontstream.length);
             vm.setUserInfo(0, baseAddr);
@@ -39,10 +40,6 @@ public class Freetype {
     }
 
     public synchronized void renderGlyph(Font.Glyph glyph) throws IOException {
-        int width = 0;
-        int height = 0;
-        byte[] data = null;
-
         try {
             if (loadedStream != glyph.font.res) loadFontByteStream(glyph.font.res);
             vm.setUserInfo(2, (int)glyph.c);
@@ -55,15 +52,13 @@ public class Freetype {
             glyph.baseline = vm.getUserInfo(10);
             glyph.advance = vm.getUserInfo(11);
             
-            width = vm.getUserInfo(6);
-            height = vm.getUserInfo(7);
+            glyph.width = vm.getUserInfo(6);
+            glyph.height = vm.getUserInfo(7);
             
-            data = new byte[width * height];
+            glyph.data = new byte[glyph.width * glyph.height];
             int addr = vm.getUserInfo(5);
-            vm.copyin(addr,data,width*height);
+            vm.copyin(addr, glyph.data, glyph.width * glyph.height);
             
-            if (width == 0 || height == 0) Log.log(Freetype.class, "warning glyph has zero width/height");
-            glyph.p = Platform.createAlphaOnlyPicture(data, width, height);
         } catch (Exception e) {
             Log.log(this, e);
         }