From 06e006e21da56c194e6dc9fb9131d15b609ef8c4 Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Mon, 30 Mar 2015 22:18:51 +0200 Subject: [PATCH] when a color table item is not found the pixel should be transparent (int value = 0) --- .../decompiler/flash/tags/DefineBitsLossless2Tag.java | 5 ++++- .../jpexs/decompiler/flash/tags/DefineBitsLosslessTag.java | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsLossless2Tag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsLossless2Tag.java index 3a621649e..da0eb07b8 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsLossless2Tag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsLossless2Tag.java @@ -258,7 +258,10 @@ public class DefineBitsLossless2Tag extends ImageTag implements AloneTag { for (int x = 0; x < bitmapWidth; x++) { int c = 0; if ((bitmapFormat == DefineBitsLossless2Tag.FORMAT_8BIT_COLORMAPPED)) { - c = multiplyAlpha(colorMapData.colorTableRGB[colorMapData.colorMapPixelData[pos32aligned] & 0xff].toInt()); + int colorTableIndex = colorMapData.colorMapPixelData[pos32aligned] & 0xff; + if (colorTableIndex < colorMapData.colorTableRGB.length) { + c = multiplyAlpha(colorMapData.colorTableRGB[colorTableIndex].toInt()); + } } if ((bitmapFormat == DefineBitsLossless2Tag.FORMAT_32BIT_ARGB)) { c = multiplyAlpha(bitmapData.bitmapPixelData[pos].toInt()); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsLosslessTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsLosslessTag.java index 73274029d..2598abee2 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsLosslessTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsLosslessTag.java @@ -162,8 +162,11 @@ public class DefineBitsLosslessTag extends ImageTag implements AloneTag { for (int x = 0; x < bitmapWidth; x++) { int c = 0; if (bitmapFormat == DefineBitsLosslessTag.FORMAT_8BIT_COLORMAPPED) { - RGB color = colorMapData.colorTableRGB[colorMapData.colorMapPixelData[pos32aligned] & 0xff]; - c = color.toInt(); + int colorTableIndex = colorMapData.colorMapPixelData[pos32aligned] & 0xff; + if (colorTableIndex < colorMapData.colorTableRGB.length) { + RGB color = colorMapData.colorTableRGB[colorTableIndex]; + c = color.toInt(); + } } if (bitmapFormat == DefineBitsLosslessTag.FORMAT_15BIT_RGB) { c = new RGB(bitmapData.bitmapPixelDataPix15[pos].red * 8, bitmapData.bitmapPixelDataPix15[pos].green * 8, bitmapData.bitmapPixelDataPix15[pos].blue * 8).toInt();