From 06a98fedfeb9adee318544d129e650ddcb5e842e Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Sun, 5 Nov 2023 18:25:22 +0100 Subject: [PATCH] fix fallback texture reading when alpha is in raster --- .../minosoft/gui/rendering/textures/TextureUtil.kt | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/textures/TextureUtil.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/textures/TextureUtil.kt index a4b166cd2..96c34a56b 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/textures/TextureUtil.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/textures/TextureUtil.kt @@ -57,15 +57,23 @@ object TextureUtil { val byteOutput = ByteArrayOutputStream() val dataOutput = DataOutputStream(byteOutput) - val samples = if (image.raster.numBands == 3) intArrayOf(0, 1, 2) else intArrayOf(0, 0, 0) + val samples = when (image.raster.numBands) { + 4 -> intArrayOf(0, 1, 2, 3) + 3 -> intArrayOf(0, 1, 2) + else -> intArrayOf(0, 0, 0) + } for (y in 0 until image.height) { for (x in 0 until image.width) { dataOutput.writeByte(image.raster.getSample(x, y, samples[0])) dataOutput.writeByte(image.raster.getSample(x, y, samples[1])) dataOutput.writeByte(image.raster.getSample(x, y, samples[2])) - val alpha = image.alphaRaster?.getSample(x, y, 0) ?: 0xFF - dataOutput.writeByte(alpha) + if (samples.size > 3) { + dataOutput.writeByte(image.raster.getSample(x, y, samples[3])) + } else { + val alpha = image.alphaRaster?.getSample(x, y, 0) ?: 0xFF + dataOutput.writeByte(alpha) + } } }