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) { }
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) { }
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();
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();