2004/01/11 00:49:54
authormegacz <megacz@xwt.org>
Fri, 30 Jan 2004 07:44:09 +0000 (07:44 +0000)
committermegacz <megacz@xwt.org>
Fri, 30 Jan 2004 07:44:09 +0000 (07:44 +0000)
darcs-hash:20040130074409-2ba56-d232b54e38b5052bad7891b8c541fd30c7bf56d6.gz

src/org/xwt/plat/AWT.java
src/org/xwt/plat/Java2.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) { }
index ae36394..f1ae217 100644 (file)
@@ -178,7 +178,6 @@ public class Java2 extends AWT {
         private DataBuffer buf = null;
 
         // this doens't seem to work on Windows
-        /*
         public void drawGlyph(Picture source, int dx, int dy, int cx1, int cy1, int cx2, int cy2, int rgb) {
             AWTPicture src = (AWTPicture)source;
             src.init();
@@ -192,7 +191,7 @@ public class Java2 extends AWT {
             g2.drawImage(i, 0, 0, null);
             g2.setClip(0, 0, i.getWidth(null), i.getHeight(null));
         }
-        */
+
         public Java2PixelBuffer(int w, int h) {
             sm = cm.createCompatibleSampleModel(w, h);
             int numSamples = w * h * sm.getNumDataElements();