2004/01/11 00:49:54
[org.ibex.core.git] / src / org / xwt / plat / AWT.java
index b03c65f..1138f26 100644 (file)
@@ -117,17 +117,28 @@ public class AWT extends JVM {
     protected org.xwt.Font.Glyph _createGlyph(org.xwt.Font f, char c) { return new AWTGlyph(f, c); }
     protected static class AWTGlyph extends org.xwt.Font.Glyph {
         private Image i = null;
+        private static ColorModel cmodel = new DirectColorModel(32, 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000);
+
+        // this doesn't work on Win32 because the JVM is broken
+        /*
         static final ColorModel cmodel = new ColorModel(8) {
             public int getRed(int p) { return 0; }
             public int getGreen(int p) { return 0; }
             public int getBlue(int p) { return 0; }
             public int getAlpha(int p) { return p & 0xFF; }
         };
+        */
 
         public AWTGlyph(org.xwt.Font f, char c) { super(f, c); }
         Image getImage() {
             if (i == null && isLoaded) {
-                i = Toolkit.getDefaultToolkit().createImage(new MemoryImageSource(width, height, cmodel, data, 0, width));
+
+                int[] data2 = new int[data.length];
+                for(int i=0; i<data2.length; i++) data2[i] = ((data[i]) & 0xff) << 24;
+
+                MemoryImageSource mis = new MemoryImageSource(width, height, cmodel, data2, 0, width);
+                mis.setAnimated(true);
+                i = Toolkit.getDefaultToolkit().createImage(mis);
                 MediaTracker mediatracker = new MediaTracker(new Canvas());
                 mediatracker.addImage(i, 1);
                 try { mediatracker.waitForAll(); } catch (InterruptedException e) { }
@@ -154,7 +165,9 @@ public class AWT extends JVM {
         public void init() {
             if (initialized) return;
             initialized = true;
-            i = Toolkit.getDefaultToolkit().createImage(new MemoryImageSource(width, height, cmodel, data, 0, width));
+            MemoryImageSource mis = new MemoryImageSource(width, height, cmodel, data, 0, width);
+            mis.setAnimated(true);
+            i = Toolkit.getDefaultToolkit().createImage(mis);
             MediaTracker mediatracker = new MediaTracker(new Canvas());
             mediatracker.addImage(i, 1);
             try { mediatracker.waitForAll(); } catch (InterruptedException e) { }