X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2Ftranslators%2FFont.java;fp=src%2Forg%2Fxwt%2Ftranslators%2FFont.java;h=0000000000000000000000000000000000000000;hb=a071a56b6d9c9d38b85d23cc3eb287435322d0cc;hp=de7100219a382d34c78b42faaac11234ebbe61f0;hpb=067fcf0556752492c6396bc01dff0bf266199651;p=org.ibex.core.git diff --git a/src/org/xwt/translators/Font.java b/src/org/xwt/translators/Font.java deleted file mode 100644 index de71002..0000000 --- a/src/org/xwt/translators/Font.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.xwt.translators; -import org.xwt.*; -import org.xwt.util.*; -import java.io.*; -import java.util.zip.*; - -// FEATURE: use streams, not memoryfont's -// FEATURE: kerning pairs -public class Font { - - Font() { } - - private static org.xwt.mips.Interpreter vm = null; - - public static synchronized void renderGlyphs(Res res, int pointsize, int firstGlyph, int lastGlyph, Cache glyphCache) { - try { - - if (vm == null) { - - InputStream bis = Platform.getBuiltinInputStream(); - ZipInputStream zis = new ZipInputStream(bis); - for(ZipEntry ze = zis.getNextEntry(); ze != null && !ze.getName().equals("freetype.mips"); ze = zis.getNextEntry()) { } - byte[] image = InputStreamToByteArray.convert(zis); - vm = new org.xwt.mips.Interpreter(image); - vm.start(new String[]{ "freetype.mips" }); - vm.execute(); - } - - int FONT_RESERVED = 256*1024; - int baseAddr = vm.sbrk(FONT_RESERVED); - - byte[] fontstream = InputStreamToByteArray.convert(res.getInputStream()); - vm.copyout(fontstream, baseAddr, fontstream.length); - vm.setUserInfo(0, baseAddr); - vm.setUserInfo(1, fontstream.length); - vm.setUserInfo(2, firstGlyph); - vm.setUserInfo(3, lastGlyph); - vm.setUserInfo(4, pointsize); - - long start = System.currentTimeMillis(); - - for(int g = firstGlyph; g <= lastGlyph; g++) { - vm.execute(); - - Glyph glyph = new Glyph(); - glyph.max_ascent = vm.getUserInfo(8); - glyph.max_descent = vm.getUserInfo(9) - glyph.max_ascent; - glyph.baseline = vm.getUserInfo(10); - glyph.advance = vm.getUserInfo(11); - glyph.c = (char)g; - - int width = vm.getUserInfo(6); - int height = vm.getUserInfo(7); - int[] data = new int[width * height]; - int addr = vm.getUserInfo(5); - - for(int i=0; i= 0; k--) { - if (i + k < width * height) - data[i + k] = (val & 0xff) << 24; - val >>>= 8; - } - } - - glyph.p = Platform.createPicture(data, width, height); - glyphCache.put(res, new Integer((g << 16) | pointsize), glyph); - } - } catch (Exception e) { - Log.log(Font.class, e); - } - } -}