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.width = this.bitmap.getWidth();
this.height = this.bitmap.getHeight();
// if (!this.bitmap.isAlphaPremultiplied()
// && this.bitmap.getType() == BufferedImage.TYPE_INT_ARGB)
// this.bitmap.coerceData(true);
if (!this.bitmap.isAlphaPremultiplied()
&& this.bitmap.getType() == BufferedImage.TYPE_INT_ARGB)
this.bitmap.coerceData(true);
}
@Override
@ -96,16 +96,16 @@ public class AwtBitmap implements Bitmap {
for (int i = 0, n = width * height; i < n; i++) {
int c = pixels[i];
if (internal) {
//if (internal) {
float alpha = (c >>> 24) / 255f;
int r = (int) ((c & 0x000000ff) * alpha);
int b = (int) (((c & 0x00ff0000) >>> 16) * alpha);
int g = (int) (((c & 0x0000ff00) >>> 8) * alpha);
pixels[i] = (c & 0xff000000) | r << 16 | g << 8 | b;
} else {
//} else {
// 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);