From 81541a5f049c4dd8ec10a9c13b163cf478bdc921 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 5 Jan 2019 17:16:42 -0800 Subject: GLK: FROTZ: Properly handle picture transparency --- engines/glk/raw_decoder.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'engines/glk/raw_decoder.cpp') diff --git a/engines/glk/raw_decoder.cpp b/engines/glk/raw_decoder.cpp index 659b333cac..cf3700371b 100644 --- a/engines/glk/raw_decoder.cpp +++ b/engines/glk/raw_decoder.cpp @@ -26,7 +26,8 @@ namespace Glk { -RawDecoder::RawDecoder() : Image::ImageDecoder(), _palette(nullptr), _paletteColorCount(0) { +RawDecoder::RawDecoder() : Image::ImageDecoder(), _palette(nullptr), _paletteColorCount(0), + _transColor(0) { } RawDecoder::~RawDecoder() { @@ -52,11 +53,15 @@ bool RawDecoder::loadStream(Common::SeekableReadStream &stream) { _palette = new byte[_paletteColorCount * 3]; stream.read(_palette, _paletteColorCount * 3); + // Get the transparent color + byte transColor = stream.readByte(); + if (transColor < _paletteColorCount) + _transColor = transColor; + // Set up the surface and read it in - stream.readByte(); _surface.create(width, height, Graphics::PixelFormat::createFormatCLUT8()); - assert((stream.size() - stream.pos()) <= (int)(width * height)); + assert((stream.size() - stream.pos()) == (int)(width * height)); byte *pixels = (byte *)_surface.getPixels(); stream.read(pixels, width * height); -- cgit v1.2.3