fix AwtImage to texture data conversion

This commit is contained in:
Hannes Janetzek 2013-08-04 14:42:22 +02:00
parent 07d01762ea
commit daf43858bb

View File

@ -36,9 +36,9 @@ public class AwtBitmap implements Bitmap {
this.bitmap = ImageIO.read(inputStream); this.bitmap = ImageIO.read(inputStream);
this.width = this.bitmap.getWidth(); this.width = this.bitmap.getWidth();
this.height = this.bitmap.getHeight(); this.height = this.bitmap.getHeight();
// if (!this.bitmap.isAlphaPremultiplied() if (!this.bitmap.isAlphaPremultiplied()
// && this.bitmap.getType() == BufferedImage.TYPE_INT_ARGB) && this.bitmap.getType() == BufferedImage.TYPE_INT_ARGB)
// this.bitmap.coerceData(true); this.bitmap.coerceData(true);
} }
@Override @Override
@ -96,16 +96,16 @@ public class AwtBitmap implements Bitmap {
for (int i = 0, n = width * height; i < n; i++) { for (int i = 0, n = width * height; i < n; i++) {
int c = pixels[i]; int c = pixels[i];
if (internal) { //if (internal) {
float alpha = (c >>> 24) / 255f; float alpha = (c >>> 24) / 255f;
int r = (int) ((c & 0x000000ff) * alpha); int r = (int) ((c & 0x000000ff) * alpha);
int b = (int) (((c & 0x00ff0000) >>> 16) * alpha); int b = (int) (((c & 0x00ff0000) >>> 16) * alpha);
int g = (int) (((c & 0x0000ff00) >>> 8) * alpha); int g = (int) (((c & 0x0000ff00) >>> 8) * alpha);
pixels[i] = (c & 0xff000000) | r << 16 | g << 8 | b; pixels[i] = (c & 0xff000000) | r << 16 | g << 8 | b;
} else { //} else {
// flip blue with red - silly Java // flip blue with red - silly Java
pixels[i] = (c & 0xff00ff00) | (c & 0x00ff0000) >>> 16 | (c & 0x000000ff) << 16; // pixels[i] = (c & 0xff00ff00) | (c & 0x00ff0000) >>> 16 | (c & 0x000000ff) << 16;
} //}
} }
buffer.put(pixels, 0, width * height); buffer.put(pixels, 0, width * height);